Files
HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/index.json
T

8202 lines
5.9 MiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"api/Hi.Cbtr.CachedTris.SweepingMode.html": {
"href": "api/Hi.Cbtr.CachedTris.SweepingMode.html",
"title": "Enum CachedTris.SweepingMode | HiAPI-C# 2025",
"summary": "Enum CachedTris.SweepingMode Namespace Hi.Cbtr Assembly HiCbtr.dll Defines the mode for sweeping operations. public enum CachedTris.SweepingMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Auto = 0 Automatically choose the best sweeping mode. ForceLinear = 1 Force linear sweeping mode. ForceNonLinear = 2 Force non-linear sweeping mode."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstructionDefectDisplayee(List<DefectNodeInfo>, IProgress<IMessage>) Ctor. public ConstructionDefectDisplayee(List<CubeTree.DefectNodeInfo> defectNodeInfos, IProgress<IMessage> messageProgress = null) Parameters defectNodeInfos List<CubeTree.DefectNodeInfo> Defect node infos from cube tree construction. messageProgress IProgress<IMessage> Progress reporter for user-facing messages. Properties DefectNodeInfos Defect node infos collected during cube tree construction. public List<CubeTree.DefectNodeInfo> DefectNodeInfos { get; } Property Value List<CubeTree.DefectNodeInfo> 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<Box3d> DefectBoxSelected Event Type Action<Box3d>"
},
"api/Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html": {
"href": "api/Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html",
"title": "Class CubeTree.DefectNodeInfo.TriWireInfo | HiAPI-C# 2025",
"summary": "Class CubeTree.DefectNodeInfo.TriWireInfo Namespace Hi.Cbtr Assembly HiCbtr.dll A single triangle-wire relation entry within a defect node. public class CubeTree.DefectNodeInfo.TriWireInfo Inheritance object CubeTree.DefectNodeInfo.TriWireInfo Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties EdgeIndex The wire edge index (0-11). public int EdgeIndex { get; set; } Property Value int Tri The triangle geometry. public Tri3d Tri { get; set; } Property Value Tri3d TriWireRelation Tri-wire relation data. public CubeTree.TriWireRelationInterop TriWireRelation { get; set; } Property Value CubeTree.TriWireRelationInterop"
},
"api/Hi.Cbtr.CubeTree.DefectNodeInfo.html": {
"href": "api/Hi.Cbtr.CubeTree.DefectNodeInfo.html",
"title": "Class CubeTree.DefectNodeInfo | HiAPI-C# 2025",
"summary": "Class CubeTree.DefectNodeInfo Namespace Hi.Cbtr Assembly HiCbtr.dll Info for a single defect node detected during cube tree construction. public class CubeTree.DefectNodeInfo Inheritance object CubeTree.DefectNodeInfo Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Box Bounding box of the defect node. public Box3d Box { get; set; } Property Value Box3d Level Tree level of the defect node. public int Level { get; set; } Property Value int TriWireInfos Triangle-wire relation info for each triangle involved in this defect node. public List<CubeTree.DefectNodeInfo.TriWireInfo> TriWireInfos { get; } Property Value List<CubeTree.DefectNodeInfo.TriWireInfo>"
},
"api/Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html": {
"href": "api/Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html",
"title": "Struct CubeTree.DefectTriWireInfoInterop | HiAPI-C# 2025",
"summary": "Struct CubeTree.DefectTriWireInfoInterop Namespace Hi.Cbtr Assembly HiCbtr.dll Interop struct matching C++ defect_tri_wire_info_interop_t. public struct CubeTree.DefectTriWireInfoInterop Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields EdgeIndex Wire edge index (0-11). public int EdgeIndex Field Value int Tri Triangle geometry. public tri3d Tri Field Value tri3d TriWireRelation Tri-wire relation data. public CubeTree.TriWireRelationInterop TriWireRelation Field Value CubeTree.TriWireRelationInterop"
},
"api/Hi.Cbtr.CubeTree.InfNodeInfo.html": {
"href": "api/Hi.Cbtr.CubeTree.InfNodeInfo.html",
"title": "Class CubeTree.InfNodeInfo | HiAPI-C# 2025",
"summary": "Class CubeTree.InfNodeInfo Namespace Hi.Cbtr Assembly HiCbtr.dll Info for a single node with inf edge_cuts, containing box and edge indices. public class CubeTree.InfNodeInfo Inheritance object CubeTree.InfNodeInfo Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Box Bounding box of the node. public Box3d Box { get; set; } Property Value Box3d InfEdgeIndices Edge indices (0-11) of inf edge_cuts in this node. public List<int> InfEdgeIndices { get; } Property Value List<int>"
},
"api/Hi.Cbtr.CubeTree.TriWireRelationInterop.html": {
"href": "api/Hi.Cbtr.CubeTree.TriWireRelationInterop.html",
"title": "Struct CubeTree.TriWireRelationInterop | HiAPI-C# 2025",
"summary": "Struct CubeTree.TriWireRelationInterop Namespace Hi.Cbtr Assembly HiCbtr.dll Interop struct matching C++ tri_wire_relation_interop_t. public struct CubeTree.TriWireRelationInterop Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CachedPosCornerStateMask For unparallel: 2 corner_state_t at the pos (2 x 2 bits, {0th=min, 1th=max}). For parallel: 0. public int CachedPosCornerStateMask Field Value int Pos0 For parallel: min position. For unparallel: intersection position. public double Pos0 Field Value double Pos1 For parallel: max position. For unparallel: NaN. public double Pos1 Field Value double RelationMask Bitmask of tri_wire_relation_enum_t flags. public int RelationMask Field Value int Properties IsOutside Is outside relation. public bool IsOutside { get; } Property Value bool IsParallel Is parallel relation. public bool IsParallel { get; } Property Value bool IsUnparallel Is unparallel relation. public bool IsUnparallel { get; } Property Value bool"
},
"api/Hi.Cbtr.CubeTree.diff_response_func_t.html": {
"href": "api/Hi.Cbtr.CubeTree.diff_response_func_t.html",
"title": "Delegate CubeTree.diff_response_func_t | HiAPI-C# 2025",
"summary": "Delegate CubeTree.diff_response_func_t Namespace Hi.Cbtr Assembly HiCbtr.dll Delegate for handling difference responses during geometry comparison. public delegate void CubeTree.diff_response_func_t(nint node_sp, double diff, nint plus_arg) Parameters node_sp nint Pointer to the node. diff double The difference value. plus_arg nint Additional argument pointer. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) 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) 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<IProgressFraction>) Ctor. This ctor is faster than CubeTree(NativeStl, double, CancellationToken, IProgress<IProgressFraction>). public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress<IProgressFraction> 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<IProgressFraction> 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<IProgressFraction>) 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<IProgressFraction> 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<IProgressFraction> 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<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<IMessage>) Compares the cube tree with an ideal geometry and returns difference attachments. public ConcurrentBag<DiffAttachment> Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress<IMessage> 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<IMessage> Progress reporter for the operation. Returns ConcurrentBag<DiffAttachment> 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<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 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<CubeTree.InfNodeInfo> GetInfEdgeCutsInfo() Returns List<CubeTree.InfNodeInfo> 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<Tri3d> 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<Tri3d> Triangle mesh NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress<IMessage>) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress<IMessage> messageProgress) Parameters stl NativeStl preferredGridWidth double token CancellationToken messageProgress IProgress<IMessage> Returns (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(Stl, double, CancellationToken, IProgress<IMessage>) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress<IMessage> messageProgress) Parameters stl Stl preferredGridWidth double token CancellationToken messageProgress IProgress<IMessage> Returns (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> 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",
"title": "Class CubeTreeExportExtensions | HiAPI-C# 2025",
"summary": "Class CubeTreeExportExtensions Namespace Hi.Cbtr Assembly HiCbtr.dll Mesh export helpers for CubeTree. public static class CubeTreeExportExtensions Inheritance object CubeTreeExportExtensions Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ToStl(CubeTree, double) Builds an Stl from the cube tree's surface triangles. Per-triangle face normals are rebuilt before returning. public static Stl ToStl(this CubeTree cubeTree, double resolution = 0) Parameters cubeTree CubeTree Source cube tree. resolution double Preferred resolution; 0 keeps the cube tree's default. Returns Stl STL containing triangles with rebuilt face normals."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class GeomBoolCache | HiAPI-C# 2025",
"summary": "Class GeomBoolCache Namespace Hi.Cbtr Assembly HiCbtr.dll Cache for geometry boolean operations. public class GeomBoolCache : IDisposable Inheritance object GeomBoolCache Implements 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeomBoolCache(GeomBoolCacheEnum) Initializes a new instance of the GeomBoolCache class. public GeomBoolCache(GeomBoolCacheEnum boolGeomCacheEnum) Parameters boolGeomCacheEnum GeomBoolCacheEnum The type of geometry boolean cache. Properties CachedTris Gets or sets the cached triangles. public CachedTris CachedTris { get; set; } Property Value CachedTris ConvexTransformation Gets or sets the convex transformation matrix. public Mat4d ConvexTransformation { get; set; } Property Value Mat4d GeomBoolCacheEnum Gets or sets the type of geometry boolean cache. public GeomBoolCacheEnum GeomBoolCacheEnum { get; set; } Property Value GeomBoolCacheEnum InitStickConvex Gets or sets the initialization stick convex. public InitStickConvex InitStickConvex { get; set; } Property Value InitStickConvex PreferredCubeWidth Gets or sets the preferred cube width. public double PreferredCubeWidth { get; set; } Property Value double 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 ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Cbtr.GeomBoolCacheEnum.html": {
"href": "api/Hi.Cbtr.GeomBoolCacheEnum.html",
"title": "Enum GeomBoolCacheEnum | HiAPI-C# 2025",
"summary": "Enum GeomBoolCacheEnum Namespace Hi.Cbtr Assembly HiCbtr.dll Enumeration of geometry boolean cache types. public enum GeomBoolCacheEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CachedTris = 1 Cached triangles mode. StickConvex = 2 Stick convex mode."
},
"api/Hi.Cbtr.IGetInitStickConvex.html": {
"href": "api/Hi.Cbtr.IGetInitStickConvex.html",
"title": "Interface IGetInitStickConvex | HiAPI-C# 2025",
"summary": "Interface IGetInitStickConvex Namespace Hi.Cbtr Assembly HiCbtr.dll Interface of GetInitStickConvex(). public interface IGetInitStickConvex : IVolumeRemover Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetInitStickConvex() Get InitStickConvex. InitStickConvex GetInitStickConvex() Returns InitStickConvex InitStickConvex"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InfDefectDisplayee(List<InfNodeInfo>) Ctor. Builds drawings from the given inf node info list. public InfDefectDisplayee(List<CubeTree.InfNodeInfo> nodeInfoList) Parameters nodeInfoList List<CubeTree.InfNodeInfo> Properties DefectBoxes Defect boxes for display (capped to Hi.Cbtr.InfDefectDisplayee.defectBoxesToShow). public List<Box3d> DefectBoxes { get; } Property Value List<Box3d> HasDefects Whether any inf defects were found. public bool HasDefects { get; } Property Value bool NodeInfoList Inf node info list from cube tree. public List<CubeTree.InfNodeInfo> NodeInfoList { get; } Property Value List<CubeTree.InfNodeInfo> 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<IMessage>) Reports defect information to a message host. public void ReportTo(IProgress<IMessage> messageProgress) Parameters messageProgress IProgress<IMessage>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.Substraction.html": {
"href": "api/Hi.Cbtr.Substraction.html",
"title": "Class Substraction | HiAPI-C# 2025",
"summary": "Class Substraction Namespace Hi.Cbtr Assembly HiCbtr.dll Represents the result of a volume subtraction operation. public class Substraction : IWriteBin, IDisplayee, IExpandToBox3d Inheritance object Substraction Implements IWriteBin 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MillingRemovalUtil.GetContoursOnToolRunningCoordinate(Substraction, MachineMotionStep) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Substraction() Ctor. for Entity Framework. public Substraction() Substraction(UnmanagedSubstraction) Initializes a new instance of the Substraction class from an unmanaged substraction. public Substraction(UnmanagedSubstraction unmanagedSubstraction) Parameters unmanagedSubstraction UnmanagedSubstraction The unmanaged substraction to copy data from. Substraction(BinaryReader) Initializes a new instance of the Substraction class from a binary reader. public Substraction(BinaryReader reader) Parameters reader BinaryReader The binary reader to read data from. Properties ContactContours Gets or sets the contact contours on workpiece coordinate. public List<List<Vec3d>> ContactContours { get; } Property Value List<List<Vec3d>> ContactContoursArea Gets the area of the contact contours. public double ContactContoursArea { get; init; } Property Value double ContactContoursByteArray Gets or sets the byte array representation of the contact contours. public byte[] ContactContoursByteArray { get; set; } Property Value byte[] IsTouched Gets a value indicating whether the cutter and workpiece touched. public bool IsTouched { get; init; } Property Value bool StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Methods ContactContoursReadBin(BinaryReader) Reads contact contours from a binary reader. public static List<List<Vec3d>> ContactContoursReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from. Returns List<List<Vec3d>> A list of contact contour lists. ContactContoursWriteBin(List<List<Vec3d>>, BinaryWriter) Writes contact contours to a binary writer. public static void ContactContoursWriteBin(List<List<Vec3d>> contactContours, BinaryWriter writer) Parameters contactContours List<List<Vec3d>> The contact contours to write. writer BinaryWriter The binary writer to write to. 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 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.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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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() 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 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",
"title": "Class WireCube | HiAPI-C# 2025",
"summary": "Class WireCube Namespace Hi.Cbtr Assembly HiCbtr.dll 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. public class WireCube : IDisplayee, IExpandToBox3d Inheritance object WireCube 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Display(Bind) Displays the wire cube. public void Display(Bind bind) Parameters bind Bind The binding context for display. ExpandToBox3d(Box3d) Expands the destination box to include the unit cube. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The destination box to expand. GetCorner(int, bool) Gets the corner index (0-7) from an edge index and whether it's the tail endpoint. This follows the C++ WireCube::getCorner(int edgeIndex, bool is_tail) pattern. public static int GetCorner(int edgeIndex, bool isTail) Parameters edgeIndex int The edge index (0-11). isTail bool True for the tail endpoint (max in edge direction), false for head (min in edge direction). Returns int The corner index (0-7) where bit 0=X, bit 1=Y, bit 2=Z indicate min(0) or max(1) position. GetCornerVertex(Box3d, int) Gets the vertex position of a corner from a box. public static Vec3d GetCornerVertex(Box3d box, int corner) Parameters box Box3d The bounding box. corner int The corner index (0-7) where bit 0=X, bit 1=Y, bit 2=Z indicate min(0) or max(1) position. Returns Vec3d The vertex position. GetDir(int) Gets the direction (axis) of an edge. public static int GetDir(int edgeIndex) Parameters edgeIndex int The edge index (0-11). Returns int The direction: 0=X, 1=Y, 2=Z. GetEdgeIndex(int, int, int) Gets the edge index from direction and position flags. public static int GetEdgeIndex(int dir, int th0, int th1) Parameters dir int The edge direction (0=X, 1=Y, 2=Z). th0 int Position flag in (dir+1)%3 direction (0 or 1). th1 int Position flag in (dir+2)%3 direction (0 or 1). Returns int The edge index (0-11). GetEdgeSegment3d(Box3d, int) Gets the two endpoint vertices of an edge for a given box and edge index. public static Segment3d GetEdgeSegment3d(Box3d box, int edgeIndex) Parameters box Box3d The bounding box. edgeIndex int The edge index (0-11). Returns Segment3d A tuple containing the head (min in edge direction) and tail (max in edge direction) vertices of the edge."
},
"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. 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",
"title": "Struct node_diff_t | HiAPI-C# 2025",
"summary": "Struct node_diff_t Namespace Hi.Cbtr Assembly HiCbtr.dll Structure representing a node with a difference value. public struct node_diff_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields diff Difference value. public double diff Field Value double node Pointer to the node. public nint node Field Value nint"
},
"api/Hi.Collision.AnchoredCollidableLeaf.html": {
"href": "api/Hi.Collision.AnchoredCollidableLeaf.html",
"title": "Class AnchoredCollidableLeaf | HiAPI-C# 2025",
"summary": "Class AnchoredCollidableLeaf Namespace Hi.Collision Assembly HiMech.dll Represents a leaf node in the anchored collidable hierarchy. public class AnchoredCollidableLeaf : IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IGetCollidable Inheritance object AnchoredCollidableLeaf Implements IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AnchoredCollidableLeaf() Initializes a new instance of the AnchoredCollidableLeaf class. public AnchoredCollidableLeaf() AnchoredCollidableLeaf(string, Anchor, ICollidable) Initializes a new instance of the AnchoredCollidableLeaf class with a name, anchor, and collidable object. public AnchoredCollidableLeaf(string collidableName, Anchor anchor, ICollidable collidable) Parameters collidableName string The name of the collidable object. anchor Anchor The anchor for the collidable object. collidable ICollidable The collidable object. Properties Anchor Gets or sets the anchor for this collidable leaf. public Anchor Anchor { get; set; } Property Value Anchor Collidable Gets or sets the collidable object. public ICollidable Collidable { get; set; } Property Value ICollidable CollidableName Gets or sets the name of the collidable object. public string CollidableName { get; set; } Property Value string CollisionFlag Gets or sets the collision flag indicating the collision status of this collidable object. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Methods GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. 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 GetRootAnchor() public Anchor GetRootAnchor() Returns Anchor"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Initializes a new instance of the AnchoredCollidablePair class from XML. public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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",
"title": "Class CollidableStl | HiAPI-C# 2025",
"summary": "Class CollidableStl Namespace Hi.Collision Assembly HiCbtr.dll Collidable Stl. public class CollidableStl : IDisposable, IGetTriTree, ICollidable, IGetCollidable Inheritance object CollidableStl Implements IDisposable IGetTriTree ICollidable IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CollidableStl(IGetStl) Ctor. public CollidableStl(IGetStl iGetStl) Parameters iGetStl IGetStl Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag 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 GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetTriTree() Get TriTree. public TriTree GetTriTree() Returns TriTree TriTree"
},
"api/Hi.Collision.CollisionFlag.html": {
"href": "api/Hi.Collision.CollisionFlag.html",
"title": "Enum CollisionFlag | HiAPI-C# 2025",
"summary": "Enum CollisionFlag Namespace Hi.Collision Assembly HiCbtr.dll Collision flag. The definition is the same as native collision_flag. public enum CollisionFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Collision = 0 Collision. MAY_INSIDE_SAFE_DISTANCE = 1 May or may not be inside the safe distance. OUTSIDE_SAFE_DISTANCE = 2 Outside the safe distance. UNDEFINED = 3 Not defined behavior. _IGNORED = 4 Internal Use Only Remarks The int value is according to severity. The larger is severer."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Initializes a new instance of the CollisionIndexPair class from XML. public CollisionIndexPair(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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",
"title": "Class CollisionUtil | HiAPI-C# 2025",
"summary": "Class CollisionUtil Namespace Hi.Collision Assembly HiCbtr.dll Utility of tree grid related structure. public static class CollisionUtil Inheritance object CollisionUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Detect(CubeTree, TriTree, Mat4d, double, int) Get CollisionFlag between treeA and treeB*matAB. public static CollisionFlag Detect(this CubeTree treeA, TriTree treeB, Mat4d matAB, double safeDistance, int cap = 1024) Parameters treeA CubeTree treeA treeB TriTree treeB matAB Mat4d relative transform matrix to take B to the position relative to A. The mat is Inv(matA)*matB. safeDistance double safe distance for the flag judgement cap int Returns CollisionFlag CollisionFlag Detect(ICollidable, ICollidable, Mat4d, double, int) Get CollisionFlag between collidableA and collidableB*matAB. public static CollisionFlag Detect(this ICollidable collidableA, ICollidable collidableB, Mat4d matAB, double safeDistance = 0, int cap = 1024) Parameters collidableA ICollidable collidable A collidableB ICollidable collidable B matAB Mat4d relative transform matrix to take B to the position relative to A. The mat is Inv(matA)*matB. If one of collidableA and collidableB is null, return OUTSIDE_SAFE_DISTANCE. safeDistance double safe distance for the flag judgement cap int Returns CollisionFlag CollisionFlag Detect(TriTree, TriTree, Mat4d, double, int) Get CollisionFlag between treeA and treeB*matAB. public static CollisionFlag Detect(this TriTree treeA, TriTree treeB, Mat4d matAB, double safeDistance, int cap = 1024) Parameters treeA TriTree treeA treeB TriTree treeB matAB Mat4d relative transform matrix to take B to the position relative to A. The mat is Inv(matA)*matB. safeDistance double safe distance for the flag judgement cap int Returns CollisionFlag CollisionFlag"
},
"api/Hi.Collision.FuncAnchoredCollidable.html": {
"href": "api/Hi.Collision.FuncAnchoredCollidable.html",
"title": "Class FuncAnchoredCollidable | HiAPI-C# 2025",
"summary": "Class FuncAnchoredCollidable Namespace Hi.Collision Assembly HiMech.dll Represents a function-based implementation of an anchored collidable object. public class FuncAnchoredCollidable : IAnchoredCollidableBased Inheritance object FuncAnchoredCollidable Implements IAnchoredCollidableBased Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FuncAnchoredCollidable(string, Func<IAnchoredCollidableNode>) Initializes a new instance of the FuncAnchoredCollidable class with a name and a function to get the anchored collidable node. public FuncAnchoredCollidable(string collidableName, Func<IAnchoredCollidableNode> getAnchoredCollidableNodeFunc) Parameters collidableName string The name of the collidable object. getAnchoredCollidableNodeFunc Func<IAnchoredCollidableNode> The function to get the anchored collidable node. Properties CollidableName Gets the name of the collidable object. public string CollidableName { get; set; } Property Value string CollisionFlag Gets or sets the collision flag indicating the collision status of this collidable object. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag GetAnchoredCollidableNodeFunc Gets or sets the function to get the anchored collidable node. public Func<IAnchoredCollidableNode> GetAnchoredCollidableNodeFunc { get; set; } Property Value Func<IAnchoredCollidableNode> Methods GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node."
},
"api/Hi.Collision.IAnchoredCollidableBased.html": {
"href": "api/Hi.Collision.IAnchoredCollidableBased.html",
"title": "Interface IAnchoredCollidableBased | HiAPI-C# 2025",
"summary": "Interface IAnchoredCollidableBased Namespace Hi.Collision Assembly HiMech.dll Interface for objects that are based on anchored collidable nodes. public interface IAnchoredCollidableBased Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CollidableName Gets the name of the collidable object. string CollidableName { get; } Property Value string Methods GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node."
},
"api/Hi.Collision.IAnchoredCollidableLeaf.html": {
"href": "api/Hi.Collision.IAnchoredCollidableLeaf.html",
"title": "Interface IAnchoredCollidableLeaf | HiAPI-C# 2025",
"summary": "Interface IAnchoredCollidableLeaf Namespace Hi.Collision Assembly HiMech.dll Interface for leaf nodes in the anchored collidable hierarchy. A leaf node represents a collidable object that doesn't contain other collidable objects. public interface IAnchoredCollidableLeaf : IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inherited Members IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() ICollidable.CollisionFlag ICollidable.GetCollidee() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCollidableAnchor() Gets the anchor associated with this collidable leaf. Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf."
},
"api/Hi.Collision.IAnchoredCollidableNode.html": {
"href": "api/Hi.Collision.IAnchoredCollidableNode.html",
"title": "Interface IAnchoredCollidableNode | HiAPI-C# 2025",
"summary": "Interface IAnchoredCollidableNode Namespace Hi.Collision Assembly HiMech.dll Base interface for anchored collidable nodes in the collision hierarchy. Do not inherit this interface directly. Only inherit directly from IAnchoredCollidableLeaf and IAnchoredCollidableStem. It is acceptable to inherit from IAnchoredCollidableLeaf and IAnchoredCollidableStem. public interface IAnchoredCollidableNode : IAnchoredCollidableBased Inherited Members IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Collision.IAnchoredCollidableStem.html": {
"href": "api/Hi.Collision.IAnchoredCollidableStem.html",
"title": "Interface IAnchoredCollidableStem | HiAPI-C# 2025",
"summary": "Interface IAnchoredCollidableStem Namespace Hi.Collision Assembly HiMech.dll Interface for stem nodes in the anchored collidable hierarchy. A stem node represents a collidable object that contains other collidable objects. public interface IAnchoredCollidableStem : IAnchoredCollidableNode, IAnchoredCollidableBased, IExpandToBox3d Inherited Members IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAnchoredCollidables() Gets the list of anchored collidable nodes contained by this stem. List<IAnchoredCollidableNode> GetAnchoredCollidables() Returns List<IAnchoredCollidableNode> A list of anchored collidable nodes."
},
"api/Hi.Collision.ICollidable.html": {
"href": "api/Hi.Collision.ICollidable.html",
"title": "Interface ICollidable | HiAPI-C# 2025",
"summary": "Interface ICollidable Namespace Hi.Collision Assembly HiCbtr.dll Collidable geometry. public interface ICollidable Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CollisionFlag Gets or sets the collision flag. CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Methods GetCollidee() Get ICollidee. ICollidee GetCollidee() Returns ICollidee ICollidee"
},
"api/Hi.Collision.ICollidee.html": {
"href": "api/Hi.Collision.ICollidee.html",
"title": "Interface ICollidee | HiAPI-C# 2025",
"summary": "Interface ICollidee Namespace Hi.Collision Assembly HiCbtr.dll Dont inherit the interface. Only TriTree and CubeTree inherit the interface. public interface ICollidee : ICollidable, IExpandToBox3d Inherited Members ICollidable.CollisionFlag ICollidable.GetCollidee() IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Collision.ICollisionArena.html": {
"href": "api/Hi.Collision.ICollisionArena.html",
"title": "Interface ICollisionArena | HiAPI-C# 2025",
"summary": "Interface ICollisionArena Namespace Hi.Collision Assembly HiMech.dll Interface for a topological collision arena that manages collision detection between objects. public interface ICollisionArena : IGetCollisionIndexPairs, IGetAsmb, IGetAnchor, IGetTopoIndex Inherited Members IGetCollisionIndexPairs.GetCollisionIndexPairs() IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Collision.ICollisionIndex.html": {
"href": "api/Hi.Collision.ICollisionIndex.html",
"title": "Interface ICollisionIndex | HiAPI-C# 2025",
"summary": "Interface ICollisionIndex Namespace Hi.Collision Assembly HiMech.dll Interface for collision index objects that provide identification and anchoring for collidable objects. public interface ICollisionIndex : IGetCollidable, IMakeXmlSource Inherited Members IGetCollidable.GetCollidable() IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Anchor Gets the anchor point for this collision index. Anchor Anchor { get; } Property Value Anchor Key Gets the unique identifier for this collision index. string Key { get; } Property Value string"
},
"api/Hi.Collision.IGetAnchoredCollidablePairs.html": {
"href": "api/Hi.Collision.IGetAnchoredCollidablePairs.html",
"title": "Interface IGetAnchoredCollidablePairs | HiAPI-C# 2025",
"summary": "Interface IGetAnchoredCollidablePairs Namespace Hi.Collision Assembly HiMech.dll Interface for objects that can provide pairs of anchored collidable objects for collision detection. public interface IGetAnchoredCollidablePairs Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAnchoredCollidablePairs() Gets a list of anchored collidable pairs for collision detection. List<AnchoredCollidablePair> GetAnchoredCollidablePairs() Returns List<AnchoredCollidablePair> A list of anchored collidable pairs."
},
"api/Hi.Collision.IGetCollidable.html": {
"href": "api/Hi.Collision.IGetCollidable.html",
"title": "Interface IGetCollidable | HiAPI-C# 2025",
"summary": "Interface IGetCollidable Namespace Hi.Collision Assembly HiCbtr.dll Interface for objects that can provide a collidable object. public interface IGetCollidable Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCollidable() Get ICollidable. ICollidable GetCollidable() Returns ICollidable The collidable object."
},
"api/Hi.Collision.IGetCollisionIndexPairs.html": {
"href": "api/Hi.Collision.IGetCollisionIndexPairs.html",
"title": "Interface IGetCollisionIndexPairs | HiAPI-C# 2025",
"summary": "Interface IGetCollisionIndexPairs Namespace Hi.Collision Assembly HiMech.dll Interface for objects that can provide pairs of collision indices for collision detection. public interface IGetCollisionIndexPairs Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. IEnumerable<CollisionIndexPair> GetCollisionIndexPairs() Returns IEnumerable<CollisionIndexPair> A collection of CollisionIndexPair objects."
},
"api/Hi.Collision.IGetDefaultCollidablePairs.html": {
"href": "api/Hi.Collision.IGetDefaultCollidablePairs.html",
"title": "Interface IGetDefaultCollidablePairs | HiAPI-C# 2025",
"summary": "Interface IGetDefaultCollidablePairs Namespace Hi.Collision Assembly HiMech.dll Interface for objects that can provide default pairs of anchored collidable objects. public interface IGetDefaultCollidablePairs Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDefaultCollidablePairs() Gets a list of default anchored collidable pairs. List<AnchoredCollidablePair> GetDefaultCollidablePairs() Returns List<AnchoredCollidablePair> A list of default anchored collidable pairs."
},
"api/Hi.Collision.IGetTriTree.html": {
"href": "api/Hi.Collision.IGetTriTree.html",
"title": "Interface IGetTriTree | HiAPI-C# 2025",
"summary": "Interface IGetTriTree Namespace Hi.Collision Assembly HiCbtr.dll Interface of TriTree Getter. public interface IGetTriTree : ICollidable, IGetCollidable Inherited Members ICollidable.CollisionFlag ICollidable.GetCollidee() IGetCollidable.GetCollidable() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetTriTree() Get TriTree. TriTree GetTriTree() Returns TriTree TriTree"
},
"api/Hi.Collision.MechCollisionResult.html": {
"href": "api/Hi.Collision.MechCollisionResult.html",
"title": "Class MechCollisionResult | HiAPI-C# 2025",
"summary": "Class MechCollisionResult Namespace Hi.Collision Assembly HiMech.dll Represents the result of a mechanical collision detection operation. public record MechCollisionResult : IEquatable<MechCollisionResult> Inheritance object MechCollisionResult Implements IEquatable<MechCollisionResult> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MechCollisionResult(Dictionary<ICollidable, CollisionFlag>, List<CollisionIndexPair>, CollisionFlag) Represents the result of a mechanical collision detection operation. public MechCollisionResult(Dictionary<ICollidable, CollisionFlag> CollidableToFlagDictionary, List<CollisionIndexPair> CollisionIndexPairList, CollisionFlag PrimaryCollisionFlag) Parameters CollidableToFlagDictionary Dictionary<ICollidable, CollisionFlag> Dictionary mapping collidable objects to their collision flags. CollisionIndexPairList List<CollisionIndexPair> List of collision index pairs involved in the detection. PrimaryCollisionFlag CollisionFlag The primary collision flag representing the overall collision status. Properties CollidableToFlagDictionary Dictionary mapping collidable objects to their collision flags. public Dictionary<ICollidable, CollisionFlag> CollidableToFlagDictionary { get; init; } Property Value Dictionary<ICollidable, CollisionFlag> CollisionIndexPairList List of collision index pairs involved in the detection. public List<CollisionIndexPair> CollisionIndexPairList { get; init; } Property Value List<CollisionIndexPair> PrimaryCollisionFlag The primary collision flag representing the overall collision status. public CollisionFlag PrimaryCollisionFlag { get; init; } Property Value CollisionFlag"
},
"api/Hi.Collision.MechCollisionUtil.html": {
"href": "api/Hi.Collision.MechCollisionUtil.html",
"title": "Class MechCollisionUtil | HiAPI-C# 2025",
"summary": "Class MechCollisionUtil Namespace Hi.Collision Assembly HiMech.dll Utility class providing methods for mechanical collision detection and management. public static class MechCollisionUtil Inheritance object MechCollisionUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Detect(IEnumerable<CollisionIndexPair>, Dictionary<Anchor, Mat4d>, out Dictionary<ICollidable, CollisionFlag>) Performs collision detection on a collection of collision index pairs. public static CollisionFlag Detect(this IEnumerable<CollisionIndexPair> CollisionIndexPairs, Dictionary<Anchor, Mat4d> matMap, out Dictionary<ICollidable, CollisionFlag> itemToFlag) Parameters CollisionIndexPairs IEnumerable<CollisionIndexPair> The collection of collision index pairs to check. matMap Dictionary<Anchor, Mat4d> Dictionary mapping anchors to transformation matrices. itemToFlag Dictionary<ICollidable, CollisionFlag> Output dictionary mapping collidable objects to their collision flags. Returns CollisionFlag The primary collision flag representing the overall collision status. PrepareCollidableItems(IEnumerable<CollisionIndexPair>) Prepares collidable items for collision detection by ensuring their triangle trees are initialized. public static void PrepareCollidableItems(this IEnumerable<CollisionIndexPair> collisionIndexPairs) Parameters collisionIndexPairs IEnumerable<CollisionIndexPair> The collection of collision index pairs to prepare. ResetCollisionFlags(IEnumerable<CollisionIndexPair>) Resets the collision flags for all collision index pairs to undefined. public static void ResetCollisionFlags(this IEnumerable<CollisionIndexPair> collisionIndexPairs) Parameters collisionIndexPairs IEnumerable<CollisionIndexPair> The collection of collision index pairs to reset."
},
"api/Hi.Collision.TriTree.html": {
"href": "api/Hi.Collision.TriTree.html",
"title": "Class TriTree | HiAPI-C# 2025",
"summary": "Class TriTree Namespace Hi.Collision Assembly HiCbtr.dll A wrapper provides native tree-grid-based structure. It wraps NativeStl. public class TriTree : IDisposable, IGetTriTree, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable Inheritance object TriTree Implements IDisposable IGetTriTree 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 CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) CollisionUtil.Detect(TriTree, TriTree, Mat4d, double, int) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TriTree(NativeStl) Ctor. public TriTree(NativeStl nativeStl) Parameters nativeStl NativeStl Native Stl Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag NativeStl For internal. public NativeStl NativeStl { get; set; } Property Value NativeStl TriTreePtr For internal. public nint TriTreePtr { get; set; } Property Value nint Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Remarks If NativeStl is disposed, this object will also be disposed. 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 ~TriTree() protected ~TriTree() GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetTriTree() Get TriTree. public TriTree GetTriTree() Returns TriTree TriTree"
},
"api/Hi.Collision.html": {
"href": "api/Hi.Collision.html",
"title": "Namespace Hi.Collision | HiAPI-C# 2025",
"summary": "Namespace Hi.Collision Classes AnchoredCollidableLeaf Represents a leaf node in the anchored collidable hierarchy. AnchoredCollidablePair Represents a pair of anchored collidable objects for collision detection. CollidableStl Collidable Stl. CollisionIndexPair Represents a pair of collision indices for collision detection. CollisionUtil Utility of tree grid related structure. FuncAnchoredCollidable Represents a function-based implementation of an anchored collidable object. MechCollisionResult Represents the result of a mechanical collision detection operation. MechCollisionUtil Utility class providing methods for mechanical collision detection and management. TriTree A wrapper provides native tree-grid-based structure. It wraps NativeStl. Interfaces IAnchoredCollidableBased Interface for objects that are based on anchored collidable nodes. IAnchoredCollidableLeaf Interface for leaf nodes in the anchored collidable hierarchy. A leaf node represents a collidable object that doesn't contain other collidable objects. IAnchoredCollidableNode Base interface for anchored collidable nodes in the collision hierarchy. Do not inherit this interface directly. Only inherit directly from IAnchoredCollidableLeaf and IAnchoredCollidableStem. It is acceptable to inherit from IAnchoredCollidableLeaf and IAnchoredCollidableStem. IAnchoredCollidableStem Interface for stem nodes in the anchored collidable hierarchy. A stem node represents a collidable object that contains other collidable objects. ICollidable Collidable geometry. ICollidee Dont inherit the interface. Only TriTree and CubeTree inherit the interface. ICollisionArena Interface for a topological collision arena that manages collision detection between objects. ICollisionIndex Interface for collision index objects that provide identification and anchoring for collidable objects. IGetAnchoredCollidablePairs Interface for objects that can provide pairs of anchored collidable objects for collision detection. IGetCollidable Interface for objects that can provide a collidable object. IGetCollisionIndexPairs Interface for objects that can provide pairs of collision indices for collision detection. IGetDefaultCollidablePairs Interface for objects that can provide default pairs of anchored collidable objects. IGetTriTree Interface of TriTree Getter. Enums CollisionFlag Collision flag. The definition is the same as native collision_flag."
},
"api/Hi.Collisions.AnchoredCollidabled.html": {
"href": "api/Hi.Collisions.AnchoredCollidabled.html",
"title": "Class AnchoredCollidabled | HiAPI-C# 2025",
"summary": "Class AnchoredCollidabled Namespace Hi.Collisions Assembly HiMech.dll Represents a collidable object that is associated with an Anchor. public class AnchoredCollidabled : IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex Inheritance object AnchoredCollidabled Implements IAnchoredCollidabled IGetCollidable 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AnchoredCollidabled() Initializes a new instance of the AnchoredCollidabled class. public AnchoredCollidabled() AnchoredCollidabled(Anchor, ICollidable) Initializes a new instance of the AnchoredCollidabled class with the specified anchor and collidable. public AnchoredCollidabled(Anchor anchor, ICollidable collidable) Parameters anchor Anchor The anchor bound to the collidable. collidable ICollidable The collidable instance. Properties Anchor Gets or sets the anchor associated with the collidable object. public Anchor Anchor { get; set; } Property Value Anchor Collidable Gets or sets the collidable instance. public ICollidable Collidable { get; set; } Property Value ICollidable Methods GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor 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."
},
"api/Hi.Collisions.IAnchoredCollidabled.html": {
"href": "api/Hi.Collisions.IAnchoredCollidabled.html",
"title": "Interface IAnchoredCollidabled | HiAPI-C# 2025",
"summary": "Interface IAnchoredCollidabled Namespace Hi.Collisions Assembly HiMech.dll Defines a collidable object that has an associated Anchor. public interface IAnchoredCollidabled : IGetCollidable, IGetAnchor, IGetTopoIndex Inherited Members IGetCollidable.GetCollidable() IGetAnchor.GetAnchor() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCollidableAnchor() Gets the anchor associated with the collidable object. Anchor GetCollidableAnchor() Returns Anchor The Anchor instance."
},
"api/Hi.Collisions.html": {
"href": "api/Hi.Collisions.html",
"title": "Namespace Hi.Collisions | HiAPI-C# 2025",
"summary": "Namespace Hi.Collisions Classes AnchoredCollidabled Represents a collidable object that is associated with an Anchor. Interfaces IAnchoredCollidabled Defines a collidable object that has an associated Anchor."
},
"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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, Dictionary<string, object>) Initializes a new instance of the DictionaryColorGuide class from XML. public DictionaryColorGuide(XElement src, string baseDirectory, IProgress<IMessage> progress, Dictionary<string, object> colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary<string, object> Dictionary containing constructor arguments for color guides. Properties KeyToColorGuide Gets or sets the dictionary mapping keys to color guides. public Dictionary<string, IColorGuide> KeyToColorGuide { get; set; } Property Value Dictionary<string, IColorGuide> 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",
"title": "Class DiscreteQuantityColorGuide | HiAPI-C# 2025",
"summary": "Class DiscreteQuantityColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that assigns colors based on discrete quantity values. public class DiscreteQuantityColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object DiscreteQuantityColorGuide 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DiscreteQuantityColorGuide() Initializes a new instance of the DiscreteQuantityColorGuide class. public DiscreteQuantityColorGuide() DiscreteQuantityColorGuide(string) Initializes a new instance of the DiscreteQuantityColorGuide class with a specified quantity key. public DiscreteQuantityColorGuide(string quantityKey) Parameters quantityKey string The key used to retrieve quantity values. DiscreteQuantityColorGuide(XElement) Initializes a new instance of the DiscreteQuantityColorGuide class from XML. public DiscreteQuantityColorGuide(XElement src) Parameters src XElement The XML element containing the color guide data. Properties QuantityKey Gets or sets the key used to retrieve the quantity value. public string QuantityKey { 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. Reg(XFactory) Registers this 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, Dictionary<string, object>) Initializes a new instance of the FilteredColorGuide class from XML. public FilteredColorGuide(XElement src, string baseDirectory, IProgress<IMessage> progress, Dictionary<string, object> colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary<string, object> 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",
"title": "Class FuncRangeColorGuide | HiAPI-C# 2025",
"summary": "Class FuncRangeColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that uses a function to get a numeric value and maps it to a color using a range color rule. public class FuncRangeColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide, IGetRangeColorRule Inheritance object FuncRangeColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide IGetRangeColorRule Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FuncRangeColorGuide(Func<object, double?>, RangeColorRule) Initializes a new instance of the FuncRangeColorGuide class. public FuncRangeColorGuide(Func<object, double?> colorIndexFunc, RangeColorRule rangeColorRule) Parameters colorIndexFunc Func<object, double?> The function to get the numeric value for coloring. rangeColorRule RangeColorRule The rule that maps numeric values to colors. FuncRangeColorGuide(XElement, Func<object, double?>) Initializes a new instance of the FuncRangeColorGuide class from XML. public FuncRangeColorGuide(XElement src, Func<object, double?> colorIndexFunc) Parameters src XElement The XML element containing the color guide data. colorIndexFunc Func<object, double?> The function to get the numeric value for coloring. Properties ColorIndexFunc Gets or sets the function that extracts a numeric value from the input object for coloring. public Func<object, double?> ColorIndexFunc { get; set; } Property Value Func<object, double?> RangeColorRule Gets or sets the rule that maps numeric values to colors. public RangeColorRule RangeColorRule { get; set; } Property Value RangeColorRule XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRangeColorRule() Gets the range color rule. public RangeColorRule GetRangeColorRule() Returns RangeColorRule The range color rule. 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.IColorGuide.html": {
"href": "api/Hi.Coloring.IColorGuide.html",
"title": "Interface IColorGuide | HiAPI-C# 2025",
"summary": "Interface IColorGuide Namespace Hi.Coloring Assembly HiMech.dll Interface of setting color and the rendering priority. public interface IColorGuide : IMakeXmlSource, IGetColorGuide Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IGetColorGuide.GetColorGuide() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetRgb(object) Get rgb bystep. 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. void GetRgbWithPriority(object step, out Vec3d rgb, out double attachmentPriority) Parameters step object step rgb Vec3d rgb attachmentPriority double priority. Larger one takes priority."
},
"api/Hi.Coloring.IColorGuideProperty.html": {
"href": "api/Hi.Coloring.IColorGuideProperty.html",
"title": "Interface IColorGuideProperty | HiAPI-C# 2025",
"summary": "Interface IColorGuideProperty Namespace Hi.Coloring Assembly HiMech.dll Interface for objects that have a color guide property. public interface IColorGuideProperty Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ColorGuide Gets or sets the color guide associated with this object. IColorGuide ColorGuide { get; set; } Property Value IColorGuide"
},
"api/Hi.Coloring.IGetColorGuide.html": {
"href": "api/Hi.Coloring.IGetColorGuide.html",
"title": "Interface IGetColorGuide | HiAPI-C# 2025",
"summary": "Interface IGetColorGuide Namespace Hi.Coloring Assembly HiMech.dll Interface of GetColorGuide(). public interface IGetColorGuide Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetColorGuide() Get IColorGuide. IColorGuide GetColorGuide() Returns IColorGuide IColorGuide"
},
"api/Hi.Coloring.IGetRangeColorRule.html": {
"href": "api/Hi.Coloring.IGetRangeColorRule.html",
"title": "Interface IGetRangeColorRule | HiAPI-C# 2025",
"summary": "Interface IGetRangeColorRule Namespace Hi.Coloring Assembly HiGeom.dll Interface for retrieving a range color rule. public interface IGetRangeColorRule Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetRangeColorRule() Gets the range color rule. RangeColorRule GetRangeColorRule() Returns RangeColorRule The range color rule."
},
"api/Hi.Coloring.IGetRgb.html": {
"href": "api/Hi.Coloring.IGetRgb.html",
"title": "Interface IGetRgb | HiAPI-C# 2025",
"summary": "Interface IGetRgb Namespace Hi.Coloring Assembly HiGeom.dll Rgb getter interface public interface IGetRgb Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetRgb() Get RGB. Vec3d GetRgb() Returns Vec3d RGB"
},
"api/Hi.Coloring.IGetRgbWithPriority.html": {
"href": "api/Hi.Coloring.IGetRgbWithPriority.html",
"title": "Interface IGetRgbWithPriority | HiAPI-C# 2025",
"summary": "Interface IGetRgbWithPriority Namespace Hi.Coloring Assembly HiMech.dll Interface ofGetRgbWithPriority(out Vec3d, out double). public interface IGetRgbWithPriority Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetRgbWithPriority(out Vec3d, out double) Get color with the showing priority if the showing area overlapped by shrinking. Only effect on CubeTree. void GetRgbWithPriority(out Vec3d rgb, out double priority) Parameters rgb Vec3d rgb priority double priority"
},
"api/Hi.Coloring.PlainColorGuide.html": {
"href": "api/Hi.Coloring.PlainColorGuide.html",
"title": "Class PlainColorGuide | HiAPI-C# 2025",
"summary": "Class PlainColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that provides a constant color value. public class PlainColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object PlainColorGuide 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PlainColorGuide() Initializes a new instance of the PlainColorGuide class. public PlainColorGuide() PlainColorGuide(XElement) Initializes a new instance of the PlainColorGuide class from XML. public PlainColorGuide(XElement src) Parameters src XElement The XML element containing the color guide data. Properties Rgb Gets or sets the RGB color value. public Vec3d Rgb { get; set; } Property Value Vec3d 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 (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.Coloring.QuantityColorGuide.html": {
"href": "api/Hi.Coloring.QuantityColorGuide.html",
"title": "Class QuantityColorGuide | HiAPI-C# 2025",
"summary": "Class QuantityColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that maps numeric quantities to colors using a range color rule. public class QuantityColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide, IGetRangeColorRule Inheritance object QuantityColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide IGetRangeColorRule Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QuantityColorGuide() Initializes a new instance of the QuantityColorGuide class. public QuantityColorGuide() QuantityColorGuide(string, RangeColorRule) Initializes a new instance of the QuantityColorGuide class with specified quantity key and range color rule. public QuantityColorGuide(string quantityKey, RangeColorRule rangeColorRule) Parameters quantityKey string The key used to retrieve quantity values. rangeColorRule RangeColorRule The rule that maps numeric values to colors. QuantityColorGuide(XElement) Initializes a new instance of the QuantityColorGuide class from XML. public QuantityColorGuide(XElement src) Parameters src XElement The XML element containing the color guide data. Properties QuantityKey Gets or sets the key used to retrieve the quantity value. public string QuantityKey { get; set; } Property Value string RangeColorRule Gets or sets the rule that maps numeric values to colors. public RangeColorRule RangeColorRule { get; set; } Property Value RangeColorRule XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRangeColorRule() Gets the range color rule. public RangeColorRule GetRangeColorRule() Returns RangeColorRule The range color rule. 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.RangeColorRule.html": {
"href": "api/Hi.Coloring.RangeColorRule.html",
"title": "Class RangeColorRule | HiAPI-C# 2025",
"summary": "Class RangeColorRule Namespace Hi.Coloring Assembly HiGeom.dll Defines a rule for mapping numeric values to colors based on a range. public class RangeColorRule : IMakeXmlSource, IGetRangeColorRule Inheritance object RangeColorRule Implements IMakeXmlSource IGetRangeColorRule Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 RangeColorRule() Ctor. public RangeColorRule() RangeColorRule(double, double, RatioRgbFuncEnum) Constructor with range and color function specification. public RangeColorRule(double floor, double ceiling, RatioRgbFuncEnum ratioRgbFuncEnum = RatioRgbFuncEnum.NormalizedPositiveErf) Parameters floor double The lower bound of the range. ceiling double The upper bound of the range. ratioRgbFuncEnum RatioRgbFuncEnum The function to map ratio values to RGB colors. RangeColorRule(XElement) Ctor. public RangeColorRule(XElement src) Parameters src XElement XML Fields RatioRgbFuncEnum The function used to map ratio values to RGB colors. public RatioRgbFuncEnum RatioRgbFuncEnum Field Value RatioRgbFuncEnum Properties Ceiling Gets or sets the upper bound of the range. public double Ceiling { get; set; } Property Value double Floor Gets or sets the lower bound of the range. public double Floor { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods GetRangeColorRule() Gets the range color rule. public RangeColorRule GetRangeColorRule() Returns RangeColorRule The range color rule. GetRgb(double) Gets the RGB color for a given value based on the range and color function. public Vec3d GetRgb(double v) Parameters v double The value to convert to a color. Returns Vec3d RGB color vector. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Coloring.RatioRgbFuncEnum.html": {
"href": "api/Hi.Coloring.RatioRgbFuncEnum.html",
"title": "Enum RatioRgbFuncEnum | HiAPI-C# 2025",
"summary": "Enum RatioRgbFuncEnum Namespace Hi.Coloring Assembly HiGeom.dll Ratio-based RGB function enum. public enum RatioRgbFuncEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Linear = 2 Represent GetRgbByLinearRatio(double). NormalizedErf = 1 Represent GetRgbByErf(double). NormalizedPositiveErf = 0 Represent GetRgbByPositiveErf(double)."
},
"api/Hi.Coloring.RgbSeed.html": {
"href": "api/Hi.Coloring.RgbSeed.html",
"title": "Class RgbSeed | HiAPI-C# 2025",
"summary": "Class RgbSeed Namespace Hi.Coloring Assembly HiGeom.dll A simple object contains RGB value. public class RgbSeed : IGetRgb, IMakeXmlSource Inheritance object RgbSeed Implements IGetRgb 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 RgbSeed() Ctor. public RgbSeed() RgbSeed(Vec3d) Ctor. public RgbSeed(Vec3d rgb) Parameters rgb Vec3d RGB RgbSeed(XElement) Ctor. public RgbSeed(XElement src) Parameters src XElement XML Properties Rgb RGB. public Vec3d Rgb { get; set; } Property Value Vec3d XName Name for XML IO. public static string XName { get; } Property Value string Methods GetRgb() Get RGB. public Vec3d GetRgb() Returns Vec3d RGB MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Coloring.html": {
"href": "api/Hi.Coloring.html",
"title": "Namespace Hi.Coloring | HiAPI-C# 2025",
"summary": "Namespace Hi.Coloring Classes ColorUtil Utility for handling color. Includes handle of RGB and HSL. DictionaryColorGuide A color guide that manages a dictionary of color guides and allows selection of one active guide. DiscreteQuantityColorGuide A color guide that assigns colors based on discrete quantity values. FilteredColorGuide A color guide that combines a filter color guide with a dictionary color guide. FuncRangeColorGuide A color guide that uses a function to get a numeric value and maps it to a color using a range color rule. PlainColorGuide A color guide that provides a constant color value. QuantityColorGuide A color guide that maps numeric quantities to colors using a range color rule. RangeColorRule Defines a rule for mapping numeric values to colors based on a range. RgbSeed A simple object contains RGB value. Interfaces IColorGuide Interface of setting color and the rendering priority. IColorGuideProperty Interface for objects that have a color guide property. IGetColorGuide Interface of GetColorGuide(). IGetRangeColorRule Interface for retrieving a range color rule. IGetRgb Rgb getter interface IGetRgbWithPriority Interface ofGetRgbWithPriority(out Vec3d, out double). Enums RatioRgbFuncEnum Ratio-based RGB function enum."
},
"api/Hi.Common.BinIoUtil.html": {
"href": "api/Hi.Common.BinIoUtil.html",
"title": "Class BinIoUtil | HiAPI-C# 2025",
"summary": "Class BinIoUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for binary I/O operations. public static class BinIoUtil Inheritance object BinIoUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetBytesWithWriter(Action<BinaryWriter>) Gets a byte array by executing an action with a BinaryWriter. public static byte[] GetBytesWithWriter(Action<BinaryWriter> action) Parameters action Action<BinaryWriter> The action to execute with the BinaryWriter. Returns byte[] The resulting byte array. GetWithReader<T>(Func<BinaryReader, T>, byte[]) Gets a result by executing a function with a BinaryReader created from the provided byte array. public static T GetWithReader<T>(Func<BinaryReader, T> Func, byte[] bytes) Parameters Func Func<BinaryReader, T> The function to execute with the BinaryReader. bytes byte[] The byte array to read from. Returns T The result of the function execution. Type Parameters T The type of the result. RunWithReader(Action<BinaryReader>, byte[]) Executes an action with a BinaryReader created from the provided byte array. public static void RunWithReader(Action<BinaryReader> action, byte[] bytes) Parameters action Action<BinaryReader> The action to execute with the BinaryReader. bytes byte[] The byte array to read from. ToBytes(IWriteBin) Converts an object implementing IWriteBin interface to a byte array. public static byte[] ToBytes(this IWriteBin src) Parameters src IWriteBin The source object that implements IWriteBin. Returns byte[] The byte array representation of the object."
},
"api/Hi.Common.BitUtil.html": {
"href": "api/Hi.Common.BitUtil.html",
"title": "Class BitUtil | HiAPI-C# 2025",
"summary": "Class BitUtil Namespace Hi.Common Assembly HiGeom.dll Utility for bit control for integer. public static class BitUtil Inheritance object BitUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetBit(int, int) Get bit from the given position of the target integer. public static bool GetBit(this int src, int pos) Parameters src int target integer pos int the bit position Returns bool the bit at the given position GetSetBit(int, int, bool) Sets a bit at the specified position and returns the modified value without changing the original. public static int GetSetBit(this int src, int pos, bool v) Parameters src int Source integer value pos int Bit position to set v bool Value to set (true for 1, false for 0) Returns int The modified integer with the bit set at the specified position SetBit(ref int, int, bool) set bit value at given position of an integer public static int SetBit(this ref int src, int pos, bool v) Parameters src int target integer pos int the bit position v bool given value Returns int the target integer SwitchBit(BitArray, int) Switches (toggles) the bit at the specified position in a BitArray. public static BitArray SwitchBit(this BitArray hdl, int pos) Parameters hdl BitArray The BitArray to modify pos int The position of the bit to toggle Returns BitArray The modified BitArray"
},
"api/Hi.Common.BlockingTimer.html": {
"href": "api/Hi.Common.BlockingTimer.html",
"title": "Class BlockingTimer | HiAPI-C# 2025",
"summary": "Class BlockingTimer Namespace Hi.Common Assembly HiGeom.dll 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. public class BlockingTimer : IMakeXmlSource, IDisposable Inheritance object BlockingTimer 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 BlockingTimer() Ctor. public BlockingTimer() BlockingTimer(TimeSpan) Initializes a new instance of the BlockingTimer class with the specified period. public BlockingTimer(TimeSpan period) Parameters period TimeSpan The time interval between timer events BlockingTimer(XElement) Constructor that initializes the timer from XML data. public BlockingTimer(XElement src) Parameters src XElement XML element containing timer configuration Fields XName XML element name for serialization. public static string XName Field Value string Properties Period The time period between timer events. public TimeSpan Period { get; set; } Property Value TimeSpan WorkingTask Gets the task that represents the timer's working process. public Task WorkingTask { get; } Property Value Task 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 EnsureRunOnce() Ensures the timer runs at least once. public Task EnsureRunOnce() Returns Task The task representing the timer's working process MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 Start() Starts the timer in long-term mode. public Task Start() Returns Task The task representing the timer's working process Stop() Stops the timer and cancels any ongoing operations. public Task Stop() Returns Task The task representing the timer's working process Events Elapsed Event that is triggered when the timer elapses. public event Action<CancellationToken> Elapsed Event Type Action<CancellationToken>"
},
"api/Hi.Common.BytesUtil.html": {
"href": "api/Hi.Common.BytesUtil.html",
"title": "Class BytesUtil | HiAPI-C# 2025",
"summary": "Class BytesUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for byte array operations and memory size conversions. public static class BytesUtil Inheritance object BytesUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConcatByteArray(IEnumerable<byte[]>) Concatenates multiple byte arrays into a single byte array. public static byte[] ConcatByteArray(this IEnumerable<byte[]> src_) Parameters src_ IEnumerable<byte[]> The source byte arrays to concatenate. Returns byte[] A single byte array containing all the bytes from the source arrays. FromBytes<T>(byte[]) Converts a byte array to a structure. public static T FromBytes<T>(byte[] arr) where T : new() Parameters arr byte[] The byte array containing the structure data. Returns T The structure created from the byte array. Type Parameters T The type of the structure to create. GetMemorySizeValueUnit(long) Gets the value and unit for a memory size in bytes. public static (double val, string unit) GetMemorySizeValueUnit(long num) Parameters num long The size in bytes. Returns (double val, string unit) A tuple containing the converted value and the appropriate unit. SplitByteArray(IEnumerable<byte>, int, bool) Splits a byte array into multiple arrays of a specified size. public static byte[][] SplitByteArray(this IEnumerable<byte> src_, int sliceSize, bool allowReferenceBySource = false) Parameters src_ IEnumerable<byte> The source byte enumerable to split. sliceSize int The size of each slice. allowReferenceBySource bool If true and the source array is smaller than or equal to the slice size, returns the source array directly. Returns byte[][] An array of byte arrays, each containing a slice of the original array. ToBytes(BitArray) Converts a BitArray to a byte array. public static byte[] ToBytes(this BitArray bitArray) Parameters bitArray BitArray The BitArray to convert. Returns byte[] A byte array representing the BitArray. ToBytes<T>(T) Converts a structure to a byte array. public static byte[] ToBytes<T>(T str) Parameters str T The structure to convert. Returns byte[] A byte array containing the structure data. Type Parameters T The type of the structure to convert. ToLongByMemorySizeString(string) Parses a memory size string (e.g., “10MB”, “2.5GB”) into a long value representing bytes. public static long ToLongByMemorySizeString(this string memorySizeString) Parameters memorySizeString string The memory size string to parse. Returns long The parsed value in bytes. Exceptions FormatException Thrown when the parsing fails. ToMemorySizeString(int, string) Converts an integer value representing bytes to a formatted memory size string. public static string ToMemorySizeString(this int num, string format = \"{0,6:###.00} {1,-2:##}\") Parameters num int The size in bytes. format string The format string to use for formatting the output. Returns string A formatted string representing the memory size. ToMemorySizeString(long, string) Converts a long value representing bytes to a formatted memory size string. public static string ToMemorySizeString(this long num, string format = \"{0,6:###.00} {1,-2:##}\") Parameters num long The size in bytes. format string The format string to use for formatting the output. Returns string A formatted string representing the memory size. TryParseLongByMemorySizeString(string, out long) Tries to parse a memory size string (e.g., “10MB”, “2.5GB”) into a long value representing bytes. public static bool TryParseLongByMemorySizeString(this string memorySizeString, out long dst) Parameters memorySizeString string The memory size string to parse. dst long When this method returns, contains the parsed value if the parsing succeeded, or long.MaxValue if the parsing failed. Returns bool true if the parsing succeeded; otherwise, false."
},
"api/Hi.Common.Collections.DictionaryUtil.html": {
"href": "api/Hi.Common.Collections.DictionaryUtil.html",
"title": "Class DictionaryUtil | HiAPI-C# 2025",
"summary": "Class DictionaryUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility class providing extension methods for dictionary operations. public static class DictionaryUtil Inheritance object DictionaryUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey) Gets the value for key, or creates a new TValue via its parameterless constructor, stores it in the dictionary, and returns it. public static TValue GetOrCreate<TKey, TValue>(this IDictionary<TKey, TValue> src, TKey key) where TValue : new() Parameters src IDictionary<TKey, TValue> key TKey Returns TValue Type Parameters TKey TValue GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, Func<TValue>) Gets the value for key, or invokes factory to create, store, and return a new value if the key is absent. public static TValue GetOrCreate<TKey, TValue>(this IDictionary<TKey, TValue> src, TKey key, Func<TValue> factory) Parameters src IDictionary<TKey, TValue> key TKey factory Func<TValue> Returns TValue Type Parameters TKey TValue GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, TValue) Gets the value for key, or stores and returns defaultValue if the key is absent. public static TValue GetOrCreate<TKey, TValue>(this IDictionary<TKey, TValue> src, TKey key, TValue defaultValue) Parameters src IDictionary<TKey, TValue> key TKey defaultValue TValue Returns TValue Type Parameters TKey TValue Retrieve<K, V>(Dictionary<K, V>, K, out V, bool) Retrieves a value from a dictionary by key, with an option to remove it from the source. public static bool Retrieve<K, V>(this Dictionary<K, V> src, K key, out V v, bool removeFromSource) Parameters src Dictionary<K, V> The source dictionary. key K The key to look for. v V When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. removeFromSource bool If true, removes the key-value pair from the dictionary if found. Returns bool true if the key was found; otherwise, false. Type Parameters K The type of the keys in the dictionary. V The type of the values in the dictionary. TryGetValueByKeys<TKey, TValue>(IDictionary<TKey, TValue>, IEnumerable<TKey>, out TValue) Tries to get a value from a dictionary by checking multiple keys in sequence. public static bool TryGetValueByKeys<TKey, TValue>(this IDictionary<TKey, TValue> src, IEnumerable<TKey> keys, out TValue v) Parameters src IDictionary<TKey, TValue> The source dictionary. keys IEnumerable<TKey> The collection of keys to check. v TValue When this method returns, contains the value associated with the first matching key, if a key is found; otherwise, the default value for the type of the value parameter. Returns bool true if any of the keys was found; otherwise, false. Type Parameters TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary."
},
"api/Hi.Common.Collections.EnumerableUtil.html": {
"href": "api/Hi.Common.Collections.EnumerableUtil.html",
"title": "Class EnumerableUtil | HiAPI-C# 2025",
"summary": "Class EnumerableUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility class providing extension methods for enumerable collections. public static class EnumerableUtil Inheritance object EnumerableUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetIntensiveItems<TItem>(IEnumerable<TItem>, double, Func<TItem, double>) Gets a collection of items with additional interpolated items inserted where the distance between consecutive items exceeds a specified resolution. public static IEnumerable<TItem> GetIntensiveItems<TItem>(this IEnumerable<TItem> src, double resolution, Func<TItem, double> keyFunc) where TItem : IAdditionOperators<TItem, TItem, TItem>, ISubtractionOperators<TItem, TItem, TItem>, IMultiplyOperators<TItem, double, TItem>, IDivisionOperators<TItem, double, TItem> Parameters src IEnumerable<TItem> The source collection. resolution double The maximum allowed distance between consecutive items. keyFunc Func<TItem, double> A function that extracts a double value from an item, used to measure the distance between items. Returns IEnumerable<TItem> A collection containing the original items and additional interpolated items where needed. Type Parameters TItem The type of items in the collection, which must support arithmetic operations. Remarks This method ensures that the distance between consecutive items in the resulting collection does not exceed the specified resolution. When the distance between two consecutive items in the source collection exceeds the resolution, additional items are interpolated between them."
},
"api/Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html": {
"href": "api/Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html",
"title": "Class FixedSizeConcurrentLinkedListUtil | HiAPI-C# 2025",
"summary": "Class FixedSizeConcurrentLinkedListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility of Fixed Size Concurrent LinkedList. public static class FixedSizeConcurrentLinkedListUtil Inheritance object FixedSizeConcurrentLinkedListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetThreadSafeEnumerable<T>(LinkedList<T>, object) Gets a thread-safe enumerable from the linked list by creating a copy of the list under a lock. public static IEnumerable<T> GetThreadSafeEnumerable<T>(this LinkedList<T> delegatorLinkedList, object locker = null) Parameters delegatorLinkedList LinkedList<T> The source linked list. locker object The object to use as a lock for synchronization. If null, the linked list itself will be used as the lock object. Returns IEnumerable<T> A thread-safe enumerable of the elements in the linked list. Type Parameters T The type of elements in the linked list. ThreadSafeEnqueue<T>(LinkedList<T>, T, int, object) Enqueue data to delegatorLinkedList synchronizely. public static void ThreadSafeEnqueue<T>(this LinkedList<T> delegatorLinkedList, T data, int bufferCapacity, object locker = null) Parameters delegatorLinkedList LinkedList<T> data T bufferCapacity int if capacity smaller or equal to zero. The capacity is assume infinity. locker object locker is locker for delegatorLinkedList synchronization. if null, apply delegatorLinkedList as locker. Type Parameters T"
},
"api/Hi.Common.Collections.LazyLinkedList-1.html": {
"href": "api/Hi.Common.Collections.LazyLinkedList-1.html",
"title": "Class LazyLinkedList<T> | HiAPI-C# 2025",
"summary": "Class LazyLinkedList<T> Namespace Hi.Common.Collections Assembly HiGeom.dll A singly-growable linked list that can lazily materialize nodes from an IEnumerable<T> source. Without a source it behaves like a regular append-only linked list. With a source, nodes are pulled on demand when Next is accessed on the tail, or when First is accessed on an empty list. public class LazyLinkedList<T> : IEnumerable<T>, IEnumerable, IDisposable Type Parameters T Inheritance object LazyLinkedList<T> Implements IEnumerable<T> IEnumerable IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples // Lazy: nodes materialize as you walk .Next using var list = new LazyLinkedList<string>(File.ReadLines(path)); var node = list.First; // materializes line 0 var next = node.Next; // materializes line 1 // Manual: just like a regular linked list var list2 = new LazyLinkedList<int>(); list2.AddLast(1); list2.AddLast(2); Constructors LazyLinkedList() Creates an empty list (no lazy source). public LazyLinkedList() LazyLinkedList(IEnumerable<T>) Creates a list backed by a lazy source. Nodes are materialized on demand via Next or First. public LazyLinkedList(IEnumerable<T> source) Parameters source IEnumerable<T> Properties Count Number of nodes currently materialized in the list. public int Count { get; } Property Value int ExhaustedLast Forces full materialization of the lazy source and returns the last node. Walks the source to completion (no-op if already exhausted), then returns Last. Use when callers need the definitive tail at this point in time (e.g. as a stable predecessor before AppendSource(IEnumerable<T>)). public LazyLinkedListNode<T> ExhaustedLast { get; } Property Value LazyLinkedListNode<T> First Gets the first node, materializing from source if the list is empty. public LazyLinkedListNode<T> First { get; } Property Value LazyLinkedListNode<T> IsExhausted Whether all items from the source have been materialized (or no source was provided). public bool IsExhausted { get; } Property Value bool Last Gets the last materialized node in the list. public LazyLinkedListNode<T> Last { get; } Property Value LazyLinkedListNode<T> Methods AddLast(T) Appends a new node with the specified value to the end of the list. public LazyLinkedListNode<T> AddLast(T value) Parameters value T The value to add. Returns LazyLinkedListNode<T> The newly created node. AppendSource(IEnumerable<T>) Appends a new lazy source after the current source. The existing source's remaining items (if any) are drained first, then the new source is yielded. Re-opens the list for further on-demand materialization, so calling Next on the prior tail materializes the next item and links Previous across the boundary. public void AppendSource(IEnumerable<T> src) Parameters src IEnumerable<T> The new source to append. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator<T> GetEnumerator() Returns IEnumerator<T> An enumerator that can be used to iterate through the collection. PrependSource(IEnumerable<T>) Prepends a new source ahead of the current source's remaining items. On the next on-demand materialization (triggered by Next on the present tail or First on an empty list), src is yielded first; once exhausted, the previous source's untouched tail resumes. The materialized prefix of the list — including the present tail — is unaffected, so this is the natural way to splice extra items in immediately after the current tail (for example, inlining an M98 subprogram's blocks after the host node so the rest of the pipeline picks them up via ordinary walkNode.Next traversal). public void PrependSource(IEnumerable<T> src) Parameters src IEnumerable<T> The source to insert ahead of the remaining items. Remarks Constraint: the caller must treat the present tail as the splice point. There is no way to prepend “after some interior node” — the prepended items are queued ahead of whatever the current source would have produced next. Use this when the splice point coincides with the tail at the moment of the call (which is how SoftNcRunner's pipeline drives node-by-node lazy materialization in lock-step with syntax/semantic processing). ReplaceSource(IEnumerable<T>) Replaces the current source's remaining items with src. Discards anything the old source had queued (it is disposed); the next on-demand materialization (triggered by Next on the present tail or First on an empty list) yields from src only. Already-materialized nodes — including the present tail — are unaffected, so this is the natural way to redirect future execution from the current tail onwards (for example, a GOTO that re-segments the file from the target N{seq} line: the GOTO host block stays materialized as the predecessor, and the post-target re-segmentation becomes the new source while the original between-here- and-EOF source is dropped). public void ReplaceSource(IEnumerable<T> src) Parameters src IEnumerable<T> The new source. Yielded from on the next materialization. Remarks Constraint: same as PrependSource(IEnumerable<T>) — the present tail is the splice point. Differs from PrependSource(IEnumerable<T>) in that the old source's untouched tail is NOT preserved after src runs out; ReplaceSource(IEnumerable<T>) drops it. Use PrependSource(IEnumerable<T>) for inline expansion (M98 / G65) where the caller's tail must resume after the inlined body; use ReplaceSource(IEnumerable<T>) for control-flow redirection (GOTO, M99 P{seq}) where the original tail is no longer reachable."
},
"api/Hi.Common.Collections.LazyLinkedListNode-1.html": {
"href": "api/Hi.Common.Collections.LazyLinkedListNode-1.html",
"title": "Class LazyLinkedListNode<T> | HiAPI-C# 2025",
"summary": "Class LazyLinkedListNode<T> Namespace Hi.Common.Collections Assembly HiGeom.dll Node for LazyLinkedList<T>. Accessing Next on the tail node automatically materializes the next item from the list's source (if any). public class LazyLinkedListNode<T> Type Parameters T Inheritance object LazyLinkedListNode<T> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LazyLinkedListNode(T) Initializes a new instance with the specified value. public LazyLinkedListNode(T value) Parameters value T The value. Properties List Gets the list that this node belongs to. public LazyLinkedList<T> List { get; } Property Value LazyLinkedList<T> Next Gets the next node. When this is the last materialized node and the list has a pending source, accessing this property triggers on-demand materialization. Thread-safe: concurrent accesses from multiple threads are serialized via an internal lock. public LazyLinkedListNode<T> Next { get; } Property Value LazyLinkedListNode<T> Previous Gets the previous node in the list. public LazyLinkedListNode<T> Previous { get; } Property Value LazyLinkedListNode<T> Value Gets or sets the value of this node. public T Value { get; set; } Property Value T Methods Enumerate() Enumerates from this node forward to the end. public IEnumerable<LazyLinkedListNode<T>> Enumerate() Returns IEnumerable<LazyLinkedListNode<T>> EnumerateBack() Enumerates backwards from this node to the head. public IEnumerable<LazyLinkedListNode<T>> EnumerateBack() Returns IEnumerable<LazyLinkedListNode<T>> 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.Collections.LinkedListUtil.html": {
"href": "api/Hi.Common.Collections.LinkedListUtil.html",
"title": "Class LinkedListUtil | HiAPI-C# 2025",
"summary": "Class LinkedListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility methods for working with linked lists. public static class LinkedListUtil Inheritance object LinkedListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods EnumerateBack<T>(LinkedListNode<T>) Enumerates linked list nodes backwards from this node to the head. public static IEnumerable<LinkedListNode<T>> EnumerateBack<T>(this LinkedListNode<T> beginNode) Parameters beginNode LinkedListNode<T> The node to start tracing backwards from (inclusive). Returns IEnumerable<LinkedListNode<T>> An backward enumerable sequence. Type Parameters T The type of elements in the linked list. Enumerate<T>(LinkedListNode<T>) Enumerates linked list nodes from the beginning node to the end node (exclusive). public static IEnumerable<LinkedListNode<T>> Enumerate<T>(this LinkedListNode<T> beginNode) Parameters beginNode LinkedListNode<T> The starting node (inclusive). Returns IEnumerable<LinkedListNode<T>> An enumerable sequence of linked list nodes. Type Parameters T The type of elements in the linked list."
},
"api/Hi.Common.Collections.ListIndexBasedEnumerable-1.html": {
"href": "api/Hi.Common.Collections.ListIndexBasedEnumerable-1.html",
"title": "Class ListIndexBasedEnumerable<T> | HiAPI-C# 2025",
"summary": "Class ListIndexBasedEnumerable<T> Namespace Hi.Common.Collections Assembly HiGeom.dll Provides an enumerable wrapper for a list that iterates over a specified range of indices. public class ListIndexBasedEnumerable<T> : IEnumerable<T>, IEnumerable Type Parameters T The type of elements in the list. Inheritance object ListIndexBasedEnumerable<T> Implements IEnumerable<T> IEnumerable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ListIndexBasedEnumerable(IList<T>, int, int) Initializes a new instance of the ListIndexBasedEnumerable<T> class. public ListIndexBasedEnumerable(IList<T> source, int begin, int end) Parameters source IList<T> The source list to enumerate. begin int The starting index (inclusive). end int The ending index (inclusive). Properties Begin Gets or sets the beginning index (inclusive) for enumeration. public int Begin { get; set; } Property Value int End Gets or sets the ending index (inclusive) for enumeration. public int End { get; set; } Property Value int Source Gets or sets the source list. public IList<T> Source { get; set; } Property Value IList<T> Methods GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator<T> GetEnumerator() Returns IEnumerator<T> An enumerator that can be used to iterate through the collection."
},
"api/Hi.Common.Collections.ListIndexBasedIEnumerator-1.html": {
"href": "api/Hi.Common.Collections.ListIndexBasedIEnumerator-1.html",
"title": "Class ListIndexBasedIEnumerator<T> | HiAPI-C# 2025",
"summary": "Class ListIndexBasedIEnumerator<T> Namespace Hi.Common.Collections Assembly HiGeom.dll Provides an enumerator that iterates over a specified range of indices in a list. public class ListIndexBasedIEnumerator<T> : IEnumerator<T>, IEnumerator, IDisposable Type Parameters T The type of elements in the list. Inheritance object ListIndexBasedIEnumerator<T> Implements IEnumerator<T> IEnumerator 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ListIndexBasedIEnumerator(IList<T>, int, int, int) Initializes a new instance of the ListIndexBasedIEnumerator<T> class. public ListIndexBasedIEnumerator(IList<T> source, int index, int begin, int end) Parameters source IList<T> The source list to enumerate. index int The current index. begin int The starting index (inclusive). end int The ending index (exclusive). Properties Begin Gets or sets the beginning index of the enumeration range. public int Begin { get; set; } Property Value int Current Gets the element in the collection at the current position of the enumerator. public T Current { get; } Property Value T The element in the collection at the current position of the enumerator. End Gets or sets the ending index of the enumeration range. public int End { get; set; } Property Value int Index Gets or sets the current index in the enumeration. public int Index { get; set; } Property Value int Source Gets or sets the source list being enumerated. public IList<T> Source { get; set; } Property Value IList<T> Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() MoveNext() Advances the enumerator to the next element of the collection. public bool MoveNext() Returns bool true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. Exceptions InvalidOperationException The collection was modified after the enumerator was created. Reset() Sets the enumerator to its initial position, which is before the first element in the collection. public void Reset() Exceptions InvalidOperationException The collection was modified after the enumerator was created. NotSupportedException The enumerator does not support being reset."
},
"api/Hi.Common.Collections.ListUtil.OuterPolationMode.html": {
"href": "api/Hi.Common.Collections.ListUtil.OuterPolationMode.html",
"title": "Enum ListUtil.OuterPolationMode | HiAPI-C# 2025",
"summary": "Enum ListUtil.OuterPolationMode Namespace Hi.Common.Collections Assembly HiGeom.dll Defines the mode for handling values outside the range of a collection during interpolation. public enum ListUtil.OuterPolationMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Extrapolation = 1 Extrapolates a value based on the trend of the collection when the key is outside the range. Nearest = 0 Uses the nearest value in the collection when the key is outside the range. TypeDefault = 2 Uses the default value for the type when the key is outside the range."
},
"api/Hi.Common.Collections.ListUtil.html": {
"href": "api/Hi.Common.Collections.ListUtil.html",
"title": "Class ListUtil | HiAPI-C# 2025",
"summary": "Class ListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Provides utility methods for working with lists and collections. public static class ListUtil Inheritance object ListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCeilBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) Gets the ceil item by seeking with the specified direction. public static SearchResult GetCeilBySeek<TItem, TKey>(this IList<TItem> src, TKey key, Func<TItem, TKey> getKeyFunc, out TItem ceilValue, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src IList<TItem> The source list. key TKey The key to search for. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. ceilValue TItem The output ceil value. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetCeilIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) Gets the ceil index by seeking with the specified direction. public static SearchResult GetCeilIndexBySeek<TItem, TKey>(this IList<TItem> src, TKey key, Func<TItem, TKey> getKeyFunc, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src IList<TItem> The source list. key TKey The key to search for. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetCeilIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) Gets the ceiling index of an item in a sorted list based on a key comparison. public static SearchResult GetCeilIndex<Item, ItemKey>(this IList<Item> sortedItems, ItemKey key, Func<Item, ItemKey, int> comparingFunc, out int index) Parameters sortedItems IList<Item> The sorted list to search in. key ItemKey The key to search for. comparingFunc Func<Item, ItemKey, int> A function that compares an item to the key. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetCeilIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) Gets the ceiling index of an item in a sorted list based on a key selector function. public static SearchResult GetCeilIndex<TKey, Item>(this IList<Item> sortedItems, TKey keyQuantity, Func<Item, TKey> getKeyQuantityFunc, out int index) where TKey : IComparable<TKey> Parameters sortedItems IList<Item> The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func<Item, TKey> A function that extracts the key from an item. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetCeil<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) Gets the ceiling item in a sorted list based on a key selector function. public static SearchResult GetCeil<TKey, Item>(this IList<Item> sortedItems, TKey keyQuantity, Func<Item, TKey> getKeyQuantityFunc, out Item dst) where TKey : IComparable<TKey> Parameters sortedItems IList<Item> The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func<Item, TKey> A function that extracts the key from an item. dst Item When this method returns, contains the ceiling item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloorBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) Gets the floor item by seeking with the specified direction. public static SearchResult GetFloorBySeek<TItem, TKey>(this IList<TItem> src, TKey key, Func<TItem, TKey> getKeyFunc, out TItem floorValue, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src IList<TItem> The source list. key TKey The key to search for. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. floorValue TItem The output floor value. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetFloorIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) Gets the floor index by seeking with the specified direction. public static SearchResult GetFloorIndexBySeek<TItem, TKey>(this IList<TItem> src, TKey key, Func<TItem, TKey> getKeyFunc, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src IList<TItem> The source list. key TKey The key to search for. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetFloorIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) Gets the floor index of an item in a sorted list based on a key comparison. public static SearchResult GetFloorIndex<Item, ItemKey>(this IList<Item> sortedItems, ItemKey key, Func<Item, ItemKey, int> comparingFunc, out int index) Parameters sortedItems IList<Item> The sorted list to search in. key ItemKey The key to search for. comparingFunc Func<Item, ItemKey, int> A function that compares an item to the key. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetFloorIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) Gets the floor index of an item in a sorted list based on a key selector function. public static SearchResult GetFloorIndex<TKey, Item>(this IList<Item> sortedItems, TKey key, Func<Item, TKey> getKeyFunc, out int index) where TKey : IComparable<TKey> Parameters sortedItems IList<Item> The sorted list to search in. key TKey The key to search for. getKeyFunc Func<Item, TKey> A function that extracts the key from an item. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloor<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) Gets the floor item in a sorted list based on a key selector function. public static SearchResult GetFloor<TKey, Item>(this IList<Item> sortedItems, TKey keyQuantity, Func<Item, TKey> getKeyQuantityFunc, out Item dst) where TKey : IComparable<TKey> Parameters sortedItems IList<Item> The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func<Item, TKey> A function that extracts the key from an item. dst Item When this method returns, contains the floor item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetIndexBasedEnumerable<TItem>(IList<TItem>) Creates an enumerable that provides access to all elements in a list by index. public static ListIndexBasedEnumerable<TItem> GetIndexBasedEnumerable<TItem>(this IList<TItem> src) Parameters src IList<TItem> The source list Returns ListIndexBasedEnumerable<TItem> A ListIndexBasedEnumerable for the entire list Type Parameters TItem The type of elements in the list GetIndexBasedEnumerable<TItem>(IList<TItem>, int, int) Creates an enumerable that provides access to a range of elements in a list by index. public static ListIndexBasedEnumerable<TItem> GetIndexBasedEnumerable<TItem>(this IList<TItem> src, int begin, int end) Parameters src IList<TItem> The source list begin int The starting index (inclusive) end int The ending index (exclusive) Returns ListIndexBasedEnumerable<TItem> A ListIndexBasedEnumerable for the specified range Type Parameters TItem The type of elements in the list GetIndexByBinarySearch<TItem>(IList<TItem>, TItem) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch<TItem>(this IList<TItem> sortedItems, TItem value) Parameters sortedItems IList<TItem> The list to be searched. value TItem The value to search for. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch<TItem>(IList<TItem>, TItem, IComparer<TItem>) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch<TItem>(this IList<TItem> sortedItems, TItem value, IComparer<TItem> comparer) Parameters sortedItems IList<TItem> The list to be searched. value TItem The value to search for. comparer IComparer<TItem> The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch<TItem, TSearch>(IList<TItem>, TSearch, Func<TSearch, TItem, int>) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch<TItem, TSearch>(this IList<TItem> sortedItems, TSearch value, Func<TSearch, TItem, int> comparer) Parameters sortedItems IList<TItem> The list to be searched. value TSearch The value to search for. comparer Func<TSearch, TItem, int> The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. TSearch The type of the searched item. GetInterpolatedBoundary<TItem>(List<TItem>, double, double, Func<TItem, double>, out TItem, out TItem, out TItem) Gets interpolated boundary items from a list based on a key value and interval. public static void GetInterpolatedBoundary<TItem>(this List<TItem> scpList, double z, double zInterval, Func<TItem, double> keyFunc, out TItem cur, out TItem floor, out TItem ceil) where TItem : IAdditionOperators<TItem, TItem, TItem>, IMultiplyOperators<TItem, double, TItem> Parameters scpList List<TItem> The source list. z double The key value to find or interpolate at. zInterval double The interval to consider around the key value. keyFunc Func<TItem, double> A function that extracts the key from an item. cur TItem When this method returns, contains the interpolated item at the key value. floor TItem When this method returns, contains the floor item. ceil TItem When this method returns, contains the ceiling item. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue<TItem>(List<TItem>, double, Func<TItem, double>, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key, using operators for addition and multiplication. public static TItem GetInterpolatedValue<TItem>(this List<TItem> sortedItems, double keyQuantity, Func<TItem, double> getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators<TItem, TItem, TItem>, IMultiplyOperators<TItem, double, TItem> Parameters sortedItems List<TItem> The sorted list to interpolate from. keyQuantity double The key to find or interpolate at. getKeyQuantityFunc Func<TItem, double> A function that extracts the key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue<TItem>(List<TItem>, double, Func<TItem, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key. public static TItem GetInterpolatedValue<TItem>(this List<TItem> sortedItems, double key, Func<TItem, double> getKeyFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List<TItem> The sorted list to interpolate from. key double The key to find or interpolate at. getKeyFunc Func<TItem, double> A function that extracts the key from an item. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue<TItem>(List<TItem>, TimeSpan, Func<TItem, TimeSpan>, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key, using operators for addition and multiplication. public static TItem GetInterpolatedValue<TItem>(this List<TItem> sortedItems, TimeSpan keyQuantity, Func<TItem, TimeSpan> getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators<TItem, TItem, TItem>, IMultiplyOperators<TItem, double, TItem> Parameters sortedItems List<TItem> The sorted list to interpolate from. keyQuantity TimeSpan The TimeSpan key to find or interpolate at. getKeyQuantityFunc Func<TItem, TimeSpan> A function that extracts the TimeSpan key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue<TItem>(List<TItem>, TimeSpan, Func<TItem, TimeSpan>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key. public static TItem GetInterpolatedValue<TItem>(this List<TItem> sortedItems, TimeSpan key, Func<TItem, TimeSpan> getKeyFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List<TItem> The sorted list to interpolate from. key TimeSpan The TimeSpan key to find or interpolate at. getKeyFunc Func<TItem, TimeSpan> A function that extracts the TimeSpan key from an item. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue<TKey, TItem>(List<TItem>, TKey, Func<TItem, TKey>, Func<TKey, TKey, int>, Func<TKey, TKey, TKey>, Func<TKey, TKey, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>, OuterPolationMode) Gets an interpolated value from a sorted list based on a key using custom comparison and arithmetic functions. public static TItem GetInterpolatedValue<TKey, TItem>(this List<TItem> sortedItems, TKey key, Func<TItem, TKey> getKeyFunc, Func<TKey, TKey, int> keyCompareFunc, Func<TKey, TKey, TKey> keyMinusFunc, Func<TKey, TKey, double> keyDivFunc, Func<TItem, TItem, TItem> addingFunc, Func<TItem, double, TItem> scalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List<TItem> The sorted list of items key TKey The key to search for getKeyFunc Func<TItem, TKey> A function that extracts the key from an item keyCompareFunc Func<TKey, TKey, int> A function that compares two keys keyMinusFunc Func<TKey, TKey, TKey> A function that subtracts one key from another keyDivFunc Func<TKey, TKey, double> A function that divides one key by another addingFunc Func<TItem, TItem, TItem> A function that adds two items scalingFunc Func<TItem, double, TItem> A function that scales an item by a factor outerPolationMode ListUtil.OuterPolationMode The mode for handling values outside the range Returns TItem The interpolated value Type Parameters TKey The type of the key TItem The type of elements in the list GetListByKeyBoundary<TKey, TItem>(List<TItem>, Func<TItem, TKey>, TKey, bool, TKey, bool) Gets a subset of a sorted list based on key boundaries. public static List<TItem> GetListByKeyBoundary<TKey, TItem>(this List<TItem> sortedItems, Func<TItem, TKey> getKeyQuantityFunc, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil) where TKey : IComparable<TKey> Parameters sortedItems List<TItem> The sorted list to filter. getKeyQuantityFunc Func<TItem, TKey> A function that extracts the key from an item. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling of the ending key. Returns List<TItem> A new list containing only the items within the specified key range. return empty new list instead of null if no elements in the boundary. Type Parameters TKey The type of the key, which must be comparable. TItem The type of items in the list. GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, double>, out int) Finds the index of the element in a sorted list that is nearest to the specified key. public static SearchResult GetNearestIndex<TItem, TItemKey>(this IList<TItem> src, TItemKey key, Func<TItem, TItemKey, double> itemToKeyDistanceFunc, out int index) Parameters src IList<TItem> The source list key TItemKey The key to search for itemToKeyDistanceFunc Func<TItem, TItemKey, double> A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, int>, Func<TItem, TItemKey, double>, out int) Finds the index of the element in a sorted list that is nearest to the specified key using custom comparison functions. public static SearchResult GetNearestIndex<TItem, TItemKey>(this IList<TItem> src, TItemKey key, Func<TItem, TItemKey, int> itemCompareToKeyFunc, Func<TItem, TItemKey, double> itemToKeyDistanceFunc, out int index) Parameters src IList<TItem> The source list (must be in ascending order) key TItemKey The key to search for itemCompareToKeyFunc Func<TItem, TItemKey, int> A function that compares an item to the key itemToKeyDistanceFunc Func<TItem, TItemKey, double> A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for Exceptions InvalidProgramException Thrown when an unexpected search result occurs GetSubListWithInterpolatedHeadAndTail<TItem>(List<TItem>, double, double, Func<TItem, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with interpolated head and tail items based on the specified double key range. public static List<TItem> GetSubListWithInterpolatedHeadAndTail<TItem>(this List<TItem> src, double beginKey, double endKey, Func<TItem, double> getKeyFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc) Parameters src List<TItem> The source list. beginKey double The beginning key of the range. endKey double The ending key of the range. getKeyFunc Func<TItem, double> A function that extracts the double key from an item. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail<TItem>(List<TItem>, TimeSpan, TimeSpan, Func<TItem, TimeSpan>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with interpolated head and tail items based on the specified TimeSpan key range. public static List<TItem> GetSubListWithInterpolatedHeadAndTail<TItem>(this List<TItem> src, TimeSpan beginKey, TimeSpan endKey, Func<TItem, TimeSpan> getKeyFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc) Parameters src List<TItem> The source list. beginKey TimeSpan The beginning TimeSpan key of the range. endKey TimeSpan The ending TimeSpan key of the range. getKeyFunc Func<TItem, TimeSpan> A function that extracts the TimeSpan key from an item. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail<TKey, TItem>(List<TItem>, TKey, TKey, Func<TItem, TKey>, Func<TKey, TKey, int>, Func<TKey, TKey, TKey>, Func<TKey, TKey, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with interpolated head and tail items based on the specified key range. public static List<TItem> GetSubListWithInterpolatedHeadAndTail<TKey, TItem>(this List<TItem> src, TKey beginKey, TKey endKey, Func<TItem, TKey> getKeyFunc, Func<TKey, TKey, int> keyCompareFunc, Func<TKey, TKey, TKey> keyMinusFunc, Func<TKey, TKey, double> keyDivFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc) Parameters src List<TItem> The source list. beginKey TKey The beginning key of the range. endKey TKey The ending key of the range. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. keyCompareFunc Func<TKey, TKey, int> A function that compares two keys. keyMinusFunc Func<TKey, TKey, TKey> A function that subtracts one key from another. keyDivFunc Func<TKey, TKey, double> A function that divides one key by another to get a ratio. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with interpolated head and tail items. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail<TItem>(List<TItem>, TimeSpan, Func<TItem, TimeSpan>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with an interpolated tail item based on the specified TimeSpan key. public static List<TItem> GetSubListWithInterpolatedTail<TItem>(this List<TItem> src, TimeSpan endKey, Func<TItem, TimeSpan> getKeyFunc, Func<TItem, TItem, TItem> addingFunc, Func<TItem, double, TItem> scalingFunc) Parameters src List<TItem> The source list. endKey TimeSpan The ending TimeSpan key for interpolation. getKeyFunc Func<TItem, TimeSpan> A function that extracts the TimeSpan key from an item. addingFunc Func<TItem, TItem, TItem> A function that adds two items together. scalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with an interpolated tail item. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedTail<TKey, TItem>(List<TItem>, TKey, Func<TItem, TKey>) Creates a new list with an interpolated tail item based on the specified key, using operators for both key and item operations. public static List<TItem> GetSubListWithInterpolatedTail<TKey, TItem>(this List<TItem> src, TKey endKey, Func<TItem, TKey> getKeyFunc) where TKey : IComparable<TKey>, ISubtractionOperators<TKey, TKey, TKey>, IDivisionOperators<TKey, TKey, double> where TItem : IAdditionOperators<TItem, TItem, TItem>, IMultiplyOperators<TItem, double, TItem> Parameters src List<TItem> The source list. endKey TKey The ending key for interpolation. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. Returns List<TItem> A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list, which must support addition and multiplication operators. GetSubListWithInterpolatedTail<TKey, TItem>(List<TItem>, TKey, Func<TItem, TKey>, Func<TKey, TKey, int>, Func<TKey, TKey, TKey>, Func<TKey, TKey, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with an interpolated tail item based on the specified key. public static List<TItem> GetSubListWithInterpolatedTail<TKey, TItem>(this List<TItem> src, TKey endKey, Func<TItem, TKey> getKeyFunc, Func<TKey, TKey, int> keyCompareFunc, Func<TKey, TKey, TKey> keyMinusFunc, Func<TKey, TKey, double> keyDivFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc) Parameters src List<TItem> The source list. endKey TKey The ending key for interpolation. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. keyCompareFunc Func<TKey, TKey, int> A function that compares two keys. keyMinusFunc Func<TKey, TKey, TKey> A function that subtracts one key from another. keyDivFunc Func<TKey, TKey, double> A function that divides one key by another to get a ratio. itemAddingFunc Func<TItem, TItem, TItem> A function that adds two items together. itemScalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with an interpolated tail item. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail<TKey, TItem>(List<TItem>, TKey, Func<TItem, TKey>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Creates a new list with an interpolated tail item based on the specified key, using operators for key operations. public static List<TItem> GetSubListWithInterpolatedTail<TKey, TItem>(this List<TItem> src, TKey endKey, Func<TItem, TKey> getKeyFunc, Func<TItem, TItem, TItem> addingFunc, Func<TItem, double, TItem> scalingFunc) where TKey : IComparable<TKey>, ISubtractionOperators<TKey, TKey, TKey>, IDivisionOperators<TKey, TKey, double> Parameters src List<TItem> The source list. endKey TKey The ending key for interpolation. getKeyFunc Func<TItem, TKey> A function that extracts the key from an item. addingFunc Func<TItem, TItem, TItem> A function that adds two items together. scalingFunc Func<TItem, double, TItem> A function that scales an item by a factor. Returns List<TItem> A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list. GetSubList<TItem>(IList<TItem>, int, int) Gets a sub-list view of the specified list within the given index range. public static SubList<TItem> GetSubList<TItem>(this IList<TItem> src, int beginIndex, int endIndex) Parameters src IList<TItem> The source list. beginIndex int The starting index (inclusive). endIndex int The ending index (exclusive). Returns SubList<TItem> A sub-list view of the specified range. Type Parameters TItem The type of items in the list. Swap<TItem>(IList<TItem>, int, int) Swaps two elements in a list at the specified indices. public static void Swap<TItem>(this IList<TItem> src, int indexA, int indexB) Parameters src IList<TItem> The source list indexA int The index of the first element to swap indexB int The index of the second element to swap Type Parameters TItem The type of elements in the list TestFloorCeil() Tests the floor and ceiling functionality with sample data. public static void TestFloorCeil()"
},
"api/Hi.Common.Collections.SearchTargetMode.html": {
"href": "api/Hi.Common.Collections.SearchTargetMode.html",
"title": "Enum SearchTargetMode | HiAPI-C# 2025",
"summary": "Enum SearchTargetMode Namespace Hi.Common.Collections Assembly HiGeom.dll Specifies the search method to use when looking for values in a sorted list. public enum SearchTargetMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Ceil = 1 Find the smallest element greater than or equal to the key. Floor = 0 Find the largest element less than or equal to the key."
},
"api/Hi.Common.Collections.SeekDirection.html": {
"href": "api/Hi.Common.Collections.SeekDirection.html",
"title": "Enum SeekDirection | HiAPI-C# 2025",
"summary": "Enum SeekDirection Namespace Hi.Common.Collections Assembly HiGeom.dll Specifies the seek direction for sorted list operations. public enum SeekDirection Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Backward = 2 Backward seek direction. Forward = 1 Forward seek direction. Free = 0 Free seek direction without additional performance cost."
},
"api/Hi.Common.Collections.SortedListUtil.html": {
"href": "api/Hi.Common.Collections.SortedListUtil.html",
"title": "Class SortedListUtil | HiAPI-C# 2025",
"summary": "Class SortedListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility class providing extension methods for SortedList operations. public static class SortedListUtil Inheritance object SortedListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetByMethod<TKey, V>(SortedList<TKey, V>, TKey, SearchTargetMode, out V, int, int) Get value by searchMethod. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetByMethod<TKey, V>(this SortedList<TKey, V> src, TKey key, SearchTargetMode searchMethod, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> source key TKey key searchMethod SearchTargetMode search method resultValue V searched value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetCeilBySeek<TKey, V>(SortedList<TKey, V>, TKey, out V, out int, int, SeekDirection) Gets the ceil value by seeking with the specified direction. public static SearchResult GetCeilBySeek<TKey, V>(this SortedList<TKey, V> src, TKey key, out V ceilValue, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. ceilValue V The output ceil value. ceilListIndex int The output ceil list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeilListIndexBySeek<TKey, V>(SortedList<TKey, V>, TKey, out int, int, SeekDirection) Gets the ceil list index by seeking with the specified direction. public static SearchResult GetCeilListIndexBySeek<TKey, V>(this SortedList<TKey, V> src, TKey key, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. ceilListIndex int The output ceil list index. seekingStartListIndex int Start list index for seeking. seekDirection SeekDirection The seek direction. Default is Free. Returns SearchResult The search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetCeilListIndex<TKey, V>(SortedList<TKey, V>, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key greater than or equal to a specified key. public static SearchResult GetCeilListIndex<TKey, V>(this SortedList<TKey, V> src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the ceiling element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a ceiling value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeil<TKey, V>(SortedList<TKey, V>, TKey, out V, int, int) Get ceil value by key without returning the ceil index. public static SearchResult GetCeil<TKey, V>(this SortedList<TKey, V> src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. resultValue V The ceil value. beginIndex int The starting index for the search range (inclusive). endIndex int The ending index for the search range (exclusive). Returns SearchResult The binary search result. Type Parameters TKey Key type. V Value type. GetCeil<TKey, V>(SortedList<TKey, V>, TKey, out V, out int, int, int) Get ceil value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetCeil<TKey, V>(this SortedList<TKey, V> src, TKey key, out V resultValue, out int ceilIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> source key TKey key resultValue V ceil value ceilIndex int The output ceil index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetEnumerableByKeyBoundary<TKey, V>(SortedList<TKey, V>, TKey, bool, TKey, bool, int, int) Gets a sequence of key-value pairs from a sorted list within a specified key range. public static IEnumerable<KeyValuePair<TKey, V>> GetEnumerableByKeyBoundary<TKey, V>(this SortedList<TKey, V> src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns IEnumerable<KeyValuePair<TKey, V>> A sequence of key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorBySeek<TKey, V>(SortedList<TKey, V>, TKey, out V, out int, int, SeekDirection) Gets the floor value by seeking with the specified direction. public static SearchResult GetFloorBySeek<TKey, V>(this SortedList<TKey, V> src, TKey key, out V floorValue, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. floorValue V The output floor value. floorListIndex int The output floor list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorListIndexBySeek<TKey, V>(SortedList<TKey, V>, TKey, out int, int, SeekDirection) Gets the floor list index by seeking with the specified direction. public static SearchResult GetFloorListIndexBySeek<TKey, V>(this SortedList<TKey, V> src, TKey key, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. floorListIndex int The output floor list index. seekingStartListIndex int Start list index for seeking. seekDirection SeekDirection The seek direction. Default is Free. Returns SearchResult The search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetFloorListIndex<TKey, V>(SortedList<TKey, V>, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key less than or equal to a specified key. public static SearchResult GetFloorListIndex<TKey, V>(this SortedList<TKey, V> src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the floor element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a floor value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloor<TKey, V>(SortedList<TKey, V>, TKey, out V, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor<TKey, V>(this SortedList<TKey, V> src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> source key TKey key resultValue V floor value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetFloor<TKey, V>(SortedList<TKey, V>, TKey, out V, out int, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor<TKey, V>(this SortedList<TKey, V> src, TKey key, out V resultValue, out int floorIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> source key TKey key resultValue V floor value floorIndex int The output floor index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetIndexRangeByKeyBoundary<TKey, V>(SortedList<TKey, V>, TKey, bool, TKey, bool, int, int) Gets the index range by key boundary. public static Range<int> GetIndexRangeByKeyBoundary<TKey, V>(this SortedList<TKey, V> src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. begin TKey The begin key. isIncludingBeginFloor bool Whether to include the floor of begin key. end TKey The end key. isIncludingEndCeil bool Whether to include the ceil of end key. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns Range<int> The index range, or null if not found. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetNearestIndex<V>(SortedList<double, V>, double, out int, int, int) Gets the index of the element in a sorted list that has a key nearest to a specified key. public static SearchResult GetNearestIndex<V>(this SortedList<double, V> src, double key, out int resultIndex, int beginIndex = 0, int endIndex = -1) Parameters src SortedList<double, V> The source sorted list. key double The key to search for. resultIndex int When this method returns, contains the index of the nearest element if found; otherwise, -1. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestKey<V>(SortedList<double, V>, double, out double, int, int) Gets the key in a sorted list that is nearest to a specified key. public static SearchResult GetNearestKey<V>(this SortedList<double, V> src, double key, out double resultKey, int beginIndex = 0, int endIndex = -1) Parameters src SortedList<double, V> The source sorted list. key double The key to search for. resultKey double When this method returns, contains the nearest key if found; otherwise, NaN. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestValue<V>(SortedList<double, V>, double, out V, int, int) Gets the value in a sorted list that corresponds to the key nearest to a specified key. public static SearchResult GetNearestValue<V>(this SortedList<double, V> src, double key, out V resultValue, int beginIndex = 0, int endIndex = -1) Parameters src SortedList<double, V> The source sorted list. key double The key to search for. resultValue V When this method returns, contains the value corresponding to the nearest key if found; otherwise, the default value for the type. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetSortedListByKeyBoundary<TKey, V>(SortedList<TKey, V>, TKey, bool, TKey, bool, int, int) Creates a new sorted list containing key-value pairs from a source sorted list within a specified key range. public static SortedList<TKey, V> GetSortedListByKeyBoundary<TKey, V>(this SortedList<TKey, V> src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SortedList<TKey, V> A new sorted list containing key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetValuesByKeyBoundary<TKey, V>(SortedList<TKey, V>, TKey, bool, TKey, bool, int, int) Gets a list of values from a sorted list within a specified key range. public static List<V> GetValuesByKeyBoundary<TKey, V>(this SortedList<TKey, V> src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable<TKey> Parameters src SortedList<TKey, V> The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns List<V> A list of values within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. ToSortedList<TKey, TValue>(List<TValue>, Func<TValue, TKey>) Converts a list of values to a sorted list using a key selector function. public static SortedList<TKey, TValue> ToSortedList<TKey, TValue>(this List<TValue> src, Func<TValue, TKey> keyFunc) where TKey : IComparable<TKey> Parameters src List<TValue> The source list of values. keyFunc Func<TValue, TKey> A function to extract a key from each value. Returns SortedList<TKey, TValue> A sorted list containing the values from the source list, keyed by the extracted keys. Type Parameters TKey The type of keys in the resulting sorted list. TValue The type of values in the list and the resulting sorted list."
},
"api/Hi.Common.Collections.SubList-1.html": {
"href": "api/Hi.Common.Collections.SubList-1.html",
"title": "Class SubList<T> | HiAPI-C# 2025",
"summary": "Class SubList<T> Namespace Hi.Common.Collections Assembly HiGeom.dll Represents a sub-list view of a source list within a specified index range. public class SubList<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable Type Parameters T The type of elements in the list. Inheritance object SubList<T> Implements IList<T> ICollection<T> IEnumerable<T> IEnumerable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ListUtil.GetCeilBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetCeilIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetCeilIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetCeil<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetFloorBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetFloorIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetFloorIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetFloor<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>, int, int) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem, IComparer<TItem>) ListUtil.GetIndexByBinarySearch<TItem, TSearch>(IList<TItem>, TSearch, Func<TSearch, TItem, int>) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, double>, out int) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, int>, Func<TItem, TItemKey, double>, out int) ListUtil.GetSubList<TItem>(IList<TItem>, int, int) ListUtil.Swap<TItem>(IList<TItem>, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubList(IList<T>, int, int) Initializes a new instance. public SubList(IList<T> source, int beginIndex, int endIndex) Parameters source IList<T> The source list. beginIndex int The starting index (inclusive). endIndex int The ending index (exclusive). Properties Count Gets the number of elements contained in the ICollection<T>. public int Count { get; } Property Value int The number of elements contained in the ICollection<T>. IsReadOnly Gets a value indicating whether the ICollection<T> is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection<T> 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<T>. NotSupportedException The property is set and the IList<T> is read-only. Methods Add(T) Adds an item to the ICollection<T>. public void Add(T item) Parameters item T The object to add to the ICollection<T>. Exceptions NotSupportedException The ICollection<T> is read-only. Clear() Removes all items from the ICollection<T>. public void Clear() Exceptions NotSupportedException The ICollection<T> is read-only. Contains(T) Determines whether the ICollection<T> contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection<T>. Returns bool true if item is found in the ICollection<T>; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection<T> 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<T>. 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<T> 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<T> GetEnumerator() Returns IEnumerator<T> An enumerator that can be used to iterate through the collection. IndexOf(T) Determines the index of a specific item in the IList<T>. public int IndexOf(T item) Parameters item T The object to locate in the IList<T>. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList<T> 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<T>. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList<T>. NotSupportedException The IList<T> is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection<T>. public bool Remove(T item) Parameters item T The object to remove from the ICollection<T>. Returns bool true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>. Exceptions NotSupportedException The ICollection<T> is read-only. RemoveAt(int) Removes the IList<T> 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<T>. NotSupportedException The IList<T> is read-only."
},
"api/Hi.Common.Collections.SynList-1.html": {
"href": "api/Hi.Common.Collections.SynList-1.html",
"title": "Class SynList<T> | HiAPI-C# 2025",
"summary": "Class SynList<T> Namespace Hi.Common.Collections Assembly HiGeom.dll Thread-safe List. public class SynList<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable Type Parameters T T Inheritance object SynList<T> Implements IList<T> ICollection<T> IEnumerable<T> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ListUtil.GetCeilBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetCeilIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetCeilIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetCeil<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetFloorBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetFloorIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetFloorIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetFloor<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>, int, int) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem, IComparer<TItem>) ListUtil.GetIndexByBinarySearch<TItem, TSearch>(IList<TItem>, TSearch, Func<TSearch, TItem, int>) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, double>, out int) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, int>, Func<TItem, TItemKey, double>, out int) ListUtil.GetSubList<TItem>(IList<TItem>, int, int) ListUtil.Swap<TItem>(IList<TItem>, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SynList(SynList<T>) public SynList(SynList<T> src) Parameters src SynList<T> SynList(IEnumerable<T>) public SynList(IEnumerable<T> ts) Parameters ts IEnumerable<T> SynList(int) public SynList(int cap = 8) Parameters cap int Properties Count Gets the number of elements contained in the ICollection<T>. public int Count { get; } Property Value int The number of elements contained in the ICollection<T>. Data public List<T> Data { get; set; } Property Value List<T> IsReadOnly Gets a value indicating whether the ICollection<T> is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection<T> 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<T>. NotSupportedException The property is set and the IList<T> 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<T>. public void Add(T item) Parameters item T The object to add to the ICollection<T>. Exceptions NotSupportedException The ICollection<T> 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<T>. public void Clear() Exceptions NotSupportedException The ICollection<T> is read-only. Contains(T) Determines whether the ICollection<T> contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection<T>. Returns bool true if item is found in the ICollection<T>; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection<T> 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<T>. 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<T> 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<T> GetEnumerator() Returns IEnumerator<T> An enumerator that can be used to iterate through the collection. IndexOf(T) Determines the index of a specific item in the IList<T>. public int IndexOf(T item) Parameters item T The object to locate in the IList<T>. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList<T> 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<T>. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList<T>. NotSupportedException The IList<T> is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection<T>. public bool Remove(T item) Parameters item T The object to remove from the ICollection<T>. Returns bool true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>. Exceptions NotSupportedException The ICollection<T> is read-only. RemoveAt(int) Removes the IList<T> 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<T>. NotSupportedException The IList<T> is read-only. ToList() Creates a new List<T> containing all elements from this synchronized list. This operation is thread-safe as it acquires a lock on the underlying data. public List<T> ToList() Returns List<T> A new List<T> containing all elements from this synchronized list."
},
"api/Hi.Common.Collections.html": {
"href": "api/Hi.Common.Collections.html",
"title": "Namespace Hi.Common.Collections | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.Collections Classes DictionaryUtil Utility class providing extension methods for dictionary operations. EnumerableUtil Utility class providing extension methods for enumerable collections. FixedSizeConcurrentLinkedListUtil Utility of Fixed Size Concurrent LinkedList. LazyLinkedListNode<T> Node for LazyLinkedList<T>. Accessing Next on the tail node automatically materializes the next item from the list's source (if any). LazyLinkedList<T> A singly-growable linked list that can lazily materialize nodes from an IEnumerable<T> source. Without a source it behaves like a regular append-only linked list. With a source, nodes are pulled on demand when Next is accessed on the tail, or when First is accessed on an empty list. LinkedListUtil Utility methods for working with linked lists. ListIndexBasedEnumerable<T> Provides an enumerable wrapper for a list that iterates over a specified range of indices. ListIndexBasedIEnumerator<T> Provides an enumerator that iterates over a specified range of indices in a list. ListUtil Provides utility methods for working with lists and collections. SortedListUtil Utility class providing extension methods for SortedList operations. SubList<T> Represents a sub-list view of a source list within a specified index range. SynList<T> Thread-safe List. Enums ListUtil.OuterPolationMode Defines the mode for handling values outside the range of a collection during interpolation. SearchTargetMode Specifies the search method to use when looking for values in a sorted list. SeekDirection Specifies the seek direction for sorted list operations."
},
"api/Hi.Common.ConcurrentTimeCounter.html": {
"href": "api/Hi.Common.ConcurrentTimeCounter.html",
"title": "Class ConcurrentTimeCounter | HiAPI-C# 2025",
"summary": "Class ConcurrentTimeCounter Namespace Hi.Common Assembly HiGeom.dll Thread-safe utility for measuring and tracking execution time across multiple tasks. public static class ConcurrentTimeCounter Inheritance object ConcurrentTimeCounter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks This is the concurrent version of TimeCounter, designed for multi-threaded environments. It measures the time elapsed between paired calls to Bound(object) with the same key in the same task. The timing starts on the first (odd-numbered) call to Bound(object) and stops on the second (even-numbered) call, accumulating statistics for each key. Methods Bound(object) Marks a boundary for time measurement for the specified key. public static void Bound(object key) Parameters key object The key to identify this measurement Remarks This method acts as both the start and end point for timing: On first call with a key, starts the timer On second call with the same key, stops the timer and records the elapsed time Subsequent calls alternate between starting and stopping Pass(object) Cancels an active time measurement for the specified key without recording the elapsed time. public static void Pass(object key) Parameters key object The key identifying the measurement to cancel Remarks If timing has not been started for the key, this method has no effect. This is useful when you want to abort a measurement without affecting statistics. Reset() Resets all time measurements across all tasks. Clears all accumulated statistics and counters. public static void Reset() Show() Displays all accumulated time measurements to the console. public static void Show() Remarks For each task and key, shows the count of measurements, total time, and average time. ShowExt(int) Displays time measurements and resets counters periodically based on call frequency. public static void ShowExt(int gap) Parameters gap int The number of calls to this method before showing results and resetting Remarks This method increments an internal counter with each call. When the counter reaches the specified gap value, it displays all measurements, resets the counters, and resets the internal counter to zero."
},
"api/Hi.Common.ConsoleUtil.html": {
"href": "api/Hi.Common.ConsoleUtil.html",
"title": "Class ConsoleUtil | HiAPI-C# 2025",
"summary": "Class ConsoleUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for console window operations. public static class ConsoleUtil Inheritance object ConsoleUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ApplyCppConsole() Applies the console handle to standard output and error streams for C++ compatibility. public static void ApplyCppConsole() Hide() Hides the console window. public static void Hide() SetStdHandle(int, nint) Sets the handle for the specified standard device (standard input, standard output, or standard error). public static extern int SetStdHandle(int stdHandle, nint handle) Parameters stdHandle int The standard device handle nint The handle Returns int Nonzero if the function succeeds; otherwise, zero Show() Shows the console window. If the console doesn't exist, it creates a new one. public static void Show()"
},
"api/Hi.Common.CppLogUtil.LogDelegate.html": {
"href": "api/Hi.Common.CppLogUtil.LogDelegate.html",
"title": "Delegate CppLogUtil.LogDelegate | HiAPI-C# 2025",
"summary": "Delegate CppLogUtil.LogDelegate Namespace Hi.Common Assembly HiDisp.dll Internal Use Only. public delegate void CppLogUtil.LogDelegate(string msg) Parameters msg string Internal Use Only. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.CppLogUtil.html": {
"href": "api/Hi.Common.CppLogUtil.html",
"title": "Class CppLogUtil | HiAPI-C# 2025",
"summary": "Class CppLogUtil Namespace Hi.Common Assembly HiDisp.dll Internal Use Only. public static class CppLogUtil Inheritance object CppLogUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods SetLogFunc(LogDelegate) Sets the logging function for C++ code. public static void SetLogFunc(CppLogUtil.LogDelegate logFunc) Parameters logFunc CppLogUtil.LogDelegate The logging delegate to use."
},
"api/Hi.Common.CsvUtils.CsvInputKit.html": {
"href": "api/Hi.Common.CsvUtils.CsvInputKit.html",
"title": "Class CsvInputKit | HiAPI-C# 2025",
"summary": "Class CsvInputKit Namespace Hi.Common.CsvUtils Assembly HiGeom.dll Utility class for parsing and processing CSV input data. public class CsvInputKit Inheritance object CsvInputKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvInputKit() Initializes a new instance of the CsvInputKit class. public CsvInputKit() Properties TitleLine Gets or sets the CSV header line as a comma-separated string. public string TitleLine { get; set; } Property Value string TitleList Gets or sets the list of column titles from the CSV header. public List<string> TitleList { get; set; } Property Value List<string> TypeDictionary Dictionary mapping type names to their corresponding Type objects. public Dictionary<string, Type> TypeDictionary { get; } Property Value Dictionary<string, Type> Methods GetCsvDictionary(IList<string>, string) Splits a CSV row into a title→cell dictionary. Stateless allocation-light variant of GetCsvDictionary(string); use this when the caller already has the title list and does not need to hold a CsvInputKit instance. public static Dictionary<string, string> GetCsvDictionary(IList<string> titleList, string row) Parameters titleList IList<string> Column titles, in CSV column order. row string CSV data row (not the header line). Returns Dictionary<string, string> Dictionary keyed by column title; cells past titleList are keyed by column[i]. GetCsvDictionary(string) Creates a dictionary from a CSV row, mapping column titles to their values. The row should not be the header line, and TitleLine or TitleList must be set first. public Dictionary<string, string> GetCsvDictionary(string row) Parameters row string The CSV row to process Returns Dictionary<string, string> A dictionary mapping column titles to their values"
},
"api/Hi.Common.CsvUtils.CsvOutputKit.html": {
"href": "api/Hi.Common.CsvUtils.CsvOutputKit.html",
"title": "Class CsvOutputKit | HiAPI-C# 2025",
"summary": "Class CsvOutputKit Namespace Hi.Common.CsvUtils Assembly HiGeom.dll CSV output toolkit. Toolkit for getting Comma-seperated Csv lines. public class CsvOutputKit Inheritance object CsvOutputKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvOutputKit(List<string>) Ctor. public CsvOutputKit(List<string> prefixTitleList = null) Parameters prefixTitleList List<string> Custom title order at the leading columns. If no custom order needed, keep the parameter null. Methods BuildCsvTitleByCsvRow(IGetCsvDictionary) Builds the CSV title structure based on the keys in the dictionary provided by an IGetCsvDictionary object. public void BuildCsvTitleByCsvRow(IGetCsvDictionary row) Parameters row IGetCsvDictionary An object implementing IGetCsvDictionary interface. BuildCsvTitleByCsvRow(Dictionary<string, string>) Builds the CSV title structure based on the keys in the provided dictionary. public void BuildCsvTitleByCsvRow(Dictionary<string, string> row) Parameters row Dictionary<string, string> Dictionary containing key-value pairs to be used for building the CSV title. GetCsvRowText(IGetCsvDictionary) Converts an object implementing IGetCsvDictionary to a CSV row text. public string GetCsvRowText(IGetCsvDictionary row) Parameters row IGetCsvDictionary An object implementing IGetCsvDictionary interface. Returns string A comma-separated string representing the row, or null if the input is null. GetCsvRowText(Dictionary<string, object>) Converts a dictionary of string keys and object values to a CSV row text. public string GetCsvRowText(Dictionary<string, object> row) Parameters row Dictionary<string, object> Dictionary containing key-value pairs to be converted to CSV format. Returns string A comma-separated string representing the row, or null if the input is null. GetCsvRowText(Dictionary<string, string>) Converts a dictionary of string keys and values to a CSV row text. public string GetCsvRowText(Dictionary<string, string> row) Parameters row Dictionary<string, string> Dictionary containing key-value pairs to be converted to CSV format. Returns string A comma-separated string representing the row, or null if the input is null. GetCsvTitle() The title is obtained by the previous added csv row. public string GetCsvTitle() Returns string"
},
"api/Hi.Common.CsvUtils.CsvUtil.html": {
"href": "api/Hi.Common.CsvUtils.CsvUtil.html",
"title": "Class CsvUtil | HiAPI-C# 2025",
"summary": "Class CsvUtil Namespace Hi.Common.CsvUtils Assembly HiGeom.dll Provides utility methods for working with CSV (Comma-Separated Values) data. public static class CsvUtil Inheritance object CsvUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCsvLines(IEnumerable<IGetCsvDictionary>, List<string>) Get Comma-seperated Csv lines. The title line is at the last return. public static IEnumerable<string> GetCsvLines(this IEnumerable<IGetCsvDictionary> rows, List<string> prefixTitleList = null) Parameters rows IEnumerable<IGetCsvDictionary> rows prefixTitleList List<string> Custom title order at the leading columns. If no custom order needed, keep the parameter null. Returns IEnumerable<string> CSV lines. GetCsvLines(IEnumerable<Dictionary<string, string>>, List<string>) Get Comma-seperated Csv lines. The title line is at the last return. public static IEnumerable<string> GetCsvLines(IEnumerable<Dictionary<string, string>> rows, List<string> prefixTitleList = null) Parameters rows IEnumerable<Dictionary<string, string>> rows prefixTitleList List<string> Custom title order at the leading columns. If no custom order needed, keep the parameter null. Returns IEnumerable<string> CSV lines. GetCsvRowText(object[]) Converts an array of objects to a CSV row text. public static string GetCsvRowText(object[] objs) Parameters objs object[] Array of objects to be converted to CSV format. Returns string A comma-separated string representing the objects."
},
"api/Hi.Common.CsvUtils.ICsvRowIo.html": {
"href": "api/Hi.Common.CsvUtils.ICsvRowIo.html",
"title": "Interface ICsvRowIo | HiAPI-C# 2025",
"summary": "Interface ICsvRowIo Namespace Hi.Common.CsvUtils Assembly HiGeom.dll Object that can be two-way converting between CSV row. public interface ICsvRowIo Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CsvText Csv text. string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. string CsvTitleText { get; } Property Value string"
},
"api/Hi.Common.CsvUtils.IGetCsvDictionary.html": {
"href": "api/Hi.Common.CsvUtils.IGetCsvDictionary.html",
"title": "Interface IGetCsvDictionary | HiAPI-C# 2025",
"summary": "Interface IGetCsvDictionary Namespace Hi.Common.CsvUtils Assembly HiGeom.dll Interface of GetCsvDictionary(). It suits for CSV output. public interface IGetCsvDictionary Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCsvDictionary() Get row dictionary. It suits for CSV output. Dictionary<string, string> GetCsvDictionary() Returns Dictionary<string, string> csv row dictionary"
},
"api/Hi.Common.CsvUtils.html": {
"href": "api/Hi.Common.CsvUtils.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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",
"title": "Class DuplicateUtil | HiAPI-C# 2025",
"summary": "Class DuplicateUtil Namespace Hi.Common Assembly HiGeom.dll Utility methods for duplication operations. public static class DuplicateUtil Inheritance object DuplicateUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TryDuplicate<TSelf>(TSelf, params object[]) Attempts to create a duplicate of the source object using the most appropriate method available. public static TSelf TryDuplicate<TSelf>(this TSelf src, params object[] res) where TSelf : class Parameters src TSelf The source object to duplicate res object[] Optional parameters that may be needed during the duplication process Returns TSelf A duplicate of the source object if it implements IDuplicate or ICloneable; otherwise, null. Type Parameters TSelf The type of the source object Remarks The method first tries to use Duplicate(params object[]) if the source implements IDuplicate. If that's not available, it falls back to Clone() if the source implements ICloneable."
},
"api/Hi.Common.EnumUtil.html": {
"href": "api/Hi.Common.EnumUtil.html",
"title": "Class EnumUtil | HiAPI-C# 2025",
"summary": "Class EnumUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for enum operations. public static class EnumUtil Inheritance object EnumUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetEnumBitArrayCap(Type) Gets the capacity needed for a bit array to represent all values of an enum type. public static int GetEnumBitArrayCap(Type enumType) Parameters enumType Type The enum type Returns int The maximum value in the enum plus 1 GetEnumBitArrayCap<TEnum>() Gets the capacity needed for a bit array to represent all values of an enum type. public static int GetEnumBitArrayCap<TEnum>() where TEnum : struct, Enum Returns int The maximum value in the enum plus 1 Type Parameters TEnum The enum type"
},
"api/Hi.Common.EnumerablePlayer.html": {
"href": "api/Hi.Common.EnumerablePlayer.html",
"title": "Class EnumerablePlayer | HiAPI-C# 2025",
"summary": "Class EnumerablePlayer Namespace Hi.Common Assembly HiGeom.dll Run enumerable with Pause(), Resume() and etc. functions. public class EnumerablePlayer : IDisposable Inheritance object EnumerablePlayer 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors EnumerablePlayer() Ctor. public EnumerablePlayer() Properties Actions Collection of actions to be executed by the player. public IEnumerable<Action> Actions { get; set; } Property Value IEnumerable<Action> ExceptionAction Action to handle exceptions that occur during execution. public Action<Exception> ExceptionAction { get; set; } Property Value Action<Exception> 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 ResettingSemaphore internal use. public SemaphoreSlim ResettingSemaphore { get; set; } Property Value SemaphoreSlim Methods BreakAsync() Breaks the current execution asynchronously. public Task BreakAsync() Returns Task A task representing the asynchronous operation. 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 Pause() Pauses the execution of actions. public void Pause() Reset() Resets the player synchronously. public void Reset() ResetAsync() Asynchronously resets the player. public Task ResetAsync() Returns Task A task representing the asynchronous operation. Resume() Resume the process. public void Resume() RunToOneActionEnd() Runs the player until one action completes. public void RunToOneActionEnd() Start() Start the process. public Task Start() Returns Task Terminate() Terminates the execution of actions synchronously. public void Terminate() TerminateAsync() Terminates the execution of actions asynchronously. public Task TerminateAsync() Returns Task A task representing the asynchronous operation. WaitPlayingTask() Wait playing to an end. Wait Hi.Common.EnumerablePlayer.PlayingTask. public void WaitPlayingTask() Events EndedEvent Event triggered when the player ends. public event Action EndedEvent Event Type Action IsLockedEventHandler Event triggered when the lock state changes. public event Action<bool> IsLockedEventHandler Event Type Action<bool> IsRunningChangedEvent Event triggered when the running state changes. public event Action<bool> IsRunningChangedEvent Event Type Action<bool> OnCallingTerminate Event triggered when termination is being called. public event EventHandler OnCallingTerminate Event Type EventHandler OnFinished Event triggered when the player has finished playing all actions public event EventHandler OnFinished Event Type EventHandler ResetedEvent Event triggered after the player has been reset. public event Func<Task> ResetedEvent Event Type Func<Task> ResetingEvent Event triggered before resetting the player. public event Func<Task> ResetingEvent Event Type Func<Task> StartingEvent Event triggered when the player starts. public event Action StartingEvent Event Type Action"
},
"api/Hi.Common.FileLines.FileBeginEventArgs.html": {
"href": "api/Hi.Common.FileLines.FileBeginEventArgs.html",
"title": "Class FileBeginEventArgs | HiAPI-C# 2025",
"summary": "Class FileBeginEventArgs Namespace Hi.Common.FileLines Assembly HiGeom.dll Event arguments for when a file processing begins. public class FileBeginEventArgs : EventArgs Inheritance object EventArgs FileBeginEventArgs Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileBeginEventArgs() Initializes a new instance of the FileBeginEventArgs class. public FileBeginEventArgs() FileBeginEventArgs(string) Initializes a new instance of the FileBeginEventArgs class with a specified file path. public FileBeginEventArgs(string file) Parameters file string The file path being processed. Properties File Gets or sets the file path being processed. public string File { get; set; } Property Value string"
},
"api/Hi.Common.FileLines.FileEndEventArgs.html": {
"href": "api/Hi.Common.FileLines.FileEndEventArgs.html",
"title": "Class FileEndEventArgs | HiAPI-C# 2025",
"summary": "Class FileEndEventArgs Namespace Hi.Common.FileLines Assembly HiGeom.dll Event arguments for when a file processing ends. public class FileEndEventArgs : EventArgs Inheritance object EventArgs FileEndEventArgs Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileEndEventArgs() Initializes a new instance of the FileEndEventArgs class. public FileEndEventArgs() FileEndEventArgs(string) Initializes a new instance of the FileEndEventArgs class with a specified file path. public FileEndEventArgs(string file) Parameters file string The file path that was processed. Properties File Gets or sets the file path that was processed. public string File { get; set; } Property Value string"
},
"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<FileLineCharIndex>, IEquatable<FileLineCharIndex> Inheritance object FileLineCharIndex Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IComparable<FileLineCharIndex> IEquatable<FileLineCharIndex> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MathUtil.Clamp<T>(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",
"title": "Class FileLineCharIndexSegment | HiAPI-C# 2025",
"summary": "Class FileLineCharIndexSegment Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a character-level segment within file(s). Begin is inclusive, End is exclusive: [Begin, End). public class FileLineCharIndexSegment : IEquatable<FileLineCharIndexSegment> Inheritance object FileLineCharIndexSegment Implements IEquatable<FileLineCharIndexSegment> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileLineCharIndexSegment() Initializes a new instance of the FileLineCharIndexSegment class. public FileLineCharIndexSegment() FileLineCharIndexSegment(FileLineCharIndex, FileLineCharIndex) Initializes a new instance of the FileLineCharIndexSegment class with specified begin and end positions. public FileLineCharIndexSegment(FileLineCharIndex begin, FileLineCharIndex end) Parameters begin FileLineCharIndex The beginning position (inclusive). end FileLineCharIndex The ending position (exclusive). FileLineCharIndexSegment(FileLineCharIndexSegment) Initializes a new instance of the FileLineCharIndexSegment class by copying another instance. public FileLineCharIndexSegment(FileLineCharIndexSegment src) Parameters src FileLineCharIndexSegment The source to copy from. FileLineCharIndexSegment(IIndexedFileLine) Initializes a new instance that spans the entire indexedFileLine — from its first character to one past its last character. public FileLineCharIndexSegment(IIndexedFileLine indexedFileLine) Parameters indexedFileLine IIndexedFileLine The file line whose full extent the segment should cover. Properties Begin Beginning position (inclusive). public FileLineCharIndex Begin { get; set; } Property Value FileLineCharIndex End Ending position (exclusive). public FileLineCharIndex End { get; set; } Property Value FileLineCharIndex IsMultiLine Whether the segment spans multiple lines. public bool IsMultiLine { get; } Property Value bool Methods Any() Whether this segment contains any characters (End > Begin). public bool Any() Returns bool Equals(FileLineCharIndexSegment) Indicates whether the current object is equal to another object of the same type. public bool Equals(FileLineCharIndexSegment other) Parameters other FileLineCharIndexSegment 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. 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.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<IFileLineIndex>, IComparable<FileLineIndex>, IMakeXmlSource, IToXElement, IToPresentDto Inheritance object FileLineIndex Implements IFileLineIndex IGetFileLineIndex IComparable<IFileLineIndex> IComparable<FileLineIndex> IMakeXmlSource IToXElement IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MathUtil.Clamp<T>(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 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. 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<string> ReadAllTextWithFileShareAsync(string filePath) Parameters filePath string The path of the file to read. Returns Task<string> A task that represents the asynchronous read operation, which wraps the file contents. ToIndexedFile(IEnumerable<string>) Converts a collection of file paths to a collection of indexed files. public static IEnumerable<IndexedFile> ToIndexedFile(this IEnumerable<string> files) Parameters files IEnumerable<string> The collection of file paths. Returns IEnumerable<IndexedFile> A collection of indexed files."
},
"api/Hi.Common.FileLines.IFileChangedEventSupport.html": {
"href": "api/Hi.Common.FileLines.IFileChangedEventSupport.html",
"title": "Interface IFileChangedEventSupport | HiAPI-C# 2025",
"summary": "Interface IFileChangedEventSupport Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for supporting file change events. public interface IFileChangedEventSupport Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Events FileBeginEventHandler Event that is raised when file processing begins. event EventHandler<IndexedFile> FileBeginEventHandler Event Type EventHandler<IndexedFile> FileEndEventHandler Event that is raised when file processing ends. event EventHandler<IndexedFile> FileEndEventHandler Event Type EventHandler<IndexedFile>"
},
"api/Hi.Common.FileLines.IFileLine.html": {
"href": "api/Hi.Common.FileLines.IFileLine.html",
"title": "Interface IFileLine | HiAPI-C# 2025",
"summary": "Interface IFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface of file line. public interface IFileLine Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FilePath File path. string FilePath { get; } Property Value string Line The line. string Line { get; } Property Value string"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface IGetIndexedFileLine | HiAPI-C# 2025",
"summary": "Interface IGetIndexedFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for objects that can provide a file line. public interface IGetIndexedFileLine Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetIndexedFileLine() Gets the file line associated with this object. IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object."
},
"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.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface ILineChangedEventSupport | HiAPI-C# 2025",
"summary": "Interface ILineChangedEventSupport Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for objects that support line change events. public interface ILineChangedEventSupport Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Events LineBeginEventHandler Event that is raised when a line begins processing. event EventHandler<IndexedFileLine> LineBeginEventHandler Event Type EventHandler<IndexedFileLine> LineEndEventHandler Event that is raised when a line ends processing. event EventHandler<IndexedFileLine> LineEndEventHandler Event Type EventHandler<IndexedFileLine>"
},
"api/Hi.Common.FileLines.IndexedFile.html": {
"href": "api/Hi.Common.FileLines.IndexedFile.html",
"title": "Class IndexedFile | HiAPI-C# 2025",
"summary": "Class IndexedFile Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a file with an associated index. public class IndexedFile : IEquatable<IndexedFile> Inheritance object IndexedFile Implements IEquatable<IndexedFile> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IndexedFile() Initializes a new instance of the IndexedFile class. public IndexedFile() IndexedFile(IndexedFile) Copy ctor. public IndexedFile(IndexedFile src) Parameters src IndexedFile src IndexedFile(string, int) Initializes a new instance of the IndexedFile class with the specified file path and index. public IndexedFile(string filePath, int fileIndex) Parameters filePath string The path of the file. fileIndex int The index of the file. Properties 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 Methods Equals(IndexedFile) Indicates whether the current object is equal to another object of the same type. public bool Equals(IndexedFile other) Parameters other IndexedFile 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. 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.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.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IndexedFileLine> 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<IndexedFileLine> IndexedFileLines ReadFiles(List<string>) Read files to IndexedFileLines. public static IEnumerable<IndexedFileLine> ReadFiles(List<string> files) Parameters files List<string> files Returns IEnumerable<IndexedFileLine> 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<IndexedFileLineChar> Inheritance object IndexedFileLineChar Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IEquatable<IndexedFileLineChar> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class LineBeginEventArgs | HiAPI-C# 2025",
"summary": "Class LineBeginEventArgs Namespace Hi.Common.FileLines Assembly HiGeom.dll Event arguments for when line processing begins. public class LineBeginEventArgs : EventArgs Inheritance object EventArgs LineBeginEventArgs Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LineBeginEventArgs() Initializes a new instance of the LineBeginEventArgs class. public LineBeginEventArgs() LineBeginEventArgs(IndexedFileLine) Initializes a new instance of the LineBeginEventArgs class with a specified file line. public LineBeginEventArgs(IndexedFileLine fileLine) Parameters fileLine IndexedFileLine The file line being processed. Properties FileLine Gets or sets the file line being processed. public IndexedFileLine FileLine { get; set; } Property Value IndexedFileLine"
},
"api/Hi.Common.FileLines.LineEndEventArgs.html": {
"href": "api/Hi.Common.FileLines.LineEndEventArgs.html",
"title": "Class LineEndEventArgs | HiAPI-C# 2025",
"summary": "Class LineEndEventArgs Namespace Hi.Common.FileLines Assembly HiGeom.dll Event arguments for when line processing ends. public class LineEndEventArgs : EventArgs Inheritance object EventArgs LineEndEventArgs Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LineEndEventArgs() Initializes a new instance of the LineEndEventArgs class. public LineEndEventArgs() LineEndEventArgs(IndexedFileLine) Initializes a new instance of the LineEndEventArgs class with a specified file line. public LineEndEventArgs(IndexedFileLine fileLine) Parameters fileLine IndexedFileLine The file line that was processed. Properties FileLine Gets or sets the file line that was processed. public IndexedFileLine FileLine { get; set; } Property Value IndexedFileLine"
},
"api/Hi.Common.FileLines.html": {
"href": "api/Hi.Common.FileLines.html",
"title": "Namespace Hi.Common.FileLines | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.FileLines Classes FileBeginEventArgs Event arguments for when a file processing begins. FileEndEventArgs Event arguments for when a file processing ends. FileLineCharIndex Represents a character-level position within a file by file index, line index, and character index. All indices are 0-based. FileLineCharIndexSegment Represents a character-level segment within file(s). Begin is inclusive, End is exclusive: [Begin, End). FileLineIndex Represents a location in a file by its file index and line number. FileLineUtil Utility of IFileLineIndex. FileUtil Utility to manage files. IndexedFile Represents a file with an associated index. IndexedFileLine Represents a line of text from a file with associated file and line information. IndexedFileLineChar Represents a character-level position within a file, with associated file path context. Analogous to IndexedFileLine but at character granularity. LineBeginEventArgs Event arguments for when line processing begins. LineEndEventArgs Event arguments for when line processing ends. Interfaces IFileChangedEventSupport Interface for supporting file change events. IFileLine Interface of file line. IFileLineCharIndex Interface for a character-level position within a file: file, line, and character index. All indices are 0-based. IFileLineIndex Interface of file number and line number. IGetFileLineIndex Interface of GetFileLineIndex(). IGetIndexedFileLine Interface for objects that can provide a file line. IIndexedFileLine Interface for a file line with associated file and line index information. ILineChangedEventSupport Interface for objects that support line change events."
},
"api/Hi.Common.IAbstractNote.html": {
"href": "api/Hi.Common.IAbstractNote.html",
"title": "Interface IAbstractNote | HiAPI-C# 2025",
"summary": "Interface IAbstractNote Namespace Hi.Common Assembly HiGeom.dll Interface for objects that provide an abstract description or note. public interface IAbstractNote Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AbstractNote Gets a descriptive note or abstract about the object. string AbstractNote { get; } Property Value string"
},
"api/Hi.Common.IBinaryIo.html": {
"href": "api/Hi.Common.IBinaryIo.html",
"title": "Interface IBinaryIo | HiAPI-C# 2025",
"summary": "Interface IBinaryIo Namespace Hi.Common Assembly HiGeom.dll Interface for binary input/output operations. Extends IWriteBin to provide both read and write capabilities. public interface IBinaryIo : IWriteBin Inherited Members IWriteBin.WriteBin(BinaryWriter) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) BinIoUtil.ToBytes(IWriteBin) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ReadBin(BinaryReader) Reads binary data to initialize the object. void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from"
},
"api/Hi.Common.IClearCache.html": {
"href": "api/Hi.Common.IClearCache.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"summary": "Interface IDuplicate Namespace Hi.Common Assembly HiGeom.dll Interface for objects that support deep cloning/duplication. public interface IDuplicate Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Unlike ICloneable, which is typically used for shallow copying of simple objects, IDuplicate is designed for deep copying of complex objects with nested references. Implementations should ensure that all nested objects are properly duplicated. Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. 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"
},
"api/Hi.Common.IGetQuantityByKey.html": {
"href": "api/Hi.Common.IGetQuantityByKey.html",
"title": "Interface IGetQuantityByKey | HiAPI-C# 2025",
"summary": "Interface IGetQuantityByKey Namespace Hi.Common Assembly HiGeom.dll Interface for retrieving a quantity value using a string key. public interface IGetQuantityByKey Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetQuantityByKey(string) Gets a quantity value associated with the specified key. double GetQuantityByKey(string key) Parameters key string The key to look up Returns double The quantity value associated with the key"
},
"api/Hi.Common.IGetSelectionName.html": {
"href": "api/Hi.Common.IGetSelectionName.html",
"title": "Interface IGetSelectionName | HiAPI-C# 2025",
"summary": "Interface IGetSelectionName Namespace Hi.Common Assembly HiGeom.dll Interface for objects that can provide a name for selection purposes. public interface IGetSelectionName Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSelectionName() Gets a name that can be used for selection in UI or other contexts. string GetSelectionName() Returns string The selection name for this object"
},
"api/Hi.Common.INameNote.html": {
"href": "api/Hi.Common.INameNote.html",
"title": "Interface INameNote | HiAPI-C# 2025",
"summary": "Interface INameNote Namespace Hi.Common Assembly HiGeom.dll Interface for objects that have a name and note property. public interface INameNote Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) XmlUtil.GetNameNoteXElementList(INameNote) XmlUtil.SetNameNote(INameNote, XElement) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Gets or sets the name of the object. string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. string Note { get; set; } Property Value string"
},
"api/Hi.Common.IPreferredFileName.html": {
"href": "api/Hi.Common.IPreferredFileName.html",
"title": "Interface IPreferredFileName | HiAPI-C# 2025",
"summary": "Interface IPreferredFileName Namespace Hi.Common Assembly HiGeom.dll Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. public interface IPreferredFileName Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PreferredFileName Gets or sets the preferred file name for this object when generating or saving files. string PreferredFileName { get; set; } Property Value string"
},
"api/Hi.Common.IProgressFraction.html": {
"href": "api/Hi.Common.IProgressFraction.html",
"title": "Interface IProgressFraction | HiAPI-C# 2025",
"summary": "Interface IProgressFraction Namespace Hi.Common Assembly HiDisp.dll Interface for progress reporting functionality. public interface IProgressFraction Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDenominator() Gets the denominator value for progress calculation. int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. string GetDetail() Returns string The detail string. GetMsg() Get message. string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. int GetNumerator() Returns int The numerator value."
},
"api/Hi.Common.ISourceFile.html": {
"href": "api/Hi.Common.ISourceFile.html",
"title": "Interface ISourceFile | HiAPI-C# 2025",
"summary": "Interface ISourceFile Namespace Hi.Common Assembly HiGeom.dll Interface for objects that have a source file. public interface ISourceFile Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SourceFile Gets or sets the source file path. string SourceFile { get; set; } Property Value string"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 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",
"title": "Interface IUpdateByContent | HiAPI-C# 2025",
"summary": "Interface IUpdateByContent Namespace Hi.Common Assembly HiGeom.dll Interface for objects that can update themselves based on their content. public interface IUpdateByContent : IClearCache Inherited Members IClearCache.ClearCache() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is considered obsolete. Use IClearCache instead. Methods UpdateByContent() Updates the object based on its current content. void UpdateByContent()"
},
"api/Hi.Common.IUriGetter.html": {
"href": "api/Hi.Common.IUriGetter.html",
"title": "Interface IUriGetter | HiAPI-C# 2025",
"summary": "Interface IUriGetter Namespace Hi.Common Assembly HiGeom.dll Interface for retrieving a URI string. public interface IUriGetter Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Uri Gets the URI string. string Uri { get; } Property Value string"
},
"api/Hi.Common.IWriteBin.html": {
"href": "api/Hi.Common.IWriteBin.html",
"title": "Interface IWriteBin | HiAPI-C# 2025",
"summary": "Interface IWriteBin Namespace Hi.Common Assembly HiGeom.dll Interface for writing binary data. public interface IWriteBin Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods WriteBin(BinaryWriter) Writes the object's data to a binary stream. void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write to"
},
"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<IndexSegment>, IMakeXmlSource Inheritance object IndexSegment Implements IEquatable<IndexSegment> IMakeXmlSource Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<int> Enumerate() Returns IEnumerable<int> 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<TData, TKey>(IList<TData>, int, TKey, Func<TData, TKey>, TKey) Finds the contiguous run of items whose key equals targetGroupKey, scanning outward from seekingStartListIndex. 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 steps IList<TData> The list of data items. seekingStartListIndex int The start step index for seeking. targetGroupKey TKey The key of the segment to locate. 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). 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",
"title": "Class IntegerKeyDictionaryConverter<TValue> | HiAPI-C# 2025",
"summary": "Class IntegerKeyDictionaryConverter<TValue> Namespace Hi.Common Assembly HiGeom.dll Generic version of IntegerKeyDictionaryConverter that works with a specific value type. public class IntegerKeyDictionaryConverter<TValue> : IMakeXmlSource Type Parameters TValue The type of values in the dictionary. Inheritance object IntegerKeyDictionaryConverter<TValue> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 IntegerKeyDictionaryConverter() Ctor. public IntegerKeyDictionaryConverter() IntegerKeyDictionaryConverter(XElement) Ctor. public IntegerKeyDictionaryConverter(XElement src) Parameters src XElement XML Properties RawKeyList Dont modify. public List<string> RawKeyList { get; } Property Value List<string> RawKeyToIndex Dont modify. public Dictionary<string, int> RawKeyToIndex { get; } Property Value Dictionary<string, int> XName Name for XML IO. public static string XName { get; } Property Value string Methods GetIntegerKeyDictionary(Dictionary<string, TValue>) Converts a dictionary with string keys to a dictionary with integer keys. public Dictionary<int, TValue> GetIntegerKeyDictionary(Dictionary<string, TValue> rawKeyDictionary) Parameters rawKeyDictionary Dictionary<string, TValue> The dictionary with string keys to convert. Returns Dictionary<int, TValue> A dictionary with integer keys. GetRestoredDictionary(Dictionary<int, TValue>) Converts a dictionary with integer keys back to a dictionary with string keys. public Dictionary<string, TValue> GetRestoredDictionary(Dictionary<int, TValue> integerKeyDictionary) Parameters integerKeyDictionary Dictionary<int, TValue> The dictionary with integer keys to convert. Returns Dictionary<string, TValue> A dictionary with string keys. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Common.IntegerKeyDictionaryConverter.html": {
"href": "api/Hi.Common.IntegerKeyDictionaryConverter.html",
"title": "Class IntegerKeyDictionaryConverter | HiAPI-C# 2025",
"summary": "Class IntegerKeyDictionaryConverter Namespace Hi.Common Assembly HiGeom.dll Converts dictionaries with string keys to dictionaries with integer keys for more efficient storage and lookup. public class IntegerKeyDictionaryConverter : IMakeXmlSource Inheritance object IntegerKeyDictionaryConverter 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 IntegerKeyDictionaryConverter() Initializes a new instance of the IntegerKeyDictionaryConverter class. public IntegerKeyDictionaryConverter() IntegerKeyDictionaryConverter(XElement) Initializes a new instance of the IntegerKeyDictionaryConverter class from XML. public IntegerKeyDictionaryConverter(XElement src) Parameters src XElement XML element containing the converter data. Properties RawKeyList Dont modify. public List<string> RawKeyList { get; } Property Value List<string> RawKeyToIndex Dont modify. public Dictionary<string, int> RawKeyToIndex { get; } Property Value Dictionary<string, int> XName Name for XML IO. public static string XName { get; } Property Value string Methods GetIntegerKeyDictionary(Dictionary<string, object>) Converts a dictionary with string keys to a dictionary with integer keys. public Dictionary<int, object> GetIntegerKeyDictionary(Dictionary<string, object> rawKeyDictionary) Parameters rawKeyDictionary Dictionary<string, object> The dictionary with string keys to convert. Returns Dictionary<int, object> A dictionary with integer keys. GetRestoredDictionary(Dictionary<int, object>) Converts a dictionary with integer keys back to a dictionary with string keys. public Dictionary<string, object> GetRestoredDictionary(Dictionary<int, object> integerKeyDictionary) Parameters integerKeyDictionary Dictionary<int, object> The dictionary with integer keys to convert. Returns Dictionary<string, object> A dictionary with string keys. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Common.InternalException.html": {
"href": "api/Hi.Common.InternalException.html",
"title": "Class InternalException | HiAPI-C# 2025",
"summary": "Class InternalException Namespace Hi.Common Assembly HiGeom.dll 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. public class InternalException : Exception, ISerializable Inheritance object Exception InternalException 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 Exception.SerializeObjectState object.Equals(object) object.Equals(object, object) object.GetHashCode() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InternalException() Initializes a new instance of the InternalException class with a default message. public InternalException() InternalException(string) Initializes a new instance of the InternalException class with a specified error message. public InternalException(string message) Parameters message string The message that describes the error"
},
"api/Hi.Common.InvokeUtil.html": {
"href": "api/Hi.Common.InvokeUtil.html",
"title": "Class InvokeUtil | HiAPI-C# 2025",
"summary": "Class InvokeUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for method invocation operations. public static class InvokeUtil Inheritance object InvokeUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods SelfInvoke<TSrc>(TSrc, Action<TSrc>) Invokes the specified action on the source object itself. public static void SelfInvoke<TSrc>(this TSrc src, Action<TSrc> func) Parameters src TSrc The source object func Action<TSrc> The action to invoke on the source object Type Parameters TSrc The type of the source object SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) Invokes the specified function on the source object itself and returns the result. This function is usually used to apply a temporary variable, so that the property call is not computed twice. public static TDst SelfInvoke<TSrc, TDst>(this TSrc src, Func<TSrc, TDst> func) Parameters src TSrc The source object func Func<TSrc, TDst> The function to invoke on the source object Returns TDst The result of the function invocation Type Parameters TSrc The type of the source object TDst The type of the result"
},
"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() 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<string>) 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<string> jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable<string> 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<string>) 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<string> jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable<string> 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<string>) 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<string> pathSegments) Parameters root JsonObject The root JSON object. pathSegments List<string> 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<TConfig>(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<TConfig>(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",
"title": "Delegate LooseRunner.MergedCancellationTokenRun | HiAPI-C# 2025",
"summary": "Delegate LooseRunner.MergedCancellationTokenRun Namespace Hi.Common Assembly HiGeom.dll Delegate for actions that accept a merged cancellation token. The merged token combines the runner's disposal token with an optional external cancellation token. public delegate void LooseRunner.MergedCancellationTokenRun(CancellationToken mergedCancellationToken) Parameters mergedCancellationToken CancellationToken The merged cancellation token combining disposal and external tokens. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.LooseRunner.html": {
"href": "api/Hi.Common.LooseRunner.html",
"title": "Class LooseRunner | HiAPI-C# 2025",
"summary": "Class LooseRunner Namespace Hi.Common Assembly HiGeom.dll Provides a mechanism for running actions asynchronously in a loose manner. Only the most recent action is executed and previous pending actions are discarded. public class LooseRunner : IDisposable Inheritance object LooseRunner 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LooseRunner(ILogger, CancellationToken?) Initializes a new instance of the LooseRunner class with an ILogger for exception reporting. public LooseRunner(ILogger logger, CancellationToken? cancellationToken = null) Parameters logger ILogger The logger used to report exceptions. cancellationToken CancellationToken? Optional cancellation token to control the lifetime of the runner. LooseRunner(Action<Exception>, CancellationToken?) Initializes a new instance of the LooseRunner class. public LooseRunner(Action<Exception> exceptionAction = null, CancellationToken? cancellationToken = null) Parameters exceptionAction Action<Exception> Optional action invoked when an exception occurs. If null, exceptions are silently ignored. cancellationToken CancellationToken? Optional cancellation token to control the lifetime of the runner. If not provided, a new token will be created. 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 LooseRunner 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. GetLastWaiting() Asynchronously waits for the last action to complete execution. public Task GetLastWaiting() Returns Task A task representing the asynchronous wait operation. TryRun(MergedCancellationTokenRun, CancellationToken?) Tries to run the specified action asynchronously. If an action is already pending, it will be replaced with the new action. public void TryRun(LooseRunner.MergedCancellationTokenRun action, CancellationToken? cancellationToken = null) Parameters action LooseRunner.MergedCancellationTokenRun The action to run. The input cancellation token is the merge of cancellationToken and the runner hosted cancellation token that called on disposing. cancellationToken CancellationToken? external cancellation token WaitLastActionDone() Waits for the last action to complete execution. public void WaitLastActionDone()"
},
"api/Hi.Common.ManualUtil.html": {
"href": "api/Hi.Common.ManualUtil.html",
"title": "Class ManualUtil | HiAPI-C# 2025",
"summary": "Class ManualUtil Namespace Hi.Common Assembly HiNc.dll Utility class for handling manual and documentation files with culture support. public static class ManualUtil Inheritance object ManualUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields culture_keyword Keyword placeholder for culture in URL templates. public const string culture_keyword = \"{culture}\" Field Value string Methods GetBestDeployUrl(string) Gets the best available deployment URL by removing the wwwroot prefix from the source URL. public static string GetBestDeployUrl(string urlTemplate) Parameters urlTemplate string URL template containing culture placeholder. Returns string The best matching deployment URL for the current culture. GetBestSourceUrl(string) Gets the best available source URL by matching the current culture or falling back to defaults. public static string GetBestSourceUrl(string urlTemplate) Parameters urlTemplate string URL template containing culture placeholder. Returns string The best matching source URL for the current culture. GetTitle(string, ILogger) Extracts the title from an HTML file by looking for the first h1 tag or title tag. public static string GetTitle(string urlTemplate, ILogger logger) Parameters urlTemplate string URL template containing culture placeholder. logger ILogger The logger instance. Returns string The extracted title or empty string if not found."
},
"api/Hi.Common.MaskUtil.html": {
"href": "api/Hi.Common.MaskUtil.html",
"title": "Class MaskUtil | HiAPI-C# 2025",
"summary": "Class MaskUtil Namespace Hi.Common Assembly HiGeom.dll Utility for bits masking. public static class MaskUtil Inheritance object MaskUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMaskedValue<T>(T, T, bool) Get converted src which all bits from mask is committing or not. If isCommitting is true, return src OR mask; otherwise , return src AND (~mask). public static T GetMaskedValue<T>(this T src, T mask, bool isCommitting) where T : struct Parameters src T src mask T mask isCommitting bool is committing or cancelling Returns T Converted value Type Parameters T number type SetMask<T>(ref T, T, bool) Set src converted by which all bits from mask is committing or not. If isCommitting is true, return src OR mask; otherwise , return src AND (~mask). public static void SetMask<T>(this ref T src, T mask, bool isCommitting) where T : struct Parameters src T src mask T mask isCommitting bool is committing or cancelling Type Parameters T number type"
},
"api/Hi.Common.Messages.ActionProgress-1.html": {
"href": "api/Hi.Common.Messages.ActionProgress-1.html",
"title": "Class ActionProgress<T> | HiAPI-C# 2025",
"summary": "Class ActionProgress<T> Namespace Hi.Common.Messages Assembly HiGeom.dll Lightweight IProgress<T> that delegates to an Action<T>. Unlike Progress<T>, does not capture SynchronizationContext and invokes the handler synchronously on the caller's thread. public class ActionProgress<T> : IProgress<T> Type Parameters T Inheritance object ActionProgress<T> Implements IProgress<T> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActionProgress(Action<T>) Initializes a new instance that forwards each reported value to handler. public ActionProgress(Action<T> handler) Parameters handler Action<T> Delegate invoked synchronously by Report(T). Methods FromLogger(ILogger) Creates an IProgress<T> that routes an IMessage (or a raw Exception) to the appropriate ILogger level. public static IProgress<object> FromLogger(ILogger logger) Parameters logger ILogger Returns IProgress<object> 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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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",
"summary": "Class DebugUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Debug utility provides functions: pause process, count execution time and show the count. public static class DebugUtil Inheritance object DebugUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties Count Count of calling C(). The Count is shown by S(string). The Count helps to trigger pause by P(int). public static int Count { get; set; } Property Value int Data The data storage for the DebugUtil class. public static Dictionary<object, object> Data { get; } Property Value Dictionary<object, object> Debugee The object being debugged. public static object Debugee { get; set; } Property Value object NativeDebugVar Gets or sets the native debug variable in the C++ core library. public static int NativeDebugVar { get; set; } Property Value int WriteLineAction The action to be performed when writing a line of text. public static Action<string> WriteLineAction { get; set; } Property Value Action<string> Methods C() Count++. public static int C() Returns int current count CPS(int, string) Execute C(). Pause and execute S(string) if count >= p. public static int CPS(int p = 0, string text = null) Parameters p int pause number text string text to show Returns int current count CS(string) Call C() and then call S(string). public static int CS(string shownText = null) Parameters shownText string the text to show Returns int count CSP(int, string) Execute the functions in sequence: C(), S(string), P(int). public static int CSP(int p = 0, string shownText = null) Parameters p int pause number shownText string text to show Returns int count P(int) Pause if count >= p. public static int P(int p = 0) Parameters p int pause number Returns int current count S(string) Call WriteLineAction?.Invoke to show the text and count. public static int S(string shownText = null) Parameters shownText string text to show Returns int current count SP(int, string) Call S(string) and then call P(int). public static int SP(int p = 0, string shownText = null) Parameters p int shownText string text to show Returns int count WriteLine(string) Writes a line of text with the current count. This is an alias for S(string). public static int WriteLine(string shownText = null) Parameters shownText string The text to show. Returns int The current count."
},
"api/Hi.Common.Messages.ExceptionUtil.html": {
"href": "api/Hi.Common.Messages.ExceptionUtil.html",
"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<Exception>) Continues the task and reports any exception via onException. public static Task CatchExceptions(this Task task, Action<Exception> onException) Parameters task Task onException Action<Exception> Returns Task CatchExceptions<TSilent>(Task, Action<Exception>) Continues the task and reports exceptions via onException, silently ignoring TSilent. public static Task CatchExceptions<TSilent>(this Task task, Action<Exception> onException) where TSilent : Exception Parameters task Task onException Action<Exception> 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<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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 object MessageCollector Implements IProgress<IMessage> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MessageUtil.ConfigurationError(IProgress<IMessage>, string, string, object) MessageUtil.ConfigurationErrorFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.ConfigurationMessage(IProgress<IMessage>, string, string, object) MessageUtil.ConfigurationMessageFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.ConfigurationWarning(IProgress<IMessage>, string, string, object) MessageUtil.ConfigurationWarningFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.SystemError(IProgress<IMessage>, string, string, object) MessageUtil.SystemErrorFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.SystemMessage(IProgress<IMessage>, string, string, object) MessageUtil.SystemMessageFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.SystemProgress(IProgress<IMessage>, string, string, object) MessageUtil.SystemProgressFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.SystemSuccess(IProgress<IMessage>, string, string, object) MessageUtil.SystemSuccessFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.SystemWarning(IProgress<IMessage>, string, string, object) MessageUtil.SystemWarningFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.UnsupportedError(IProgress<IMessage>, string, string, object) MessageUtil.UnsupportedErrorFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.UnsupportedMessage(IProgress<IMessage>, string, string, object) MessageUtil.UnsupportedMessageFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.UnsupportedWarning(IProgress<IMessage>, string, string, object) MessageUtil.UnsupportedWarningFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.ValidationError(IProgress<IMessage>, string, string, object) MessageUtil.ValidationErrorFmt(IProgress<IMessage>, string, FormattableString, object) MessageUtil.ValidationWarning(IProgress<IMessage>, string, string, object) MessageUtil.ValidationWarningFmt(IProgress<IMessage>, 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<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."
},
"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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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.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<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 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<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"
},
"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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<T> Lightweight IProgress<T> that delegates to an Action<T>. Unlike Progress<T>, 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<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. 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. 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",
"title": "Class IndexedMinMaxPos<TKey, TValue> | HiAPI-C# 2025",
"summary": "Class IndexedMinMaxPos<TKey, TValue> Namespace Hi.Common.MinMaxUtils Assembly HiGeom.dll Represents a position with an index, key, and a range of values. public class IndexedMinMaxPos<TKey, TValue> Type Parameters TKey The type of the key TValue The type of the range values Inheritance object IndexedMinMaxPos<TKey, TValue> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IndexedMinMaxPos() Initializes a new instance of the IndexedMinMaxPos class. public IndexedMinMaxPos() IndexedMinMaxPos(int, TKey, Range<TValue>) Initializes a new instance of the IndexedMinMaxPos class with specified values. public IndexedMinMaxPos(int index, TKey key, Range<TValue> range) Parameters index int Index value key TKey Key value range Range<TValue> Range value IndexedMinMaxPos(int, TKey, TValue, TValue) Initializes a new instance of the IndexedMinMaxPos class with specified values. public IndexedMinMaxPos(int index, TKey key, TValue min, TValue max) Parameters index int Index value key TKey Key value min TValue Minimum value max TValue Maximum value Properties Index Gets or sets the index of the position. public int Index { get; set; } Property Value int Key Gets or sets the key associated with the position. public TKey Key { get; set; } Property Value TKey Range Gets or sets the range of values for the position. public Range<TValue> Range { get; set; } Property Value Range<TValue>"
},
"api/Hi.Common.MinMaxUtils.MinMaxUtil.html": {
"href": "api/Hi.Common.MinMaxUtils.MinMaxUtil.html",
"title": "Class MinMaxUtil | HiAPI-C# 2025",
"summary": "Class MinMaxUtil Namespace Hi.Common.MinMaxUtils Assembly HiGeom.dll Provides utility methods for finding minimum and maximum values in collections. public static class MinMaxUtil Inheritance object MinMaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMinMaxList(IList<KeyValuePair<double, double[]>>, int, int) Creates a list of indexed minimum and maximum positions from a collection of key-value pairs where values are arrays. public static List<IndexedMinMaxPos<double, double[]>> GetMinMaxList(this IList<KeyValuePair<double, double[]>> src, int numThreshold, int posValueLength) Parameters src IList<KeyValuePair<double, double[]>> The source collection of key-value pairs numThreshold int The maximum number of positions to return posValueLength int The length of the value arrays Returns List<IndexedMinMaxPos<double, double[]>> A list of indexed minimum and maximum positions GetMinMaxList(IList<KeyValuePair<double, double>>, int) Creates a list of indexed minimum and maximum positions from a collection of key-value pairs. public static List<IndexedMinMaxPos<double, double>> GetMinMaxList(this IList<KeyValuePair<double, double>> src, int numThreshold) Parameters src IList<KeyValuePair<double, double>> The source collection of key-value pairs numThreshold int The maximum number of positions to return Returns List<IndexedMinMaxPos<double, double>> A list of indexed minimum and maximum positions"
},
"api/Hi.Common.MinMaxUtils.html": {
"href": "api/Hi.Common.MinMaxUtils.html",
"title": "Namespace Hi.Common.MinMaxUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.MinMaxUtils Classes IndexedMinMaxPos<TKey, TValue> Represents a position with an index, key, and a range of values. MinMaxUtil Provides utility methods for finding minimum and maximum values in collections."
},
"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 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",
"title": "Class NativeProgressFraction | HiAPI-C# 2025",
"summary": "Class NativeProgressFraction Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Native implementation of the progress report interface. public class NativeProgressFraction : IProgressFraction Inheritance object NativeProgressFraction 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NativeProgressFraction(progress_monitor_t*) Initializes a new instance of the NativeProgressFraction class. public NativeProgressFraction(progress_monitor_t* progress_monitor_ptr) Parameters progress_monitor_ptr progress_monitor_t* Pointer to the native progress monitor. 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.NativeProgresses.html": {
"href": "api/Hi.Common.NativeProgresses.html",
"title": "Namespace Hi.Common.NativeProgresses | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.NativeProgresses Classes NativeProgressFraction Native implementation of the progress report interface. Structs progress_monitor_t Native structure for progress monitoring. Delegates report_progress_func_t Delegate for reporting progress from native code."
},
"api/Hi.Common.NativeProgresses.progress_monitor_t.html": {
"href": "api/Hi.Common.NativeProgresses.progress_monitor_t.html",
"title": "Struct progress_monitor_t | HiAPI-C# 2025",
"summary": "Struct progress_monitor_t Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Native structure for progress monitoring. public struct progress_monitor_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.NativeProgresses.report_progress_func_t.html": {
"href": "api/Hi.Common.NativeProgresses.report_progress_func_t.html",
"title": "Delegate report_progress_func_t | HiAPI-C# 2025",
"summary": "Delegate report_progress_func_t Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Delegate for reporting progress from native code. public delegate void report_progress_func_t(progress_monitor_t* progress_monitor_ptr) Parameters progress_monitor_ptr progress_monitor_t* Pointer to the progress monitor. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.PacePlayee.html": {
"href": "api/Hi.Common.PacePlayee.html",
"title": "Class PacePlayee | HiAPI-C# 2025",
"summary": "Class PacePlayee Namespace Hi.Common Assembly HiGeom.dll Represents an entity that can be controlled by the pace player. public class PacePlayee Inheritance object PacePlayee Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Player Gets the player that controls this playee. public PacePlayer Player { get; } Property Value PacePlayer Methods Pace() A pausable mark for the playing process. The function enables Pause() to take effect. public void Pace() Remarks Waits for the player to signal the next pace."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<PacePlayee> MainAction { get; set; } Property Value Action<PacePlayee> 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<bool> IsFinishedChangedEvent Event Type Action<bool> IsLockedChangedEvent Event triggered when the lock state changes. public event Action<bool> IsLockedChangedEvent Event Type Action<bool> IsRunningChangedEvent Event triggered when the running state changes. public event Action<bool> IsRunningChangedEvent Event Type Action<bool> 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",
"title": "Class Pair<TA, TB> | HiAPI-C# 2025",
"summary": "Class Pair<TA, TB> Namespace Hi.Common Assembly HiGeom.dll Editable pair values. public class Pair<TA, TB> Type Parameters TA type of A TB type of B Inheritance object Pair<TA, TB> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Pair(TA, TB) constructor. public Pair(TA a, TB b) Parameters a TA member A b TB member B Properties A member A public TA A { get; set; } Property Value TA B member B public TB B { get; set; } Property Value TB 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.Common.ParallelBulkUtils.ParallelBulkReader-1.html": {
"href": "api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html",
"title": "Class ParallelBulkReader<TData> | HiAPI-C# 2025",
"summary": "Class ParallelBulkReader<TData> 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<TData> : IDisposable where TData : class Type Parameters TData The type of data to read. Inheritance object ParallelBulkReader<TData> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ParallelBulkReader(int, int, int, ReadBulkDelegate<TData>, Func<TData, int?>, Action<Exception>) Initializes a new instance of the ParallelBulkReader<TData> class. public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc, Action<Exception> 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<TData> The function used to read bulk data. getIndexFunc Func<TData, int?> The function used to extract an index from a data item. exceptionAction Action<Exception> 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<TData, int?> GetIndexFunc { get; } Property Value Func<TData, int?> 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<TData> 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",
"title": "Class ParallelBulkWriter<TData> | HiAPI-C# 2025",
"summary": "Class ParallelBulkWriter<TData> Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Parallel bulk writer that efficiently processes and writes data in parallel. The writing data is buffered and processed on a separate task to improve performance. public class ParallelBulkWriter<TData> : IDisposable where TData : class Type Parameters TData The type of data to write. Inheritance object ParallelBulkWriter<TData> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ParallelBulkWriter(Action<List<TData>>, int) Initializes a new instance of the ParallelBulkWriter<TData> class. public ParallelBulkWriter(Action<List<TData>> addAllFunc, int writingBufferCap = 131072) Parameters addAllFunc Action<List<TData>> The function used to add all data items to the destination. writingBufferCap int The capacity of the writing buffer. Default is 1024 * 128. 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 ParallelBulkWriter<TData> 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. Enqueue(TData) Adds a data item to the writing buffer for processing. public void Enqueue(TData step) Parameters step TData The data item to add. Wait() Waits for all data items in the buffer to be processed. public void Wait()"
},
"api/Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html": {
"href": "api/Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html",
"title": "Delegate ReadBulkDelegate<TData> | HiAPI-C# 2025",
"summary": "Delegate ReadBulkDelegate<TData> Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Delegate for reading a bulk of data from a specified range. public delegate List<TData> ReadBulkDelegate<TData>(int begin, int end) Parameters begin int The starting index (inclusive). end int The ending index (exclusive). Returns List<TData> A list of data items from the specified range. Type Parameters TData The type of data to read. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html": {
"href": "api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html",
"title": "Class SequentialBulkReader<TData> | HiAPI-C# 2025",
"summary": "Class SequentialBulkReader<TData> Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Sequential bulk reader that provides efficient data access with caching capabilities. Unlike ParallelBulkReader<TData>, this reader processes data sequentially. public class SequentialBulkReader<TData> where TData : class Type Parameters TData The type of data to read. Inheritance object SequentialBulkReader<TData> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SequentialBulkReader(int, int, ReadBulkDelegate<TData>, Func<TData, int?>) Initializes a new instance of the SequentialBulkReader<TData> class. public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc) Parameters bulkListSize int The number of bulk lists to maintain in the cache. bulkSize int The size of each bulk. readBulkFunc ReadBulkDelegate<TData> The function used to read bulk data. getIndexFunc Func<TData, int?> 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<TData, int?> GetIndexFunc { get; } Property Value Func<TData, int?> 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",
"title": "Namespace Hi.Common.ParallelBulkUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.ParallelBulkUtils Classes ParallelBulkReader<TData> Parallel bulk reader that provides efficient data access with caching capabilities. Manages reading data in parallel with forward and backward caching to optimize performance. ParallelBulkWriter<TData> Parallel bulk writer that efficiently processes and writes data in parallel. The writing data is buffered and processed on a separate task to improve performance. SequentialBulkReader<TData> Sequential bulk reader that provides efficient data access with caching capabilities. Unlike ParallelBulkReader<TData>, this reader processes data sequentially. Delegates ReadBulkDelegate<TData> Delegate for reading a bulk of data from a specified range."
},
"api/Hi.Common.PathUtils.ExtendedNamedPath.html": {
"href": "api/Hi.Common.PathUtils.ExtendedNamedPath.html",
"title": "Class ExtendedNamedPath | HiAPI-C# 2025",
"summary": "Class ExtendedNamedPath Namespace Hi.Common.PathUtils Assembly HiGeom.dll Represents a path with a named base path and an optional extended path component. public class ExtendedNamedPath : IEquatable<ExtendedNamedPath> Inheritance object ExtendedNamedPath Implements IEquatable<ExtendedNamedPath> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ExtendedNamedPath() Initializes a new instance of the ExtendedNamedPath class. public ExtendedNamedPath() ExtendedNamedPath(ExtendedNamedPath) Copy constructor that performs a deep clone including the base named path. public ExtendedNamedPath(ExtendedNamedPath src) Parameters src ExtendedNamedPath The source ExtendedNamedPath to copy from ExtendedNamedPath(NamedPath) Initializes a new instance of the ExtendedNamedPath class with only a base path. public ExtendedNamedPath(NamedPath rootNamedPath) Parameters rootNamedPath NamedPath The base named path ExtendedNamedPath(NamedPath, string) Initializes a new instance of the ExtendedNamedPath class with a base path and extended path. public ExtendedNamedPath(NamedPath rootNamedPath, string extendedPath) Parameters rootNamedPath NamedPath The base named path extendedPath string The extended path component Properties BaseNamedPath Gets or sets the base named path component. public NamedPath BaseNamedPath { get; set; } Property Value NamedPath ExtendedPath Gets or sets the extended path component that is appended to the base path. A null value is acceptable. public string ExtendedPath { get; set; } Property Value string FullPath Gets the full path by combining the base path and extended path. public string FullPath { get; } Property Value string Remarks If the base path is null, returns the extended path or an empty string if that is also null. Methods Equals(ExtendedNamedPath) Indicates whether the current object is equal to another object of the same type. public bool Equals(ExtendedNamedPath other) Parameters other ExtendedNamedPath 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. GetName(StringLocalizer) Gets the display name of this path, optionally using a string localizer for the base path name. public string GetName(StringLocalizer loc = null) Parameters loc StringLocalizer Optional string localizer to translate the base path name Returns string The combined name of the base path and extended path, or the extended path alone if base path is null, or an empty string if both are null GetUriPara() Gets a URI parameter representation of this path for use in HTTP requests. public string GetUriPara() Returns string A string suitable for use as a URI parameter ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. Operators operator ==(ExtendedNamedPath, ExtendedNamedPath) public static bool operator ==(ExtendedNamedPath left, ExtendedNamedPath right) Parameters left ExtendedNamedPath right ExtendedNamedPath Returns bool operator !=(ExtendedNamedPath, ExtendedNamedPath) public static bool operator !=(ExtendedNamedPath left, ExtendedNamedPath right) Parameters left ExtendedNamedPath right ExtendedNamedPath Returns bool"
},
"api/Hi.Common.PathUtils.HttpUtil.html": {
"href": "api/Hi.Common.PathUtils.HttpUtil.html",
"title": "Class HttpUtil | HiAPI-C# 2025",
"summary": "Class HttpUtil Namespace Hi.Common.PathUtils Assembly HiGeom.dll Utility class for HTTP operations such as URL validation and content retrieval. public static class HttpUtil Inheritance object HttpUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ReadAllLinesFromUrl(string) Reads all lines from a URL's content. public static string[] ReadAllLinesFromUrl(string url) Parameters url string The URL to read from Returns string[] An array of strings containing the lines from the URL content, or an empty array if the request fails ReadAllLinesFromUrlAsync(string) Asynchronously reads all lines from a URL's content. public static Task<string[]> ReadAllLinesFromUrlAsync(string url) Parameters url string The URL to read from Returns Task<string[]> A task that represents the asynchronous operation. The task result contains an array of strings with the lines from the URL content, or an empty array if the request fails UrlExists(string) Checks if a URL exists by making a HEAD request. public static bool UrlExists(string url) Parameters url string The URL to check Returns bool True if the URL exists and returns a success status code; otherwise, false UrlExistsAsync(string) Asynchronously checks if a URL exists by making a HEAD request. public static Task<bool> UrlExistsAsync(string url) Parameters url string The URL to check Returns Task<bool> A task that represents the asynchronous operation. The task result contains true if the URL exists and returns a success status code; otherwise, false"
},
"api/Hi.Common.PathUtils.Lang.html": {
"href": "api/Hi.Common.PathUtils.Lang.html",
"title": "Class Lang | HiAPI-C# 2025",
"summary": "Class Lang Namespace Hi.Common.PathUtils Assembly HiGeom.dll Provides language-related utilities for path handling. public class Lang Inheritance object Lang Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Common.PathUtils.NamedPath.html": {
"href": "api/Hi.Common.PathUtils.NamedPath.html",
"title": "Class NamedPath | HiAPI-C# 2025",
"summary": "Class NamedPath Namespace Hi.Common.PathUtils Assembly HiGeom.dll Represents a file system path with an associated name or alias. public class NamedPath : IEquatable<NamedPath> Inheritance object NamedPath Implements IEquatable<NamedPath> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NamedPath() Initializes a new instance of the NamedPath class. public NamedPath() NamedPath(NamedPath) Copy constructor that creates a new instance with the same name and path as the source. public NamedPath(NamedPath src) Parameters src NamedPath The source NamedPath to copy from NamedPath(string) Initializes a new instance of the NamedPath class with the specified name. public NamedPath(string name) Parameters name string The name or alias for the path NamedPath(string, string) Initializes a new instance of the NamedPath class with the specified name and path. public NamedPath(string name, string path) Parameters name string The name or alias for the path path string The file system path Properties Name Gets or sets the alias or display name for the path. A null value is acceptable. public string Name { get; set; } Property Value string Path Gets or sets the file system path. public string Path { get; set; } Property Value string Methods Equals(NamedPath) Indicates whether the current object is equal to another object of the same type. public bool Equals(NamedPath other) Parameters other NamedPath 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. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. Operators operator ==(NamedPath, NamedPath) public static bool operator ==(NamedPath left, NamedPath right) Parameters left NamedPath right NamedPath Returns bool operator !=(NamedPath, NamedPath) public static bool operator !=(NamedPath left, NamedPath right) Parameters left NamedPath right NamedPath Returns bool"
},
"api/Hi.Common.PathUtils.PathUtil.html": {
"href": "api/Hi.Common.PathUtils.PathUtil.html",
"title": "Class PathUtil | HiAPI-C# 2025",
"summary": "Class PathUtil Namespace Hi.Common.PathUtils Assembly HiGeom.dll Utility class for path manipulation and management. public static class PathUtil Inheritance object PathUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields DotAlterWord Constant used to replace dots in HTTP string parameters. public const string DotAlterWord = \"-(dot)-\" Field Value string Methods Combine(string, string) Combines a base path with a subpath, ensuring consistent directory separators. public static string Combine(string basePath, string subPath) Parameters basePath string The base path subPath string The subpath to append Returns string The combined path with forward slashes as directory separators, or null if basePath is null Combine(params string[]) Combines multiple path segments, ensuring consistent directory separators. public static string Combine(params string[] paths) Parameters paths string[] The path segments to combine Returns string The combined path with forward slashes as directory separators GetDirectoryName(string) Gets the directory name of a path, ensuring consistent directory separators. public static string GetDirectoryName(string path) Parameters path string The path to get the directory name from Returns string The directory name with forward slashes as directory separators, or null if the path has no directory component GetFileDirectory(string, string) Gets the directory name from a combined base directory and relative file path. public static string GetFileDirectory(string baseDirectory, string relFile) Parameters baseDirectory string The base directory relFile string The relative file path Returns string The directory name of the combined path with forward slashes as directory separators GetParentDirectory(string) Gets the parent directory of a path, ignoring any trailing slashes. public static string GetParentDirectory(this string path) Parameters path string The path to get the parent of Returns string The parent directory path GetPathByTemplate(string, string, string, string) Generates a path by replacing keywords in a template path. public static string GetPathByTemplate(string templatePath, string replacingPath, string replacedPathKeyword, string replacedNameKeyword) Parameters templatePath string The template path containing keywords to be replaced replacingPath string The path to use as replacement replacedPathKeyword string The path keyword to be replaced in the template replacedNameKeyword string The name keyword to be replaced in the template Returns string The processed path with keywords replaced GetRelativePath(string, string) Gets the relative path from one path to another, ensuring consistent directory separators. public static string GetRelativePath(string relativeTo, string path) Parameters relativeTo string The path that is the reference point path string The path to which the relative path is calculated Returns string The relative path with forward slashes as directory separators GetRelativePathIfDescendant(string, string) Gets the relative path if the target path is a descendant of the reference path; otherwise, returns the original path. public static string GetRelativePathIfDescendant(string relativeTo, string path) Parameters relativeTo string The path that is the reference point path string The path to which the relative path is calculated Returns string The relative path if path is a descendant of relativeTo; otherwise, the original path. Forward slashes are used as directory separators in either case. GetResourceDirectory(string, string, string) Combines a base directory with a relative file path and appends a suffix to derive a sub-directory path. The suffix is only appended when relFile is not null or whitespace. public static string GetResourceDirectory(string baseDirectory, string relFile, string suffixIfAdded = \"-src\") Parameters baseDirectory string The base directory. relFile string The relative file path. suffixIfAdded string The suffix appended to the combined path when relFile is not null or whitespace. Returns string The combined sub-directory path with forward slashes as directory separators. IsDescendant(DirectoryInfo, string) Determines whether a path is a descendant of a specified directory. public static bool IsDescendant(this DirectoryInfo ascendentDirectory, string descendantPath) Parameters ascendentDirectory DirectoryInfo The potential ancestor directory descendantPath string The path to check Returns bool True if the path is a descendant of the directory; otherwise, false IsDescendant(string, string) Determines whether a path is a descendant of a specified directory. public static bool IsDescendant(string ascendentDirectory, string descendantPath) Parameters ascendentDirectory string The potential ancestor directory path descendantPath string The path to check Returns bool True if the path is a descendant of the directory; otherwise, false NormalizeToForwardSlash(string) Replaces backslashes with forward slashes in a path string. public static string NormalizeToForwardSlash(this string src) Parameters src string The source path string Returns string The path string with all backslashes replaced by forward slashes ResolveSubDirectory(string, string, string) Resolves the sub-directory for loading with legacy fallback. Returns the GetResourceDirectory(string, string, string) path if it exists; otherwise falls back to the legacy GetFileDirectory(string, string) path if it exists; otherwise defaults to the GetResourceDirectory(string, string, string) path. public static string ResolveSubDirectory(string baseDirectory, string relFile, string suffix = \"-src\") Parameters baseDirectory string The base directory. relFile string The relative file path. suffix string The suffix for the new sub-directory path. Returns string The resolved sub-directory path with forward slashes as directory separators. TrimTrailingSlash(string) Removes the trailing slash or backslash from a path if it exists. public static string TrimTrailingSlash(this string path) Parameters path string The path to process Returns string The path without a trailing slash or backslash"
},
"api/Hi.Common.PathUtils.html": {
"href": "api/Hi.Common.PathUtils.html",
"title": "Namespace Hi.Common.PathUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.PathUtils Classes ExtendedNamedPath Represents a path with a named base path and an optional extended path component. HttpUtil Utility class for HTTP operations such as URL validation and content retrieval. Lang Provides language-related utilities for path handling. NamedPath Represents a file system path with an associated name or alias. PathUtil Utility class for path manipulation and management."
},
"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. 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class QueueCacher<TData> | HiAPI-C# 2025",
"summary": "Class QueueCacher<TData> Namespace Hi.Common.QueueCacheUtils Assembly HiGeom.dll This cacher suits scattered IO with repeatity. public class QueueCacher<TData> where TData : class Type Parameters TData The type of data to cache Inheritance object QueueCacher<TData> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QueueCacher(QueueCacherHost<TData>) Initializes a new instance of the QueueCacher class with the specified host. public QueueCacher(QueueCacherHost<TData> host) Parameters host QueueCacherHost<TData> The host that manages this cacher Properties Cache Gets the cached data, loading it if necessary and managing the cache queue. public TData Cache { get; } Property Value TData"
},
"api/Hi.Common.QueueCacheUtils.QueueCacherHost-1.html": {
"href": "api/Hi.Common.QueueCacheUtils.QueueCacherHost-1.html",
"title": "Class QueueCacherHost<TData> | HiAPI-C# 2025",
"summary": "Class QueueCacherHost<TData> Namespace Hi.Common.QueueCacheUtils Assembly HiGeom.dll This cacher suits scattered IO with repeatity. public class QueueCacherHost<TData> where TData : class Type Parameters TData The type of data to cache Inheritance object QueueCacherHost<TData> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Capacity Gets or sets the maximum number of items to keep in the cache. public int Capacity { get; set; } Property Value int Provider Gets or sets the function that provides data when it's not in the cache. public Func<TData> Provider { get; set; } Property Value Func<TData> Methods Clear() Clears all items from the cache. public void Clear()"
},
"api/Hi.Common.QueueCacheUtils.html": {
"href": "api/Hi.Common.QueueCacheUtils.html",
"title": "Namespace Hi.Common.QueueCacheUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.QueueCacheUtils Classes QueueCacherHost<TData> This cacher suits scattered IO with repeatity. QueueCacher<TData> This cacher suits scattered IO with repeatity."
},
"api/Hi.Common.Range-1.html": {
"href": "api/Hi.Common.Range-1.html",
"title": "Class Range<T> | HiAPI-C# 2025",
"summary": "Class Range<T> Namespace Hi.Common Assembly HiGeom.dll Range from Min to Max. public class Range<T> : IEquatable<Range<T>> Type Parameters T Any Type Inheritance object Range<T> Implements IEquatable<Range<T>> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<double> ReversePole { get; } Property Value Range<double> 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<T>) Indicates whether the current object is equal to another object of the same type. public bool Equals(Range<T> other) Parameters other Range<T> 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>, double) Expands the range to include the specified value if necessary. public static void Expand(Range<double> range, double v) Parameters range Range<double> 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, 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",
"title": "Class RoutineBlocker | HiAPI-C# 2025",
"summary": "Class RoutineBlocker Namespace Hi.Common Assembly HiGeom.dll Block the thread to the given delay from the previous block. public class RoutineBlocker : IMakeXmlSource, IDisposable Inheritance object RoutineBlocker 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 RoutineBlocker() Constructor public RoutineBlocker() RoutineBlocker(TimeSpan) Initializes a new instance of the RoutineBlocker class with the specified period. public RoutineBlocker(TimeSpan period) Parameters period TimeSpan The time period between blocks RoutineBlocker(XElement) Initializes a new instance of the RoutineBlocker class from an XML element. public RoutineBlocker(XElement src) Parameters src XElement The XML element containing the blocker configuration Fields XName Gets the XML element name used for serialization. public static string XName Field Value string Properties Period Delay time between each previous Block(). public TimeSpan Period { get; set; } Property Value TimeSpan Methods Block() Delay the thread. The delay time is Period, counted from the previous Block() to the current Block(). The first function call does no delay. If the time between two Block() is over Period, the function call does no delay. public void Block() 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 HasToBlock() If calling Block() make thread delay, return true; otherwise, false. public bool HasToBlock() Returns bool Has to block IsEnabled() Enable the Block() function. public bool IsEnabled() 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 SetDisable() Disables the blocker, canceling any pending operations. public void SetDisable() SetEnable(Action) Enable the Block() function. public void SetEnable(Action disablingCallback = null) Parameters disablingCallback Action"
},
"api/Hi.Common.SearchResult.html": {
"href": "api/Hi.Common.SearchResult.html",
"title": "Enum SearchResult | HiAPI-C# 2025",
"summary": "Enum SearchResult Namespace Hi.Common Assembly HiGeom.dll Represents the result of a search operation. public enum SearchResult Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CriticalFound = 2 Indicates that an exact match was found. FoundCeil = 8 Indicates that a value greater than to the target was found. FoundFloor = 4 Indicates that a value less than to the target was found. NotExisted = 1 Indicates that the target value does not exist in the collection."
},
"api/Hi.Common.SeqPair-1.html": {
"href": "api/Hi.Common.SeqPair-1.html",
"title": "Class SeqPair<T> | HiAPI-C# 2025",
"summary": "Class SeqPair<T> Namespace Hi.Common Assembly HiGeom.dll Represents a sequence pair containing previous and current values. Used to track sequential state changes of a value. public class SeqPair<T> : IEquatable<SeqPair<T>>, IWriteBin Type Parameters T The type of values stored in the sequence pair Inheritance object SeqPair<T> Implements IEquatable<SeqPair<T>> IWriteBin Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SeqPair() Initializes a new instance of the SeqPair<T> class with default values for previous and current elements. public SeqPair() SeqPair(BinaryReader, Func<BinaryReader, T>) Initializes a new instance of the SeqPair<T> class by deserializing from binary data. public SeqPair(BinaryReader reader, Func<BinaryReader, T> Generator) Parameters reader BinaryReader The binary reader to read data from Generator Func<BinaryReader, T> A function that creates objects of type T from binary data SeqPair(T, T) Initializes a new instance of the SeqPair<T> class with specified previous and current values. public SeqPair(T pre, T cur) Parameters pre T The previous value in the sequence cur T The current value in the sequence Fields cur Gets or sets the current value in the sequence. public T cur Field Value T pre Gets or sets the previous value in the sequence. public T pre Field Value T Methods Equals(SeqPair<T>) Indicates whether the current object is equal to another object of the same type. public bool Equals(SeqPair<T> other) Parameters other SeqPair<T> 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. 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.Common.SeqPairUtil.html": {
"href": "api/Hi.Common.SeqPairUtil.html",
"title": "Class SeqPairUtil | HiAPI-C# 2025",
"summary": "Class SeqPairUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for SeqPair operations. public static class SeqPairUtil Inheritance object SeqPairUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Delta<T>(SeqPair<T>) Calculates the difference between current and previous values in a sequence pair. public static T Delta<T>(this SeqPair<T> seq) where T : ISubtractionOperators<T, T, T> Parameters seq SeqPair<T> The sequence pair to calculate delta for Returns T The difference between current and previous values Type Parameters T Type that supports subtraction operations"
},
"api/Hi.Common.ServerFileExplorerConfig.html": {
"href": "api/Hi.Common.ServerFileExplorerConfig.html",
"title": "Class ServerFileExplorerConfig | HiAPI-C# 2025",
"summary": "Class ServerFileExplorerConfig Namespace Hi.Common Assembly HiGeom.dll Configuration for server file explorer functionality. public class ServerFileExplorerConfig : IEquatable<ServerFileExplorerConfig> Inheritance object ServerFileExplorerConfig Implements IEquatable<ServerFileExplorerConfig> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ServerFileExplorerConfig() Initializes a new instance of the ServerFileExplorerConfig class. public ServerFileExplorerConfig() ServerFileExplorerConfig(ServerFileExplorerConfig) Initializes a new instance of the ServerFileExplorerConfig class by copying another instance. public ServerFileExplorerConfig(ServerFileExplorerConfig src) Parameters src ServerFileExplorerConfig The source configuration to copy from Properties ApplyingPostfix Path Postfix for applying to the selected file path. public string ApplyingPostfix { get; set; } Property Value string DefaultFilterTitle Gets or sets the default filter title to use when no filter is selected. public string DefaultFilterTitle { get; set; } Property Value string ExtendedNamedPath Gets or sets the extended named path for the file explorer. public ExtendedNamedPath ExtendedNamedPath { get; set; } Property Value ExtendedNamedPath ExtendedNamedPathList Gets or sets the list of extended named paths available in the file explorer. public List<ExtendedNamedPath> ExtendedNamedPathList { get; set; } Property Value List<ExtendedNamedPath> ExtensionFilterList Gets or sets the list of file extension filters available in the file explorer. public List<(string FilterTitle, string FileExtension)> ExtensionFilterList { get; set; } Property Value List<(string FilterTitle, string FileExtension)> RelativeDirectory Gets or sets the relative directory path for the file explorer. public string RelativeDirectory { get; set; } Property Value string SelectedFileName Gets or sets the currently selected file name. public string SelectedFileName { get; set; } Property Value string Title Gets or sets the title of the file explorer. public string Title { get; set; } Property Value string Methods Equals(ServerFileExplorerConfig) Indicates whether the current object is equal to another object of the same type. public bool Equals(ServerFileExplorerConfig other) Parameters other ServerFileExplorerConfig 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. Set(ServerFileExplorerConfig) Copy values from src. public ServerFileExplorerConfig Set(ServerFileExplorerConfig src) Parameters src ServerFileExplorerConfig src Returns ServerFileExplorerConfig this Operators operator ==(ServerFileExplorerConfig, ServerFileExplorerConfig) public static bool operator ==(ServerFileExplorerConfig left, ServerFileExplorerConfig right) Parameters left ServerFileExplorerConfig right ServerFileExplorerConfig Returns bool operator !=(ServerFileExplorerConfig, ServerFileExplorerConfig) public static bool operator !=(ServerFileExplorerConfig left, ServerFileExplorerConfig right) Parameters left ServerFileExplorerConfig right ServerFileExplorerConfig Returns bool"
},
"api/Hi.Common.StringLocalizer.html": {
"href": "api/Hi.Common.StringLocalizer.html",
"title": "Class StringLocalizer | HiAPI-C# 2025",
"summary": "Class StringLocalizer Namespace Hi.Common Assembly HiGeom.dll Provides localization functionality for strings using resource managers. public class StringLocalizer Inheritance object StringLocalizer Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StringLocalizer(params Type[]) Initializes a new instance of the StringLocalizer class with the specified types. public StringLocalizer(params Type[] types) Parameters types Type[] The types containing resources to be used for localization. Properties ExtendedTypeList Gets a list of extended types that will be used for localization in addition to the primary types. public static List<Type> ExtendedTypeList { get; } Property Value List<Type> this[string] Gets the localized string for the specified key. public string this[string key] { get; } Parameters key string The key to look up in the resource managers. Property Value string The localized string if found; otherwise, the key itself."
},
"api/Hi.Common.StringUtil.html": {
"href": "api/Hi.Common.StringUtil.html",
"title": "Class StringUtil | HiAPI-C# 2025",
"summary": "Class StringUtil Namespace Hi.Common Assembly HiGeom.dll Utility for managing text. public static class StringUtil Inheritance object StringUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ExtractFullFunctionCall(string, string, out string, int) Extracts a complete function call from a string, including the function name and all parameters. public static int ExtractFullFunctionCall(string input, string functionName, out string funcCall, int beginSearchIndex = 0) Parameters input string The input string to search in. functionName string The name of the function to find. funcCall string When this method returns, contains the extracted function call if found; otherwise, null. beginSearchIndex int The index in the input string to begin the search. Returns int The starting index of the function call if found; otherwise, -1. ExtractFunctionArguments(string, string) Extracts the arguments of a function call from a string. public static string ExtractFunctionArguments(string input, string functionName) Parameters input string The input string containing the function call. functionName string The name of the function whose arguments to extract. Returns string The arguments string if the function call is found; otherwise, null. GetPropertyStringIfToStringNotOverloaded(object, bool, bool) Create string by properties. public static string GetPropertyStringIfToStringNotOverloaded(this object src, bool changeLine = false, bool includeNonPublic = false) Parameters src object src changeLine bool change line includeNonPublic bool include non-public properties Returns string string RemoveWhiteSpaceLines(string) Removes lines that contain only whitespace characters from the input string. public static string RemoveWhiteSpaceLines(this string text) Parameters text string The input string to process. Returns string A new string with whitespace-only lines removed. ToDotSplitedString<T>(IEnumerable<T>) Converts a collection of objects to a comma-separated string. public static string ToDotSplitedString<T>(this IEnumerable<T> objects) Parameters objects IEnumerable<T> The collection of objects to convert. Returns string A comma-separated string representation of the objects. Type Parameters T ToUtf8NullTerminatedBytes(string) Converts a string to a null-terminated UTF-8 byte array for P/Invoke. public static byte[] ToUtf8NullTerminatedBytes(this string str) Parameters str string Returns byte[]"
},
"api/Hi.Common.TaskUtil.html": {
"href": "api/Hi.Common.TaskUtil.html",
"title": "Class TaskUtil | HiAPI-C# 2025",
"summary": "Class TaskUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for Task-related operations. public static class TaskUtil Inheritance object TaskUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GenTask<TArg>(Action<TArg>, TArg) Generates a new Task that will execute the specified function with the given argument. public static Task GenTask<TArg>(Action<TArg> func, TArg arg) Parameters func Action<TArg> The function to execute arg TArg The argument to pass to the function Returns Task A new Task Type Parameters TArg The type of the argument GenTask<TArg>(Action<TArg>, TArg, CancellationToken) Generates a new Task that will execute the specified function with the given argument and cancellation token. public static Task GenTask<TArg>(Action<TArg> func, TArg arg, CancellationToken cancellationToken) Parameters func Action<TArg> The function to execute arg TArg The argument to pass to the function cancellationToken CancellationToken The cancellation token Returns Task A new Task Type Parameters TArg The type of the argument GenTask<TArg, TResult>(Func<TArg, TResult>, TArg) Generates a new Task that will execute the specified function with the given argument and return a result. public static Task<TResult> GenTask<TArg, TResult>(Func<TArg, TResult> func, TArg arg) Parameters func Func<TArg, TResult> The function to execute arg TArg The argument to pass to the function Returns Task<TResult> A new Task with a result Type Parameters TArg The type of the argument TResult The type of the result GenTask<TArg, TResult>(Func<TArg, TResult>, TArg, CancellationToken) Generates a new Task that will execute the specified function with the given argument and cancellation token, and return a result. public static Task<TResult> GenTask<TArg, TResult>(Func<TArg, TResult> func, TArg arg, CancellationToken cancellationToken) Parameters func Func<TArg, TResult> The function to execute arg TArg The argument to pass to the function cancellationToken CancellationToken The cancellation token Returns Task<TResult> A new Task with a result Type Parameters TArg The type of the argument TResult The type of the result GetTaskAwaiterResult(ValueTask) Gets the result of a ValueTask by converting it to a Task and getting its awaiter result. public static void GetTaskAwaiterResult(this ValueTask valueTask) Parameters valueTask ValueTask The ValueTask GetTaskAwaiterResult<TResult>(ValueTask<TResult>) Gets the result of a ValueTask with a result by converting it to a Task and getting its awaiter result. public static TResult GetTaskAwaiterResult<TResult>(this ValueTask<TResult> valueTask) Parameters valueTask ValueTask<TResult> The ValueTask with a result Returns TResult The result of the ValueTask Type Parameters TResult The type of the result"
},
"api/Hi.Common.TimeCounter.html": {
"href": "api/Hi.Common.TimeCounter.html",
"title": "Class TimeCounter | HiAPI-C# 2025",
"summary": "Class TimeCounter Namespace Hi.Common Assembly HiGeom.dll 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). public static class TimeCounter Inheritance object TimeCounter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Bound(object) Marks a boundary for time measurement for the specified key. public static void Bound(object key) Parameters key object The key that identifies this particular measurement. Remarks This method alternates between starting and stopping time measurement: First call with a key: Starts the timer Second call with the same key: Stops the timer and records the elapsed time Third call: Starts the timer again And so on… The elapsed time is accumulated and the count is incremented each time a measurement completes. Pass(object) Cancels an active time measurement for the specified key without recording the elapsed time. public static void Pass(object key) Parameters key object The key that identifies the measurement to cancel. Remarks If timing has not been started for the specified key, this method has no effect. This is useful for aborting a measurement without affecting statistics. Reset() Resets all time measurements by clearing all accumulated statistics and counters. public static void Reset() Show() Displays all accumulated time measurements to the console. public static void Show() Remarks For each key, this method outputs: The count of measurements The total accumulated time The average time per measurement The key identifier ShowExt(int) Displays time measurements and resets counters periodically based on call frequency. public static void ShowExt(int gap) Parameters gap int The number of calls to this method before showing results and resetting. Remarks This method increments an internal counter with each call. When the counter reaches the specified gap value, it: Displays all measurements (calls Show()) Resets all counters (calls Reset()) Resets the internal counter to zero This is useful for periodic reporting during long-running operations."
},
"api/Hi.Common.XmlUtils.FileRefSource-1.html": {
"href": "api/Hi.Common.XmlUtils.FileRefSource-1.html",
"title": "Class FileRefSource<T> | HiAPI-C# 2025",
"summary": "Class FileRefSource<T> Namespace Hi.Common.XmlUtils Assembly HiGeom.dll A class that combines an XML-serializable data object with its source file path. public class FileRefSource<T> : ISourceFile where T : class, IMakeXmlSource Type Parameters T The type of data object that can be serialized to XML Inheritance object FileRefSource<T> Implements ISourceFile Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileRefSource() Initializes a new instance of the XmlSource class. public FileRefSource() FileRefSource(string, T) Initializes a new instance of the XmlSource class with data and optional file path. public FileRefSource(string file, T data) Parameters file string Optional path to the XML source file data T The data object to store Properties Data Gets or sets the main data object being stored. public T Data { get; set; } Property Value T SourceFile Gets or sets the path to the source file. public string SourceFile { get; set; } Property Value string Methods MakeXmlSourceToFileRef(string) Creates an XML representation of the data object with the file path rebased to the specified directory. public XElement MakeXmlSourceToFileRef(string baseDirectory) Parameters baseDirectory string The base directory for resolving relative paths Returns XElement An XML element representing the data object's state Set(FileRefSource<T>) Copies data from another XmlSource instance. public void Set(FileRefSource<T> src) Parameters src FileRefSource<T> The source XmlSource to copy from"
},
"api/Hi.Common.XmlUtils.IMakeXmlSource.html": {
"href": "api/Hi.Common.XmlUtils.IMakeXmlSource.html",
"title": "Interface IMakeXmlSource | HiAPI-C# 2025",
"summary": "Interface IMakeXmlSource Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Interface for objects that can be serialized to XML format. public interface IMakeXmlSource Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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) Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file."
},
"api/Hi.Common.XmlUtils.IToXElement.html": {
"href": "api/Hi.Common.XmlUtils.IToXElement.html",
"title": "Interface IToXElement | HiAPI-C# 2025",
"summary": "Interface IToXElement Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Interface of ToXElement(). Which can be represented by a single XElement. public interface IToXElement Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Relative to IMakeXmlSource, the IToXElement don't export file. So no directory information is required. A single XElement represent the object. Methods ToXElement() Get the XElement to represent the object. XElement ToXElement() Returns XElement XElement to represent the object."
},
"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<ProjectApiVersion>().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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Delegate SetFileDelegate | HiAPI-C# 2025",
"summary": "Delegate SetFileDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for setting the file path during XML operations. public delegate void SetFileDelegate(string file) Parameters file string The file path to set Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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<IMessage> 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<IMessage> Progress reporter for the XML parsing chain. res object[] Additional parameters for generation. Returns object The generated object. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Delegate XFactory.XmlExceptionDelegate | HiAPI-C# 2025",
"summary": "Delegate XFactory.XmlExceptionDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for handling XML exceptions during generation. public delegate void XFactory.XmlExceptionDelegate(string relPath, Exception exception) Parameters relPath string The relative path where the exception occurred. exception Exception The exception that was thrown. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<T> / GenByChild<T> / GenByFile<T> 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<T> 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<string, XFactory.XGeneratorDelegate> Generators { get; } Property Value ConcurrentDictionary<string, XFactory.XGeneratorDelegate> Methods GenByChild<T>(XElement, string, IProgress<IMessage>, bool, object[]) Generates an object of type T from the first child element (discards relative file path). public static T GenByChild<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement baseDirectory string progress IProgress<IMessage> enableRebase bool res object[] Returns T Type Parameters T GenByChild<T>(XElement, string, out string, IProgress<IMessage>, bool, object[]) Generates an object of type T from the first child element of the provided XML element. 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 src XElement baseDirectory string relFile string progress IProgress<IMessage> enableRebase bool res object[] Returns T Type Parameters T GenByFile<T>(string, string, IProgress<IMessage>, bool, object[]) Generates an object of type T from an XML file. public static T GenByFile<T>(string baseDirectory, string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class Parameters baseDirectory string relFile string progress IProgress<IMessage> enableRebase bool res object[] Returns T Type Parameters T GenFileRefSourceByChild<T>(XElement, string, IProgress<IMessage>, bool, object[]) Generates a FileRefSource<T> from the first child element. public static FileRefSource<T> GenFileRefSourceByChild<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress<IMessage> enableRebase bool res object[] Returns FileRefSource<T> Type Parameters T GenFileRefSourceByFile<T>(string, string, IProgress<IMessage>, bool, object[]) Generates a FileRefSource<T> from an XML file. public static FileRefSource<T> GenFileRefSourceByFile<T>(string baseDirectory, string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters baseDirectory string relFile string progress IProgress<IMessage> enableRebase bool res object[] Returns FileRefSource<T> Type Parameters T GenFileRefSource<T>(XElement, string, IProgress<IMessage>, bool, object[]) Generates a FileRefSource<T> from an XML element. public static FileRefSource<T> GenFileRefSource<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress<IMessage> enableRebase bool res object[] Returns FileRefSource<T> Type Parameters T GenListSkippingUnloadable<T>(IEnumerable<XElement>, string, IProgress<IMessage>, 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<T> GenListSkippingUnloadable<T>(IEnumerable<XElement> elements, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class Parameters elements IEnumerable<XElement> baseDirectory string progress IProgress<IMessage> enableRebase bool res object[] Returns List<T> Type Parameters T Gen<T>(XElement, string, IProgress<IMessage>, bool, object[]) Generates an object of type T from an XML element (discards relative file path). public static T Gen<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement baseDirectory string progress IProgress<IMessage> enableRebase bool res object[] Returns T Type Parameters T Gen<T>(XElement, string, out string, IProgress<IMessage>, bool, object[]) Generates an object of type T from an XML element using Default. 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 src XElement baseDirectory string relFile string progress IProgress<IMessage> 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<T>(XElement, string, IProgress<IMessage>, bool) Deserializes a dictionary of objects from an XML element. public static Dictionary<string, T> GetDictionaryByXmlSource<T>(this XElement src, string baseDirectory, IProgress<IMessage> 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<IMessage> Optional progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location Returns Dictionary<string, T> 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<XElement> GetNameNoteXElementList(this INameNote src) Parameters src INameNote The source INameNote object Returns List<XElement> A list of XML elements containing the name and note GetOrDefault<T>(XElement, string, T) If xpath exist, return value by xpath ; Otherwise, return defaultValue. The xpath must indicates solely one XElement. public static T GetOrDefault<T>(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<T>(IDictionary<string, T>, string, bool) Creates an XML representation of a dictionary of XML-serializable objects. public static XElement MakeXmlSource<T>(this IDictionary<string, T> dictionary, string baseDirectory, bool exhibitionOnly) where T : IMakeXmlSource Parameters dictionary IDictionary<string, T> 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<byte[]> SaveToByteArrayAsync(this IMakeXmlSource src, string baseDirectory) Parameters src IMakeXmlSource The XML source to save baseDirectory string The base directory for resolving paths Returns Task<byte[]> 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<T>(XElement, string, T, string) Sets a value at the specified XPath, creating the path if it doesn't exist. public static void SetOrGenerate<T>(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",
"title": "Namespace Hi.Common.XmlUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Common.XmlUtils Classes FileRefSource<T> A class that combines an XML-serializable data object with its source file path. ProjectApiVersion Carries the API version read from a project file's XML attribute through the XFactory deserialization pipeline via the object[] res parameter. Consumers retrieve it with res?.OfType<ProjectApiVersion>().FirstOrDefault(). XFactory Factory for generating objects from XML elements using registered generator functions. XmlUtil Utility for managing XML. Interfaces IMakeXmlSource Interface for objects that can be serialized to XML format. IToXElement Interface of ToXElement(). Which can be represented by a single XElement. Delegates SetFileDelegate Delegate for setting the file path during XML operations. XFactory.XGeneratorDelegate Delegate for generating an object from an XML element with relative file path context. XFactory.XmlExceptionDelegate Delegate for handling XML exceptions during generation."
},
"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. 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<TValue> 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<TA, TB> 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<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, 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<T> 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",
"title": "Class ClCircleArc | HiAPI-C# 2025",
"summary": "Class ClCircleArc Namespace Hi.CutterLocations.ClPath Assembly HiMech.dll Cutter location path of circle arc. public class ClCircleArc : IClPath Inheritance object ClCircleArc Implements IClPath Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClCircleArc(DVec3d, DVec3d, DVec3d, int) Initializes a new instance of the ClCircleArc class. public ClCircleArc(DVec3d circleCenterAxis, DVec3d begin, DVec3d end, int circleNum = 1) Parameters circleCenterAxis DVec3d The axis of the circle arc. begin DVec3d The starting point and direction. end DVec3d The ending point and direction. circleNum int Circle num which include an arc. The default is 1. Properties AngleOnAxialTilt Gets the angle of axial tilt. public double AngleOnAxialTilt { get; } Property Value double AngleOnProj Gets the angle of projection. public double AngleOnProj { get; } Property Value double AxialMove Gets the movement along the axis. public Vec3d AxialMove { get; } Property Value Vec3d AxialTiltAxis Gets the axis of axial tilt. public Vec3d AxialTiltAxis { get; } Property Value Vec3d Begin Gets the starting point and direction. public DVec3d Begin { get; } Property Value DVec3d CircleCenterAxis Gets the axis of the circle arc. public DVec3d CircleCenterAxis { get; } Property Value DVec3d CircleNum Gets the number of complete circles included in the arc. public int CircleNum { get; } Property Value int CurveLength Gets the approximate length of the curve. public double CurveLength { get; } Property Value double End Gets the ending point and direction. public DVec3d End { get; } Property Value DVec3d Length public double Length { get; } Property Value double RadiusBegin Gets the radius at the beginning of the arc. public double RadiusBegin { get; } Property Value double RadiusEnd Gets the radius at the end of the arc. public double RadiusEnd { get; } Property Value double Methods At(double) NP (Normal and Point) at the given ratio (0~1). public DVec3d At(double ratio) Parameters ratio double ratio of the path (0~1) Returns DVec3d NP (Normal and Point) GetBegin() Path begin. public DVec3d GetBegin() Returns DVec3d path begin GetEnd() Path end. public DVec3d GetEnd() Returns DVec3d path end 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.ClPath.ClLinear.html": {
"href": "api/Hi.CutterLocations.ClPath.ClLinear.html",
"title": "Class ClLinear | HiAPI-C# 2025",
"summary": "Class ClLinear Namespace Hi.CutterLocations.ClPath Assembly HiMech.dll Cutter location path by linear interpolation. public class ClLinear : IClPath Inheritance object ClLinear Implements IClPath Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClLinear(DVec3d, DVec3d) Initializes a new instance of the ClLinear class with specified begin and end points. public ClLinear(DVec3d begin, DVec3d end) Parameters begin DVec3d The beginning point and normal vector. end DVec3d The ending point and normal vector. Properties Arrow Arrow from being.p to end.p. public Vec3d Arrow { get; } Property Value Vec3d Begin Begin of the path. public DVec3d Begin { get; set; } Property Value DVec3d End End of the path. public DVec3d End { get; set; } Property Value DVec3d Length Length of the Arrow. public double Length { get; } Property Value double NormalAxisDelta The axis-angle representation of the normal vector change from begin to end. public AxisAngle4d NormalAxisDelta { get; } Property Value AxisAngle4d Methods At(double) Gets the interpolated point and normal vector at the specified ratio along the path. public DVec3d At(double ratio) Parameters ratio double The interpolation ratio between 0 and 1. Returns DVec3d The interpolated point and normal vector. GetBegin() Gets the beginning point and normal vector of the path. public DVec3d GetBegin() Returns DVec3d The beginning point and normal vector. GetEnd() Gets the ending point and normal vector of the path. public DVec3d GetEnd() Returns DVec3d The ending point and normal vector. 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.ClPath.IClPath.html": {
"href": "api/Hi.CutterLocations.ClPath.IClPath.html",
"title": "Interface IClPath | HiAPI-C# 2025",
"summary": "Interface IClPath Namespace Hi.CutterLocations.ClPath Assembly HiMech.dll Cutter location path. public interface IClPath Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods At(double) NP (Normal and Point) at the given ratio (0~1). DVec3d At(double ratio) Parameters ratio double ratio of the path (0~1) Returns DVec3d NP (Normal and Point) GetBegin() Path begin. DVec3d GetBegin() Returns DVec3d path begin GetEnd() Path end. DVec3d GetEnd() Returns DVec3d path end"
},
"api/Hi.CutterLocations.ClPath.html": {
"href": "api/Hi.CutterLocations.ClPath.html",
"title": "Namespace Hi.CutterLocations.ClPath | HiAPI-C# 2025",
"summary": "Namespace Hi.CutterLocations.ClPath Classes ClCircleArc Cutter location path of circle arc. ClLinear Cutter location path by linear interpolation. Interfaces IClPath Cutter location path."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<MachiningStep> InternalMachiningStepSelected Field Value Action<MachiningStep> 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<TimeSpan?> ChartRange { get; } Property Value Range<TimeSpan?> 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<ClStripPos> StripPoses { get; } Property Value SynList<ClStripPos> 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<IReadOnlyList<ClStripPos>> StripPosesRetirer { get; set; } Property Value Action<IReadOnlyList<ClStripPos>> 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<T>(Func<ClStripPos, T>) Thread-safe selection of strip positions. public List<T> StripPosesThreadSafeSelect<T>(Func<ClStripPos, T> func) Parameters func Func<ClStripPos, T> The function to transform each strip position Returns List<T> 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<MachiningStep> MachiningStepSelected Event Type Action<MachiningStep> PosAdded Event raised when a new position is added to the strip. public event Action<ClStripPos> PosAdded Event Type Action<ClStripPos> PosEntered Event raised when the mouse enters a position. public event EventHandler<ClStripPos> PosEntered Event Type EventHandler<ClStripPos> PosSelected Event raised when a position is selected. public event EventHandler<ClStripPos> PosSelected Event Type EventHandler<ClStripPos> StaticPosSelected Static event raised when any position is selected. public static event EventHandler<ClStripPos> StaticPosSelected Event Type EventHandler<ClStripPos>"
},
"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, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Delegate RgbFunc | HiAPI-C# 2025",
"summary": "Delegate RgbFunc Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Delegate for getting RGB color from a source object. public delegate Vec3d RgbFunc(object src) Parameters src object The source object to get RGB from Returns Vec3d RGB color vector Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.CutterLocations.ClStrips.html": {
"href": "api/Hi.CutterLocations.ClStrips.html",
"title": "Namespace Hi.CutterLocations.ClStrips | HiAPI-C# 2025",
"summary": "Namespace Hi.CutterLocations.ClStrips Classes ClStrip Represents a CL (Cutter Location) strip for 3D display. This class manages the display and interaction of cutter location points and lines. ClStripPos Represents a position in a cutter location strip, containing program coordinates and state information. Delegates RgbFunc Delegate for getting RGB color from a source object."
},
"api/Hi.CutterLocations.IGetProgramCl.html": {
"href": "api/Hi.CutterLocations.IGetProgramCl.html",
"title": "Interface IGetProgramCl | HiAPI-C# 2025",
"summary": "Interface IGetProgramCl Namespace Hi.CutterLocations Assembly HiMech.dll Interface of get CL (Cutter Location). public interface IGetProgramCl Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. DVec3d GetProgramCl() Returns DVec3d CL"
},
"api/Hi.CutterLocations.SimpleCl.html": {
"href": "api/Hi.CutterLocations.SimpleCl.html",
"title": "Class SimpleCl | HiAPI-C# 2025",
"summary": "Class SimpleCl Namespace Hi.CutterLocations Assembly HiMech.dll Represents a simple cutter location with position and normal vector. public class SimpleCl : IGetProgramCl Inheritance object SimpleCl Implements IGetProgramCl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SimpleCl() Initializes a new instance of the SimpleCl class. public SimpleCl() SimpleCl(SimpleCl) Initializes a new instance of the SimpleCl class by copying from another instance. public SimpleCl(SimpleCl src) Parameters src SimpleCl The source SimpleCl instance to copy from. SimpleCl(DVec3d) Initializes a new instance of the SimpleCl class with the specified cutter location vector. public SimpleCl(DVec3d cl) Parameters cl DVec3d The cutter location vector containing position and normal. Properties Cl Gets or sets the cutter location vector containing position and normal. public DVec3d Cl { get; set; } Property Value DVec3d Methods GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL 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.html": {
"href": "api/Hi.CutterLocations.html",
"title": "Namespace Hi.CutterLocations | HiAPI-C# 2025",
"summary": "Namespace Hi.CutterLocations Classes SimpleCl Represents a simple cutter location with position and normal vector. Interfaces IGetProgramCl Interface of get CL (Cutter Location)."
},
"api/Hi.Disp.Bind.html": {
"href": "api/Hi.Disp.Bind.html",
"title": "Class Bind | HiAPI-C# 2025",
"summary": "Class Bind Namespace Hi.Disp Assembly HiDisp.dll 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. public class Bind : IDisposable Inheritance object Bind Implements 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields bind Internal use. public bind_t* bind Field Value bind_t* Properties CanvasHeight DispEngine height. public int CanvasHeight { get; } Property Value int CanvasWidth DispEngine width. public int CanvasWidth { get; } Property Value int IsPickingMode Is current display loop in pick mode. public bool IsPickingMode { get; } Property Value bool ModelMatStack Stack-based Model matrix in MVP convention. public MatStack ModelMatStack { get; } Property Value MatStack PickID ID of picking event. public int PickID { get; set; } Property Value int PixelProjMat Pixel part of Projection matrix in MVP convention. public Mat4d PixelProjMat { get; } Property Value Mat4d See Also ProjMat PixelWidthOnModel Pixel width on model layer. public double PixelWidthOnModel { get; } Property Value double ProjMat Projection matrix in MVP convention. Projection matrix = ScaleProjMat * PixelProjMat. public Mat4d ProjMat { get; } Property Value Mat4d Reciprocal_vs_scale Cached reciprocal value of the scale of ViewMat * ScaleProjMat. public double Reciprocal_vs_scale { get; } Property Value double Rgb External RGB Color for the Drawing which the KeyStamp does not contains C. public Vec3d Rgb { get; set; } Property Value Vec3d ScaleProjMat Scale part of Projection matrix in MVP convention. public Mat4d ScaleProjMat { get; } Property Value Mat4d See Also ProjMat SparkleRate Gets or sets the sparkle rate for rendering effects. public float SparkleRate { get; set; } Property Value float ViewMat View matrix in MVP convention. public Mat4d ViewMat { get; } Property Value Mat4d 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 ~Bind() protected ~Bind() GetMvpBoxRelation(Vec3d, double) get relation between mvpBox and a AABB (bounding with a sphere) public MvpBoxRelation GetMvpBoxRelation(Vec3d center, double r) Parameters center Vec3d center r double radius Returns MvpBoxRelation 0 if no overlap; 1 if partial overlap; 2 if B in A PopColor() Pop the color after using PushColor() and etc.. public void PopColor() See Also PushColor() PushColorByRgb(Vec3d) PopLineWidth() Pop the line width from the stack. And then set the poped line width to current line width. public void PopLineWidth() PopPointSize() Pop the stored point size from the stack. And then set the stored point size to current point size. public void PopPointSize() See Also PushPointSize() PushPointSize(double) PushColor() Push current color to stack. After PopColor(), the pushed color will be restored. public void PushColor() PushColorByHsl(Vec3d) Pushes a color onto the color stack using HSL values. public void PushColorByHsl(Vec3d hsl) Parameters hsl Vec3d The HSL color vector. PushColorByHsl(double, double, double) Pushes a color onto the color stack using HSL values. public void PushColorByHsl(double hue, double saturation, double light) Parameters hue double The hue component (0.0 to 1.0). saturation double The saturation component (0.0 to 1.0). light double The lightness component (0.0 to 1.0). PushColorByHslOffset(Vec3d) Pushes a color onto the color stack by applying HSL offsets to the current color. public void PushColorByHslOffset(Vec3d hslOffset) Parameters hslOffset Vec3d The HSL offset vector to apply. PushColorByHslOffset(double, double, double) Pushes a color onto the color stack by applying HSL offsets to the current color. public void PushColorByHslOffset(double hueOffset, double saturationOffset, double lightOffset) Parameters hueOffset double The hue offset to apply. saturationOffset double The saturation offset to apply. lightOffset double The lightness offset to apply. PushColorByRgb(Vec3d) Push current color to stack then set the color to given rgb. After PopColor(), the pushed color will be restored. If rgb is null, ignore the rgb and push. public void PushColorByRgb(Vec3d rgb) Parameters rgb Vec3d RGB color PushColorByRgb(double, double, double) Pushes a color onto the color stack using RGB values. public void PushColorByRgb(double r, double g, double b) Parameters r double The red component value (0.0 to 1.0). g double The green component value (0.0 to 1.0). b double The blue component value (0.0 to 1.0). PushColorByRgbOffset(Vec3d) Pushes a color onto the color stack by applying an RGB offset to the current color. Ensures the resulting color stays within [0,1] by shifting or normalizing when needed. public void PushColorByRgbOffset(Vec3d rgbOffset) Parameters rgbOffset Vec3d The RGB offset to add to the current color. PushColorByRgbOffset(double, double, double) Pushes a color onto the color stack by applying per-channel RGB offsets to the current color. public void PushColorByRgbOffset(double rOffset, double gOffset, double bOffset) Parameters rOffset double Offset applied to the red channel. gOffset double Offset applied to the green channel. bOffset double Offset applied to the blue channel. PushCoveringPixelMode() Push covering-pixel-mode matrix to ModelMatStack to make the display in pixel scale. Call ModelMatStack.Pop() to end the mode. public void PushCoveringPixelMode() PushLineWidth() Push current line width into stack. public void PushLineWidth() See Also PopLineWidth() PushLineWidth(double) Push current line width into stack. And then set lineWidth to the current line width. public void PushLineWidth(double lineWidth) Parameters lineWidth double line width See Also PopLineWidth() PushNoRotationPixelMode() Push no-rotation-pixel-mode matrix to ModelMatStack to make the display in pixel scale. Call ModelMatStack.Pop() to end the mode. public void PushNoRotationPixelMode() PushPixelMode() Push pixel mode matrix to ModelMatStack to make the display in pixel scale. Call ModelMatStack.Pop() to end the mode. public void PushPixelMode() PushPointSize() Push current point size to the stack. public void PushPointSize() See Also PopPointSize() PushPointSize(double) Push current point size to the stack. And then set the pointSize to current point size. public void PushPointSize(double pointSize) Parameters pointSize double point size See Also PopPointSize() PushPointSize(float) Push current point size to the stack. And then set the pointSize to current point size. public void PushPointSize(float pointSize) Parameters pointSize float point size See Also PopPointSize() ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html": {
"href": "api/Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html",
"title": "Delegate Box3dDispUtil.BoxableExpandToBox3dDel | HiAPI-C# 2025",
"summary": "Delegate Box3dDispUtil.BoxableExpandToBox3dDel Namespace Hi.Disp Assembly HiDisp.dll Delegate for expanding a native boxable object to a box3d. public delegate void Box3dDispUtil.BoxableExpandToBox3dDel(nint boxablePtr, ref box3d box) Parameters boxablePtr nint Pointer to the boxable object. box box3d Reference to the box to expand. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Disp.Box3dDispUtil.html": {
"href": "api/Hi.Disp.Box3dDispUtil.html",
"title": "Class Box3dDispUtil | HiAPI-C# 2025",
"summary": "Class Box3dDispUtil Namespace Hi.Disp Assembly HiDisp.dll Utility and Extension of Box3d. public static class Box3dDispUtil Inheritance object Box3dDispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(Box3d, Bind) Call DisplayLine(Box3d, Bind). public static void Display(this Box3d src, Bind bind) Parameters src Box3d src bind Bind bind DisplayFace(Box3d, Bind) Display faces of the src. public static void DisplayFace(this Box3d src, Bind bind) Parameters src Box3d src bind Bind bind DisplayLine(Box3d, Bind) Display edges of the src. public static void DisplayLine(this Box3d src, Bind bind) Parameters src Box3d src bind Bind bind ExpandToBox3d(nint, BoxableExpandToBox3dDel, Box3d) Expands a destination Box3d to include the bounds of a native boxable object. public static void ExpandToBox3d(nint boxablePtr, Box3dDispUtil.BoxableExpandToBox3dDel boxableExpandToBox3dDel, Box3d dst) Parameters boxablePtr nint Pointer to the boxable object. boxableExpandToBox3dDel Box3dDispUtil.BoxableExpandToBox3dDel Delegate to expand the boxable to a box3d. dst Box3d The destination Box3d to expand. GetBox(nint, BoxableExpandToBox3dDel) Gets a Box3d from a native boxable pointer using the provided delegate. public static Box3d GetBox(nint boxablePtr, Box3dDispUtil.BoxableExpandToBox3dDel boxableExpandToBox3dDel) Parameters boxablePtr nint Pointer to the boxable object. boxableExpandToBox3dDel Box3dDispUtil.BoxableExpandToBox3dDel Delegate to expand the boxable to a box3d. Returns Box3d A Box3d representing the bounds of the boxable object. ToDraw(Box3d) Equivalent to ToDraw_Face(Box3d) public static Drawing ToDraw(this Box3d src) Parameters src Box3d src Returns Drawing Drawing ToDraw_Face(Box3d) To Face Drawing. public static Drawing ToDraw_Face(this Box3d src) Parameters src Box3d src Returns Drawing Face Drawing ToDraw_Line(Box3d) To Line Drawing. public static Drawing ToDraw_Line(this Box3d src) Parameters src Box3d src Returns Drawing Line Drawing ToFaceDraw(IEnumerable<Box3d>) Get faces Drawing. public static Drawing ToFaceDraw(this IEnumerable<Box3d> boxs) Parameters boxs IEnumerable<Box3d> boxes Returns Drawing a draw with face ToLineBuf(Box3d, double[], ref int) Put the edges' data to dst, totally 72 double. The data is used according to GL_LINES. public static int ToLineBuf(this Box3d src, double[] dst, ref int p) Parameters src Box3d src dst double[] dstination buffer p int current position of the buffer Returns int The p increment: 72 ToLineDraw(IEnumerable<Box3d>) Get the edges Drawing of boxs. public static Drawing ToLineDraw(this IEnumerable<Box3d> boxs) Parameters boxs IEnumerable<Box3d> boxs Returns Drawing The Drawing"
},
"api/Hi.Disp.DelegateFuncDisplayee.html": {
"href": "api/Hi.Disp.DelegateFuncDisplayee.html",
"title": "Class DelegateFuncDisplayee | HiAPI-C# 2025",
"summary": "Class DelegateFuncDisplayee Namespace Hi.Disp Assembly HiDisp.dll A displayee implementation that delegates display functionality to a function. public class DelegateFuncDisplayee : IDisplayee, IExpandToBox3d Inheritance object DelegateFuncDisplayee 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DelegateFuncDisplayee(Func<IDisplayee>) Initializes a new instance of the DelegateFuncDisplayee class. public DelegateFuncDisplayee(Func<IDisplayee> func) Parameters func Func<IDisplayee> The function that returns an IDisplayee instance. 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.DispEngine.ImageRequestedDelegate.html": {
"href": "api/Hi.Disp.DispEngine.ImageRequestedDelegate.html",
"title": "Delegate DispEngine.ImageRequestedDelegate | HiAPI-C# 2025",
"summary": "Delegate DispEngine.ImageRequestedDelegate Namespace Hi.Disp Assembly HiDisp.dll For ImageRequestAfterBufferSwapped. public delegate void DispEngine.ImageRequestedDelegate(byte* bgra_unsignedbyte_pixels, int w, int h) Parameters bgra_unsignedbyte_pixels byte* BGRA convention pixels in unsigned bytes. The size is wh4. w int width h int height Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<T>(Task<T>) Enqueues a task to be executed on the display thread. public static Task<T> EnqueueTask<T>(Task<T> task) Parameters task Task<T> The task to be executed Returns Task<T> 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",
"title": "Class DispEngineConfig | HiAPI-C# 2025",
"summary": "Class DispEngineConfig Namespace Hi.Disp Assembly HiDisp.dll Configuration class for display engine. public class DispEngineConfig Inheritance object DispEngineConfig Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DispEngineConfig() Initializes a new instance of the DispEngineConfig class. public DispEngineConfig() DispEngineConfig(IDisplayee) Initializes a new instance of the DispEngineConfig class with a displayee. public DispEngineConfig(IDisplayee displayee) Parameters displayee IDisplayee The displayee object to be rendered. DispEngineConfig(IDisplayee, Mat4d) Initializes a new instance of the DispEngineConfig class with a displayee and sketch view. public DispEngineConfig(IDisplayee displayee, Mat4d sketchView) Parameters displayee IDisplayee The displayee object to be rendered. sketchView Mat4d The sketch view transformation matrix. Properties Displayee Gets or sets the displayee object to be rendered. public IDisplayee Displayee { get; set; } Property Value IDisplayee SketchView Gets or sets the sketch view transformation matrix. public Mat4d SketchView { get; set; } Property Value Mat4d"
},
"api/Hi.Disp.DispFrameUtil.html": {
"href": "api/Hi.Disp.DispFrameUtil.html",
"title": "Class DispFrameUtil | HiAPI-C# 2025",
"summary": "Class DispFrameUtil Namespace Hi.Disp Assembly HiDisp.dll Utility class for display frame management. public static class DispFrameUtil Inheritance object DispFrameUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties KeyToDispEngineConfigDictionary Internal Use Only. public static ConcurrentDictionary<object, DispEngineConfig> KeyToDispEngineConfigDictionary { get; } Property Value ConcurrentDictionary<object, DispEngineConfig> UpdateByDispEngineConfigFunc Gets or sets the function to update display engine. public static Action<string, DispEngineConfig> UpdateByDispEngineConfigFunc { get; set; } Property Value Action<string, DispEngineConfig> Methods Call(string, params IDisplayee[]) Configures the display engine with the specified displayees. public static DispEngineConfig Call(string key, params IDisplayee[] displayees) Parameters key string The key to identify the display engine configuration. displayees IDisplayee[] The displayees to be configured. Returns DispEngineConfig The display engine configuration. ClearCache() Clears the cache of display engine configurations. public static void ClearCache() UpdateFrame(string) Internal Use Only. public static void UpdateFrame(string key) Parameters key string The key to identify the display engine configuration."
},
"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<T>. public class DispList : SynList<IDisplayee>, IList<IDisplayee>, ICollection<IDisplayee>, IEnumerable<IDisplayee>, IEnumerable, IDisplayee, IExpandToBox3d Inheritance object SynList<IDisplayee> DispList Implements IList<IDisplayee> ICollection<IDisplayee> IEnumerable<IDisplayee> IEnumerable IDisplayee IExpandToBox3d Inherited Members SynList<IDisplayee>.Lock SynList<IDisplayee>.this[int] SynList<IDisplayee>.Count SynList<IDisplayee>.IsReadOnly SynList<IDisplayee>.Data SynList<IDisplayee>.Add(IDisplayee) SynList<IDisplayee>.AddAndGetIndex(IDisplayee) SynList<IDisplayee>.Clear() SynList<IDisplayee>.Contains(IDisplayee) SynList<IDisplayee>.CopyTo(IDisplayee[], int) SynList<IDisplayee>.GetEnumerator() SynList<IDisplayee>.IndexOf(IDisplayee) SynList<IDisplayee>.Insert(int, IDisplayee) SynList<IDisplayee>.Remove(IDisplayee) SynList<IDisplayee>.RemoveAt(int) SynList<IDisplayee>.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ListUtil.GetCeilBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetCeilIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetCeilIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetCeil<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetFloorBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek<TItem, TKey>(IList<TItem>, TKey, Func<TItem, TKey>, out int, int, SeekDirection) ListUtil.GetFloorIndex<Item, ItemKey>(IList<Item>, ItemKey, Func<Item, ItemKey, int>, out int) ListUtil.GetFloorIndex<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out int) ListUtil.GetFloor<TKey, Item>(IList<Item>, TKey, Func<Item, TKey>, out Item) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>) ListUtil.GetIndexBasedEnumerable<TItem>(IList<TItem>, int, int) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem) ListUtil.GetIndexByBinarySearch<TItem>(IList<TItem>, TItem, IComparer<TItem>) ListUtil.GetIndexByBinarySearch<TItem, TSearch>(IList<TItem>, TSearch, Func<TSearch, TItem, int>) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, double>, out int) ListUtil.GetNearestIndex<TItem, TItemKey>(IList<TItem>, TItemKey, Func<TItem, TItemKey, int>, Func<TItem, TItemKey, double>, out int) ListUtil.GetSubList<TItem>(IList<TItem>, int, int) ListUtil.Swap<TItem>(IList<TItem>, 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<IDisplayee>) public DispList(IEnumerable<IDisplayee> src) Parameters src IEnumerable<IDisplayee> 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",
"title": "Class DispUtil | HiAPI-C# 2025",
"summary": "Class DispUtil Namespace Hi.Disp Assembly HiDisp.dll Display Utility public static class DispUtil Inheritance object DispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(IDisplayee, Bind, Mat4d) Displays the given displayee with an additional model transform. Internally pushes the transform to the model matrix stack, calls Display, then pops it. public static void Display(this IDisplayee displayee, Bind bind, Mat4d mat) Parameters displayee IDisplayee The displayee to render. bind Bind Rendering bind context. mat Mat4d The model transform to apply. Display(nint, Bind) Display function for native object. public static void Display(nint displayeePtr, Bind bind) Parameters displayeePtr nint natvie object pointer bind Bind bind"
},
"api/Hi.Disp.Drawing.html": {
"href": "api/Hi.Disp.Drawing.html",
"title": "Class Drawing | HiAPI-C# 2025",
"summary": "Class Drawing Namespace Hi.Disp Assembly HiDisp.dll The most efficient elemental 3D rendering unit. public class Drawing : IDisplayee, IExpandToBox3d, IDisposable Inheritance object Drawing 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Drawing(double[], Stamp, int) Construct a Drawing. public Drawing(double[] src, Stamp stamp, int glPrimitive) Parameters src double[] src stamp Stamp stamp glPrimitive int gl primitive Properties GlPrimitive OpenGL Primitive. public int GlPrimitive { get; set; } Property Value int KeyStamp The only Stamp of this public Stamp KeyStamp { get; } Property Value Stamp 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, double[], Stamp, int) Display by the given parameter. public static void Display(Bind bind, double[] src, Stamp stamp, int glPrimitive) Parameters bind Bind bind src double[] src stamp Stamp stamp glPrimitive int gl primitive Display(Bind, int) Display(Bind) with the forced gl primitive. Thread safe for Display(Bind), Display(Bind, int), ExpandToBox3d(Box3d) and Dispose(). public void Display(Bind bind, int forceGlPrimitive) Parameters bind Bind bind forceGlPrimitive int forced gl primitive Dispose() Dispose. Thread safe for Display(Bind), Display(Bind, int), ExpandToBox3d(Box3d) and Dispose(). public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expand to Box. Thread safe for Display(Bind), Display(Bind, int), ExpandToBox3d(Box3d) and Dispose(). public void ExpandToBox3d(Box3d dst) Parameters dst Box3d ~Drawing() protected ~Drawing()"
},
"api/Hi.Disp.Flag.ColorScaleBar.html": {
"href": "api/Hi.Disp.Flag.ColorScaleBar.html",
"title": "Class ColorScaleBar | HiAPI-C# 2025",
"summary": "Class ColorScaleBar Namespace Hi.Disp.Flag Assembly HiDisp.dll ColorScaleBar. For Covering mode. public class ColorScaleBar : IDisplayee, IExpandToBox3d Inheritance object ColorScaleBar 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ColorScaleBar(double, double, Func<double, Vec3d>, string, string) Initializes a new instance of the ColorScaleBar class. public ColorScaleBar(double floor, double ceiling, Func<double, Vec3d> rgbFunc, string tag, string unit) Parameters floor double The minimum value for the color scale. ceiling double The maximum value for the color scale. rgbFunc Func<double, Vec3d> The function that converts a value to an RGB color. tag string The tag text for the color scale bar. unit string The unit text for the color scale values. Properties Ceiling Gets or sets the maximum value for the color scale. public double Ceiling { get; set; } Property Value double Floor Gets or sets the minimum value for the color scale. public double Floor { get; set; } Property Value double LengthW Gets the width length of the color scale bar. public static int LengthW { get; } Property Value int OffsetH Gets the vertical offset of the color scale bar. public static double OffsetH { get; } Property Value double OffsetW Gets the horizontal offset of the color scale bar. public static double OffsetW { get; } Property Value double RgbFunc Gets or sets the function that converts a value to an RGB color. public Func<double, Vec3d> RgbFunc { get; set; } Property Value Func<double, Vec3d> Tag Gets or sets the tag text for the color scale bar. public string Tag { get; set; } Property Value string Unit Gets or sets the unit text for the color scale values. public string Unit { 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. Display(Bind, double, double, Func<double, Vec3d>, string, string) Displays the color scale bar on the specified binding context. public static void Display(Bind bind, double floor, double ceiling, Func<double, Vec3d> rgbFunc, string tag, string unit) Parameters bind Bind The binding context to display on. floor double The minimum value for the color scale. ceiling double The maximum value for the color scale. rgbFunc Func<double, Vec3d> The function that converts a value to an RGB color. tag string The tag text for the color scale bar. unit string The unit text for the color scale values. 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.Flag.CoordinateDrawing.html": {
"href": "api/Hi.Disp.Flag.CoordinateDrawing.html",
"title": "Class CoordinateDrawing | HiAPI-C# 2025",
"summary": "Class CoordinateDrawing Namespace Hi.Disp.Flag Assembly HiDisp.dll Draw a Cartesian Coordinate. public class CoordinateDrawing : IDisplayee, IExpandToBox3d, IDisposable, IMakeXmlSource Inheritance object CoordinateDrawing Implements IDisplayee IExpandToBox3d IDisposable 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CoordinateDrawing() Ctor. public CoordinateDrawing() CoordinateDrawing(string) Ctor with setter of TextAtOrigin. public CoordinateDrawing(string textAtOrigin) Parameters textAtOrigin string text at origin CoordinateDrawing(XElement) Ctor. public CoordinateDrawing(XElement src) Parameters src XElement XML Properties DimensionInPixels public double DimensionInPixels { get; set; } Property Value double Edge length in pixels. HslOffset public static Vec3d HslOffset { get; set; } Property Value Vec3d HSL offset for coloring this. TextAtOrigin public string TextAtOrigin { get; set; } Property Value string Text displays at the origin of this coordinate. 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. Display(Bind, string) Displays a coordinate drawing with the specified binding context and tag. public static void Display(Bind bind, string tag) Parameters bind Bind The binding context to display on. tag string The tag text to display at the origin. 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 MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Disp.Flag.CubicalFlagDrawing.html": {
"href": "api/Hi.Disp.Flag.CubicalFlagDrawing.html",
"title": "Class CubicalFlagDrawing | HiAPI-C# 2025",
"summary": "Class CubicalFlagDrawing Namespace Hi.Disp.Flag Assembly HiDisp.dll A drawing class for cubical flag visualization. public class CubicalFlagDrawing : IDisplayee, IExpandToBox3d Inheritance object CubicalFlagDrawing 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CubicalFlagDrawing(double) Initializes a new instance of the CubicalFlagDrawing class. public CubicalFlagDrawing(double planDim = 16) Parameters planDim double The dimension of the plan. Fields planDim Gets or sets the dimension of the plan. public double planDim Field Value double 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 StaticDisplay(Bind, double) Displays the cubical flag with the specified binding context. public static void StaticDisplay(Bind bind, double planDim = 16) Parameters bind Bind The binding context to display on. planDim double The dimension of the plan."
},
"api/Hi.Disp.Flag.DimensionBar.html": {
"href": "api/Hi.Disp.Flag.DimensionBar.html",
"title": "Class DimensionBar | HiAPI-C# 2025",
"summary": "Class DimensionBar Namespace Hi.Disp.Flag Assembly HiDisp.dll DimensionBar. For Covering mode. public class DimensionBar : IDisplayee, IExpandToBox3d Inheritance object DimensionBar 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties OffsetH Gets the vertical offset of the dimension bar. public static double OffsetH { get; } Property Value double Unit Gets or sets the unit of measurement to display. public string Unit { 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. Display(Bind, string) Displays the dimension bar on the specified binding context. public static void Display(Bind bind, string unit) Parameters bind Bind The binding context to display on. unit string The unit of measurement to display. 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.Flag.DispCoverUtil.html": {
"href": "api/Hi.Disp.Flag.DispCoverUtil.html",
"title": "Class DispCoverUtil | HiAPI-C# 2025",
"summary": "Class DispCoverUtil Namespace Hi.Disp.Flag Assembly HiDisp.dll Utility class for display covering functionality. public static class DispCoverUtil Inheritance object DispCoverUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields BarGap The gap size between bars in display covering. public const double BarGap = 20 Field Value double BarLineWidth The line width for bars in display covering. public const double BarLineWidth = 2 Field Value double BarPointSize The point size for markers in display covering. public const double BarPointSize = 4 Field Value double"
},
"api/Hi.Disp.Flag.html": {
"href": "api/Hi.Disp.Flag.html",
"title": "Namespace Hi.Disp.Flag | HiAPI-C# 2025",
"summary": "Namespace Hi.Disp.Flag Classes ColorScaleBar ColorScaleBar. For Covering mode. CoordinateDrawing Draw a Cartesian Coordinate. CubicalFlagDrawing A drawing class for cubical flag visualization. DimensionBar DimensionBar. For Covering mode. DispCoverUtil Utility class for display covering functionality."
},
"api/Hi.Disp.FuncDisplayee.html": {
"href": "api/Hi.Disp.FuncDisplayee.html",
"title": "Class FuncDisplayee | HiAPI-C# 2025",
"summary": "Class FuncDisplayee Namespace Hi.Disp Assembly HiDisp.dll A displayee implementation that delegates display functionality to function delegates. public class FuncDisplayee : IDisplayee, IExpandToBox3d Inheritance object FuncDisplayee 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FuncDisplayee() Initializes a new instance of the FuncDisplayee class. public FuncDisplayee() FuncDisplayee(Action<Bind>, Action<Box3d>) Initializes a new instance of the FuncDisplayee class with display and expand delegates. public FuncDisplayee(Action<Bind> displayDelegate, Action<Box3d> expandToBox3dDelegate) Parameters displayDelegate Action<Bind> The delegate for the Display method. expandToBox3dDelegate Action<Box3d> The delegate for the ExpandToBox3d method. Properties DisplayDelegate Gets or sets the delegate for the Display method. public Action<Bind> DisplayDelegate { get; set; } Property Value Action<Bind> ExpandToBox3dDelegate Gets or sets the delegate for the ExpandToBox3d method. public Action<Box3d> ExpandToBox3dDelegate { get; set; } Property Value Action<Box3d> 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.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* 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",
"title": "Interface IDisplayee | HiAPI-C# 2025",
"summary": "Interface IDisplayee Namespace Hi.Disp Assembly HiDisp.dll An object which can be displayed in DispEngine. public interface IDisplayee : IExpandToBox3d Inherited Members IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Display(Bind) Display function called in DispEngine rendering loop. void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind."
},
"api/Hi.Disp.IGetDispEngine.html": {
"href": "api/Hi.Disp.IGetDispEngine.html",
"title": "Interface IGetDispEngine | HiAPI-C# 2025",
"summary": "Interface IGetDispEngine Namespace Hi.Disp Assembly HiDisp.dll Interface fo getting DispEngine. public interface IGetDispEngine Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDispEngine() Get DispEngine. DispEngine GetDispEngine() Returns DispEngine DispEngine"
},
"api/Hi.Disp.IGetPickable.html": {
"href": "api/Hi.Disp.IGetPickable.html",
"title": "Interface IGetPickable | HiAPI-C# 2025",
"summary": "Interface IGetPickable Namespace Hi.Disp Assembly HiDisp.dll Get Pickable interface. public interface IGetPickable Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetPickable() Get Pickable Pickable GetPickable() Returns Pickable pickable"
},
"api/Hi.Disp.IGlContextDirver.html": {
"href": "api/Hi.Disp.IGlContextDirver.html",
"title": "Interface IGlContextDirver | HiAPI-C# 2025",
"summary": "Interface IGlContextDirver Namespace Hi.Disp Assembly HiDisp.dll Bridge of Native OpenGL Context. public interface IGlContextDirver : IDisposable Inherited Members IDisposable.Dispose() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods FreeCurrent() OpenGL context free current. void FreeCurrent() MakeCurrent() OpenGL context make current. void MakeCurrent() Resize(double, double) Resize the opengl context. void Resize(double width, double height) Parameters width double viewport width height double viewport height SwapBuffers() OpenGL context swap buffers. void SwapBuffers()"
},
"api/Hi.Disp.MatStack.ItemDisposable.html": {
"href": "api/Hi.Disp.MatStack.ItemDisposable.html",
"title": "Class MatStack.ItemDisposable | HiAPI-C# 2025",
"summary": "Class MatStack.ItemDisposable Namespace Hi.Disp Assembly HiDisp.dll A disposable class that manages push and pop operations on a matrix stack. public class MatStack.ItemDisposable : IDisposable Inheritance object MatStack.ItemDisposable 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ItemDisposable(MatStack) Initializes a new instance of the MatStack.ItemDisposable class. public ItemDisposable(MatStack stack) Parameters stack MatStack The matrix stack to manage. Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose()"
},
"api/Hi.Disp.MatStack.html": {
"href": "api/Hi.Disp.MatStack.html",
"title": "Class MatStack | HiAPI-C# 2025",
"summary": "Class MatStack Namespace Hi.Disp Assembly HiDisp.dll Stack-based Matrix. public class MatStack Inheritance object MatStack Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Current Equal to Last. public Mat4d Current { get; } Property Value Mat4d ID ID. The ID equals to the count of manipulation. public int ID { get; } Property Value int Last Top matrix. public Mat4d Last { get; } Property Value Mat4d Methods ~MatStack() protected ~MatStack() GenPush() Generates a disposable object that pushes the matrix stack on creation and pops it on disposal. public MatStack.ItemDisposable GenPush() Returns MatStack.ItemDisposable A disposable object that manages the push/pop operations. Load(Mat4d) Set the top matrix to mat. public void Load(Mat4d mat) Parameters mat Mat4d matrix LoadIdt() Set the top matrix to identity. public void LoadIdt() Mul(Mat4d) Multiply the matrix to the top level matrix. Which is Last() = mat * Last(); public void Mul(Mat4d mat) Parameters mat Mat4d Pop() Pop top matrix. public void Pop() See Also Push() Push() Copy and push the top matrix to the stack. public void Push() See Also Pop() PushMul(Mat4d) Call Push() and then call Mul(Mat4d) with mat. public void PushMul(Mat4d mat) Parameters mat Mat4d the pushed and multiplied matrix Reset() Reset/Clean matrix stack. public void Reset() Rotate(AxisAngle4d) Rotate the top matrix. public void Rotate(AxisAngle4d aa) Parameters aa AxisAngle4d axis angle Rotate(Vec3d, double) Rotate the top matrix. public void Rotate(Vec3d axis, double rad) Parameters axis Vec3d rotation axis rad double angle in radian Scale(double) Multiply the scale matrix to the top level matrix. public void Scale(double s) Parameters s double scale Scale(double, double, double) Multiply the scale matrix by three axises to the top level matrix. public void Scale(double x, double y, double z) Parameters x double x-axis scale y double y-axis scale z double z-axis scale Trans(Vec3d) Translate the top matrix. public void Trans(Vec3d v) Parameters v Vec3d translation Trans(double, double, double) Translate the top matrix. public void Trans(double x, double y, double z) Parameters x double x y double y z double z"
},
"api/Hi.Disp.MvpBoxRelation.html": {
"href": "api/Hi.Disp.MvpBoxRelation.html",
"title": "Enum MvpBoxRelation | HiAPI-C# 2025",
"summary": "Enum MvpBoxRelation Namespace Hi.Disp Assembly HiDisp.dll Relation between mvpBox and an AABB public enum MvpBoxRelation Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields INSIDE = 2 The AABB is inside mvpBox. NO_OVERLAPPED = 0 No overlapped PARTIAL_OVERLAPPED = 1 Partial overlapped."
},
"api/Hi.Disp.Pickable.html": {
"href": "api/Hi.Disp.Pickable.html",
"title": "Class Pickable | HiAPI-C# 2025",
"summary": "Class Pickable Namespace Hi.Disp Assembly HiDisp.dll Picking event handler for rendering. Note that it has to be disposed manually or the object occurs memory leak. public class Pickable : IGetPickable, IDisposable Inheritance object Pickable Implements IGetPickable IDisposable Derived CbtrPickable ShowEventPickable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Pickable() Ctor. public Pickable() Fields mark Internal only. protected picking_mark_t* mark Field Value picking_mark_t* Properties Pickables public static ConcurrentDictionary<Pickable, Pickable> Pickables { get; } Property Value ConcurrentDictionary<Pickable, Pickable> Remarks Design Concern: Substitude of ConcurrentSet. PickingID ID of picking event. public int PickingID { get; } Property Value int 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 ~Pickable() protected ~Pickable() GetPickable() Get Pickable public Pickable GetPickable() Returns Pickable pickable OnKeyDown(key_event_t, DispEngine) Behavior on key down. public virtual 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 virtual 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 virtual 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 virtual 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 virtual 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 virtual 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 virtual 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 virtual void OnMouseWheel(mouse_wheel_event_t e, DispEngine dispEngine) Parameters e mouse_wheel_event_t event dispEngine DispEngine display engine"
},
"api/Hi.Disp.PopModelMat.html": {
"href": "api/Hi.Disp.PopModelMat.html",
"title": "Class PopModelMat | HiAPI-C# 2025",
"summary": "Class PopModelMat Namespace Hi.Disp Assembly HiDisp.dll 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. public class PopModelMat : IDisplayee, IExpandToBox3d Inheritance object PopModelMat 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PopModelMat() Initializes a new instance of the PopModelMat class. public PopModelMat() 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.PushModelMat.html": {
"href": "api/Hi.Disp.PushModelMat.html",
"title": "Class PushModelMat | HiAPI-C# 2025",
"summary": "Class PushModelMat Namespace Hi.Disp Assembly HiDisp.dll 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. public class PushModelMat : IDisplayee, IExpandToBox3d Inheritance object PushModelMat 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PushModelMat() Initializes a new instance of the PushModelMat class. public PushModelMat() Properties Mat Pushed matrix. public Mat4d Mat { get; set; } Property Value Mat4d 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.Segment3dDispUtil.html": {
"href": "api/Hi.Disp.Segment3dDispUtil.html",
"title": "Class Segment3dDispUtil | HiAPI-C# 2025",
"summary": "Class Segment3dDispUtil Namespace Hi.Disp Assembly HiDisp.dll Utilities for converting geometry segments to renderable drawings. public static class Segment3dDispUtil Inheritance object Segment3dDispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ToDrawing(IEnumerable<Segment3d>) Converts a sequence of 3D segments to a line drawing. Null endpoints are skipped. The resulting drawing uses GL_LINES with stamp V. public static Drawing ToDrawing(this IEnumerable<Segment3d> segments) Parameters segments IEnumerable<Segment3d> Input segments to convert. Returns Drawing A drawing that renders the provided segments."
},
"api/Hi.Disp.ShowEventPickable.html": {
"href": "api/Hi.Disp.ShowEventPickable.html",
"title": "Class ShowEventPickable | HiAPI-C# 2025",
"summary": "Class ShowEventPickable Namespace Hi.Disp Assembly HiDisp.dll Show pick events in console. public class ShowEventPickable : Pickable, IGetPickable, IDisposable Inheritance object Pickable ShowEventPickable Implements IGetPickable IDisposable Inherited Members Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.Dispose(bool) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ShowEventPickable() ctor. public ShowEventPickable() Properties Tag Tag shows in pick events. public object Tag { get; set; } Property Value object Methods 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"
},
"api/Hi.Disp.Stamp.html": {
"href": "api/Hi.Disp.Stamp.html",
"title": "Enum Stamp | HiAPI-C# 2025",
"summary": "Enum Stamp Namespace Hi.Disp Assembly HiDisp.dll Data scope of the double array for Drawing. public enum Stamp Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CNV = 3 Points data in sequence of Color(3), Normal(3), Vertex(3), repetitively. CV = 2 Points data in sequence of Color(3), Vertex(3), repetitively. NV = 1 Points data in sequence of Normal(3), Vertex(3), repetitively. PCNV = 7 Points data in sequence of Pick(1), Color(3), Normal(3), Vertex(3), repetitively. PCV = 6 Points data in sequence of Pick(1), Color(3), Vertex(3), repetitively. PNV = 5 Points data in sequence of Pick(1), Normal(3), Vertex(3), repetitively. PV = 4 Points data in sequence of Pick(1), Vertex(3), repetitively. V = 0 Points data in sequence of Vertex(3), repetitively."
},
"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. 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class LineWidthSwap | HiAPI-C# 2025",
"summary": "Class LineWidthSwap Namespace Hi.Disp.Treat Assembly HiDisp.dll A utility class for temporarily changing the line width and restoring it when disposed. public class LineWidthSwap : IDisposable Inheritance object LineWidthSwap 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LineWidthSwap(double) Initializes a new instance of the LineWidthSwap class. public LineWidthSwap(double lineWidth) Parameters lineWidth double The new line width to set. Properties PreLineWidth Gets the previous line width value that will be restored on disposal. public float PreLineWidth { get; } Property Value float 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"
},
"api/Hi.Disp.Treat.LineWidthTreat.html": {
"href": "api/Hi.Disp.Treat.LineWidthTreat.html",
"title": "Class LineWidthTreat | HiAPI-C# 2025",
"summary": "Class LineWidthTreat Namespace Hi.Disp.Treat Assembly HiDisp.dll Object for set line width of opengl drawing. public class LineWidthTreat : IDisplayee, IExpandToBox3d Inheritance object LineWidthTreat 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LineWidthTreat(float) Initializes a new instance of the LineWidthTreat class. public LineWidthTreat(float lineWidth) Parameters lineWidth float The line width to set. Properties LineWidth Gets or sets the line width value. public float LineWidth { get; set; } Property Value float Methods Display(Bind) Sets the line width in the OpenGL context. public void Display(Bind bind) Parameters bind Bind The binding context. ExpandToBox3d(Box3d) This implementation does nothing as line width does not affect bounding box. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The destination box to expand."
},
"api/Hi.Disp.Treat.PointSizeSwap.html": {
"href": "api/Hi.Disp.Treat.PointSizeSwap.html",
"title": "Class PointSizeSwap | HiAPI-C# 2025",
"summary": "Class PointSizeSwap Namespace Hi.Disp.Treat Assembly HiDisp.dll A utility class for temporarily changing the point size and restoring it when disposed. public class PointSizeSwap : IDisposable Inheritance object PointSizeSwap 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PointSizeSwap(double) Initializes a new instance of the PointSizeSwap class. public PointSizeSwap(double pointSize) Parameters pointSize double The new point size to set. Properties PrePointSize Gets the previous point size value that will be restored on disposal. public float PrePointSize { get; } Property Value float 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"
},
"api/Hi.Disp.Treat.PointSizeTreat.html": {
"href": "api/Hi.Disp.Treat.PointSizeTreat.html",
"title": "Class PointSizeTreat | HiAPI-C# 2025",
"summary": "Class PointSizeTreat Namespace Hi.Disp.Treat Assembly HiDisp.dll Object for set point size of opengl drawing. public class PointSizeTreat : IDisplayee, IExpandToBox3d Inheritance object PointSizeTreat 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PointSizeTreat(int) Initializes a new instance of the PointSizeTreat class. public PointSizeTreat(int pointSize) Parameters pointSize int The point size to set. Properties PointSize Gets or sets the point size value. public int PointSize { get; set; } Property Value int Methods Display(Bind) Sets the point size in the OpenGL context. public void Display(Bind bind) Parameters bind Bind The binding context. ExpandToBox3d(Box3d) This implementation does nothing as point size does not affect bounding box. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The destination box to expand."
},
"api/Hi.Disp.Treat.RgbSwap.html": {
"href": "api/Hi.Disp.Treat.RgbSwap.html",
"title": "Class RgbSwap | HiAPI-C# 2025",
"summary": "Class RgbSwap Namespace Hi.Disp.Treat Assembly HiDisp.dll A utility class for temporarily changing the RGB color and restoring it when disposed. public class RgbSwap : IDisposable Inheritance object RgbSwap 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RgbSwap(Bind, Vec3d) Initializes a new instance of the RgbSwap class. public RgbSwap(Bind bind, Vec3d rgb) Parameters bind Bind The binding context. rgb Vec3d The new RGB color to set. Properties PreRgb Gets the previous RGB color value that will be restored on disposal. public Vec3d PreRgb { get; } Property Value Vec3d 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"
},
"api/Hi.Disp.Treat.RgbTreat.html": {
"href": "api/Hi.Disp.Treat.RgbTreat.html",
"title": "Class RgbTreat | HiAPI-C# 2025",
"summary": "Class RgbTreat Namespace Hi.Disp.Treat Assembly HiDisp.dll A displayee that sets the RGB color in the binding context. public class RgbTreat : IDisplayee, IExpandToBox3d Inheritance object RgbTreat 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RgbTreat(Vec3d) Initializes a new instance of the RgbTreat class. public RgbTreat(Vec3d rgb = null) Parameters rgb Vec3d The RGB color vector to set. RgbTreat(double, double, double) Initializes a new instance of the RgbTreat class with RGB component values. public RgbTreat(double r, double g, double b) Parameters r double The red component (0.0 to 1.0). g double The green component (0.0 to 1.0). b double The blue component (0.0 to 1.0). Properties Rgb Gets or sets the RGB color vector. public Vec3d Rgb { get; set; } Property Value Vec3d 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.Treat.RgbWrapper.html": {
"href": "api/Hi.Disp.Treat.RgbWrapper.html",
"title": "Class RgbWrapper | HiAPI-C# 2025",
"summary": "Class RgbWrapper Namespace Hi.Disp.Treat Assembly HiDisp.dll A wrapper displayee that applies an RGB color to the wrapped displayee. public class RgbWrapper : IDisplayee, IExpandToBox3d Inheritance object RgbWrapper 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RgbWrapper() Initializes a new instance of the RgbWrapper class. public RgbWrapper() RgbWrapper(IDisplayee, Vec3d) Initializes a new instance of the RgbWrapper class with a displayee and RGB color. public RgbWrapper(IDisplayee displayee, Vec3d rgb = null) Parameters displayee IDisplayee The displayee to be wrapped. rgb Vec3d The RGB color to apply to the wrapped displayee. Properties Displayee Gets or sets the displayee to be wrapped. public IDisplayee Displayee { get; set; } Property Value IDisplayee Rgb Gets or sets the RGB color to apply to the wrapped displayee. public Vec3d Rgb { get; set; } Property Value Vec3d 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.Treat.TransformationWrapper.html": {
"href": "api/Hi.Disp.Treat.TransformationWrapper.html",
"title": "Class TransformationWrapper | HiAPI-C# 2025",
"summary": "Class TransformationWrapper Namespace Hi.Disp.Treat Assembly HiDisp.dll A wrapper displayee that applies a transformation matrix to the wrapped displayees. public class TransformationWrapper : IDisplayee, IExpandToBox3d Inheritance object TransformationWrapper 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TransformationWrapper(Mat4d, params IDisplayee[]) Initializes a new instance of the TransformationWrapper class. public TransformationWrapper(Mat4d mat, params IDisplayee[] displayees) Parameters mat Mat4d The transformation matrix to apply. displayees IDisplayee[] The displayees to be transformed. Properties Displayees Gets or sets the collection of displayees to be transformed. public SynList<IDisplayee> Displayees { get; set; } Property Value SynList<IDisplayee> TransformingMat Gets or sets the transformation matrix to apply to the wrapped displayees. public Mat4d TransformingMat { get; set; } Property Value Mat4d 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.Treat.html": {
"href": "api/Hi.Disp.Treat.html",
"title": "Namespace Hi.Disp.Treat | HiAPI-C# 2025",
"summary": "Namespace Hi.Disp.Treat Classes LineWidthSwap A utility class for temporarily changing the line width and restoring it when disposed. LineWidthTreat Object for set line width of opengl drawing. PointSizeSwap A utility class for temporarily changing the point size and restoring it when disposed. PointSizeTreat Object for set point size of opengl drawing. RgbSwap A utility class for temporarily changing the RGB color and restoring it when disposed. RgbTreat A displayee that sets the RGB color in the binding context. RgbWrapper A wrapper displayee that applies an RGB color to the wrapped displayee. TransformationWrapper A wrapper displayee that applies a transformation matrix to the wrapped displayees."
},
"api/Hi.Disp.Tri3dDispUtil.html": {
"href": "api/Hi.Disp.Tri3dDispUtil.html",
"title": "Class Tri3dDispUtil | HiAPI-C# 2025",
"summary": "Class Tri3dDispUtil Namespace Hi.Disp Assembly HiDisp.dll Utility and Extension of Tri3d. public static class Tri3dDispUtil Inheritance object Tri3dDispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(Tri3d, Bind) Display the face of src. public static void Display(this Tri3d src, Bind bind) Parameters src Tri3d triangle bind Bind Bind GetFaceDrawing(IEnumerable<Tri3d>) Get ccw faces draw of tris. public static Drawing GetFaceDrawing(this IEnumerable<Tri3d> tris) Parameters tris IEnumerable<Tri3d> triangles Returns Drawing Drawing ToDrawing(Tri3d) Equivalent to ToFaceDrawing(Tri3d) public static Drawing ToDrawing(this Tri3d src) Parameters src Tri3d src Returns Drawing Drawing ToFaceBuf(Tri3d, double[], ref int) set n,p0,n,p1,n,p2 to double array. Where n is normal. public static int ToFaceBuf(this Tri3d src, double[] dst, ref int p) Parameters src Tri3d src dst double[] dst array p int current array position Returns int pushed double size:18 ToFaceDrawing(Tri3d) To Face Drawing. public static Drawing ToFaceDrawing(this Tri3d src) Parameters src Tri3d src Returns Drawing Face Drawing ToLineBuf(Tri3d, double[], ref int) Put lines array to the dst. The lines array contains 3 edges x 2 end points. public static int ToLineBuf(this Tri3d src, double[] dst, ref int p) Parameters src Tri3d src dst double[] dst p int position of the dst Returns int Which is pushed length, in number of double ToLineDrawing(Tri3d) To Line Drawing. public static Drawing ToLineDrawing(this Tri3d src) Parameters src Tri3d src Returns Drawing Line Drawing ToLineDrawing(IEnumerable<Tri3d>) Get lines draw of the tris. public static Drawing ToLineDrawing(this IEnumerable<Tri3d> tris) Parameters tris IEnumerable<Tri3d> triangles Returns Drawing Drawing ToSparkleLineBuf(Tri3d, double[], ref int) Writes the sparkle line representation of a triangle (with normals) into a buffer. public static int ToSparkleLineBuf(this Tri3d src, double[] dst, ref int p) Parameters src Tri3d The source triangle. dst double[] The destination buffer. p int The current write position in the buffer, updated after writing. Returns int The number of elements written. ToSparkleLineDrawing(IEnumerable<Tri3d>) Get lines draw of the tris. public static Drawing ToSparkleLineDrawing(this IEnumerable<Tri3d> tris) Parameters tris IEnumerable<Tri3d> triangles Returns Drawing Drawing"
},
"api/Hi.Disp.Vec3dDispUtil.html": {
"href": "api/Hi.Disp.Vec3dDispUtil.html",
"title": "Class Vec3dDispUtil | HiAPI-C# 2025",
"summary": "Class Vec3dDispUtil Namespace Hi.Disp Assembly HiDisp.dll Utility and Extension of Vec3d. public static class Vec3dDispUtil Inheritance object Vec3dDispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(Bind, IList<Vec3d>, Stamp, int) Display by the src. src will be expand to an array and then call Display(Bind, double[], Stamp, int). public static void Display(Bind bind, IList<Vec3d> src, Stamp stamp, int glPrimitive) Parameters bind Bind bind src IList<Vec3d> src stamp Stamp stamp glPrimitive int gl primitive Display(Vec3d, Bind) Display a point. public static void Display(this Vec3d src, Bind bind) Parameters src Vec3d point bind Bind bind ToLineStripDrawing(IList<Vec3d>) Creates a line strip drawing from a list of points. public static Drawing ToLineStripDrawing(this IList<Vec3d> points) Parameters points IList<Vec3d> The list of points to draw as a line strip. Returns Drawing A Drawing object representing the line strip."
},
"api/Hi.Disp.WrappedDisplayee.html": {
"href": "api/Hi.Disp.WrappedDisplayee.html",
"title": "Class WrappedDisplayee | HiAPI-C# 2025",
"summary": "Class WrappedDisplayee Namespace Hi.Disp Assembly HiDisp.dll A wrapper class for IDisplayee that allows customizing display and bounding box behavior. public class WrappedDisplayee : IDisplayee, IExpandToBox3d Inheritance object WrappedDisplayee 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WrappedDisplayee() Initializes a new instance of the WrappedDisplayee class. public WrappedDisplayee() WrappedDisplayee(IDisplayee, Action<IDisplayee, Bind>, Action<IDisplayee, Box3d>) Initializes a new instance of the WrappedDisplayee class with specified displayee and delegates. public WrappedDisplayee(IDisplayee displayee, Action<IDisplayee, Bind> displayDelegate, Action<IDisplayee, Box3d> expandToBox3dDelegate) Parameters displayee IDisplayee The displayee to wrap. displayDelegate Action<IDisplayee, Bind> The delegate for custom display behavior. expandToBox3dDelegate Action<IDisplayee, Box3d> The delegate for custom bounding box expansion behavior. Properties DisplayDelegate Gets or sets the delegate for custom display behavior. public Action<IDisplayee, Bind> DisplayDelegate { get; set; } Property Value Action<IDisplayee, Bind> Displayee Gets or sets the wrapped displayee object. public IDisplayee Displayee { get; set; } Property Value IDisplayee ExpandToBox3dDelegate Gets or sets the delegate for custom bounding box expansion behavior. public Action<IDisplayee, Box3d> ExpandToBox3dDelegate { get; set; } Property Value Action<IDisplayee, Box3d> 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.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<T>. 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",
"title": "Class FanucVarTable | HiAPI-C# 2025",
"summary": "Class FanucVarTable Namespace Hi.Fanuc Assembly HiUniNc.dll Represents a table of Fanuc variables used for CNC machine control. public class FanucVarTable Inheritance object FanucVarTable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucVarTable() Initializes a new instance of the FanucVarTable class. public FanucVarTable() Properties TLB For tool lenght compensation (G43, G44) true value is not supported. public bool TLB { get; } Property Value bool TLC For tool lenght compensation (G43, G44) true value is not supported. public bool TLC { get; } Property Value bool Var5001 For tool lenght compensation (G43, G44) bit1(TLB),bit0(TLC) public int Var5001 { get; } Property Value int"
},
"api/Hi.Fanuc.FanucVarValue.html": {
"href": "api/Hi.Fanuc.FanucVarValue.html",
"title": "Struct FanucVarValue | HiAPI-C# 2025",
"summary": "Struct FanucVarValue Namespace Hi.Fanuc Assembly HiUniNc.dll Represents a value for Fanuc variable that can be interpreted as either an integer or a double. public struct FanucVarValue Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DoubleValue Gets or sets the double precision floating point representation of the variable value. public double DoubleValue { get; set; } Property Value double IntValue Gets or sets the integer representation of the variable value. public int IntValue { get; set; } Property Value int"
},
"api/Hi.Fanuc.html": {
"href": "api/Hi.Fanuc.html",
"title": "Namespace Hi.Fanuc | HiAPI-C# 2025",
"summary": "Namespace Hi.Fanuc Classes FanucVarTable Represents a table of Fanuc variables used for CNC machine control. Structs FanucVarValue Represents a value for Fanuc variable that can be interpreted as either an integer or a double."
},
"api/Hi.Geom.ArrayUtil.html": {
"href": "api/Hi.Geom.ArrayUtil.html",
"title": "Class ArrayUtil | HiAPI-C# 2025",
"summary": "Class ArrayUtil Namespace Hi.Geom Assembly HiGeom.dll Utility class for array operations. public static class ArrayUtil Inheritance object ArrayUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetColumn<T>(T[,], int) Extracts a column from a 2D array. public static T[] GetColumn<T>(this T[,] src, int columnIndex) Parameters src T[,] The source 2D array columnIndex int The index of the column to extract Returns T[] A 1D array containing the elements of the specified column Type Parameters T The type of elements in the array GetRow<T>(T[,], int) Extracts a row from a 2D array. public static T[] GetRow<T>(this T[,] src, int rowIndex) Parameters src T[,] The source 2D array rowIndex int The index of the row to extract Returns T[] A 1D array containing the elements of the specified row Type Parameters T The type of elements in the array GetRows<T>(T[,]) Converts a 2D array to a jagged array of rows. public static T[][] GetRows<T>(this T[,] src) Parameters src T[,] The source 2D array Returns T[][] A jagged array where each inner array represents a row from the source array Type Parameters T The type of elements in the array"
},
"api/Hi.Geom.AxisAngle4d.html": {
"href": "api/Hi.Geom.AxisAngle4d.html",
"title": "Class AxisAngle4d | HiAPI-C# 2025",
"summary": "Class AxisAngle4d Namespace Hi.Geom Assembly HiGeom.dll Axis(3d) and angle(1d) public class AxisAngle4d : IFormattable Inheritance object AxisAngle4d Implements IFormattable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AxisAngle4d(Vec3d, double) Initializes a new instance of the AxisAngle4d class with the specified axis and angle. public AxisAngle4d(Vec3d axis, double angle_rad) Parameters axis Vec3d The rotation axis. angle_rad double The rotation angle in radians. AxisAngle4d(string) Initializes a new instance of the AxisAngle4d class from a string representation. public AxisAngle4d(string s) Parameters s string The string representation of the axis-angle in the format \"(axis,angle)\". Properties Angle_rad Angle in radian. public double Angle_rad { get; set; } Property Value double Axis Gets or sets the rotation axis. public Vec3d Axis { get; set; } Property Value Vec3d Methods 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) Formats the value of the current instance using the specified format. public string ToString(string format, IFormatProvider formatProvider) Parameters format string The format to use. -or- A null reference (Nothing in Visual Basic) to use the default format defined for the type of the IFormattable implementation. formatProvider IFormatProvider The provider to use to format the value. -or- A null reference (Nothing in Visual Basic) to obtain the numeric format information from the current locale setting of the operating system. Returns string The value of the current instance in the specified format."
},
"api/Hi.Geom.Box2d.NoInit.html": {
"href": "api/Hi.Geom.Box2d.NoInit.html",
"title": "Class Box2d.NoInit | HiAPI-C# 2025",
"summary": "Class Box2d.NoInit Namespace Hi.Geom Assembly HiGeom.dll Flag for calling Box2d(NoInit). public class Box2d.NoInit Inheritance object Box2d.NoInit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Geom.Box2d.html": {
"href": "api/Hi.Geom.Box2d.html",
"title": "Class Box2d | HiAPI-C# 2025",
"summary": "Class Box2d Namespace Hi.Geom Assembly HiGeom.dll 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. public class Box2d : IExpandToBox2d, IEquatable<Box2d>, IBinaryIo, IWriteBin, IFormattable Inheritance object Box2d Implements IExpandToBox2d IEquatable<Box2d> IBinaryIo IWriteBin IFormattable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Box2d() Ctor. public Box2d() Box2d(NoInit) Ctor. The Ctor keeps Min and Max to null. public Box2d(Box2d.NoInit noInit) Parameters noInit Box2d.NoInit Box2d(params IExpandToBox2d[]) Initializes a new instance of the Box2d class that encompasses all the specified objects. public Box2d(params IExpandToBox2d[] src) Parameters src IExpandToBox2d[] The objects to include in the box. Box2d(Vec2d, Vec2d) Ctor. public Box2d(Vec2d min, Vec2d max) Parameters min Vec2d Min max Vec2d Max Box2d(box2d) Ctor. public Box2d(box2d src) Parameters src box2d src Box2d(IEnumerable<IExpandToBox2d>) Initializes a new instance of the Box2d class that encompasses all the objects in the specified collection. public Box2d(IEnumerable<IExpandToBox2d> src) Parameters src IEnumerable<IExpandToBox2d> The collection of objects to include in the box. Box2d(double, double, double, double) Initializes a new instance of the Box2d class with the specified minimum and maximum coordinates. public Box2d(double minx, double miny, double maxx, double maxy) Parameters minx double The minimum X coordinate. miny double The minimum Y coordinate. maxx double The maximum X coordinate. maxy double The maximum Y coordinate. Box2d(BinaryReader) Initializes a new instance of the Box2d class from binary data. public Box2d(BinaryReader reader) Parameters reader BinaryReader The binary reader to read the data from. Box2d(XElement) Ctor. public Box2d(XElement src) Parameters src XElement XML Properties Center Center public Vec2d Center { get; } Property Value Vec2d CenterUnitBox Generate a center unit box which min~max is (-0.5,-0.5,-0.5)~(-0.5,0.5,0.5). public static Box2d CenterUnitBox { get; } Property Value Box2d DiagonalLength Diagonal length. public double DiagonalLength { get; } Property Value double Dim Dimension. public Vec2d Dim { get; } Property Value Vec2d HasVolume Gets a value indicating whether this box has a non-zero volume. public bool HasVolume { get; } Property Value bool IsAllNaN Determines whether all coordinates of this box 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 Max Maximum point of the box. public Vec2d Max { get; set; } Property Value Vec2d Min Minimum point of the box. public Vec2d Min { get; set; } Property Value Vec2d NaN Generate a nan box which min~max is (nan,nan,nan)~(nan,nan,nan). public static Box2d NaN { get; } Property Value Box2d NativeByteSize Gets the size in bytes of the native representation of this box. public static int NativeByteSize { get; } Property Value int ReversedPoleBox Generate a reversed pole box which min~max is (∞,∞,∞)~(-∞,-∞,-∞). public static Box2d ReversedPoleBox { get; } Property Value Box2d UnitBox Generate a unit box which min~max is (0,0,0)~(1,1,1). public static Box2d UnitBox { get; } Property Value Box2d Volume Gets the volume (area) of this 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 Box2d ZeroBox { get; } Property Value Box2d Methods ApexAt(int) Get Apex at the box. public Vec2d ApexAt(int index) Parameters index int index 0~7. all of 8 apex. Returns Vec2d Equals(Box2d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Box2d other) Parameters other Box2d 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(Box2d) Expands this box to include the specified box. public Box2d Expand(Box2d src) Parameters src Box2d The box to include. Returns Box2d This box instance after expansion. Expand(Vec2d) Expands this box to include the specified point. public Box2d Expand(Vec2d p) Parameters p Vec2d The point to include in the box. Returns Box2d This box instance after expansion. ExpandToBox2d(Box2d) Expands the specified destination box to include this box. public void ExpandToBox2d(Box2d dst) Parameters dst Box2d The destination box to expand. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. IsOverlapped(Box2d) Is the box overlapped to otherBox. public bool IsOverlapped(Box2d otherBox) Parameters otherBox Box2d other box Returns bool is overlapped MakeXmlSource(string) public XElement MakeXmlSource(string baseDirectory) Parameters baseDirectory string Returns XElement ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read 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 Scale(double) Scale the box from the coordinate origin. The operation is equal to: Min *= s; Max *= s; public Box2d Scale(double s) Parameters s double scale Returns Box2d this ScaleFromCenter(double) Scales this box from its center by the specified factor. public Box2d ScaleFromCenter(double s) Parameters s double The scale factor. Returns Box2d This box instance after scaling. Set(Box2d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box2d Set(Box2d src) Parameters src Box2d src Returns Box2d this Set(box2d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box2d Set(box2d src) Parameters src box2d src Returns Box2d this Set(double, double, double, double) Sets the minimum and maximum coordinates of this box. public Box2d Set(double minx, double miny, double maxx, double maxy) Parameters minx double The minimum X coordinate. miny double The minimum Y coordinate. maxx double The maximum X coordinate. maxy double The maximum Y coordinate. Returns Box2d This box instance. 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(Vec2d) Translate the box. public Box2d Translate(Vec2d vec) Parameters vec Vec2d translation vector Returns Box2d this WriteBin(BinaryWriter) Writes the box data to a binary writer. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write the data to."
},
"api/Hi.Geom.Box3d.NoInit.html": {
"href": "api/Hi.Geom.Box3d.NoInit.html",
"title": "Class Box3d.NoInit | HiAPI-C# 2025",
"summary": "Class Box3d.NoInit Namespace Hi.Geom Assembly HiGeom.dll Flag for calling Box3d(NoInit). public class Box3d.NoInit Inheritance object Box3d.NoInit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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<Box3d>, IStlSource, IGetStl, IMakeXmlSource, IBinaryIo, IWriteBin, IDuplicate, IFormattable, IToPresentDto Inheritance object Box3d Implements IExpandToBox3d IEquatable<Box3d> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IExpandToBox3d>) Creates a box that encompasses all the provided expandable objects. public Box3d(IEnumerable<IExpandToBox3d> src) Parameters src IEnumerable<IExpandToBox3d> 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<Vec3d>) Expands the box to include all specified points. public Box3d Expand(IEnumerable<Vec3d> ps) Parameters ps IEnumerable<Vec3d> 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<Tri3d>) Generates triangles representing the box's surfaces. public int GetTris(ICollection<Tri3d> dst) Parameters dst ICollection<Tri3d> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<PairZr> PairZrs { get; set; } Property Value List<PairZr> 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<PairZr> GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList<PairZr> Z-R contour data as a list of PairZr objects GetZrList() Gets a list of Z-R coordinate pairs. public List<PairZr> GetZrList() Returns List<PairZr> 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",
"title": "Class DVec3d | HiAPI-C# 2025",
"summary": "Class DVec3d Namespace Hi.Geom Assembly HiGeom.dll Dual Vec3d with p(Vec3d) and n(Vec3d). public class DVec3d : IEquatable<DVec3d>, IWriteBin, IEqualityOperators<DVec3d, DVec3d, bool>, IAdditionOperators<DVec3d, DVec3d, DVec3d>, ISubtractionOperators<DVec3d, DVec3d, DVec3d>, IMultiplyOperators<DVec3d, double, DVec3d>, IMultiplyOperators<DVec3d, Mat4d, DVec3d>, IDivisionOperators<DVec3d, double, DVec3d>, IVec<double>, IFormattable Inheritance object DVec3d Implements IEquatable<DVec3d> IWriteBin IEqualityOperators<DVec3d, DVec3d, bool> IAdditionOperators<DVec3d, DVec3d, DVec3d> ISubtractionOperators<DVec3d, DVec3d, DVec3d> IMultiplyOperators<DVec3d, double, DVec3d> IMultiplyOperators<DVec3d, Mat4d, DVec3d> IDivisionOperators<DVec3d, double, DVec3d> IVec<double> IFormattable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DVec3d() Ctor. The members are initialized to null. public DVec3d() DVec3d(DVec3d, bool) Initializes a new instance of the DVec3d class by copying another DVec3d. public DVec3d(DVec3d src, bool shareFields = false) Parameters src DVec3d The source DVec3d to copy from. shareFields bool If true, references to the source Point and Normal are used; otherwise, new instances are created with copied values. DVec3d(Mat4d) Ctor. set mat[12] to Point.x; set mat[13] to Point.y; set mat[14] to Point.z; set mat[8] to Normal.x; set mat[9] to Normal.y; set mat[10] to Normal.z; public DVec3d(Mat4d mat) Parameters mat Mat4d matrix DVec3d(Vec3d, Vec3d) Ctor. public DVec3d(Vec3d p, Vec3d n) Parameters p Vec3d Point n Vec3d Normal DVec3d(IEnumerable<double>) Initializes a new instance of the DVec3d class from an enumerable collection of doubles. public DVec3d(IEnumerable<double> src) Parameters src IEnumerable<double> The source collection containing at least 6 double values. The first 3 values initialize the Point, and the last 3 values initialize the Normal. DVec3d(double, double, double, double, double, double) Ctor. public DVec3d(double px, double py, double pz, double nx, double ny, double nz) Parameters px double Point.x py double Point.y pz double Point.z nx double Normal.x ny double Normal.y nz double Normal.z DVec3d(double[]) Ctor. public DVec3d(double[] src) Parameters src double[] Array elements 0,1,2 initialize Point x,y,z; Array elements 3,4,5 initialize Point x,y,z DVec3d(Func<int, double>) Initializes a new instance of the DVec3d class using a function that maps indices to values. public DVec3d(Func<int, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double> A function that takes an index (0-5) and returns the corresponding coordinate value. Indices 0-2 are for Point coordinates, and 3-5 are for Normal coordinates. DVec3d(BinaryReader) Initializes a new instance of the DVec3d class from binary data. public DVec3d(BinaryReader reader) Parameters reader BinaryReader The binary reader to read the data from. DVec3d(string) Ctor. The reading format is ((x,y,z),(x,y,z)), the first xyz is for Point; the second xyz is for Normal. public DVec3d(string str) Parameters str string string See Also ToString() Properties ElementNum Element number: 6 for (Point(x,y,z),Normal(x,y,z)). public static int ElementNum { get; } Property Value int IsAllNaN Gets a value indicating whether all components of both Point and Normal are NaN. public bool IsAllNaN { get; } Property Value bool IsFinite Gets a value indicating whether all components of both Point and Normal are finite. public bool IsFinite { get; } Property Value bool this[int] Gets or sets the element at the specified index. public double this[int index] { get; set; } Parameters index int The zero-based index of the element to get or set. Property Value double The element at the specified index. NaN Gets a DVec3d with all components set to NaN. public static DVec3d NaN { get; } Property Value DVec3d Normal Normal. public Vec3d Normal { get; set; } Property Value Vec3d Point Point. public Vec3d Point { get; set; } Property Value Vec3d Rank Dimension (i.e. Size) of the Vector. public int Rank { get; } Property Value int Zero Gets a DVec3d with all components set to zero. public static DVec3d Zero { get; } Property Value DVec3d Methods At(int) Gets a reference to the component at the specified index. public ref double At(int dir) Parameters dir int The index of the component to access (0-5). Indices 0-2 access Point coordinates (x,y,z), and indices 3-5 access Normal coordinates (x,y,z). Returns double A reference to the specified component. Enumerate() For each. Point first. Normal second. public IEnumerable<double> Enumerate() Returns IEnumerable<double> Equals(DVec3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(DVec3d other) Parameters other DVec3d 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. GenNaN() Creates a new DVec3d with all components set to NaN. public static DVec3d GenNaN() Returns DVec3d A new DVec3d with all components set to NaN. GenZero() Creates a new DVec3d with all components set to zero. public static DVec3d GenZero() Returns DVec3d A new DVec3d with all components set to zero. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. Interpolate(DVec3d, DVec3d, double) Interpolates between two DVec3d instances. public static DVec3d Interpolate(DVec3d a, DVec3d b, double ratio) Parameters a DVec3d The first DVec3d. b DVec3d The second DVec3d. ratio double The interpolation ratio (0.0 to 1.0). Returns DVec3d A new DVec3d interpolated between a and b. Set(DVec3d, bool) Sets the values of this instance from another DVec3d. public void Set(DVec3d src, bool shareFields = false) Parameters src DVec3d The source DVec3d to copy values from. shareFields bool If true, references to the source Point and Normal are used; otherwise, their values are copied. Set(double, double, double, double, double, double) Call Point.Set(double, double, double) and Normal.Set(double, double, double) to set the values. public void Set(double px, double py, double pz, double nx, double ny, double nz) Parameters px double Point.x py double Point.y pz double Point.z nx double Normal.x ny double Normal.y nz double Normal.z Remarks If the Point or Normal is null, the function will corrupt. SetEachValueAbs() Sets each component of both Point and Normal to its absolute value. public DVec3d SetEachValueAbs() Returns DVec3d This instance after the operation. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string) Returns a string representation of this DVec3d using the specified format for component values. public string ToString(string format) Parameters format string The format string to use for component values. Returns string A string representation of this DVec3d. ToString(string, IFormatProvider) Returns a string representation of the dual 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 dual vector 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 Operators operator +(DVec3d, DVec3d) Adds two values together to compute their sum. public static DVec3d operator +(DVec3d a, DVec3d b) Parameters a DVec3d b DVec3d Returns DVec3d The sum of left and right. operator /(DVec3d, double) Divides one value by another to compute their quotient. public static DVec3d operator /(DVec3d src, double s) Parameters src DVec3d s double Returns DVec3d The quotient of left divided by right. operator ==(DVec3d, DVec3d) Compares two values to determine equality. public static bool operator ==(DVec3d left, DVec3d right) Parameters left DVec3d The value to compare with right. right DVec3d The value to compare with left. Returns bool true if left is equal to right; otherwise, false. operator !=(DVec3d, DVec3d) Compares two values to determine inequality. public static bool operator !=(DVec3d left, DVec3d right) Parameters left DVec3d The value to compare with right. right DVec3d The value to compare with left. Returns bool true if left is not equal to right; otherwise, false. operator *(DVec3d, Mat4d) Multiplies two values together to compute their product. public static DVec3d operator *(DVec3d a, Mat4d b) Parameters a DVec3d b Mat4d Returns DVec3d The product of left multiplied by right. operator *(DVec3d, double) Multiplies two values together to compute their product. public static DVec3d operator *(DVec3d src, double s) Parameters src DVec3d s double Returns DVec3d The product of left multiplied by right. operator -(DVec3d, DVec3d) Subtracts two values to compute their difference. public static DVec3d operator -(DVec3d a, DVec3d b) Parameters a DVec3d b DVec3d Returns DVec3d The value of right subtracted from left. operator -(DVec3d) Create a negate DVec3d. The field objects are created, i.e. the field objects are not shared with this. public static DVec3d operator -(DVec3d src) Parameters src DVec3d src Returns DVec3d negate DVec3d"
},
"api/Hi.Geom.Dir.html": {
"href": "api/Hi.Geom.Dir.html",
"title": "Enum Dir | HiAPI-C# 2025",
"summary": "Enum Dir Namespace Hi.Geom Assembly HiGeom.dll Enumeration of coordinate axis directions in 3D space. public enum Dir Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields X = 0 X-axis direction (index 0). Y = 1 Y-axis direction (index 1). Z = 2 Z-axis direction (index 2)."
},
"api/Hi.Geom.ExtendedCylinder.html": {
"href": "api/Hi.Geom.ExtendedCylinder.html",
"title": "Class ExtendedCylinder | HiAPI-C# 2025",
"summary": "Class ExtendedCylinder Namespace Hi.Geom Assembly HiGeom.dll An extensible cylinder geometry that generates a corresponding Cylindroid by the start section and the total length. public class ExtendedCylinder : IStlSource, IGetStl, IExpandToBox3d, IGetZrContour, IDuplicate, IGetZrList, IGenStl, IMakeXmlSource, IToXElement Inheritance object ExtendedCylinder Implements IStlSource IGetStl IExpandToBox3d IGetZrContour IDuplicate IGetZrList IGenStl IMakeXmlSource IToXElement 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 ExtendedCylinder() Initializes a new instance of the ExtendedCylinder class. public ExtendedCylinder() ExtendedCylinder(double, Func<PairZr>) Initializes a new instance with the specified total length and start section provider. public ExtendedCylinder(double fullLength, Func<PairZr> beginPairZrSource = null) Parameters fullLength double Total length beginPairZrSource Func<PairZr> Start section provider ExtendedCylinder(XElement) Initializes a new instance of the ExtendedCylinder class from XML data. public ExtendedCylinder(XElement src) Parameters src XElement The XML element containing extended cylinder data. Properties BeginPairZrSource The provider of the starting ZR section. public Func<PairZr> BeginPairZrSource { get; set; } Property Value Func<PairZr> Cylindroid Returns a Cylindroid view generated from current settings. public Cylindroid Cylindroid { get; } Property Value Cylindroid FullLength The total length of the cylinder along the Z-axis. public double FullLength { get; set; } Property Value double 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 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<PairZr> GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList<PairZr> Z-R contour data as a list of PairZr objects GetZrList() Gets a list of Z-R coordinate pairs. public List<PairZr> GetZrList() Returns List<PairZr> 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 and chains Reg(factory) on dependents. 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.Geom.Flat3d.html": {
"href": "api/Hi.Geom.Flat3d.html",
"title": "Class Flat3d | HiAPI-C# 2025",
"summary": "Class Flat3d Namespace Hi.Geom Assembly HiGeom.dll 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. public class Flat3d : IFlat3d, IBinaryIo, IWriteBin, IEquatable<Flat3d> Inheritance object Flat3d Implements IFlat3d IBinaryIo IWriteBin IEquatable<Flat3d> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Flat3d() Initializes a new instance of the Flat3d class. public Flat3d() Flat3d(IFlat3d) Copy constructor. public Flat3d(IFlat3d src) Parameters src IFlat3d Source plane Flat3d(Vec3d, double) Initializes a new instance of the Flat3d class with a normal vector and distance to origin. public Flat3d(Vec3d normal, double distanceToOrigin) Parameters normal Vec3d The unit normal vector of the plane. distanceToOrigin double The signed distance from origin to the plane. Properties DistanceToOrigin The signed distance from the origin (0,0,0) to this plane. A positive distance means the origin is on the same side as the normal vector. public double DistanceToOrigin { get; set; } Property Value double Normal The unit normal to the plane. public Vec3d Normal { get; set; } Property Value Vec3d Methods DistanceTo(Vec3d) Gets the distance from a point to this plane. public double DistanceTo(Vec3d point) Parameters point Vec3d The point to calculate distance to. Returns double The signed distance from the point to the plane. Equals(Flat3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Flat3d other) Parameters other Flat3d 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. FromPointAndNormal(Vec3d, Vec3d) Creates a plane from a point and normal vector. public static Flat3d FromPointAndNormal(Vec3d point, Vec3d normal) Parameters point Vec3d A point on the plane. normal Vec3d The normal vector of the plane. Returns Flat3d A new plane instance. GetDistanceToOrigin() Signed Distance To Origin. public double GetDistanceToOrigin() Returns double Signed Distance To Origin. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetLocate() Gets a point on the plane closest to the origin. public Vec3d GetLocate() Returns Vec3d GetNormal() Gets the normal vector of the flat surface. public Vec3d GetNormal() Returns Vec3d The unit normal vector ProjectPoint(Vec3d) Projects a point onto this plane. public Vec3d ProjectPoint(Vec3d point) Parameters point Vec3d The point to project. Returns Vec3d The projected point on the plane. ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from ToString() Returns a string representation of the plane. public override string ToString() Returns string 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.Geom.Fraction-1.html": {
"href": "api/Hi.Geom.Fraction-1.html",
"title": "Struct Fraction<TEva> | HiAPI-C# 2025",
"summary": "Struct Fraction<TEva> Namespace Hi.Geom Assembly HiDisp.dll Pure C# unlimited precision fraction. public struct Fraction<TEva> : IComparable<Fraction<TEva>>, IEquatable<Fraction<TEva>> where TEva : struct, INumber<TEva> Type Parameters TEva Evaluated floating point type (e.g. double, decimal). Implements IComparable<Fraction<TEva>> IEquatable<Fraction<TEva>> Inherited Members object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) MathUtil.Clamp<T>(T, T, T) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks A fraction consists of a numerator and denominator using BigInteger. The fraction may be not packed or not evaluated. However, all fraction numerator and denominator are singular managed and denominator is never negative. Design mirrors geom::fraction_t<0, EvaType> in CppCore. Constructors Fraction() Initializes a zero fraction (0/0, status=None). public Fraction() Fraction(long) Initializes a fraction with integer value. public Fraction(long num) Parameters num long The integer value. Fraction(long, long) Initializes a fraction with numerator and denominator. public Fraction(long num, long den) Parameters num long The numerator. den long The denominator. Fraction(BigInteger) Initializes a fraction with integer value. public Fraction(BigInteger num) Parameters num BigInteger The integer value. Fraction(BigInteger, BigInteger) Initializes a fraction with numerator and denominator. public Fraction(BigInteger num, BigInteger den) Parameters num BigInteger The numerator. den BigInteger The denominator. Properties CeilInt Gets the ceiling integer value. public readonly int CeilInt { get; } Property Value int Denominator Gets or sets the denominator. public BigInteger Denominator { readonly get; set; } Property Value BigInteger FloorInt Gets the floor integer value. public readonly int FloorInt { get; } Property Value int IsEvaluated Gets whether the fraction value has been evaluated. public readonly bool IsEvaluated { get; } Property Value bool IsFinite Gets whether the fraction is finite (denominator != 0). public readonly bool IsFinite { get; } Property Value bool IsNaN Gets whether the fraction is NaN (0/0). public readonly bool IsNaN { get; } Property Value bool IsPacked Gets whether the fraction is packed (reduced to irreducible form). public readonly bool IsPacked { get; } Property Value bool IsZero Gets whether the fraction is zero (numerator == 0 and denominator != 0). public readonly bool IsZero { get; } Property Value bool NaN NaN fraction (0/0). public static Fraction<TEva> NaN { get; } Property Value Fraction<TEva> NegativeInf Negative infinity fraction (-1/0). public static Fraction<TEva> NegativeInf { get; } Property Value Fraction<TEva> Numerator Gets or sets the numerator. public BigInteger Numerator { readonly get; set; } Property Value BigInteger One One fraction (1/1). public static Fraction<TEva> One { get; } Property Value Fraction<TEva> PositiveInf Positive infinity fraction (1/0). public static Fraction<TEva> PositiveInf { get; } Property Value Fraction<TEva> RoughValue Gets the roughly evaluated value. If the data has not been reduced, the return value is not evaluated by the reduced numbers. public TEva RoughValue { get; } Property Value TEva Sign Gets the sign of the fraction (-1, 0, or 1). public readonly int Sign { get; } Property Value int Status Gets the status flags. public readonly FractionStatus Status { get; } Property Value FractionStatus Value Gets the evaluated value. Computes the value if not yet evaluated. public TEva Value { get; } Property Value TEva Zero Zero fraction (0/1). public static Fraction<TEva> Zero { get; } Property Value Fraction<TEva> Methods Abs() Gets the absolute value as a new fraction. public readonly Fraction<TEva> Abs() Returns Fraction<TEva> CompareTo(Fraction<TEva>) Compares this fraction with another. public readonly int CompareTo(Fraction<TEva> other) Parameters other Fraction<TEva> The other fraction. Returns int -1 if less, 0 if equal, 1 if greater. Equals(Fraction<TEva>) Indicates whether the current object is equal to another object of the same type. public readonly bool Equals(Fraction<TEva> other) Parameters other Fraction<TEva> An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Indicates whether this instance and a specified object are equal. public override readonly bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. Evaluate() Evaluates the value if not already evaluated. public Fraction<TEva> Evaluate() Returns Fraction<TEva> This instance for chaining. GetHashCode() Returns the hash code for this instance. public override int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. Negate() Negates this fraction in place. public Fraction<TEva> Negate() Returns Fraction<TEva> This instance for chaining. Pack() Packs (reduces) the fraction to irreducible form if not already packed. public Fraction<TEva> Pack() Returns Fraction<TEva> This instance for chaining. PerformanceTest(int, int) Performance test for Fraction (pure C#). Test 1: Accumulative += with Val (bounded, linear growth). Test 2: Bounded arithmetic (converging average). public static void PerformanceTest(int iterations = 128, int rounds = 16) Parameters iterations int Number of steps per round. rounds int Number of rounds to average timing. Reciprocal() Gets the reciprocal as a new fraction. public readonly Fraction<TEva> Reciprocal() Returns Fraction<TEva> SetAbs() Sets this fraction to its absolute value. public Fraction<TEva> SetAbs() Returns Fraction<TEva> This instance for chaining. SetReciprocal() Sets this fraction to its reciprocal. public Fraction<TEva> SetReciprocal() Returns Fraction<TEva> This instance for chaining. SetSquare() Sets this fraction to its square. public Fraction<TEva> SetSquare() Returns Fraction<TEva> This instance for chaining. Simplify(TEva) Simplifies the fraction to the specified resolution using Stern-Brocot binary search. public Fraction<TEva> Simplify(TEva resolution) Parameters resolution TEva The resolution tolerance. Returns Fraction<TEva> This instance for chaining. Square() Gets the square as a new fraction. public readonly Fraction<TEva> Square() Returns Fraction<TEva> Test() Test function for Fraction. public static void Test() ToString() Returns the fully qualified type name of this instance. public override readonly string ToString() Returns string The fully qualified type name. Val(TEva, TEva) Creates a fraction by approximating a double value with specified resolution. Uses Stern-Brocot binary search. public static Fraction<TEva> Val(TEva val, TEva resolution) Parameters val TEva The double value to approximate. resolution TEva The resolution tolerance. Returns Fraction<TEva> The approximated fraction. Operators operator +(Fraction<TEva>, Fraction<TEva>) Addition: fraction + fraction. public static Fraction<TEva> operator +(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns Fraction<TEva> operator +(Fraction<TEva>, long) Addition: fraction + integer. public static Fraction<TEva> operator +(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns Fraction<TEva> operator +(long, Fraction<TEva>) Addition: integer + fraction. public static Fraction<TEva> operator +(long a, Fraction<TEva> b) Parameters a long b Fraction<TEva> Returns Fraction<TEva> operator /(Fraction<TEva>, Fraction<TEva>) Division: fraction / fraction. public static Fraction<TEva> operator /(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns Fraction<TEva> operator /(Fraction<TEva>, long) Division: fraction / integer. public static Fraction<TEva> operator /(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns Fraction<TEva> operator /(long, Fraction<TEva>) Division: integer / fraction. public static Fraction<TEva> operator /(long a, Fraction<TEva> b) Parameters a long b Fraction<TEva> Returns Fraction<TEva> operator ==(Fraction<TEva>, Fraction<TEva>) Equality operator. public static bool operator ==(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator ==(Fraction<TEva>, long) Equality with integer. public static bool operator ==(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool explicit operator double(Fraction<TEva>) Explicit conversion to double. public static explicit operator double(Fraction<TEva> f) Parameters f Fraction<TEva> Returns double operator >(Fraction<TEva>, Fraction<TEva>) Greater than operator. public static bool operator >(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator >(Fraction<TEva>, long) Greater than integer. public static bool operator >(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool operator >=(Fraction<TEva>, Fraction<TEva>) Greater than or equal operator. public static bool operator >=(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator >=(Fraction<TEva>, long) Greater than or equal to integer. public static bool operator >=(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool implicit operator Fraction<TEva>(int) Implicit conversion from int. public static implicit operator Fraction<TEva>(int v) Parameters v int Returns Fraction<TEva> implicit operator Fraction<TEva>(long) Implicit conversion from long. public static implicit operator Fraction<TEva>(long v) Parameters v long Returns Fraction<TEva> operator !=(Fraction<TEva>, Fraction<TEva>) Inequality operator. public static bool operator !=(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator !=(Fraction<TEva>, long) Inequality with integer. public static bool operator !=(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool operator <(Fraction<TEva>, Fraction<TEva>) Less than operator. public static bool operator <(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator <(Fraction<TEva>, long) Less than integer. public static bool operator <(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool operator <=(Fraction<TEva>, Fraction<TEva>) Less than or equal operator. public static bool operator <=(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns bool operator <=(Fraction<TEva>, long) Less than or equal to integer. public static bool operator <=(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns bool operator *(Fraction<TEva>, Fraction<TEva>) Multiplication: fraction * fraction. public static Fraction<TEva> operator *(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns Fraction<TEva> operator *(Fraction<TEva>, long) Multiplication: fraction * integer. public static Fraction<TEva> operator *(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns Fraction<TEva> operator *(long, Fraction<TEva>) Multiplication: integer * fraction. public static Fraction<TEva> operator *(long a, Fraction<TEva> b) Parameters a long b Fraction<TEva> Returns Fraction<TEva> operator -(Fraction<TEva>, Fraction<TEva>) Subtraction: fraction - fraction. public static Fraction<TEva> operator -(Fraction<TEva> a, Fraction<TEva> b) Parameters a Fraction<TEva> b Fraction<TEva> Returns Fraction<TEva> operator -(Fraction<TEva>, long) Subtraction: fraction - integer. public static Fraction<TEva> operator -(Fraction<TEva> a, long b) Parameters a Fraction<TEva> b long Returns Fraction<TEva> operator -(long, Fraction<TEva>) Subtraction: integer - fraction. public static Fraction<TEva> operator -(long a, Fraction<TEva> b) Parameters a long b Fraction<TEva> Returns Fraction<TEva> operator -(Fraction<TEva>) Negation operator. public static Fraction<TEva> operator -(Fraction<TEva> a) Parameters a Fraction<TEva> Returns Fraction<TEva>"
},
"api/Hi.Geom.FractionStatus.html": {
"href": "api/Hi.Geom.FractionStatus.html",
"title": "Enum FractionStatus | HiAPI-C# 2025",
"summary": "Enum FractionStatus Namespace Hi.Geom Assembly HiDisp.dll Status flags for Fraction and NativeFraction. Corresponds to IS_PACKED_MASK and IS_EVALUATED_MASK in C++ fraction_base_t. [Flags] public enum FractionStatus : short Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields IsEvaluated = 2 The fraction's double value has been evaluated and cached. IsPacked = 1 The fraction has been packed (reduced to irreducible form). None = 0 No flags set. The fraction is neither packed nor evaluated."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Ctor. public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement XML baseDirectory string Base directory path relFile string Relative file path progress IProgress<IMessage> Optional progress reporter for the XML parsing chain Properties StlSources Collection of STL sources managed by this instance. public List<IStlSource> StlSources { get; } Property Value List<IStlSource> 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",
"title": "Class GeomUtil | HiAPI-C# 2025",
"summary": "Class GeomUtil Namespace Hi.Geom Assembly HiGeom.dll Utility of Geometry. public static class GeomUtil Inheritance object GeomUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) Expands the destination bounding box with the transformed bounding box of source under matrix mat. public static void ExpandToBox3d(this IExpandToBox3d src, Mat4d mat, Box3d dst) Parameters src IExpandToBox3d The source geometry mat Mat4d The transformation matrix dst Box3d The destination bounding box GetBox3d(IExpandToBox3d) Gets a Box3d representation of the specified object that implements IExpandToBox3d. public static Box3d GetBox3d(this IExpandToBox3d src) Parameters src IExpandToBox3d The source object that implements IExpandToBox3d. Returns Box3d A Box3d representation of the source object. GetNearestPointOnLineSegment(Vec2d, Vec2d, Vec2d) Get the nearest point on a line segment to a given point. public static Vec2d GetNearestPointOnLineSegment(Vec2d point, Vec2d lineStart, Vec2d lineEnd) Parameters point Vec2d The point to find the nearest point from lineStart Vec2d Start point of the line segment lineEnd Vec2d End point of the line segment Returns Vec2d The nearest point on the line segment GetNearestPointOnLineSegment(Vec3d, Vec3d, Vec3d) Get the nearest point on a line segment to a given point. public static Vec3d GetNearestPointOnLineSegment(Vec3d point, Vec3d lineStart, Vec3d lineEnd) Parameters point Vec3d The point to find the nearest point from lineStart Vec3d Start point of the line segment lineEnd Vec3d End point of the line segment Returns Vec3d The nearest point on the line segment GetRayIntersection(Vec3d, Vec3d, Vec3d, Vec3d) Calculates the intersection point of two rays in 3D space. public static Vec3d GetRayIntersection(Vec3d rayABegin, Vec3d rayAVec, Vec3d rayBBegin, Vec3d rayBVec) Parameters rayABegin Vec3d The starting point of the first ray. rayAVec Vec3d The direction vector of the first ray. rayBBegin Vec3d The starting point of the second ray. rayBVec Vec3d The direction vector of the second ray. Returns Vec3d The intersection point of the two rays, or null if they don't intersect. IntersectLineSegmentCircle(Vec2d, Vec2d, double, out Vec2d, out Vec2d) Intersect line segment and circle. public static double IntersectLineSegmentCircle(Vec2d p0, Vec2d p1, double rr, out Vec2d pA, out Vec2d pB) Parameters p0 Vec2d line segment begin point p1 Vec2d line segment end point rr double radius*radius pA Vec2d first intersect point along p0 to p1 pB Vec2d second intersect point along p0 to p1 Returns double determinant"
},
"api/Hi.Geom.IExpandToBox2d.html": {
"href": "api/Hi.Geom.IExpandToBox2d.html",
"title": "Interface IExpandToBox2d | HiAPI-C# 2025",
"summary": "Interface IExpandToBox2d Namespace Hi.Geom Assembly HiGeom.dll Object that can be expanded to a Box2d. public interface IExpandToBox2d Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ExpandToBox2d(Box2d) Expands the destination box. This function is usually used to compute the bounding box of elements. void ExpandToBox2d(Box2d dst) Parameters dst Box2d Destination box"
},
"api/Hi.Geom.IExpandToBox3d.html": {
"href": "api/Hi.Geom.IExpandToBox3d.html",
"title": "Interface IExpandToBox3d | HiAPI-C# 2025",
"summary": "Interface IExpandToBox3d Namespace Hi.Geom Assembly HiGeom.dll Object that can be expanded to a Box3d. public interface IExpandToBox3d Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box"
},
"api/Hi.Geom.IFlat3d.html": {
"href": "api/Hi.Geom.IFlat3d.html",
"title": "Interface IFlat3d | HiAPI-C# 2025",
"summary": "Interface IFlat3d Namespace Hi.Geom Assembly HiGeom.dll Interface for a 3D plane that provides an anchor point and a normal vector. public interface IFlat3d Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDistanceToOrigin() Signed Distance To Origin. double GetDistanceToOrigin() Returns double Signed Distance To Origin. GetLocate() Gets an anchor point on this flat surface. Vec3d GetLocate() Returns Vec3d A point on the flat surface GetLocate(Vec3d, double) Gets an anchor point from a normal vector and signed distance to origin. public static Vec3d GetLocate(Vec3d normal, double distanceToOrigin) Parameters normal Vec3d The unit normal vector. distanceToOrigin double Signed distance to origin. Returns Vec3d The anchor point on the plane. GetNormal() Gets the normal vector of the flat surface. Vec3d GetNormal() Returns Vec3d The unit normal vector"
},
"api/Hi.Geom.IGenStl.html": {
"href": "api/Hi.Geom.IGenStl.html",
"title": "Interface IGenStl | HiAPI-C# 2025",
"summary": "Interface IGenStl Namespace Hi.Geom Assembly HiGeom.dll Interface for generating STL geometry with a resolution. public interface IGenStl Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GenStl(IPolarResolution2d) Generates a new STL. Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL."
},
"api/Hi.Geom.IGeomProperty.html": {
"href": "api/Hi.Geom.IGeomProperty.html",
"title": "Interface IGeomProperty | HiAPI-C# 2025",
"summary": "Interface IGeomProperty Namespace Hi.Geom Assembly HiGeom.dll Interface for objects that have a geometry property. public interface IGeomProperty Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Geom Gets or sets the geometry associated with this object. IGetStl Geom { get; set; } Property Value IGetStl"
},
"api/Hi.Geom.IGetStl.html": {
"href": "api/Hi.Geom.IGetStl.html",
"title": "Interface IGetStl | HiAPI-C# 2025",
"summary": "Interface IGetStl Namespace Hi.Geom Assembly HiGeom.dll Interface for retrieving STL geometry data. public interface IGetStl Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) PairZrUtil.GetZrList(IGetStl) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetStl() Gets the STL geometry data. Stl GetStl() Returns Stl The STL geometry object"
},
"api/Hi.Geom.IGetZrContour.html": {
"href": "api/Hi.Geom.IGetZrContour.html",
"title": "Interface IGetZrContour | HiAPI-C# 2025",
"summary": "Interface IGetZrContour Namespace Hi.Geom Assembly HiGeom.dll Interface for retrieving Z-R contour data for rotational geometries. public interface IGetZrContour Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetZrContour(double) Gets Z-R contour data as a list of PairZr objects. The Z values should generally be ordered from smallest to largest. IList<PairZr> GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList<PairZr> Z-R contour data as a list of PairZr objects"
},
"api/Hi.Geom.IGetZrList.html": {
"href": "api/Hi.Geom.IGetZrList.html",
"title": "Interface IGetZrList | HiAPI-C# 2025",
"summary": "Interface IGetZrList Namespace Hi.Geom Assembly HiGeom.dll Interface for getting a list of Z-R pairs. public interface IGetZrList Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) PairZrUtil.GetVolume(IGetZrList) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetZrList() Gets a list of Z-R coordinate pairs. List<PairZr> GetZrList() Returns List<PairZr> A list of PairZr objects representing Z-R coordinates."
},
"api/Hi.Geom.IStlSource.html": {
"href": "api/Hi.Geom.IStlSource.html",
"title": "Interface IStlSource | HiAPI-C# 2025",
"summary": "Interface IStlSource Namespace Hi.Geom Assembly HiGeom.dll Stl provider with xml support. public interface IStlSource : IGetStl, IMakeXmlSource Inherited Members IGetStl.GetStl() IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) PairZrUtil.GetZrList(IGetStl) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Geom.ITri3d.html": {
"href": "api/Hi.Geom.ITri3d.html",
"title": "Interface ITri3d | HiAPI-C# 2025",
"summary": "Interface ITri3d Namespace Hi.Geom Assembly HiGeom.dll Interface for 3D triangles. public interface ITri3d : IFlat3d, IExpandToBox3d Inherited Members IFlat3d.GetDistanceToOrigin() IFlat3d.GetLocate() IFlat3d.GetNormal() IFlat3d.GetLocate(Vec3d, double) IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetApex(int) Gets the specified vertex (apex) of this triangle. Vec3d GetApex(int i) Parameters i int Index of the vertex (0-2) Returns Vec3d The position of the specified vertex"
},
"api/Hi.Geom.IVec-1.html": {
"href": "api/Hi.Geom.IVec-1.html",
"title": "Interface IVec<T> | HiAPI-C# 2025",
"summary": "Interface IVec<T> Namespace Hi.Geom Assembly HiGeom.dll Interface for vector types with generic element type. public interface IVec<T> Type Parameters T The type of elements in the vector Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties this[int] Gets or sets the element at the specified index. 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. Rank Dimension (i.e. Size) of the Vector. int Rank { get; } Property Value int"
},
"api/Hi.Geom.IZrListSourceProperty.html": {
"href": "api/Hi.Geom.IZrListSourceProperty.html",
"title": "Interface IZrListSourceProperty | HiAPI-C# 2025",
"summary": "Interface IZrListSourceProperty Namespace Hi.Geom Assembly HiGeom.dll Provides a source for obtaining an IGetZrList. public interface IZrListSourceProperty Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ZrListSource The provider for IGetZrList. Func<IGetZrList> ZrListSource { get; set; } Property Value Func<IGetZrList>"
},
"api/Hi.Geom.Mat4d.IndexFlag.html": {
"href": "api/Hi.Geom.Mat4d.IndexFlag.html",
"title": "Enum Mat4d.IndexFlag | HiAPI-C# 2025",
"summary": "Enum Mat4d.IndexFlag Namespace Hi.Geom Assembly HiGeom.dll Specifies the indexing method for matrix construction from vectors. public enum Mat4d.IndexFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ByColumn = 0 Vectors are used as columns in the matrix. ByRow = 1 Vectors are used as rows in the matrix."
},
"api/Hi.Geom.Mat4d.html": {
"href": "api/Hi.Geom.Mat4d.html",
"title": "Class Mat4d | HiAPI-C# 2025",
"summary": "Class Mat4d Namespace Hi.Geom Assembly HiGeom.dll 4x4 Matrix. public class Mat4d : IEquatable<Mat4d>, IBinaryIo, IWriteBin Inheritance object Mat4d Implements IEquatable<Mat4d> IBinaryIo IWriteBin Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Mat4d() Initializes a new instance of the Mat4d class. public Mat4d() Mat4d(AxisAngle4d) Set this matrix to rotation matrix. The matrix is rotate along axis with given radian. public Mat4d(AxisAngle4d src) Parameters src AxisAngle4d src Mat4d(AxisAngle4d, Vec3d) Set this matrix to rotation matrix. The matrix is rotate along axis with given radian. public Mat4d(AxisAngle4d src, Vec3d pivot) Parameters src AxisAngle4d src pivot Vec3d rotation pivot Mat4d(Mat4d) copy constructor public Mat4d(Mat4d src) Parameters src Mat4d src Mat4d(Vec3d) Set this matrix to translation matrix. m(3,0)=trans.x; m(3,1)=trans.y; m(3,2)=trans.z. public Mat4d(Vec3d trans) Parameters trans Vec3d translation Mat4d(Vec3d, Vec3d, Vec3d, IndexFlag) Initializes a new instance of the Mat4d class from three vectors. public Mat4d(Vec3d v0, Vec3d v1, Vec3d v2, Mat4d.IndexFlag indexFlag = IndexFlag.ByColumn) Parameters v0 Vec3d The first vector. v1 Vec3d The second vector. v2 Vec3d The third vector. indexFlag Mat4d.IndexFlag Determines whether vectors are used as columns or rows in the matrix. Mat4d(Vec3d, double) Set this matrix to rotation matrix. The matrix is rotate along axis with given radian. public Mat4d(Vec3d axis, double rad) Parameters axis Vec3d rotation axis rad double radian Mat4d(Vec3d, double, Vec3d) A matrix rotate at pivot along axis by angle rad. public Mat4d(Vec3d axis, double rad, Vec3d pivot) Parameters axis Vec3d rotate axis rad double angle pivot Vec3d rotate pivot Mat4d(mat4d) Ctor by Set(mat4d). public Mat4d(mat4d src) Parameters src mat4d src Mat4d(IEnumerable<double>) Initializes a new instance of the Mat4d class from an enumerable of double values. Takes the first 16 values from the enumerable. public Mat4d(IEnumerable<double> src) Parameters src IEnumerable<double> The enumerable collection of double values. Mat4d(double) a scale matrix which is I*scale. Where I is an identity matrix. public Mat4d(double scale) Parameters scale double scale Mat4d(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) constructor public Mat4d(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33) Parameters m00 double value at (0,0) m01 double value at (0,1) m02 double value at (0,2) m03 double value at (0,3) m10 double value at (1,0) m11 double value at (1,1) m12 double value at (1,2) m13 double value at (1,3) m20 double value at (2,0) m21 double value at (2,1) m22 double value at (2,2) m23 double value at (2,3) m30 double value at (3,0) m31 double value at (3,1) m32 double value at (3,2) m33 double value at (3,3) Mat4d(double[]) constructor public Mat4d(double[] src) Parameters src double[] src Mat4d(BinaryReader) Ctor. public Mat4d(BinaryReader reader) Parameters reader BinaryReader reader Mat4d(string) Ctor by Set(string). public Mat4d(string str) Parameters str string src Fields m Column-major matrix in form of array. public double[] m Field Value double[] Properties AxialNormal Vec3d on 2th row. It usually is tool normal. public Vec3d AxialNormal { get; } Property Value Vec3d AxisAngle Gets the axis-angle representation of the rotation component of this matrix. public AxisAngle4d AxisAngle { get; } Property Value AxisAngle4d Determinant Gets the determinant of this matrix. public double Determinant { get; } Property Value double The determinant value. Idt Generate identity matrix. public static Mat4d Idt { get; } Property Value Mat4d IsAllNaN Gets a value indicating whether all elements of this matrix are NaN. public bool IsAllNaN { get; } Property Value bool IsFinite Gets a value indicating whether all elements of this matrix are finite numbers. public bool IsFinite { get; } Property Value bool IsRotate Gets a value indicating whether this matrix represents a pure rotation. public bool IsRotate { get; } Property Value bool MatScale Gets the scale factor of the matrix, calculated as the cube root of the determinant without translation. public double MatScale { get; } Property Value double NaN Generate matrix that all elements are nan. public static Mat4d NaN { get; } Property Value Mat4d NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(double) * 3. NoTransMat Generate new matrix that the translation part is zero. i.e. (m[12],m[13],m[14])=(0,0,0). public Mat4d NoTransMat { get; } Property Value Mat4d Pn Pn: Point and Normal (position + tool axis direction). Point = Trans = (m[12], m[13], m[14]), Normal = AxialNormal = (m[8], m[9], m[10]). public DVec3d Pn { get; } Property Value DVec3d Trans Translation. The value is Vec3d(m[12], m[13], m[14]). public Vec3d Trans { get; set; } Property Value Vec3d TransposeMat Gets a new matrix that is the transpose of this matrix. public Mat4d TransposeMat { get; } Property Value Mat4d Zero Generate zero matrix. public static Mat4d Zero { get; } Property Value Mat4d Methods AdjustSingularValueByTolerance(double) Adjusts matrix values that are close to 0, 1, or -1 (within the specified tolerance) to exactly those values. public Mat4d AdjustSingularValueByTolerance(double tolerance) Parameters tolerance double The tolerance threshold for considering values close to 0, 1, or -1. Returns Mat4d This matrix after adjustment. At(int, int) Gets a reference to the matrix element at the specified row and column. public ref double At(int i, int j) Parameters i int The row index (0-based). j int The column index (0-based). Returns double A reference to the matrix element. Equals(Mat4d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Mat4d other) Parameters other Mat4d 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. EqualsByTolerance(Mat4d, double) Determines whether this matrix is equal to another matrix within a specified tolerance. public bool EqualsByTolerance(Mat4d other, double tolerance) Parameters other Mat4d The matrix to compare with this matrix. tolerance double The maximum absolute difference between matrix elements for them to be considered equal. Returns bool true if the matrices are equal within the specified tolerance; otherwise, false. FilledMat(double) Creates a matrix with all elements set to the specified value. public static Mat4d FilledMat(double v) Parameters v double The value to fill all elements with. Returns Mat4d A new matrix with all elements set to the specified value. FixFloatingZero(double) Fixes floating-point values that are close to zero by setting them to exactly zero. public Mat4d FixFloatingZero(double floatingZeroTolerance = 1E-12) Parameters floatingZeroTolerance double The tolerance below which values are considered zero. Default is 1e-12. Returns Mat4d This matrix instance for method chaining. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetInverse() Gets the inverse. public Mat4d GetInverse() Returns Mat4d Inverse matrix GetScaleMat(double) Creates a new matrix by scaling this matrix by the specified factor. public Mat4d GetScaleMat(double scale) Parameters scale double The scale factor to apply. Returns Mat4d A new scaled matrix. GetTransform(Func<double, double>) Creates a new matrix with all elements transformed by the specified function. public Mat4d GetTransform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> The function to apply to each matrix element. Returns Mat4d A new matrix with transformed elements. Inverse() Inverses this instance. public Mat4d Inverse() Returns Mat4d this ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Scale(double) Scales the specified s. public Mat4d Scale(double s) Parameters s double The s. Returns Mat4d this Set(AxisAngle4d) Set this matrix to rotation matrix. The matrix is rotate along axis with given radian. public Mat4d Set(AxisAngle4d src) Parameters src AxisAngle4d src Returns Mat4d this Set(Mat4d) copy the data from src to this. public Mat4d Set(Mat4d src) Parameters src Mat4d src Returns Mat4d this Set(Vec3d) Set this matrix to translation matrix. m(3,0)=trans.x; m(3,1)=trans.y; m(3,2)=trans.z. public Mat4d Set(Vec3d trans) Parameters trans Vec3d translation Returns Mat4d this Set(Vec3d, double) Set this matrix to rotation matrix. The matrix is rotate along axis with given radian. public Mat4d Set(Vec3d axis, double rad) Parameters axis Vec3d rotation axis rad double radian Returns Mat4d this Set(Vec3d, double, Vec3d) Set the matrix rotation at pivot along axis by angle rad. public Mat4d Set(Vec3d axis, double rad, Vec3d pivot) Parameters axis Vec3d rotation axis rad double angle pivot Vec3d rotation pivot Returns Mat4d this Set(mat4d) Set the data by src. public Mat4d Set(mat4d src) Parameters src mat4d src Returns Mat4d this Set(double) The matrix will be reset to a scale matrix which is I*scale. Where I is an identity matrix. public Mat4d Set(double scale) Parameters scale double scale Returns Mat4d this Set(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) constructor public Mat4d Set(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33) Parameters m00 double value at (0,0) m01 double value at (0,1) m02 double value at (0,2) m03 double value at (0,3) m10 double value at (1,0) m11 double value at (1,1) m12 double value at (1,2) m13 double value at (1,3) m20 double value at (2,0) m21 double value at (2,1) m22 double value at (2,2) m23 double value at (2,3) m30 double value at (3,0) m31 double value at (3,1) m32 double value at (3,2) m33 double value at (3,3) Returns Mat4d this Set(int, int, double) Sets the value of the matrix element at the specified row and column. public void Set(int i, int j, double v) Parameters i int The row index (0-based). j int The column index (0-based). v double The value to set. Set(string) Set data by str. The format is {0,1,2,3,...,15} public Mat4d Set(string str) Parameters str string src Returns Mat4d this SetIdt() Set this instance to identity matrix. public void SetIdt() SetNoTrans() Sets the translation components of this matrix to zero. public Mat4d SetNoTrans() Returns Mat4d This matrix with translation components set to zero. ToBriefString() To brief string. public string ToBriefString() Returns string brief string. ToLinesString() Converts the matrix to a multi-line string representation with aligned columns. public string ToLinesString() Returns string A formatted multi-line string representation of the matrix. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. Transform(Func<double, double>) Transforms all matrix elements in-place using the specified transformation function. public Mat4d Transform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> The function to apply to each matrix element. Returns Mat4d This matrix instance for method chaining. Transpose() Transposes this matrix in place. public Mat4d Transpose() Returns Mat4d This matrix after transposition. 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 Operators operator +(Mat4d, Mat4d) Adds two matrices element-wise. public static Mat4d operator +(Mat4d a, Mat4d b) Parameters a Mat4d The first matrix. b Mat4d The second matrix. Returns Mat4d A new matrix that is the sum of the two matrices. operator /(Mat4d, double) Divides a matrix by a scalar value. public static Mat4d operator /(Mat4d a, double b) Parameters a Mat4d The matrix to divide. b double The scalar divisor. Returns Mat4d A new matrix with all elements divided by the scalar. operator ==(Mat4d, Mat4d) Determines whether two matrices are equal. public static bool operator ==(Mat4d a, Mat4d b) Parameters a Mat4d The first matrix. b Mat4d The second matrix. Returns bool true if the matrices are equal; otherwise, false. operator !=(Mat4d, Mat4d) Determines whether two matrices are not equal. public static bool operator !=(Mat4d a, Mat4d b) Parameters a Mat4d The first matrix. b Mat4d The second matrix. Returns bool true if the matrices are not equal; otherwise, false. operator *(Mat4d, DVec3d) Multiple matrxi to cutter location (Point and Normal). public static DVec3d operator *(Mat4d m, DVec3d v) Parameters m Mat4d matrix v DVec3d point and normal Returns DVec3d transformed point and normal operator *(Mat4d, Mat4d) Multiplies two matrices. public static Mat4d operator *(Mat4d a, Mat4d b) Parameters a Mat4d The first matrix. b Mat4d The second matrix. Returns Mat4d A new matrix that is the product of the two matrices. operator *(Mat4d, Vec3d) Multiplies a matrix by a vector, transforming the vector. public static Vec3d operator *(Mat4d a, Vec3d b) Parameters a Mat4d The transformation matrix. b Vec3d The vector to transform. Returns Vec3d The transformed vector. operator *(Mat4d, double) Multiplies a matrix by a scalar value. public static Mat4d operator *(Mat4d a, double s) Parameters a Mat4d The matrix to multiply. s double The scalar value. Returns Mat4d A new matrix with all elements multiplied by the scalar. operator -(Mat4d, Mat4d) Subtracts the second matrix from the first matrix element-wise. public static Mat4d operator -(Mat4d a, Mat4d b) Parameters a Mat4d The matrix to subtract from. b Mat4d The matrix to subtract. Returns Mat4d A new matrix that is the difference of the two matrices. operator -(Mat4d) Returns the negation of the specified matrix. public static Mat4d operator -(Mat4d src) Parameters src Mat4d The source matrix. Returns Mat4d A new matrix with all elements negated."
},
"api/Hi.Geom.MathNetUtil.html": {
"href": "api/Hi.Geom.MathNetUtil.html",
"title": "Class MathNetUtil | HiAPI-C# 2025",
"summary": "Class MathNetUtil Namespace Hi.Geom Assembly HiGeom.dll Utility class for MathNet.Numerics operations. public static class MathNetUtil Inheritance object MathNetUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ClearFloatingZero(Matrix<double>, double) the elements which the absolute value lower to gap are set to zero. public static void ClearFloatingZero(Matrix<double> mat, double gap = 1E-07) Parameters mat Matrix<double> target matrix gap double gap value GetCovMatByMultiThread(IList<double[]>, Action<double>, int) Calculates the covariance matrix for a list of vectors using multi-threading. public static DenseMatrix GetCovMatByMultiThread(IList<double[]> vecs, Action<double> progressAction = null, int progressTickPerVec = 20) Parameters vecs IList<double[]> The list of vectors to calculate covariance for. progressAction Action<double> Optional action to report progress. progressTickPerVec int Number of progress ticks per vector processed. Returns DenseMatrix A dense matrix representing the covariance. GetDiagonalString(Matrix<double>) Gets a string representation of the diagonal elements of a matrix. public static string GetDiagonalString(Matrix<double> src) Parameters src Matrix<double> The source matrix to extract diagonal elements from. Returns string A comma-separated string of the diagonal elements with 6 significant digits. GetInversedWeightMat(Matrix<double>, out int, double, double) public static Matrix<double> GetInversedWeightMat(Matrix<double> w, out int abandonedIndex, double minGap = 1E-05, double sumTerminate = 0.99999999) Parameters w Matrix<double> abandonedIndex int abandoned index. Inclusive. minGap double sumTerminate double Returns Matrix<double>"
},
"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>(T, Func<T, bool>, T) Applies an alternative value if the source value meets a specified condition. public static T ApplyAlterIf<T>(T src, Func<T, bool> isApplyingAlternateFunc, T alternative) Parameters src T The source value to check. isApplyingAlternateFunc Func<T, bool> 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<Vec3d>) Average. public static Vec3d Average(this IEnumerable<Vec3d> src) Parameters src IEnumerable<Vec3d> 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, T, double, double) Bilinear interpolate. public static T BilinearInterpolate<T>(T v00, T v01, T v10, T v11, double u, double v) where T : IAdditionOperators<T, T, T>, IMultiplyOperators<T, double, T> 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, T, double, double, Func<T, double, T>, Func<T, T, T>) Bilinear interpolate. public static T BilinearInterpolate<T>(T v00, T v01, T v10, T v11, double u, double v, Func<T, double, T> scalingFunc, Func<T, T, T> 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<T, double, T> scaling function addingFunc Func<T, T, T> 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, T) Clamps a value within an inclusive range of minimum and maximum values. public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T> 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, T) Get position ratio. (pos - begin) / (end - begin) . public static double GetInterpolationRatio<T>(T begin, T end, T pos) where T : ISubtractionOperators<T, T, T>, IDivisionOperators<T, T, double> Parameters begin T range begin end T range end pos T key position Returns double position ratio Type Parameters T GetInterpolationRatio<T>(T, T, T, Func<T, T, T>, Func<T, T, double>) Gets the interpolation ratio between two values using custom subtraction and division functions public static double GetInterpolationRatio<T>(T begin, T end, T pos, Func<T, T, T> minusFunc, Func<T, T, double> divFunc) Parameters begin T The beginning value end T The ending value pos T The position value to calculate the ratio for minusFunc Func<T, T, T> The function to use for subtraction divFunc Func<T, T, double> 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, 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>(T a, T b, double ratio) where T : IEqualityOperators<T, T, bool>, IAdditionOperators<T, T, T>, IMultiplyOperators<T, double, T> Parameters a T b T ratio double Returns T Type Parameters T Interpolate<T>(T, T, double) Interpolate from a to b with ratio alpha:(1-alpha). public static T Interpolate<T>(T a, T b, double ratio) where T : IEqualityOperators<T, T, bool>, IAdditionOperators<T, T, T>, IMultiplyOperators<T, double, T> Parameters a T a b T b ratio double ratio Returns T a * (1 - ratio) + b * ratio Type Parameters T Interpolate<T>(T, T, double, Func<T, double>) Interpolates between two values based on a position using a position function. public static T Interpolate<T>(T a, T b, double pos, Func<T, double> posFunc) where T : INumber<T>, IMultiplyOperators<T, double, T> Parameters a T The first value b T The second value pos double The position to interpolate at posFunc Func<T, double> Function to extract a position from a value Returns T The interpolated value Type Parameters T The type of the values Interpolate<TItem>(TItem, TItem, double, Func<TItem, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Interpolates between two items based on a key value using custom functions. public static TItem Interpolate<TItem>(TItem a, TItem b, double key, Func<TItem, double> keyFunc, Func<TItem, TItem, TItem> addingFunc, Func<TItem, double, TItem> 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<TItem, double> Function to extract a double key from an item addingFunc Func<TItem, TItem, TItem> Function to add two items scalingFunc Func<TItem, double, TItem> Function to scale an item by a double Returns TItem The interpolated item Type Parameters TItem The type of the items Interpolate<T>(T, T, double, Func<T, T, T>, Func<T, double, T>) Interpolates between two values using custom addition and scaling functions public static T Interpolate<T>(T a, T b, double ratio, Func<T, T, T> addingFunc, Func<T, double, T> scalingFunc) Parameters a T The first value b T The second value ratio double The interpolation ratio (0.0 to 1.0) addingFunc Func<T, T, T> The function to use for addition scalingFunc Func<T, double, T> 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[], T[], double) Interpolates between two arrays of values using the specified ratio public static T[] Interpolate<T>(T[] a, T[] b, double ratio) where T : INumber<T>, IMultiplyOperators<T, double, T> 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<TKey, TItem>(TItem, TItem, TKey, Func<TItem, TKey>, Func<TKey, TKey, TKey>, Func<TKey, TKey, double>, Func<TItem, TItem, TItem>, Func<TItem, double, TItem>) Interpolates between two items using custom key extraction, key operations, and item operations public static TItem Interpolate<TKey, TItem>(TItem a, TItem b, TKey key, Func<TItem, TKey> keyFunc, Func<TKey, TKey, TKey> keyMinusFunc, Func<TKey, TKey, double> keyDivFunc, Func<TItem, TItem, TItem> itemAddingFunc, Func<TItem, double, TItem> itemScalingFunc) Parameters a TItem The first item b TItem The second item key TKey The key value to interpolate at keyFunc Func<TItem, TKey> Function to extract a key from an item keyMinusFunc Func<TKey, TKey, TKey> Function to subtract keys keyDivFunc Func<TKey, TKey, double> Function to divide keys itemAddingFunc Func<TItem, TItem, TItem> Function to add items itemScalingFunc Func<TItem, double, TItem> 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, T) Returns the larger of two values. public static T Max<T>(T a, T b) where T : IComparable<T> 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, T) Returns the smaller of two values. public static T Min<T>(T a, T b) where T : IComparable<T> 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<double>, out double) Standard deviation with n denominator (instead of n-1). public static double SqrtVariance(IList<double> src, out double avg) Parameters src IList<double> 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<Vec3d>) Sum. public static Vec3d Sum(this IEnumerable<Vec3d> src) Parameters src IEnumerable<Vec3d> 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",
"title": "Class NativeFraction | HiAPI-C# 2025",
"summary": "Class NativeFraction Namespace Hi.Geom Assembly HiDisp.dll Native wrapper for C++ fraction_t<0> (unlimited precision fraction). A fraction consists of a numerator and denominator using unlimited precision integers. public class NativeFraction : IDisposable Inheritance object NativeFraction Implements IDisposable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Delegate to geom::fraction_t<0> (fraction_unlimited_t) in CppCore. The fraction may be not packed or not evaluated. However, all fraction numerator and denominator are singular managed and denominator is never negative. Constructors NativeFraction() Initializes a new instance of zero fraction. public NativeFraction() NativeFraction(NativeFraction) Initializes a new instance by copying another fraction. public NativeFraction(NativeFraction src) Parameters src NativeFraction The source fraction to copy. NativeFraction(double, double) Initializes a new instance from a double value with specified resolution. Uses Stern-Brocot binary search for approximation. public NativeFraction(double val, double resolution) Parameters val double The double value to convert. resolution double The resolution tolerance for approximation. NativeFraction(int) Initializes a new instance with an integer value. public NativeFraction(int num) Parameters num int The integer value. NativeFraction(long) Initializes a new instance with integer value. public NativeFraction(long num) Parameters num long The integer numerator value. NativeFraction(long, long) Initializes a new instance with numerator and denominator. public NativeFraction(long num, long den) Parameters num long The numerator. den long The denominator. Cannot be negative. Properties CeilInt Gets the ceiling integer value. public int CeilInt { get; } Property Value int Denominator Gets or sets the denominator as BigInteger. Uses byte array transfer for better performance. public BigInteger Denominator { get; set; } Property Value BigInteger DenominatorString Gets or sets the denominator as a string (for unlimited precision). public string DenominatorString { get; set; } Property Value string FloorInt Gets the floor integer value. public int FloorInt { get; } Property Value int IsEvaluated Gets whether the fraction value has been evaluated. public bool IsEvaluated { get; } Property Value bool IsFinite Gets whether the fraction is finite (denominator != 0). public bool IsFinite { get; } Property Value bool IsNaN Gets whether the fraction is NaN (0/0). public bool IsNaN { get; } Property Value bool IsPacked Gets whether the fraction is packed (reduced to irreducible form). public bool IsPacked { get; } Property Value bool IsZero Gets whether the fraction is zero (numerator == 0 and denominator != 0). public bool IsZero { get; } Property Value bool Numerator Gets or sets the numerator as BigInteger. Uses byte array transfer for better performance. public BigInteger Numerator { get; set; } Property Value BigInteger NumeratorString Gets or sets the numerator as a string (for unlimited precision). public string NumeratorString { get; set; } Property Value string Ptr Gets the native pointer. public nint Ptr { get; } Property Value nint RoughValue Gets the roughly evaluated double value. If the data has not been reduced, the return value is not evaluated by the reduced numbers. public double RoughValue { get; } Property Value double Sign Gets the sign of the fraction (-1, 0, or 1). public int Sign { get; } Property Value int Status Gets the status flags. public FractionStatus Status { get; } Property Value FractionStatus Value Gets the evaluated double value. Computes the value if not yet evaluated. public double Value { get; } Property Value double Methods Abs() Gets the absolute value of this fraction. public NativeFraction Abs() Returns NativeFraction ComparePerformanceTest(int, int) Comparative performance test between pure C# Fraction and NativeFraction (C++ backend). public static void ComparePerformanceTest(int iterations = 128, int rounds = 16) Parameters iterations int Number of accumulation steps per round. rounds int Number of rounds to average timing. CompareTo(NativeFraction) Compares this fraction with another. public int CompareTo(NativeFraction other) Parameters other NativeFraction The other fraction. Returns int -1 if less, 0 if equal, 1 if greater. 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 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. Evaluate() Evaluates the double value if not already evaluated. public NativeFraction Evaluate() Returns NativeFraction This instance for chaining. ~NativeFraction() protected ~NativeFraction() GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. NaN() Creates a NaN fraction (0/0). public static NativeFraction NaN() Returns NativeFraction Negate() Negates this fraction in place. public NativeFraction Negate() Returns NativeFraction This instance for chaining. NegativeInf() Creates a negative infinity fraction (-1/0). public static NativeFraction NegativeInf() Returns NativeFraction One() Creates a one fraction (1/1). public static NativeFraction One() Returns NativeFraction Pack() Packs (reduces) the fraction to irreducible form if not already packed. public NativeFraction Pack() Returns NativeFraction This instance for chaining. PerformanceTest(int, int) Performance test for NativeFraction (C++ backend). Test 1: Accumulative += with Val (bounded, linear growth). Test 2: Bounded arithmetic (converging average). public static void PerformanceTest(int iterations = 128, int rounds = 16) Parameters iterations int Number of steps per round. rounds int Number of rounds to average timing. PositiveInf() Creates a positive infinity fraction (1/0). public static NativeFraction PositiveInf() Returns NativeFraction Reciprocal() Gets the reciprocal of this fraction. public NativeFraction Reciprocal() Returns NativeFraction SetAbs() Sets this fraction to its absolute value. public NativeFraction SetAbs() Returns NativeFraction This instance for chaining. SetNumeratorAndDenominator(BigInteger, BigInteger) Sets both numerator and denominator at once. public void SetNumeratorAndDenominator(BigInteger numerator, BigInteger denominator) Parameters numerator BigInteger The numerator value. denominator BigInteger The denominator value. SetReciprocal() Sets this fraction to its reciprocal. public NativeFraction SetReciprocal() Returns NativeFraction This instance for chaining. SetSquare() Sets this fraction to its square. public NativeFraction SetSquare() Returns NativeFraction This instance for chaining. Simplify(double) Simplifies the fraction to the specified resolution. public NativeFraction Simplify(double resolution) Parameters resolution double The resolution tolerance. Returns NativeFraction This instance for chaining. Square() Gets the square of this fraction. public NativeFraction Square() Returns NativeFraction Test() Test function for NativeFraction. 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. Val(double, double) Creates a fraction from a double value with specified resolution. public static NativeFraction Val(double val, double resolution) Parameters val double The double value. resolution double The resolution tolerance. Returns NativeFraction Zero() Creates a zero fraction (0/1). public static NativeFraction Zero() Returns NativeFraction Operators operator +(NativeFraction, NativeFraction) Addition operator. public static NativeFraction operator +(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns NativeFraction operator /(NativeFraction, NativeFraction) Division operator. public static NativeFraction operator /(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns NativeFraction operator ==(NativeFraction, NativeFraction) Equality operator. public static bool operator ==(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool explicit operator double(NativeFraction) Explicit conversion to double. public static explicit operator double(NativeFraction f) Parameters f NativeFraction Returns double operator >(NativeFraction, NativeFraction) Greater than operator. public static bool operator >(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool operator >=(NativeFraction, NativeFraction) Greater than or equal operator. public static bool operator >=(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool operator !=(NativeFraction, NativeFraction) Inequality operator. public static bool operator !=(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool operator <(NativeFraction, NativeFraction) Less than operator. public static bool operator <(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool operator <=(NativeFraction, NativeFraction) Less than or equal operator. public static bool operator <=(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns bool operator *(NativeFraction, NativeFraction) Multiplication operator. public static NativeFraction operator *(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns NativeFraction operator -(NativeFraction, NativeFraction) Subtraction operator. public static NativeFraction operator -(NativeFraction a, NativeFraction b) Parameters a NativeFraction b NativeFraction Returns NativeFraction operator -(NativeFraction) Negation operator. public static NativeFraction operator -(NativeFraction a) Parameters a NativeFraction Returns NativeFraction"
},
"api/Hi.Geom.NativeStl.html": {
"href": "api/Hi.Geom.NativeStl.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.ObjUtil.html": {
"href": "api/Hi.Geom.ObjUtil.html",
"title": "Class ObjUtil | HiAPI-C# 2025",
"summary": "Class ObjUtil Namespace Hi.Geom Assembly HiGeom.dll Wavefront OBJ writer for RGB-coloured triangle buffers. public static class ObjUtil Inheritance object ObjUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WriteText(string, double[]) Write a stride-15 RGB-triangle buffer as Wavefront OBJ text with the per-vertex colour extension (v x y z r g b). Triangle vertices are not shared; faces reference vertices/normals via negative (relative) indices, so no global counters are required. public static void WriteText(string file, double[] rgbTrisNativeArray) Parameters file string Destination OBJ file path. rgbTrisNativeArray double[] Stride-15 array: r,g,b, nx,ny,nz, p0.x,p0.y,p0.z, p1.x,p1.y,p1.z, p2.x,p2.y,p2.z, repeated once per triangle. RGB components are in the [0, 1] range. See Hi.Cbtr.CubeTree.GetRgbTrisNativeArray."
},
"api/Hi.Geom.PairZr.html": {
"href": "api/Hi.Geom.PairZr.html",
"title": "Class PairZr | HiAPI-C# 2025",
"summary": "Class PairZr Namespace Hi.Geom Assembly HiGeom.dll Value pair of Z and R. public class PairZr : IMakeXmlSource, IExpandToBox3d, IEqualityOperators<PairZr, PairZr, bool>, IAdditionOperators<PairZr, PairZr, PairZr>, ISubtractionOperators<PairZr, PairZr, PairZr>, IMultiplyOperators<PairZr, double, PairZr>, IDivisionOperators<PairZr, double, PairZr>, IFormattable Inheritance object PairZr Implements IMakeXmlSource IExpandToBox3d IEqualityOperators<PairZr, PairZr, bool> IAdditionOperators<PairZr, PairZr, PairZr> ISubtractionOperators<PairZr, PairZr, PairZr> IMultiplyOperators<PairZr, double, PairZr> IDivisionOperators<PairZr, double, PairZr> IFormattable Inherited Members object.Equals(object, object) 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) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PairZr() Ctor. public PairZr() PairZr(PairZr) Copy ctor. public PairZr(PairZr src) Parameters src PairZr PairZr(double, double) Ctor. public PairZr(double z, double r) Parameters z double see Z r double see R PairZr(string) Ctor. public PairZr(string src) Parameters src string PairZr(XElement) Ctor. public PairZr(XElement src) Parameters src XElement XML Properties R R value. public double R { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Z Z value. public double Z { get; set; } Property Value double ZR (x,y)=(z,r). public Vec2d ZR { get; set; } Property Value Vec2d Methods Equals(PairZr) public bool Equals(PairZr other) Parameters other PairZr Returns bool 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 GenCircle(int) Generates a collection of Vec3d points forming a circle at the Z coordinate with radius R. public IEnumerable<Vec3d> GenCircle(int posNum) Parameters posNum int The number of points to generate around the circle Returns IEnumerable<Vec3d> An enumerable collection of Vec3d points GenPolarCircle(int) Generates a collection of Polar3d points forming a circle at the Z coordinate with radius R. public IEnumerable<Polar3d> GenPolarCircle(int posNum) Parameters posNum int The number of points to generate around the circle Returns IEnumerable<Polar3d> An enumerable collection of Polar3d points 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 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 PairZr 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 PairZr Operators operator +(PairZr, PairZr) Addition operator that adds two PairZr instances. public static PairZr operator +(PairZr left, PairZr right) Parameters left PairZr The left operand right PairZr The right operand Returns PairZr A new PairZr instance with the sum of Z and R values operator /(PairZr, double) Division operator that divides a PairZr instance by a scalar value. public static PairZr operator /(PairZr left, double right) Parameters left PairZr The PairZr instance right double The scalar value Returns PairZr A new PairZr instance with Z and R values divided by the scalar operator ==(PairZr, PairZr) Equality operator that compares two PairZr instances. public static bool operator ==(PairZr left, PairZr right) Parameters left PairZr The left operand right PairZr The right operand Returns bool True if both instances are equal; otherwise, false operator !=(PairZr, PairZr) Inequality operator that compares two PairZr instances. public static bool operator !=(PairZr left, PairZr right) Parameters left PairZr The left operand right PairZr The right operand Returns bool True if the instances are not equal; otherwise, false operator *(PairZr, double) Multiplication operator that multiplies a PairZr instance by a scalar value. public static PairZr operator *(PairZr left, double right) Parameters left PairZr The PairZr instance right double The scalar value Returns PairZr A new PairZr instance with Z and R values multiplied by the scalar operator -(PairZr, PairZr) Subtraction operator that subtracts one PairZr instance from another. public static PairZr operator -(PairZr a, PairZr b) Parameters a PairZr The left operand b PairZr The right operand to subtract Returns PairZr A new PairZr instance with the difference of Z and R values"
},
"api/Hi.Geom.PairZrUtil.html": {
"href": "api/Hi.Geom.PairZrUtil.html",
"title": "Class PairZrUtil | HiAPI-C# 2025",
"summary": "Class PairZrUtil Namespace Hi.Geom Assembly HiGeom.dll Utility class for working with PairZr objects public static class PairZrUtil Inheritance object PairZrUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetIntensiveZrs(IEnumerable<PairZr>, double) public static IEnumerable<PairZr> GetIntensiveZrs(this IEnumerable<PairZr> src, double ZResolution) Parameters src IEnumerable<PairZr> ZResolution double Returns IEnumerable<PairZr> GetNormal2d(SortedList<double, PairZr>, double) Gets a 2D normal vector to the surface at the specified Z position public static Vec2d GetNormal2d(this SortedList<double, PairZr> zVsPairZr, double z) Parameters zVsPairZr SortedList<double, PairZr> The sorted list of PairZr objects defining the surface z double The Z position to get the normal vector for Returns Vec2d A 2D normal vector to the surface, or null if it cannot be calculated GetNormal2dByFittedZ(SortedList<double, PairZr>, double, out double) Gets a 2D normal vector to the surface at the specified Z position, adjusted to fit within the Z range public static Vec2d GetNormal2dByFittedZ(this SortedList<double, PairZr> zVsPairZr, double z, out double fittedZ) Parameters zVsPairZr SortedList<double, PairZr> The sorted list of PairZr objects defining the surface z double The Z position to get the normal vector for fittedZ double Output parameter that receives the adjusted Z value that fits within the range Returns Vec2d A 2D normal vector to the surface, or null if it cannot be calculated GetRByZ(List<PairZr>, double) Gets the R value at a specified Z position by interpolating between PairZr objects in a list public static double GetRByZ(this List<PairZr> zVsPairZr, double z) Parameters zVsPairZr List<PairZr> The list of PairZr objects z double The Z position to get the R value for Returns double The interpolated R value at the specified Z position, or NaN if interpolation is not possible GetRByZ(SortedList<double, PairZr>, double) Gets the R value at a specified Z position by interpolating between PairZr objects in a sorted list public static double GetRByZ(this SortedList<double, PairZr> zVsPairZr, double z) Parameters zVsPairZr SortedList<double, PairZr> The sorted list of PairZr objects keyed by Z values z double The Z position to get the R value for Returns double The interpolated R value at the specified Z position, or NaN if interpolation is not possible GetSurfaceVerticalArrow2d(List<PairZr>, double) Gets a 2D vector perpendicular to the surface at the specified Z position public static Vec2d GetSurfaceVerticalArrow2d(this List<PairZr> zVsPairZr, double z) Parameters zVsPairZr List<PairZr> The list of PairZr objects defining the surface z double The Z position to get the vector for Returns Vec2d A 2D vector perpendicular to the surface, or null if it cannot be calculated GetSurfaceVerticalArrow2dByFittedZ(List<PairZr>, double, out double) Gets a 2D vector perpendicular to the surface at the specified Z position, adjusted to fit within the Z range public static Vec2d GetSurfaceVerticalArrow2dByFittedZ(this List<PairZr> zVsPairZr, double z, out double fittedZ) Parameters zVsPairZr List<PairZr> The list of PairZr objects defining the surface z double The Z position to get the vector for fittedZ double Output parameter that receives the adjusted Z value that fits within the range Returns Vec2d A 2D vector perpendicular to the surface, or null if it cannot be calculated GetSurfaceVerticalArrow3dByFittedZ(List<PairZr>, double, double, out double) Gets a 3D vector perpendicular to the surface at the specified Z position, adjusted to fit within the Z range public static Vec3d GetSurfaceVerticalArrow3dByFittedZ(this List<PairZr> zVsPairZr, double z, double angle_rad, out double fittedZ) Parameters zVsPairZr List<PairZr> The list of PairZr objects defining the surface z double The Z position to get the vector for angle_rad double The angle in radians to position the vector around the Z axis fittedZ double Output parameter that receives the adjusted Z value that fits within the range Returns Vec3d A 3D vector perpendicular to the surface, or null if it cannot be calculated GetVolume(IGetZrList) Calculates the volume of an object that implements IGetZrList public static double GetVolume(this IGetZrList src) Parameters src IGetZrList The object that implements IGetZrList Returns double The calculated volume, or 0 if the source is null GetVolume(IEnumerable<PairZr>) Get Volume. Assume the src.Z is ascendent. If Z descendent, the result may be negative. public static double GetVolume(this IEnumerable<PairZr> src) Parameters src IEnumerable<PairZr> Returns double GetZrList(IGetStl) Extracts a list of PairZr objects from an object that implements IGetStl public static List<PairZr> GetZrList(this IGetStl geom) Parameters geom IGetStl The object that implements IGetStl Returns List<PairZr> A list of PairZr objects, or null if the geometry is null GetZrList(IEnumerable<Tri3d>) Extracts a list of PairZr objects from a collection of triangles public static List<PairZr> GetZrList(this IEnumerable<Tri3d> tris) Parameters tris IEnumerable<Tri3d> The collection of triangles Returns List<PairZr> A list of PairZr objects ordered by Z value"
},
"api/Hi.Geom.PlyUtil.html": {
"href": "api/Hi.Geom.PlyUtil.html",
"title": "Class PlyUtil | HiAPI-C# 2025",
"summary": "Class PlyUtil Namespace Hi.Geom Assembly HiGeom.dll Stanford PLY writer for RGB-coloured triangle buffers. public static class PlyUtil Inheritance object PlyUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WriteBin(string, double[]) Write a stride-15 RGB-triangle buffer as little-endian binary PLY with per-vertex RGB. Vertices are not shared between triangles (the input is a non-manifold soup), so each triangle contributes 3 unique vertices. public static void WriteBin(string file, double[] rgbTrisNativeArray) Parameters file string Destination PLY file path. rgbTrisNativeArray double[] Stride-15 array: r,g,b, nx,ny,nz, p0.x,p0.y,p0.z, p1.x,p1.y,p1.z, p2.x,p2.y,p2.z, repeated once per triangle. RGB components are in the [0, 1] range. See Hi.Cbtr.CubeTree.GetRgbTrisNativeArray."
},
"api/Hi.Geom.Polar3d.html": {
"href": "api/Hi.Geom.Polar3d.html",
"title": "Class Polar3d | HiAPI-C# 2025",
"summary": "Class Polar3d Namespace Hi.Geom Assembly HiGeom.dll Represents a point in 3D space using polar coordinates public class Polar3d : IAdditionOperators<Polar3d, Polar3d, Polar3d>, ISubtractionOperators<Polar3d, Polar3d, Polar3d>, IMultiplyOperators<Polar3d, double, Polar3d>, IDivisionOperators<Polar3d, double, Polar3d>, ICsvRowIo, IFormattable Inheritance object Polar3d Implements IAdditionOperators<Polar3d, Polar3d, Polar3d> ISubtractionOperators<Polar3d, Polar3d, Polar3d> IMultiplyOperators<Polar3d, double, Polar3d> IDivisionOperators<Polar3d, double, Polar3d> ICsvRowIo IFormattable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Polar3d() Ctor. public Polar3d() Polar3d(Polar3d) Copy constructor public Polar3d(Polar3d src) Parameters src Polar3d The source Polar3d object to copy Polar3d(Vec3d) Ctor. public Polar3d(Vec3d src) Parameters src Vec3d src Polar3d(double, double, double) Ctor. public Polar3d(double r, double angle_rad, double z) Parameters r double r angle_rad double angle_rad z double z Polar3d(BinaryReader) Ctor by bytes: r = reader.ReadDouble(); angle = reader.ReadDouble(); z = reader.ReadDouble(); public Polar3d(BinaryReader reader) Parameters reader BinaryReader reader Polar3d(string) Ctor by string. The format is (r,angle_rad,z). public Polar3d(string src) Parameters src string src Fields angle_rad Angle in radian. public double angle_rad Field Value double r Radius. public double r Field Value double z Height. public double z Field Value double Properties Angle_deg Angle in degree. public double Angle_deg { get; set; } Property Value double Angle_rad Angle in radian. public double Angle_rad { get; set; } Property Value double CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string IsAllFinite public bool IsAllFinite { get; } Property Value bool Is r,angle_rad,z all finite. IsAllNaN public bool IsAllNaN { get; } Property Value bool is r,angle_rad,z all NaN. IsAnyNaN public bool IsAnyNaN { get; } Property Value bool Is any of {r,angle_rad,z} NaN. NaN public static Polar3d NaN { get; } Property Value Polar3d Generate Polar3d(double.NaN, double.NaN, double.NaN). NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(double) * 3. R Radius. public double R { get; set; } Property Value double StaticCsvTitleText Gets the CSV column headers for Polar3d objects public static string StaticCsvTitleText { get; } Property Value string Text Gets or sets the text representation of this Polar3d object public string Text { get; set; } Property Value string Z Height. public double Z { get; set; } Property Value double Zero public static Polar3d Zero { get; } Property Value Polar3d Generate Polar3d(0, 0, 0). Methods Dot(Polar3d) this dot src. public double Dot(Polar3d src) Parameters src Polar3d src Returns double dotted value Equals(Polar3d) public bool Equals(Polar3d other) Parameters other Polar3d Returns bool 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) public void ExpandToBox3d(Box3d dst) Parameters dst Box3d GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. Interpolate(Polar3d, Polar3d, double) Interpolate from a to b with ratio alpha:(1-alpha). public static Polar3d Interpolate(Polar3d a, Polar3d b, double alpha) Parameters a Polar3d a b Polar3d b alpha double ratio Returns Polar3d a * (1 - alpha) + b * alpha Parse(string) If src is not null and not empty string, return Polar3d(string); otherwise return null. public static Polar3d Parse(string src) Parameters src string src Returns Polar3d parsed Polar3d ReadBin(BinaryReader) public void ReadBin(BinaryReader reader) Parameters reader BinaryReader Set(Polar3d) Set values by copy. public Polar3d Set(Polar3d src) Parameters src Polar3d src Returns Polar3d this Set(double, double, double) Set values. public Polar3d Set(double r, double angle_rad, double z) Parameters r double r angle_rad double angle_rad z double z Returns Polar3d this Set(double[]) Set values by array. public Polar3d Set(double[] src) Parameters src double[] double[]{r,angle_rad,z} Returns Polar3d this SetEachNanToZero() Set NaN to 0 for each value. public Polar3d SetEachNanToZero() Returns Polar3d this ToArray() return new double[] { r, angle_rad, z } public double[] ToArray() Returns double[] { r, angle_rad, z } ToBuf(double[]) Set r,angle_rad,z to the dst array. public void ToBuf(double[] dst) Parameters dst double[] dst ToBuf(double[], ref int) Set r,angle_rad,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 ToString() To representative string with format:(r,angle_rad,z). public override string ToString() Returns string Representative string ToString(string) To string with format: (r,angle_rad,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 polar coordinates 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 polar coordinates TryParse(string, out Polar3d) Attempts to parse a string into a Polar3d object public static bool TryParse(string src, out Polar3d dst) Parameters src string The string to parse dst Polar3d When this method returns, contains the Polar3d object if parsing succeeded, or null if parsing failed Returns bool true if parsing succeeded; otherwise, false WriteBin(BinaryWriter) Output to bytes: writer.Write(r); writer.Write(angle); writer.Write(z); public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter writer Operators operator +(Polar3d, Polar3d) Plus. public static Polar3d operator +(Polar3d a, Polar3d b) Parameters a Polar3d a b Polar3d b Returns Polar3d new Polar3d(a.r + b.r, a.angle_rad + b.angle_rad, a.z + b.z) operator /(Polar3d, double) Get a new object from a scaled by 1/d. public static Polar3d operator /(Polar3d a, double d) Parameters a Polar3d a d double denominator Returns Polar3d result operator *(Polar3d, double) Scale a by s. public static Polar3d operator *(Polar3d a, double s) Parameters a Polar3d vector s double scale Returns Polar3d new Polar3d(a.r * s, a.angle_rad * s, a.z * s) operator -(Polar3d, Polar3d) Minus. public static Polar3d operator -(Polar3d a, Polar3d b) Parameters a Polar3d a b Polar3d b Returns Polar3d new Polar3d(a.r - b.r, a.angle_rad - b.angle_rad, a.z - b.z) operator -(Polar3d) Get negate vector. public static Polar3d operator -(Polar3d src) Parameters src Polar3d src Returns Polar3d new Polar3d(-src.r, -src.angle_rad, -src.z)"
},
"api/Hi.Geom.Resolution.IPolarResolution2d.html": {
"href": "api/Hi.Geom.Resolution.IPolarResolution2d.html",
"title": "Interface IPolarResolution2d | HiAPI-C# 2025",
"summary": "Interface IPolarResolution2d Namespace Hi.Geom.Resolution Assembly HiGeom.dll Interface for objects that control STL resolution parameters for both linear and angular measurements. public interface IPolarResolution2d Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AngleResolution_deg Gets or sets the angular resolution in degrees. double AngleResolution_deg { get; set; } Property Value double AngleResolution_rad Gets or sets the angular resolution in radians. double AngleResolution_rad { get; set; } Property Value double LinearResolution_mm Gets or sets the linear resolution in millimeters. double LinearResolution_mm { get; set; } Property Value double"
},
"api/Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html": {
"href": "api/Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html",
"title": "Interface IPolarResolution2dSourceProperty | HiAPI-C# 2025",
"summary": "Interface IPolarResolution2dSourceProperty Namespace Hi.Geom.Resolution Assembly HiGeom.dll Provides a property for the source of polar resolution. public interface IPolarResolution2dSourceProperty Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PolarResolution2dSource The provider of IPolarResolution2d. Func<IPolarResolution2d> PolarResolution2dSource { get; set; } Property Value Func<IPolarResolution2d>"
},
"api/Hi.Geom.Resolution.PolarResolution2d.html": {
"href": "api/Hi.Geom.Resolution.PolarResolution2d.html",
"title": "Class PolarResolution2d | HiAPI-C# 2025",
"summary": "Class PolarResolution2d Namespace Hi.Geom.Resolution Assembly HiGeom.dll Polar resolution for generating geometry in polar coordinate. public class PolarResolution2d : IPolarResolution2d, IMakeXmlSource, IToXElement Inheritance object PolarResolution2d Implements IPolarResolution2d IMakeXmlSource IToXElement 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PolarResolution2d() Initializes a new instance of the PolarResolution2d class. public PolarResolution2d() PolarResolution2d(double, double) Initializes a new instance of the PolarResolution2d class with values. public PolarResolution2d(double linearResolution_mm, double angleResolution_rad) Parameters linearResolution_mm double Linear resolution in millimeters angleResolution_rad double Angular resolution in radians PolarResolution2d(XElement) Initializes a new instance of the PolarResolution2d class from XML data. public PolarResolution2d(XElement src) Parameters src XElement The XML element containing polar resolution data. Properties AngleResolution_deg Gets or sets the angular resolution in degrees. public double AngleResolution_deg { get; set; } Property Value double AngleResolution_rad Gets or sets the angular resolution in radians. public double AngleResolution_rad { get; set; } Property Value double LinearResolution_mm Gets or sets the linear resolution in millimeters. public double LinearResolution_mm { get; set; } Property Value double 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Geom.Resolution.html": {
"href": "api/Hi.Geom.Resolution.html",
"title": "Namespace Hi.Geom.Resolution | HiAPI-C# 2025",
"summary": "Namespace Hi.Geom.Resolution Classes PolarResolution2d Polar resolution for generating geometry in polar coordinate. Interfaces IPolarResolution2d Interface for objects that control STL resolution parameters for both linear and angular measurements. IPolarResolution2dSourceProperty Provides a property for the source of polar resolution."
},
"api/Hi.Geom.Segment3d.html": {
"href": "api/Hi.Geom.Segment3d.html",
"title": "Class Segment3d | HiAPI-C# 2025",
"summary": "Class Segment3d Namespace Hi.Geom Assembly HiGeom.dll Represents a 3D line segment defined by two endpoints. public class Segment3d : IExpandToBox3d, IEquatable<Segment3d>, IBinaryIo, IWriteBin, IEnumerable<Vec3d>, IEnumerable Inheritance object Segment3d Implements IExpandToBox3d IEquatable<Segment3d> IBinaryIo IWriteBin IEnumerable<Vec3d> IEnumerable 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) EnumerableUtil.GetIntensiveItems<TItem>(IEnumerable<TItem>, double, Func<TItem, double>) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) MathUtil.Average(IEnumerable<Vec3d>) MathUtil.Sum(IEnumerable<Vec3d>) Tri3dUtil.GenTrisByFan(IEnumerable<Vec3d>, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Segment3d() Initializes a new instance of the Segment3d class. public Segment3d() Segment3d(Vec3d, Vec3d) Initializes a new instance of the Segment3d class with endpoints. public Segment3d(Vec3d begin, Vec3d end) Parameters begin Vec3d Start point end Vec3d End point Properties Arrow Gets the arrow vector from Begin to End. public Vec3d Arrow { get; } Property Value Vec3d Begin The starting point of the segment. public Vec3d Begin { get; set; } Property Value Vec3d Center Gets the midpoint of the segment. public Vec3d Center { get; } Property Value Vec3d End The ending point of the segment. public Vec3d End { get; set; } Property Value Vec3d Length Gets the length of the segment. public double Length { get; } Property Value double LengthSquare The squared length of the segment. public double LengthSquare { get; } Property Value double Methods ClosestPoint(Vec3d) Gets the closest point on the segment to the specified point. public Vec3d ClosestPoint(Vec3d point) Parameters point Vec3d Point to find closest point to. Returns Vec3d Closest point on the segment. Equals(Segment3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Segment3d other) Parameters other Segment3d 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 GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator<Vec3d> GetEnumerator() Returns IEnumerator<Vec3d> An enumerator that can be used to iterate through the collection. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. PointAt(double) Gets a point on the segment at the specified parameter t (0 <= t <= 1). public Vec3d PointAt(double t) Parameters t double Parameter value between 0 and 1. Returns Vec3d Point on the segment. ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Swap() Swaps the begin and end points of the segment. public void Swap() ToString() Returns a string representation of the segment. public override string ToString() Returns string 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.Geom.Solvers.BinarySolverUtil.html": {
"href": "api/Hi.Geom.Solvers.BinarySolverUtil.html",
"title": "Class BinarySolverUtil | HiAPI-C# 2025",
"summary": "Class BinarySolverUtil Namespace Hi.Geom.Solvers Assembly HiGeom.dll Utility class providing binary solving methods for one-dimensional functions. public static class BinarySolverUtil Inheritance object BinarySolverUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CenterSplitionSolve(Func<double, double>, Range<double>, Vec2d, double, double, Func<double, bool>, int) Efficient center splitting solve that uses an initial point (x0, y0) within the boundary to save one function evaluation. The algorithm intelligently chooses the optimal boundary points based on the initial point position. public static IEnumerable<BinarySolvingEntry> CenterSplitionSolve(Func<double, double> func, Range<double> xBoundary, Vec2d x0y0, double yTarget, double convergenceLimit, Func<double, bool> isYAcceptableFunc, int maxIteration = 12) Parameters func Func<double, double> The function to solve xBoundary Range<double> Boundary of the search interval. The order of Min and Max is not mattered, i.e. they can be reversed. x0y0 Vec2d Initial x,y value (x0,func(x0)) yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) isYAcceptableFunc Func<double, bool> Function to determine if a y value is acceptable maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution CenterSplitionSolve(Func<double, double>, Range<double>, double, double, double, Func<double, bool>, int) Solves for a target y-value using the center splitting method with a boundary range and initial x value. public static IEnumerable<BinarySolvingEntry> CenterSplitionSolve(Func<double, double> func, Range<double> xBoundary, double x0, double yTarget, double convergenceLimit, Func<double, bool> isYAcceptableFunc, int maxIteration = 12) Parameters func Func<double, double> The function to solve xBoundary Range<double> Boundary of the search interval x0 double Initial x value (must be within the boundary) yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) isYAcceptableFunc Func<double, bool> Function to determine if a y value is acceptable maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution CenterSplitionSolve(Func<double, double>, Range<double>, double, double, Func<double, bool>, int) Solves for a target y-value using the center splitting method with a boundary range. public static IEnumerable<BinarySolvingEntry> CenterSplitionSolve(Func<double, double> func, Range<double> xBoundary, double yTarget, double convergenceLimit, Func<double, bool> isYAcceptableFunc, int maxIteration = 12) Parameters func Func<double, double> The function to solve xBoundary Range<double> Boundary of the search interval yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) isYAcceptableFunc Func<double, bool> Function to determine if a y value is acceptable maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution CenterSplitionSolve(Func<double, double>, double, double, double, double, double, Func<double, bool>, int) Solves for a target y-value using the center splitting method. public static IEnumerable<BinarySolvingEntry> CenterSplitionSolve(Func<double, double> func, double x0, double y0, double xBoundary, double yTarget, double convergenceLimit, Func<double, bool> isYAcceptableFunc, int maxIteration = 12) Parameters func Func<double, double> The function to solve x0 double Initial x value y0 double Initial y value (func(x0)) xBoundary double extended side boundary yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) isYAcceptableFunc Func<double, bool> Function to determine if a y value is acceptable maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution CenterSplitionSolveWithY1(Func<double, double>, double, double, double, double, double, double, Func<double, bool>, int) Solves for a target y-value using the center splitting method with a pre-calculated y1 value. public static IEnumerable<BinarySolvingEntry> CenterSplitionSolveWithY1(Func<double, double> func, double x0, double y0, double x1, double y1, double yTarget, double convergenceLimit, Func<double, bool> isYAcceptableFunc, int maxIteration = 12) Parameters func Func<double, double> The function to solve x0 double Initial x value y0 double Initial y value (func(x0)) x1 double Second x value y1 double Second y value (func(x1)) yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) isYAcceptableFunc Func<double, bool> Function to determine if a y value is acceptable maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution SlopeSolve(Func<double, double>, double, double, double, double, double, int) Solves for a target y-value using the slope method. public static IEnumerable<BinarySolvingEntry> SlopeSolve(Func<double, double> func, double x0, double y0, double x1, double yTarget, double convergenceLimit, int maxIteration = 12) Parameters func Func<double, double> The function to solve x0 double Initial x value y0 double Initial y value (func(x0)) x1 double Second x value yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution SlopeSolveWithY1(Func<double, double>, double, double, double, double, double, double, int) Solves for a target y-value using the slope method with a pre-calculated y1 value. public static IEnumerable<BinarySolvingEntry> SlopeSolveWithY1(Func<double, double> func, double x0, double y0, double x1, double y1, double yTarget, double convergenceLimit, int maxIteration = 12) Parameters func Func<double, double> The function to solve x0 double Initial x value y0 double Initial y value (func(x0)) x1 double Second x value y1 double Second y value (func(x1)) yTarget double Target y value to solve for convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<BinarySolvingEntry> A sequence of solving status objects showing the progress of the solution"
},
"api/Hi.Geom.Solvers.BinarySolvingEntry.html": {
"href": "api/Hi.Geom.Solvers.BinarySolvingEntry.html",
"title": "Class BinarySolvingEntry | HiAPI-C# 2025",
"summary": "Class BinarySolvingEntry Namespace Hi.Geom.Solvers Assembly HiGeom.dll Represents the status of a binary solving process. Contains information about the current state of the solver including best solutions and error metrics. public class BinarySolvingEntry Inheritance object BinarySolvingEntry Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BinarySolvingEntry(SolvingStatus, int, double, double, double, double, double, double) Initializes a new instance of the BinarySolvingEntry class. public BinarySolvingEntry(SolvingStatus solvingResultStatus, int iteration, double bestX, double bestY, double minBias, double workingX, double workingY, double bias) Parameters solvingResultStatus SolvingStatus The current status of the solving process iteration int The current iteration count bestX double The X-coordinate of the best solution found bestY double The Y-coordinate of the best solution found minBias double The minimum bias (error) found workingX double The current working X-coordinate workingY double The current working Y-coordinate bias double The current bias (error) Properties BestX Gets or sets the X-coordinate of the best solution found. public double BestX { get; set; } Property Value double BestY Gets or sets the Y-coordinate of the best solution found. public double BestY { get; set; } Property Value double Bias Gets or sets the current bias (error). public double Bias { get; set; } Property Value double Iteration Gets or sets the current iteration count. public int Iteration { get; set; } Property Value int MinBias Gets or sets the minimum bias (error) found. public double MinBias { get; set; } Property Value double SolvingStatus Gets or sets the current status of the solving process. public SolvingStatus SolvingStatus { get; set; } Property Value SolvingStatus WorkingX Gets or sets the current working X-coordinate. public double WorkingX { get; set; } Property Value double WorkingY Gets or sets the current working Y-coordinate. public double WorkingY { get; set; } Property Value double 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.Solvers.DeepSolvingStatus.html": {
"href": "api/Hi.Geom.Solvers.DeepSolvingStatus.html",
"title": "Class DeepSolvingStatus | HiAPI-C# 2025",
"summary": "Class DeepSolvingStatus Namespace Hi.Geom.Solvers Assembly HiGeom.dll Represents the status of a deep solving process with multiple parameters. Contains detailed information about the solving process including iterations, convergence, and Jacobian matrix. public class DeepSolvingStatus Inheritance object DeepSolvingStatus Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DeepSolvingStatus(int, int, int, double, double[], double[], double[,], double[], double, SolvingTerm) Initializes a new instance of the DeepSolvingStatus class. public DeepSolvingStatus(int totalIteration, int directIteration, int slowIteration, double convergence, double[] para, double[] bias, double[,] jacob, double[] bestPara, double bestConvergence, SolvingTerm solvingTerm) Parameters totalIteration int The total number of iterations performed directIteration int The number of direct method iterations performed slowIteration int The number of slow method iterations performed convergence double The current convergence value para double[] The current parameter values bias double[] The current bias values jacob double[,] The Jacobian matrix bestPara double[] The best parameter values found bestConvergence double The best convergence value found solvingTerm SolvingTerm The current solving term Fields bestConvergence The best convergence value found so far. public double bestConvergence Field Value double bestPara The best parameter values found so far. public double[] bestPara Field Value double[] bias The current bias (error) values. public double[] bias Field Value double[] convergence The current convergence value (error metric). public double convergence Field Value double directIteration The number of direct method iterations performed. public int directIteration Field Value int jacob The Jacobian matrix for the current iteration. public double[,] jacob Field Value double[,] para The current parameter values. public double[] para Field Value double[] slowIteration The number of slow method iterations performed. public int slowIteration Field Value int solvingTerm The current solving term (method) being used. public SolvingTerm solvingTerm Field Value SolvingTerm totalIteration The total number of iterations performed. public int totalIteration Field 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. ToString(string) Returns a string representation of the solving status with the specified numeric format. public string ToString(string format) Parameters format string The numeric format string to use for formatting numeric values Returns string A string representation of the solving status"
},
"api/Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html": {
"href": "api/Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html",
"title": "Delegate NumericalSolver.GetRepondsDelegate | HiAPI-C# 2025",
"summary": "Delegate NumericalSolver.GetRepondsDelegate Namespace Hi.Geom.Solvers Assembly HiGeom.dll Delegate for getting response values from the system being solved. public delegate double[] NumericalSolver.GetRepondsDelegate() Returns double[] The response values from the system Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html": {
"href": "api/Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html",
"title": "Delegate NumericalSolver.SetParasDelegate | HiAPI-C# 2025",
"summary": "Delegate NumericalSolver.SetParasDelegate Namespace Hi.Geom.Solvers Assembly HiGeom.dll Delegate for setting parameter values in the system being solved. public delegate void NumericalSolver.SetParasDelegate(double[] paras) Parameters paras double[] The parameter values to set Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Geom.Solvers.NumericalSolver.html": {
"href": "api/Hi.Geom.Solvers.NumericalSolver.html",
"title": "Class NumericalSolver | HiAPI-C# 2025",
"summary": "Class NumericalSolver Namespace Hi.Geom.Solvers Assembly HiGeom.dll A numerical solver for systems of equations using the Jacobian matrix. public class NumericalSolver Inheritance object NumericalSolver Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NumericalSolver(SetParasDelegate, int, GetRepondsDelegate, int, double, double, int) Initializes a new instance of the NumericalSolver class. public NumericalSolver(NumericalSolver.SetParasDelegate setParasFunc, int paraNum, NumericalSolver.GetRepondsDelegate getResponsesFunc, int targetNum, double partialInterval, double tolerance, int iterationLimit = 12) Parameters setParasFunc NumericalSolver.SetParasDelegate Function to set parameter values paraNum int Number of parameters in the system getResponsesFunc NumericalSolver.GetRepondsDelegate Function to get response values targetNum int Number of target values (equations) in the system partialInterval double Interval for calculating partial derivatives tolerance double Tolerance for convergence iterationLimit int Maximum number of iterations allowed Properties GetResponsesFunc Gets the function used to get response values. public NumericalSolver.GetRepondsDelegate GetResponsesFunc { get; } Property Value NumericalSolver.GetRepondsDelegate HalfPartialInterval Gets half of the partial interval value for optimization. public double HalfPartialInterval { get; } Property Value double IterationLimit Gets or sets the maximum number of iterations allowed. public int IterationLimit { get; set; } Property Value int ParaNum Gets or sets the number of parameters in the system. public int ParaNum { get; set; } Property Value int Paras Sets the parameter values in the system being solved. public double[] Paras { set; } Property Value double[] PartialInterval Gets or sets the interval used for calculating partial derivatives. public double PartialInterval { get; set; } Property Value double Responses Gets the response values from the system being solved. public double[] Responses { get; } Property Value double[] SetParasFunc Gets the function used to set parameter values. public NumericalSolver.SetParasDelegate SetParasFunc { get; } Property Value NumericalSolver.SetParasDelegate TargetNum Gets or sets the number of target values (equations) in the system. public int TargetNum { get; set; } Property Value int Tolerance Gets or sets the tolerance for convergence. public double Tolerance { get; set; } Property Value double Methods ErrorFunc(double[], double[]) Calculates the error (difference) between the system responses and target values. public double[] ErrorFunc(double[] paras, double[] targets) Parameters paras double[] The parameter values to use targets double[] The target values to compare against Returns double[] An array of error values Solve(double[], double[], out double, out double[,]) Solves the system of equations using numerical methods. public SolvingStatus Solve(double[] paras, double[] targets, out double minBias, out double[,] jacob) Parameters paras double[] The initial parameter values, will be modified during solving targets double[] The target values to solve for minBias double Output parameter that will contain the minimum bias (error) found jacob double[,] Output parameter that will contain the final Jacobian matrix Returns SolvingStatus The status of the solving process Remarks Note that the paras array will be modified during solving."
},
"api/Hi.Geom.Solvers.SolverUtil.html": {
"href": "api/Hi.Geom.Solvers.SolverUtil.html",
"title": "Class SolverUtil | HiAPI-C# 2025",
"summary": "Class SolverUtil Namespace Hi.Geom.Solvers Assembly HiGeom.dll Utility class providing advanced numerical solving methods for systems of equations. public static class SolverUtil Inheritance object SolverUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties LinearSlowIterationFunc Gets a linear function for slow iteration convergence. public static Func<double, double> LinearSlowIterationFunc { get; } Property Value Func<double, double> LogSlowIterationFunc Gets a logarithmic function for slow iteration convergence. public static Func<double, double> LogSlowIterationFunc { get; } Property Value Func<double, double> Methods DeepSolveArray(Func<double[], double[]>, int, double[], double[], double, Func<double, double>, int, int, int) Performs deep solving of a function with multiple parameters. public static IEnumerable<DeepSolvingStatus> DeepSolveArray(Func<double[], double[]> func, int outputNum, double[] para, double[] dpara, double convergenceLimit, Func<double, double> slowIterationFunc = null, int maxDirectIteration = 6, int maxSlowIteration = 6, int maxTotalIteration = 1200) Parameters func Func<double[], double[]> The function to solve. outputNum int The number of output values. para double[] The initial parameter values. dpara double[] The parameter delta values. convergenceLimit double The convergence limit. slowIterationFunc Func<double, double> The function for slow iteration. maxDirectIteration int The maximum number of direct iterations. maxSlowIteration int The maximum number of slow iterations. maxTotalIteration int The maximum total number of iterations. Returns IEnumerable<DeepSolvingStatus> An enumerable of deep solving status objects. GetApproxInv(double[,], double) Calculates an approximate inverse of a matrix using SVD decomposition. public static double[,] GetApproxInv(double[,] mat, double availableAccumulatedWeightRatio = 0.99999999) Parameters mat double[,] The input matrix. availableAccumulatedWeightRatio double The ratio of accumulated weights to consider. Returns double[,] The approximate inverse matrix. GetApproxInvAndOrthogonalPaces(double[,], out List<(double eigenValue, double[] v)>) Calculates an approximate inverse of a matrix and returns orthogonal paces using SVD decomposition. public static double[,] GetApproxInvAndOrthogonalPaces(double[,] mat, out List<(double eigenValue, double[] v)> orthogonalPaces) Parameters mat double[,] The input matrix. orthogonalPaces List<(double eigenValue, double[] v)> The output list of orthogonal paces with eigenvalues and eigenvectors. Returns double[,] The approximate inverse matrix. GetBiases(Func<double[], double[]>, double[], double[]) Calculates the bias values between function outputs and target values. public static double[] GetBiases(Func<double[], double[]> func, double[] paras, double[] targets) Parameters func Func<double[], double[]> The function to evaluate. paras double[] The parameter values. targets double[] The target values. Returns double[] The bias values. GetCosSinTermRotationMat4d(Vec3d, double, double) Gets a rotation matrix from an axis and precomputed cosine/sine values using Rodrigues' rotation formula. public static Mat4d GetCosSinTermRotationMat4d(Vec3d axis, double cos, double sin) Parameters axis Vec3d The rotation axis (should be normalized). cos double The cosine of the rotation angle. sin double The sine of the rotation angle. Returns Mat4d A 4x4 rotation matrix. GetCosSinTermRotationMat4d(Vec3d, double, double, Vec3d) Gets a rotation matrix from an axis, precomputed cosine/sine values, and a pivot point. public static Mat4d GetCosSinTermRotationMat4d(Vec3d axis, double cos, double sin, Vec3d pivot) Parameters axis Vec3d The rotation axis (should be normalized). cos double The cosine of the rotation angle. sin double The sine of the rotation angle. pivot Vec3d The pivot point for the rotation. Returns Mat4d A 4x4 rotation matrix about the pivot point. GetJacobMat(Func<double[], double[]>, double[], double[], int) Calculates the Jacobian matrix for a function. public static double[,] GetJacobMat(Func<double[], double[]> func, double[] paras, double[] dparas, int targetNum) Parameters func Func<double[], double[]> The function to evaluate. paras double[] The parameter values. dparas double[] The parameter delta values. targetNum int The number of target values. Returns double[,] The Jacobian matrix. GetParasCompensation(Func<double[], double[]>, double[], double[], double[], out double[,]) Gets parameter compensation values based on the function, current parameters, parameter deltas, and target values. public static double[] GetParasCompensation(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, out double[,] jacob) Parameters func Func<double[], double[]> The function to evaluate. paras double[] The current parameter values. dparas double[] The parameter delta values. targets double[] The target values. jacob double[,] The output Jacobian matrix. Returns double[] The parameter compensation values. GetParasCompensation(Func<double[], double[]>, double[], double[], double[], double[], out double[,]) Gets parameter compensation values based on the function, current parameters, parameter deltas, target values, and biases. public static double[] GetParasCompensation(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, double[] biases, out double[,] jacob) Parameters func Func<double[], double[]> The function to evaluate. paras double[] The current parameter values. dparas double[] The parameter delta values. targets double[] The target values. biases double[] The bias values. jacob double[,] The output Jacobian matrix. Returns double[] The parameter compensation values. Solve(Func<double, double>, double, double, double, double, int) Solves a one-dimensional function for a target value. public static IEnumerable<SolvingResult> Solve(Func<double, double> func, double para, double dpara, double target, double convergenceLimit, int maxIteration = 12) Parameters func Func<double, double> The function to solve para double Initial parameter value dpara double Parameter step size for calculating derivatives target double Target value to solve for convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<SolvingResult> A sequence of solving result objects showing the progress of the solution SolveArray(Func<double[], double[]>, double[], double[], double[], Func<double[], double>, double, int) Solves a multi-dimensional function for specified target values with a custom convergence function. public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, Func<double[], double> convergenceFunc, double convergenceLimit, int maxIteration = 12) Parameters func Func<double[], double[]> The function to solve paras double[] Initial parameter values dparas double[] Parameter step sizes for calculating derivatives targets double[] Target values to solve for convergenceFunc Func<double[], double> Function to calculate convergence from biases convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<SolvingResult> A sequence of solving result objects showing the progress of the solution SolveArray(Func<double[], double[]>, double[], double[], int, double, int) Solves a multi-dimensional function with default convergence function. public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, int funcDstNum, double convergenceLimit, int maxIteration = 12) Parameters func Func<double[], double[]> The function to solve paras double[] Initial parameter values dparas double[] Parameter step sizes for calculating derivatives funcDstNum int Number of output values from the function convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<SolvingResult> A sequence of solving result objects showing the progress of the solution SolveArray(Func<double[], double[]>, double[], double[], int, Func<double[], double>, double, int) Solves a multi-dimensional function with a specified convergence function. public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, int funcDstNum, Func<double[], double> convergenceFunc, double convergenceLimit, int maxIteration = 12) Parameters func Func<double[], double[]> The function to solve paras double[] Initial parameter values dparas double[] Parameter step sizes for calculating derivatives funcDstNum int Number of output values from the function convergenceFunc Func<double[], double> Function to calculate convergence from biases convergenceLimit double Convergence limit (acceptable error) maxIteration int Maximum number of iterations Returns IEnumerable<SolvingResult> A sequence of solving result objects showing the progress of the solution Test() Internal Use Only public static void Test() Test2() Internal Use Only public static void Test2()"
},
"api/Hi.Geom.Solvers.SolvingResult.html": {
"href": "api/Hi.Geom.Solvers.SolvingResult.html",
"title": "Class SolvingResult | HiAPI-C# 2025",
"summary": "Class SolvingResult Namespace Hi.Geom.Solvers Assembly HiGeom.dll Represents the result of a solving process. Contains detailed information about the solution including parameters, biases, and convergence metrics. public class SolvingResult Inheritance object SolvingResult Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SolvingResult(SolvingStatus, double[], double[], double, int, int, double[], double[,]) Initializes a new instance of the SolvingResult class. public SolvingResult(SolvingStatus solvingResultStatus, double[] workingParas, double[] biases, double convergence, int iteration, int continuousSlowMomentumIteration, double[] paraCompensationOnNext, double[,] jacob) Parameters solvingResultStatus SolvingStatus The status of the solving process workingParas double[] The current working parameter values biases double[] The bias values for each constraint convergence double The convergence metric iteration int The total number of iterations performed continuousSlowMomentumIteration int The number of continuous iterations using slow momentum method paraCompensationOnNext double[] Parameter compensation values for the next iteration jacob double[,] The Jacobian matrix Fields biases The bias (error) values for each constraint. public double[] biases Field Value double[] continuousSlowMomentumIteration The number of continuous iterations using slow momentum method. public int continuousSlowMomentumIteration Field Value int convergence The convergence metric (overall error). public double convergence Field Value double iteration The total number of iterations performed. public int iteration Field Value int jacob The Jacobian matrix for the current iteration. public double[,] jacob Field Value double[,] paraCompensationOnNext Parameter compensation values to apply in the next iteration. public double[] paraCompensationOnNext Field Value double[] solvingResultStatus The status of the solving process. public SolvingStatus solvingResultStatus Field Value SolvingStatus workingParas The current working parameter values. public double[] workingParas Field Value double[] Methods ToString(string) Returns a string representation of the solving result with the specified numeric format. public string ToString(string format) Parameters format string The numeric format string to use for formatting numeric values Returns string A string representation of the solving result"
},
"api/Hi.Geom.Solvers.SolvingStatus.html": {
"href": "api/Hi.Geom.Solvers.SolvingStatus.html",
"title": "Enum SolvingStatus | HiAPI-C# 2025",
"summary": "Enum SolvingStatus Namespace Hi.Geom.Solvers Assembly HiGeom.dll Enumeration of possible statuses for solving results. public enum SolvingStatus Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Iterating = 4 Currently in the process of iterating. NotCal = 0 Not calculated yet. OverIteration = 3 Exceeded maximum number of iterations. Singular = 2 Singular condition encountered during solving. Solved = 1 Successfully solved."
},
"api/Hi.Geom.Solvers.SolvingTerm.html": {
"href": "api/Hi.Geom.Solvers.SolvingTerm.html",
"title": "Enum SolvingTerm | HiAPI-C# 2025",
"summary": "Enum SolvingTerm Namespace Hi.Geom.Solvers Assembly HiGeom.dll Enumeration of solving terms or methods used in geometric solvers. public enum SolvingTerm Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Direct = 1 Direct solving method, typically using analytical solutions. Side = 2 Side solving method, typically used for auxiliary calculations. Slow = 0 Slow solving method, typically using iterative approaches."
},
"api/Hi.Geom.Solvers.html": {
"href": "api/Hi.Geom.Solvers.html",
"title": "Namespace Hi.Geom.Solvers | HiAPI-C# 2025",
"summary": "Namespace Hi.Geom.Solvers Classes BinarySolverUtil Utility class providing binary solving methods for one-dimensional functions. BinarySolvingEntry Represents the status of a binary solving process. Contains information about the current state of the solver including best solutions and error metrics. DeepSolvingStatus Represents the status of a deep solving process with multiple parameters. Contains detailed information about the solving process including iterations, convergence, and Jacobian matrix. NumericalSolver A numerical solver for systems of equations using the Jacobian matrix. SolverUtil Utility class providing advanced numerical solving methods for systems of equations. SolvingResult Represents the result of a solving process. Contains detailed information about the solution including parameters, biases, and convergence metrics. Enums SolvingStatus Enumeration of possible statuses for solving results. SolvingTerm Enumeration of solving terms or methods used in geometric solvers. Delegates NumericalSolver.GetRepondsDelegate Delegate for getting response values from the system being solved. NumericalSolver.SetParasDelegate Delegate for setting parameter values in the system being solved."
},
"api/Hi.Geom.Stl.StlType.html": {
"href": "api/Hi.Geom.Stl.StlType.html",
"title": "Enum Stl.StlType | HiAPI-C# 2025",
"summary": "Enum Stl.StlType Namespace Hi.Geom Assembly HiGeom.dll Stl file format. public enum Stl.StlType Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ASCII = 1 ASCII format BINARY = 2 Binary format UNKNOWN = 0 unknown format"
},
"api/Hi.Geom.Stl.html": {
"href": "api/Hi.Geom.Stl.html",
"title": "Class Stl | HiAPI-C# 2025",
"summary": "Class Stl Namespace Hi.Geom Assembly HiGeom.dll STL (stereolithography). Composed by Triangles. Provide Stl File R/W. public class Stl : IGetStl, IExpandToBox3d Inheritance object Stl Implements IGetStl IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Stl(Box3d) Ctor by box. public Stl(Box3d box) Parameters box Box3d box Stl(Stl) Copy ctor. public Stl(Stl stl) Parameters stl Stl src stl Stl(params Stl[]) Ctor. Copy triangles from stls. public Stl(params Stl[] stls) Parameters stls Stl[] source stls Stl(IEnumerable<Tri3d>) Ctor. The content of tris is copied by this.tris = new List(tris). public Stl(IEnumerable<Tri3d> tris) Parameters tris IEnumerable<Tri3d> triangles Stl(Stream, StlType) Ctor by stream. public Stl(Stream stream, Stl.StlType stlType = StlType.UNKNOWN) Parameters stream Stream stl data stream stlType Stl.StlType stl data format Stl(int) Ctor with preserved triangle grid capacity. public Stl(int cap = 16) Parameters cap int Preserved triangle grid capacity Stl(string, StlType) ctor by file. public Stl(string file, Stl.StlType stlType = StlType.UNKNOWN) Parameters file string stl file stlType Stl.StlType stl file format Properties Area Gets the total surface area of the STL model public double Area { get; } Property Value double Tris public List<Tri3d> Tris { get; set; } Property Value List<Tri3d> Triangle grid of this. Methods 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 IsAscii(Stream) Is the stream ascii format stl. public static bool IsAscii(Stream stream) Parameters stream Stream stream Returns bool true if the stream is ascii format stl; otherwise, return false. IsAscii(string) Is the file ascii format stl. public static bool IsAscii(string file) Parameters file string file Returns bool true if the file is ascii format stl; otherwise, return false. ReBuildNormal() Re-build normal for all triangles. public void ReBuildNormal() Transform(Mat4d) Trasnform all the triangles by the given matrix. public Stl Transform(Mat4d mat) Parameters mat Mat4d matrix Returns Stl this WriteBin(BinaryWriter) Write this to the writer with binary format. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter writer WriteBin(string) Write this to the file with binary format. public void WriteBin(string file) Parameters file string dst file"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Ctor. public StlFile(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML baseDirectory string Base directory path progress IProgress<IMessage> 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",
"title": "Class StlFuncHost | HiAPI-C# 2025",
"summary": "Class StlFuncHost Namespace Hi.Geom Assembly HiGeom.dll A class that hosts a function to generate STL geometry. public class StlFuncHost : IGetStl Inheritance object StlFuncHost Implements IGetStl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods PairZrUtil.GetZrList(IGetStl) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StlFuncHost() Default constructor. public StlFuncHost() StlFuncHost(Func<Stl>) Constructor with STL generator function. public StlFuncHost(Func<Stl> stlHostFunc) Parameters stlHostFunc Func<Stl> Function that generates an STL object Properties StlHostFunc Gets or sets the function that generates the STL object. public Func<Stl> StlHostFunc { get; set; } Property Value Func<Stl> Methods GetStl() Gets the STL geometry by invoking the hosted function. public Stl GetStl() Returns Stl The generated STL object"
},
"api/Hi.Geom.StlUtil.html": {
"href": "api/Hi.Geom.StlUtil.html",
"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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<decimal> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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_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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<TopoLine3Hfr> Lines { get; } Property Value IEnumerable<TopoLine3Hfr> 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<decimal> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<TopoLine3Hfr> BackwardLines Field Value List<TopoLine3Hfr> ForwardLines Forward lines (lines starting from this point). Do not modify directly. public readonly List<TopoLine3Hfr> ForwardLines Field Value List<TopoLine3Hfr> 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<TopoTri3Hfr> Tris Field Value List<TopoTri3Hfr> 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_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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<TopoPoint3Hfr> Points { get; } Property Value IEnumerable<TopoPoint3Hfr> 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<decimal> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Vec3Hfr[]>) 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<Vec3Hfr[]> tris) Parameters tris IReadOnlyList<Vec3Hfr[]> Source triangles as arrays of 3 Vec3Hfr. TopoStl3Hfr(IReadOnlyList<Tri3d>, 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<Tri3d> tris, decimal fractionResolution) Parameters tris IReadOnlyList<Tri3d> 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<TopoLine3Hfr>) Checks whether the mesh is seamless. Defect lines are output to dstDefectLines. Corresponds to C++ is_seamless(vector<topo_line3wfr_t*>&). public bool IsSeamless(List<TopoLine3Hfr> dstDefectLines) Parameters dstDefectLines List<TopoLine3Hfr> 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<Tri3d> ToTris() Returns List<Tri3d>"
},
"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++ 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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++ 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<decimal> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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_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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<TopoTri3Hfr> Tris { get; } Property Value IReadOnlyCollection<TopoTri3Hfr> 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",
"title": "Struct Vec3Hfr | HiAPI-C# 2025",
"summary": "Struct Vec3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll 3D vector with Fraction<decimal> elements. Provides unlimited-precision exact arithmetic for geometric computations. Corresponds to C++ vec3<wfr_t>. public struct Vec3Hfr : IEquatable<Vec3Hfr> Implements IEquatable<Vec3Hfr> Inherited Members object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Vec3Hfr(Fraction<decimal>, Fraction<decimal>, Fraction<decimal>) Initializes a new Vec3Hfr with three fraction components. public Vec3Hfr(Fraction<decimal> x, Fraction<decimal> y, Fraction<decimal> z) Parameters x Fraction<decimal> y Fraction<decimal> z Fraction<decimal> Vec3Hfr(Vec3d, decimal) Initializes a new Vec3Hfr from a Vec3d with the specified resolution. Converts each double component to a fraction via Stern-Brocot approximation. public Vec3Hfr(Vec3d src, decimal resolution) Parameters src Vec3d Source double-precision vector. resolution decimal Fraction approximation tolerance. Fields X X component. public Fraction<decimal> X Field Value Fraction<decimal> Y Y component. public Fraction<decimal> Y Field Value Fraction<decimal> Z Z component. public Fraction<decimal> Z Field Value Fraction<decimal> Methods Dot(Vec3Hfr) Dot product. public readonly Fraction<decimal> Dot(Vec3Hfr b) Parameters b Vec3Hfr Returns Fraction<decimal> Equals(Vec3Hfr) Indicates whether the current object is equal to another object of the same type. public readonly bool Equals(Vec3Hfr other) Parameters other Vec3Hfr An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Indicates whether this instance and a specified object are equal. public override readonly bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. Evaluate() Evaluates all components. public Vec3Hfr Evaluate() Returns Vec3Hfr GetCross(Vec3Hfr) Cross product: this x b. Corresponds to C++ get_cross. public readonly Vec3Hfr GetCross(Vec3Hfr b) Parameters b Vec3Hfr Returns Vec3Hfr GetHashCode() Returns the hash code for this instance. public override readonly int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. Pack() Packs (reduces) all components to irreducible form. public Vec3Hfr Pack() Returns Vec3Hfr ToString() Returns the fully qualified type name of this instance. public override readonly string ToString() Returns string The fully qualified type name. ToVec3d() Converts to a Vec3d by evaluating each fraction component. public readonly Vec3d ToVec3d() Returns Vec3d Operators operator +(Vec3Hfr, Vec3Hfr) Addition. public static Vec3Hfr operator +(Vec3Hfr a, Vec3Hfr b) Parameters a Vec3Hfr b Vec3Hfr Returns Vec3Hfr operator ==(Vec3Hfr, Vec3Hfr) Equality operator. public static bool operator ==(Vec3Hfr a, Vec3Hfr b) Parameters a Vec3Hfr b Vec3Hfr Returns bool operator !=(Vec3Hfr, Vec3Hfr) Inequality operator. public static bool operator !=(Vec3Hfr a, Vec3Hfr b) Parameters a Vec3Hfr b Vec3Hfr Returns bool operator *(Fraction<decimal>, Vec3Hfr) Scalar multiplication. public static Vec3Hfr operator *(Fraction<decimal> s, Vec3Hfr a) Parameters s Fraction<decimal> a Vec3Hfr Returns Vec3Hfr operator *(Vec3Hfr, Fraction<decimal>) Scalar multiplication. public static Vec3Hfr operator *(Vec3Hfr a, Fraction<decimal> s) Parameters a Vec3Hfr s Fraction<decimal> Returns Vec3Hfr operator -(Vec3Hfr, Vec3Hfr) Subtraction. public static Vec3Hfr operator -(Vec3Hfr a, Vec3Hfr b) Parameters a Vec3Hfr b Vec3Hfr Returns Vec3Hfr operator -(Vec3Hfr) Negation. public static Vec3Hfr operator -(Vec3Hfr a) Parameters a Vec3Hfr Returns Vec3Hfr"
},
"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 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_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<decimal> 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<decimal> 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<decimal> 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<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."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the TransformationGeom class from XML data. public TransformationGeom(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML element containing the transformation data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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",
"title": "Class Tri3d | HiAPI-C# 2025",
"summary": "Class Tri3d Namespace Hi.Geom Assembly HiGeom.dll Basic 3D Triangle. public class Tri3d : ITri3d, IFlat3d, IExpandToBox3d, IEquatable<Tri3d>, IBinaryIo, IWriteBin Inheritance object Tri3d Implements ITri3d IFlat3d IExpandToBox3d IEquatable<Tri3d> IBinaryIo IWriteBin 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Tri3d(ITri3d) Creates a triangle from an ITri3d interface public Tri3d(ITri3d t) Parameters t ITri3d The source triangle implementing ITri3d Tri3d(ITri3d, Mat4d) Creates a triangle from an ITri3d interface and transforms it using a matrix public Tri3d(ITri3d t, Mat4d mat) Parameters t ITri3d The source triangle implementing ITri3d mat Mat4d The transformation matrix to apply Tri3d(Tri3d, bool) Creates a triangle by copying or referencing another triangle public Tri3d(Tri3d t, bool useRef = false) Parameters t Tri3d The source triangle useRef bool If true, references to the source triangle's vertices and normal are used; otherwise, copies are created Tri3d(Vec3d, Vec3d, Vec3d) Ctor. public Tri3d(Vec3d p0, Vec3d p1, Vec3d p2) Parameters p0 Vec3d apex0 p1 Vec3d apex1 p2 Vec3d apex2 Tri3d(Vec3d, Vec3d, Vec3d, Vec3d) Creates a triangle with the specified vertices and normal vector public Tri3d(Vec3d p0, Vec3d p1, Vec3d p2, Vec3d n) Parameters p0 Vec3d First vertex p1 Vec3d Second vertex p2 Vec3d Third vertex n Vec3d Normal vector Tri3d(tri3d) Ctor. public Tri3d(tri3d src) Parameters src tri3d src Tri3d(bool) Ctor. public Tri3d(bool initAllMemberToNull = false) Parameters initAllMemberToNull bool If true, the three apexes and normal are null; otherwise, they are initialized by the default constructor of Vec3d. Tri3d(BinaryReader) Creates a triangle by reading its data from a binary reader public Tri3d(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Fields n normal vector of this triangle. public Vec3d n Field Value Vec3d ps Points. Three apexs. public Vec3d[] ps Field Value Vec3d[] Properties Area Gets the area of the triangle public double Area { get; } Property Value double NativeByteSize Native byte size. public static int NativeByteSize { get; } Property Value int Methods Equals(Tri3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Tri3d other) Parameters other Tri3d 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 GetApex(int) Gets the specified vertex (apex) of this triangle. public Vec3d GetApex(int i) Parameters i int Index of the vertex (0-2) Returns Vec3d The position of the specified vertex GetDistanceToOrigin() Signed Distance To Origin. public double GetDistanceToOrigin() Returns double Signed Distance To Origin. GetEdgeArrow(int) Gets the edge vector from vertex i to vertex i+1. public Vec3d GetEdgeArrow(int i) Parameters i int The index of the starting vertex (0, 1, or 2). Returns Vec3d The vector representing the edge. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetLocate() Gets an anchor point on this flat surface. public Vec3d GetLocate() Returns Vec3d A point on the flat surface GetNormal() Gets the normal vector of the flat surface. public Vec3d GetNormal() Returns Vec3d The unit normal vector GetRewind() Creates a new triangle with reversed vertex order and flipped normal public Tri3d GetRewind() Returns Tri3d A new triangle with reversed vertex order GetSegmentsFromPlaneClip(IFlat3d) Gets the line segments resulting from intersecting this triangle with a clipping plane. public IEnumerable<Segment3d> GetSegmentsFromPlaneClip(IFlat3d clipPlane) Parameters clipPlane IFlat3d The clipping plane Returns IEnumerable<Segment3d> An enumerable of line segments representing the intersection GetTransform(Mat4d) Creates a new triangle by transforming this triangle using the specified matrix. public Tri3d GetTransform(Mat4d mat) Parameters mat Mat4d The transformation matrix. Returns Tri3d A new transformed triangle. GetTranslate(Vec3d) Creates a new triangle by translating this triangle by the specified vector. public Tri3d GetTranslate(Vec3d v) Parameters v Vec3d The translation vector. Returns Tri3d A new translated triangle. GetTriSplition(double[], out Tri3d[], out Tri3d[]) Get triangles splition by pointWeights interpolation. negativeTris or positiveTris are null if no triangles generated. If all pointWeights is 0, no triangle generated. public void GetTriSplition(double[] pointWeights, out Tri3d[] positiveTris, out Tri3d[] negativeTris) Parameters pointWeights double[] weights of points positiveTris Tri3d[] triangles with positive or zero weight negativeTris Tri3d[] triangles with negative or zero weight ReBuildNormal() Rebuilds the normal vector of the triangle based on its vertices. public Vec3d ReBuildNormal() Returns Vec3d The rebuilt normal vector. ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Rewind() Reverses the order of the triangle's vertices, which flips the normal direction public void Rewind() Rotate(Vec3d, double) Rotates the triangle around the specified axis by the given angle. public Tri3d Rotate(Vec3d axis, double rad) Parameters axis Vec3d The axis of rotation. rad double The angle of rotation in radians. Returns Tri3d This triangle after rotation. Set(ITri3d) Sets this triangle's vertices and normal from an ITri3d interface public Tri3d Set(ITri3d t) Parameters t ITri3d The source triangle implementing ITri3d Returns Tri3d This triangle instance Set(ITri3d, Mat4d) Sets this triangle's vertices and normal from an ITri3d interface and transforms them using a matrix public Tri3d Set(ITri3d t, Mat4d mat) Parameters t ITri3d The source triangle implementing ITri3d mat Mat4d The transformation matrix to apply Returns Tri3d This triangle instance Set(Tri3d, bool) Sets this triangle's vertices and normal from another triangle public Tri3d Set(Tri3d t, bool useRef = false) Parameters t Tri3d The source triangle useRef bool If true, references to the source triangle's vertices and normal are used; otherwise, copies are created Returns Tri3d This triangle instance Set(Vec3d, Vec3d, Vec3d) Set value. public Tri3d Set(Vec3d p0, Vec3d p1, Vec3d p2) Parameters p0 Vec3d apex0 p1 Vec3d apex1 p2 Vec3d apex2 Returns Tri3d this Set(Vec3d, Vec3d, Vec3d, Vec3d) Sets the triangle's vertices and normal vector public Tri3d Set(Vec3d p0, Vec3d p1, Vec3d p2, Vec3d n) Parameters p0 Vec3d First vertex p1 Vec3d Second vertex p2 Vec3d Third vertex n Vec3d Normal vector Returns Tri3d This triangle instance SetOrderForward(int) Reorders the triangle's vertices to make the specified vertex the first one public void SetOrderForward(int index) Parameters index int The index of the vertex to make first (0, 1, or 2) ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. Transform(Mat4d) Transforms the triangle using the specified transformation matrix. public Tri3d Transform(Mat4d mat) Parameters mat Mat4d The transformation matrix. Returns Tri3d This triangle after transformation. Translate(Vec3d) Translates the triangle by the specified vector. public Tri3d Translate(Vec3d v) Parameters v Vec3d The translation vector. Returns Tri3d This triangle after translation. Translate(double, double, double) Translates the triangle by the specified x, y, and z coordinates. public Tri3d Translate(double x, double y, double z) Parameters x double The x-coordinate of the translation. y double The y-coordinate of the translation. z double The z-coordinate of the translation. Returns Tri3d This triangle after translation. 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.Geom.Tri3dUtil.html": {
"href": "api/Hi.Geom.Tri3dUtil.html",
"title": "Class Tri3dUtil | HiAPI-C# 2025",
"summary": "Class Tri3dUtil Namespace Hi.Geom Assembly HiGeom.dll Utility of Tri3d. Include generator of triangles from points. public static class Tri3dUtil Inheritance object Tri3dUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GenTrisByAlignedLists(IList<Vec3d>, IList<Vec3d>, IList<Tri3d>) public static void GenTrisByAlignedLists(IList<Vec3d> ps, IList<Vec3d> rrps, IList<Tri3d> dst) Parameters ps IList<Vec3d> rrps IList<Vec3d> dst IList<Tri3d> GenTrisByAlignedLoops(IList<Vec3d>, IList<Vec3d>, IList<Tri3d>) Generates triangles between two aligned loops of points. public static void GenTrisByAlignedLoops(IList<Vec3d> ps, IList<Vec3d> rrps, IList<Tri3d> dst) Parameters ps IList<Vec3d> First loop of points rrps IList<Vec3d> Second loop of points dst IList<Tri3d> The collection to add the generated triangles to GenTrisByFan(IEnumerable<Vec3d>, Vec3d) Generates triangles in a fan pattern from a sequence of points. public static IEnumerable<Tri3d> GenTrisByFan(this IEnumerable<Vec3d> ps, Vec3d faceNormal = null) Parameters ps IEnumerable<Vec3d> The sequence of points faceNormal Vec3d Optional face normal for the triangles Returns IEnumerable<Tri3d> An enumerable of triangles forming a fan GenTrisByNumAlignment(List<Vec3d>, List<Vec3d>, IList<Tri3d>) Generates triangles between two lists of points with different numbers of points. public static void GenTrisByNumAlignment(List<Vec3d> psA, List<Vec3d> psB, IList<Tri3d> dst) Parameters psA List<Vec3d> First list of points psB List<Vec3d> Second list of points dst IList<Tri3d> The collection to add the generated triangles to GenTrisByQuad(Vec3d, Vec3d, Vec3d, Vec3d, IList<Tri3d>) Generates two triangles from a quadrilateral defined by four points. public static void GenTrisByQuad(Vec3d p0, Vec3d p1, Vec3d p2, Vec3d p3, IList<Tri3d> dst) Parameters p0 Vec3d First point of the quadrilateral p1 Vec3d Second point of the quadrilateral p2 Vec3d Third point of the quadrilateral p3 Vec3d Fourth point of the quadrilateral dst IList<Tri3d> The collection to add the generated triangles to GenTrisByStar(Vec3d, IList<Vec3d>, IList<Tri3d>) Generates triangles in a star pattern from a center point to a list of points. public static void GenTrisByStar(Vec3d starP, IList<Vec3d> ps, IList<Tri3d> dst) Parameters starP Vec3d The center point of the star ps IList<Vec3d> The list of points forming the perimeter dst IList<Tri3d> The collection to add the generated triangles to GenTrisByStar(IList<Vec3d>, Vec3d, IList<Tri3d>) Generates triangles in a star pattern from a list of points to a center point. public static void GenTrisByStar(IList<Vec3d> ps, Vec3d starP, IList<Tri3d> dst) Parameters ps IList<Vec3d> The list of points forming the perimeter starP Vec3d The center point of the star dst IList<Tri3d> The collection to add the generated triangles to GetSegmentsFromPlaneClip(IEnumerable<Tri3d>, IFlat3d) Gets line segments resulting from intersecting triangles with a clipping plane. public static List<Segment3d> GetSegmentsFromPlaneClip(this IEnumerable<Tri3d> tris, IFlat3d clipPlane) Parameters tris IEnumerable<Tri3d> The collection of triangles to clip clipPlane IFlat3d The clipping plane Returns List<Segment3d> A list of line segments representing the intersection"
},
"api/Hi.Geom.UnitUtils.PhysicsUnit.html": {
"href": "api/Hi.Geom.UnitUtils.PhysicsUnit.html",
"title": "Enum PhysicsUnit | HiAPI-C# 2025",
"summary": "Enum PhysicsUnit Namespace Hi.Geom.UnitUtils Assembly HiMech.dll Represents physical units used in the system. [Flags] public enum PhysicsUnit Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) UnitConvertUtil.ToUnitString(PhysicsUnit) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields [StringValue(\"<sup>o</sup>C\")] C = mm3 | kJ Represents degrees Celsius (temperature measurement). [StringValue(\"J\")] J = deg | MPa Represents Joules (energy measurement). [StringValue(\"<sup>o</sup>K\")] K = deg | C Represents Kelvin (temperature measurement). [StringValue(\"MPa\")] MPa = sec | N Represents Megapascals (pressure measurement). [StringValue(\"N\")] N = mm3 | rpm Represents Newtons (force measurement). [StringValue(\"Nm\")] Nm = deg | N Represents Newton-meters (torque measurement). [StringValue(null)] None = 0 Represents no unit. [StringValue(\"deg\")] deg = 1 Represents degrees (angular measurement). [StringValue(\"g\")] g = sec | rpm Represents grams (mass measurement). [StringValue(\"kJ\")] kJ = 16 Represents kilojoules (energy measurement). [StringValue(\"kW\")] kW = deg | watt Represents kilowatts (power measurement). [StringValue(\"kWh\")] kWh = deg | kJ Represents kilowatt-hours (energy measurement). [StringValue(\"mg\")] mg = deg | g Represents milligrams (mass measurement). [StringValue(\"mm\")] mm = deg | sec Represents millimeters (length measurement). [StringValue(\"mm<sup>3</sup>\")] mm3 = 4 Represents cubic millimeters (volume measurement). [StringValue(\"mm<sup>3</sup>/s\")] mm3ds = deg | rpm Represents cubic millimeters per second (volume flow rate measurement). [StringValue(\"mm/min\")] mmdmin = deg | mmds Represents millimeters per minute (feed rate measurement). [StringValue(\"mm/s\")] mmds = sec | mm3 Represents millimeters per second (velocity measurement). [StringValue(\"rpm\")] rpm = 8 Represents revolutions per minute (rotational speed measurement). [StringValue(\"sec\")] sec = 2 Represents seconds (time measurement). [StringValue(\"um\")] um = deg | mm3 Represents micrometers (length measurement). [StringValue(\"watt\")] watt = sec | kJ Represents watts (power measurement)."
},
"api/Hi.Geom.UnitUtils.StringValueAttribute.html": {
"href": "api/Hi.Geom.UnitUtils.StringValueAttribute.html",
"title": "Class StringValueAttribute | HiAPI-C# 2025",
"summary": "Class StringValueAttribute Namespace Hi.Geom.UnitUtils Assembly HiMech.dll Attribute for associating a string value with an enum value or other element. public class StringValueAttribute : Attribute Inheritance object Attribute StringValueAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StringValueAttribute(string) Initializes a new instance of the StringValueAttribute class with the specified value. public StringValueAttribute(string value) Parameters value string The string value to associate with the element. Properties Value Gets or sets the string value associated with the element. public string Value { get; set; } Property Value string"
},
"api/Hi.Geom.UnitUtils.UnitConvertUtil.html": {
"href": "api/Hi.Geom.UnitUtils.UnitConvertUtil.html",
"title": "Class UnitConvertUtil | HiAPI-C# 2025",
"summary": "Class UnitConvertUtil Namespace Hi.Geom.UnitUtils Assembly HiMech.dll Provides utility methods for converting between different physical units and their string representations. public static class UnitConvertUtil Inheritance object UnitConvertUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ToUnitString(PhysicsUnit) Converts a PhysicsUnit enum value to its string representation. public static string ToUnitString(this PhysicsUnit src) Parameters src PhysicsUnit The PhysicsUnit value to convert. Returns string The string representation of the unit, or the enum value's name if no string value is defined."
},
"api/Hi.Geom.UnitUtils.html": {
"href": "api/Hi.Geom.UnitUtils.html",
"title": "Namespace Hi.Geom.UnitUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Geom.UnitUtils Classes StringValueAttribute Attribute for associating a string value with an enum value or other element. UnitConvertUtil Provides utility methods for converting between different physical units and their string representations. Enums PhysicsUnit Represents physical units used in the system."
},
"api/Hi.Geom.Vec2d.html": {
"href": "api/Hi.Geom.Vec2d.html",
"title": "Class Vec2d | HiAPI-C# 2025",
"summary": "Class Vec2d Namespace Hi.Geom Assembly HiGeom.dll Basic 2D point (or vector). public class Vec2d : IExpandToBox2d, IEquatable<Vec2d>, ICsvRowIo, IEqualityOperators<Vec2d, Vec2d, bool>, IAdditionOperators<Vec2d, Vec2d, Vec2d>, ISubtractionOperators<Vec2d, Vec2d, Vec2d>, IMultiplyOperators<Vec2d, double, Vec2d>, IDivisionOperators<Vec2d, double, Vec2d>, IVec<double>, IFormattable Inheritance object Vec2d Implements IExpandToBox2d IEquatable<Vec2d> ICsvRowIo IEqualityOperators<Vec2d, Vec2d, bool> IAdditionOperators<Vec2d, Vec2d, Vec2d> ISubtractionOperators<Vec2d, Vec2d, Vec2d> IMultiplyOperators<Vec2d, double, Vec2d> IDivisionOperators<Vec2d, double, Vec2d> IVec<double> IFormattable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Vec2d() Default constructor. Creates a vector with coordinates (0,0). public Vec2d() Vec2d(Vec2d) Copy ctor. public Vec2d(Vec2d src) Parameters src Vec2d src Vec2d(Vec2i) Creates a vector from Vec2i by converting integer coordinates to double. public Vec2d(Vec2i src) Parameters src Vec2i Source Vec2i vector with integer coordinates Vec2d(vec2d) ctor. public Vec2d(vec2d src) Parameters src vec2d src Vec2d(double, double) Ctor. public Vec2d(double x, double y) Parameters x double x y double y Vec2d(Func<int, double>) Ctor using a function that maps direction index to value. public Vec2d(Func<int, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double> Function that maps direction index to value Vec2d(BinaryReader) Ctor by bytes: x = reader.ReadDouble(); y = reader.ReadDouble(); public Vec2d(BinaryReader reader) Parameters reader BinaryReader reader Vec2d(int, double, double) Ctor by direction offset. Direction 0,1 indicate x,y respectively. public Vec2d(int dir, double a, double b) Parameters dir int direction offset a double value at direction (0+dir)%2 b double value at direction (1+dir)%2 Vec2d(string) Ctor by string. The format is (x,y). public Vec2d(string src) Parameters src string src Fields x Value at x direction. public double x Field Value double y Value at y direction. public double y Field Value double Properties AbsSum Sum of abs(x) and abs(y). public double AbsSum { get; } Property Value double AllOne Generate vec (1,1). public static Vec2d AllOne { get; } Property Value Vec2d (1,1) AmpPhase Create AmpPhase instance. public AmpPhase AmpPhase { get; } Property Value AmpPhase Angle_deg Angle in degree between vec(x,y) and vec(1,0). public double Angle_deg { get; } Property Value double Angle_rad Angle in radian between vec(x,y) and vec(1,0). public double Angle_rad { get; } Property Value double CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string 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 all NaN. IsAllNegativeInfinity public bool IsAllNegativeInfinity { get; } Property Value bool is x,y all NegativeInfinity. IsAllPositiveInfinity public bool IsAllPositiveInfinity { get; } Property Value bool is x,y all PositiveInfinity. IsAnyFinite public bool IsAnyFinite { get; } Property Value bool Is at least one of x,y finite. IsAnyNaN Is any member nan. public bool IsAnyNaN { get; } Property Value bool IsZero public bool IsZero { get; } Property Value bool Is zero vector. Which is x == 0 && y == 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 Length. public double Length { get; } Property Value double LengthSquare Length square. public double LengthSquare { get; } Property Value double MaxAbsDir Get the direction of the max absolute value. public int MaxAbsDir { get; } Property Value int MaxDir Get the direction of the max value. public int MaxDir { get; } Property Value int MaxValue Get max value from {x,y}. public double MaxValue { get; } Property Value double MinDir Get the direction index with minimum value. If {x,y} is the smallest, return {0,1}. public int MinDir { get; } Property Value int MinValue Get min value from {x,y}. public double MinValue { get; } Property Value double NaN Generate NAN vec. public static Vec2d NaN { get; } Property Value Vec2d (nan,nan) NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(double) * 2. NegativeInfinity Generate negative infinity vec. public static Vec2d NegativeInfinity { get; } Property Value Vec2d (-inf,-inf) PositiveInfinity Generate positive infinity vec. public static Vec2d PositiveInfinity { get; } Property Value Vec2d (inf,inf) Rank Dimension (i.e. Size) of the Vector. public int Rank { get; } Property Value int UnitX Generate vec (1,0). public static Vec2d UnitX { get; } Property Value Vec2d (1,0) UnitY Generate vec (0,1). public static Vec2d UnitY { get; } Property Value Vec2d (0,1) X Gets or sets the X coordinate value. public double X { get; set; } Property Value double Y Gets or sets the Y coordinate value. public double Y { get; set; } Property Value double Zero Generate vec (0,0). public static Vec2d Zero { get; } Property Value Vec2d (0,0) Methods All(double) Generate Vec2d with all components set to the given value. public static Vec2d All(double v) Parameters v double Returns Vec2d At(int) Member at direction. public ref double At(int dir) Parameters dir int direction Returns double member Cross(Vec2d) Cross. public double Cross(Vec2d src) Parameters src Vec2d src Returns double cross value Dot(Vec2d) Dot. public double Dot(Vec2d src) Parameters src Vec2d src Returns double dotted value Equals(Vec2d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Vec2d other) Parameters other Vec2d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(Vec2d, double) check equals for each component with tolerance. public bool Equals(Vec2d other, double toleranceForEachComponent) Parameters other Vec2d 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(Vec2d) Find and expand maximum values from src. public void ExpandMax(Vec2d src) Parameters src Vec2d src ExpandMin(Vec2d) Find and expand minimum values from src. public void ExpandMin(Vec2d src) Parameters src Vec2d src ExpandToBox2d(Box2d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox2d(Box2d dst) Parameters dst Box2d Destination box GenNaN() Generate NAN vec. public static Vec2d GenNaN() Returns Vec2d (nan,nan) GenNegativeInfinity() Generate negative infinity vec. public static Vec2d GenNegativeInfinity() Returns Vec2d (-inf,-inf) GenOne() Generate vec (1,1). public static Vec2d GenOne() Returns Vec2d (1,1) GenPositiveInfinity() Generate positive infinity vec. public static Vec2d GenPositiveInfinity() Returns Vec2d (inf,inf) GenUnitX() Generate vec (1,0). public static Vec2d GenUnitX() Returns Vec2d (1,0) GenUnitY() Generate vec (0,1). public static Vec2d GenUnitY() Returns Vec2d (0,1) GenZero() Generate vec (0,0). public static Vec2d GenZero() Returns Vec2d (0,0) GetCosSquareWith(Vec2d) Get Cos(theta)^2. theta is the angle between this and src. This function is faster than GetCosWith(Vec2d) since it lacks one square root operation. public double GetCosSquareWith(Vec2d src) Parameters src Vec2d one of edge vector Returns double Cos(theta)^2 GetCosWith(Vec2d) Get cos(angle). The angle is between v and this. public double GetCosWith(Vec2d v) Parameters v Vec2d v Returns double cos(angle) GetCsvText(string) Get CSV text with specified format. public string GetCsvText(string format) Parameters format string Format string for each component Returns string CSV formatted string GetEachValueAbs() Get a new vector with each value set to its absolute value. public Vec2d GetEachValueAbs() Returns Vec2d A new vector with absolute values GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetMulEach(Vec2d) Get a new vector with each component multiplied with the corresponding component of the given vector. public Vec2d GetMulEach(Vec2d vec) Parameters vec Vec2d The vector to multiply with Returns Vec2d A new vector with multiplied components GetNormalized() Generate normalized vec. public Vec2d GetNormalized() Returns Vec2d Normalized vec GetRadian(Vec2d) Get angle between this and v. The angle has no sign. This vector is not required to be an unit vector. public double GetRadian(Vec2d v) Parameters v Vec2d one of the edge vector. Not required to be an unit vector. Returns double Angle in radian GetTransform(Func<double, double>) Get the new Vec2d by transforming each element by the function. public Vec2d GetTransform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> Returns Vec2d Interpolate(Vec2d, Vec2d, double) Linear interpolate between a and b. public static Vec2d Interpolate(Vec2d a, Vec2d b, double alpha) Parameters a Vec2d a b Vec2d b alpha double ratio Returns Vec2d interpolation IsNormalized(double) Check if this vector is normalized. public bool IsNormalized(double toleranceSquare = 1E-07) Parameters toleranceSquare double Tolerance for checking if length squared is 1 Returns bool True if the vector is normalized MulEach(Vec2d) Multiply each component with the corresponding component of the given vector. public Vec2d MulEach(Vec2d vec) Parameters vec Vec2d The vector to multiply with Returns Vec2d this Normalize() Normalize. public Vec2d Normalize() Returns Vec2d this Set(Vec2d) Set values by copy. public Vec2d Set(Vec2d src) Parameters src Vec2d src Returns Vec2d this Set(vec2d) Set values by copy. public Vec2d Set(vec2d src) Parameters src vec2d src Returns Vec2d this Set(double, double) Set values. public Vec2d Set(double x, double y) Parameters x double x y double y Returns Vec2d this Set(double[]) Set values by array. public Vec2d Set(double[] xy) Parameters xy double[] double[]{x,y} Returns Vec2d this Set(Func<int, double, double>) Set values using a function that maps direction index and current value to new value. public Vec2d Set(Func<int, double, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double, double> Function that maps direction index and current value to new value Returns Vec2d this Set(Func<int, double>) Set values using a function that maps direction index to value. public Vec2d Set(Func<int, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double> Function that maps direction index to value Returns Vec2d this Set(int, double, double) Set values by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec2d Set(int dir, double a, double b) Parameters dir int direction offset a double value at direction (0+dir)%2 b double value at direction (1+dir)%2 Returns Vec2d this SetEachNanToZero() Set NaN to 0 for each value. public Vec2d SetEachNanToZero() Returns Vec2d this SetEachValueAbs() Set all member to absolute value. public Vec2d SetEachValueAbs() Returns Vec2d this ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string) To string with format: (x,y) public string ToString(string format) Parameters format string Format string for the double values Returns string Formatted string representation of the vector 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) Format the vector with padding. public string ToString(string format, int leftPadding) Parameters format string Format string for each component leftPadding int Left padding for each component Returns string Formatted string Transform(Func<double, double>) Transform each element by the function. public Vec2d Transform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> Returns Vec2d WriteBin(BinaryWriter) Output to bytes: writer.Write(x); writer.Write(y); public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter writer Operators operator +(Vec2d, Vec2d) Plus. public static Vec2d operator +(Vec2d left, Vec2d right) Parameters left Vec2d a right Vec2d b Returns Vec2d a+b operator /(Vec2d, double) a/d. public static Vec2d operator /(Vec2d a, double d) Parameters a Vec2d a d double d Returns Vec2d a/d operator ==(Vec2d, Vec2d) Equality operator for comparing two Vec2d objects. public static bool operator ==(Vec2d left, Vec2d right) Parameters left Vec2d Left operand right Vec2d Right operand Returns bool True if the vectors are equal, false otherwise operator !=(Vec2d, Vec2d) Inequality operator for comparing two Vec2d objects. public static bool operator !=(Vec2d left, Vec2d right) Parameters left Vec2d Left operand right Vec2d Right operand Returns bool True if the vectors are not equal, false otherwise operator *(Vec2d, double) a*s. public static Vec2d operator *(Vec2d a, double s) Parameters a Vec2d a s double s Returns Vec2d a*s operator -(Vec2d, Vec2d) a-b. public static Vec2d operator -(Vec2d a, Vec2d b) Parameters a Vec2d a b Vec2d b Returns Vec2d a-b operator -(Vec2d) Negate. public static Vec2d operator -(Vec2d src) Parameters src Vec2d src Returns Vec2d Negate"
},
"api/Hi.Geom.Vec2i.html": {
"href": "api/Hi.Geom.Vec2i.html",
"title": "Class Vec2i | HiAPI-C# 2025",
"summary": "Class Vec2i Namespace Hi.Geom Assembly HiGeom.dll Basic 2D point (or vector). public class Vec2i : IEquatable<Vec2i>, IFormattable Inheritance object Vec2i Implements IEquatable<Vec2i> IFormattable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Vec2i(Vec2i) Copy ctor. public Vec2i(Vec2i src) Parameters src Vec2i src Vec2i(BinaryReader) Ctor by bytes: x = reader.ReadDouble(); y = reader.ReadDouble(); public Vec2i(BinaryReader reader) Parameters reader BinaryReader reader Vec2i(int, int) Ctor. public Vec2i(int x = 0, int y = 0) Parameters x int x y int y Vec2i(int, int, int) Ctor by direction offset. Direction 0,1 indicate x,y respectively. public Vec2i(int dir, int a, int b) Parameters dir int direction offset a int value at direction (0+dir)%3 b int value at direction (1+dir)%3 Vec2i(string) Ctor by string. The format is (x,y). public Vec2i(string src) Parameters src string src Fields x Value at x direction. public int x Field Value int y Value at y direction. public int y Field Value int Properties AbsSum Sum of abs(x) and abs(y). public int AbsSum { get; } Property Value int LengthSquare Length square. public int LengthSquare { get; } Property Value int Max Get max value from {x,y}. public int Max { get; } Property Value int MaxAbsDir Get the direction of the max absolute value. public int MaxAbsDir { get; } Property Value int MaxDir Get the direction of the max value. public int MaxDir { get; } Property Value int Min Get min value from {x,y}. public int Min { get; } Property Value int NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(int) * 2. One Generate vec (1,1). public static Vec2i One { get; } Property Value Vec2i (1,1) UnitX Generate vec (1,0). public static Vec2i UnitX { get; } Property Value Vec2i (1,0) UnitY Generate vec (0,1). public static Vec2i UnitY { get; } Property Value Vec2i (0,1) Zero Generate vec (0,0). public static Vec2i Zero { get; } Property Value Vec2i (0,0) Methods At(int) Member at direction. public ref int At(int dir) Parameters dir int direction Returns int member Cross(Vec2i) Cross. public int Cross(Vec2i src) Parameters src Vec2i src Returns int cross value Dot(Vec2i) Dot. public int Dot(Vec2i src) Parameters src Vec2i src Returns int dotted value Equals(Vec2i) Indicates whether the current object is equal to another object of the same type. public bool Equals(Vec2i other) Parameters other Vec2i 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. GenOne() Generate vec (1,1). public static Vec2i GenOne() Returns Vec2i (1,1) GenUnitX() Generate vec (1,0). public static Vec2i GenUnitX() Returns Vec2i (1,0) GenUnitY() Generate vec (0,1). public static Vec2i GenUnitY() Returns Vec2i (0,1) GenZero() Generate vec (0,0). public static Vec2i GenZero() Returns Vec2i (0,0) GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. Output(BinaryWriter) Output to bytes: writer.Write(x); writer.Write(y); public void Output(BinaryWriter writer) Parameters writer BinaryWriter writer Set(Vec2i) Set values by copy. public Vec2i Set(Vec2i src) Parameters src Vec2i src Returns Vec2i this Set(int, int) Set values. public Vec2i Set(int x, int y) Parameters x int x y int y Returns Vec2i this Set(int, int, int) Set values by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec2i Set(int dir, int a, int b) Parameters dir int direction offset a int value at direction (0+dir)%3 b int value at direction (1+dir)%3 Returns Vec2i this Set(int[]) Set values by array. public Vec2i Set(int[] xy) Parameters xy int[] int[]{x,y} Returns Vec2i this SetEachValueAbs() Set all member to absolute value. public Vec2i SetEachValueAbs() Returns Vec2i this 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 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 Operators operator +(Vec2i, Vec2i) Plus. public static Vec2i operator +(Vec2i a, Vec2i b) Parameters a Vec2i a b Vec2i b Returns Vec2i a+b operator /(Vec2i, int) a/d. public static Vec2i operator /(Vec2i a, int d) Parameters a Vec2i a d int d Returns Vec2i a/d operator *(Vec2i, int) a*s. public static Vec2i operator *(Vec2i a, int s) Parameters a Vec2i a s int s Returns Vec2i a*s operator -(Vec2i, Vec2i) a-b. public static Vec2i operator -(Vec2i a, Vec2i b) Parameters a Vec2i a b Vec2i b Returns Vec2i a-b operator -(Vec2i) Negate. public static Vec2i operator -(Vec2i src) Parameters src Vec2i src Returns Vec2i Negate"
},
"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<Vec3d>, IExpandToBox3d, IBinaryIo, IWriteBin, ICsvRowIo, IEqualityOperators<Vec3d, Vec3d, bool>, IAdditionOperators<Vec3d, Vec3d, Vec3d>, ISubtractionOperators<Vec3d, Vec3d, Vec3d>, IMultiplyOperators<Vec3d, double, Vec3d>, IMultiplyOperators<Vec3d, Mat4d, Vec3d>, IDivisionOperators<Vec3d, double, Vec3d>, IVec<double>, IFormattable, IToPresentDto Inheritance object Vec3d Implements IEquatable<Vec3d> IExpandToBox3d IBinaryIo IWriteBin ICsvRowIo IEqualityOperators<Vec3d, Vec3d, bool> IAdditionOperators<Vec3d, Vec3d, Vec3d> ISubtractionOperators<Vec3d, Vec3d, Vec3d> IMultiplyOperators<Vec3d, double, Vec3d> IMultiplyOperators<Vec3d, Mat4d, Vec3d> IDivisionOperators<Vec3d, double, Vec3d> IVec<double> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<double>) Creates a vector from an enumerable collection of three double values. public Vec3d(IEnumerable<double> src) Parameters src IEnumerable<double> 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<int, double>) Creates a vector using a function that maps direction index to value. public Vec3d(Func<int, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double> 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<double> Enumerate() Returns IEnumerable<double> 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<double, double>) Get the new Vec3d by transforming each element by the function. public Vec3d GetTransform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> 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<int, double, double>) Sets vector components using a function that maps direction index and current value to new value. public Vec3d Set(Func<int, double, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double, double> 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<int, double>) Sets vector components using a function that maps direction index to value. public Vec3d Set(Func<int, double> dirToValueFunc) Parameters dirToValueFunc Func<int, double> 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<double, double>) Transform each element by the function. public Vec3d Transform(Func<double, double> transformingFunc) Parameters transformingFunc Func<double, double> 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. 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<TEva> 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<T> 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",
"title": "Enum BasePathEnum | HiAPI-C# 2025",
"summary": "Enum BasePathEnum Namespace Hi.HiNcKits Assembly HiNc.dll Enumeration of base path types used in the HiNC system. [Flags] public enum BasePathEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields AdminDir = 2 The administration directory path. None = 0 No specific path type. ProjectDir = 4 The project directory path. ResourceDir = 8 The resource directory path."
},
"api/Hi.HiNcKits.HiNcHost.html": {
"href": "api/Hi.HiNcKits.HiNcHost.html",
"title": "Class HiNcHost | HiAPI-C# 2025",
"summary": "Class HiNcHost Namespace Hi.HiNcKits Assembly HiNc.dll Rich HiNC Service. Host class for HiNC functionality that provides project management, path resolution, and DB integration. public class HiNcHost : IDisposable Inheritance object HiNcHost 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HiNcHost(ProxyProjectService, ILogger) Initializes a new instance of the HiNcHost class with a proxy project service. public HiNcHost(ProxyProjectService proxyProjectService, ILogger logger = null) Parameters proxyProjectService ProxyProjectService The proxy project service to use. logger ILogger Optional logger instance. Fields HiNcUserDbMetaName Gets the name of the HiNC user database metadata. public const string HiNcUserDbMetaName = \"UserDbMeta\" Field Value string HiNcUserDbName Gets the name of the HiNC user database. public const string HiNcUserDbName = \"HiNcUserDb\" Field Value string Properties AdminDirectory Admin absolute directory. public string AdminDirectory { get; set; } Property Value string AdminExtendedNamedPath Gets the admin extended named path. public ExtendedNamedPath AdminExtendedNamedPath { get; } Property Value ExtendedNamedPath AdminNamedPath Gets the admin named path. public NamedPath AdminNamedPath { get; } Property Value NamedPath CacheDbId Gets the cache database ID. public static string CacheDbId { get; set; } Property Value string IdentityStorage Gets the SQLite identity storage instance (for user authentication). public SqliteIdentityStorage IdentityStorage { get; } Property Value SqliteIdentityStorage LocalProjectService Gets the local project service from the proxy project service. public LocalProjectService LocalProjectService { get; } Property Value LocalProjectService MachiningProject Gets the machining project from the local project service. public MachiningProject MachiningProject { get; } Property Value MachiningProject ProjectDirectory Project Absolute Directory. public string ProjectDirectory { get; } Property Value string ProjectExtendedNamedPath Gets the project extended named path. public ExtendedNamedPath ProjectExtendedNamedPath { get; } Property Value ExtendedNamedPath ProjectNamedPath Gets the project named path. public NamedPath ProjectNamedPath { get; } Property Value NamedPath ProjectRelativeDirectory Gets the relative project directory path. public string ProjectRelativeDirectory { get; } Property Value string RelativeProjectPath Gets the relative project path from the proxy project service. public string RelativeProjectPath { get; } Property Value string ResourceDir Resource absolute directory. public string ResourceDir { get; } Property Value string ResourceExtendedNamedPath Gets the resource extended named path. public ExtendedNamedPath ResourceExtendedNamedPath { get; } Property Value ExtendedNamedPath ResourceNamedPath Gets the resource named path. public NamedPath ResourceNamedPath { get; } Property Value NamedPath ResourceRelDir Relative directory from AdminDirectory for resource. public string ResourceRelDir { get; set; } Property Value string StepStorage Gets the SQLite step storage instance (for milling step data). public SqliteStepStorage StepStorage { get; } Property Value SqliteStepStorage Methods CloseProject() Closes the current project. public void CloseProject() CopyResourceIfNotExisted() Copies resources if they don't already exist in the target location. public void CopyResourceIfNotExisted() 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 GetExtendedNamedPathByNamePath(string) Gets an extended named path by its name path. public ExtendedNamedPath GetExtendedNamedPathByNamePath(string namePath) Parameters namePath string The name path to look up. Returns ExtendedNamedPath The extended named path for the specified name path, or null if not found. GetExtendedNamedPathByPath(string) Gets an extended named path by its path. public ExtendedNamedPath GetExtendedNamedPathByPath(string path) Parameters path string The path to look up. Returns ExtendedNamedPath The extended named path with the specified path, or null if not found. GetExtendedNamedPathByUriPara(string) GetExtendedNamedPath By blazor page parameter. public ExtendedNamedPath GetExtendedNamedPathByUriPara(string uriPara) Parameters uriPara string Returns ExtendedNamedPath GetExtendedNamedPathList(params BasePathEnum[]) Gets a list of extended named paths for the specified base path types. public List<ExtendedNamedPath> GetExtendedNamedPathList(params BasePathEnum[] basePathEnums) Parameters basePathEnums BasePathEnum[] The base path types to include. Returns List<ExtendedNamedPath> A list of extended named paths. GetNamedPathByName(string) Gets a named path by its name. public NamedPath GetNamedPathByName(string name) Parameters name string The name of the path to retrieve Returns NamedPath The named path with the specified name, or null if not found GetNamedPathByPath(string) Gets a named path by its path. public NamedPath GetNamedPathByPath(string path) Parameters path string The path to look up. Returns NamedPath The named path with the specified path, or null if not found. GetNamedPathList(params BasePathEnum[]) Gets a list of named paths for the specified base path types. public List<NamedPath> GetNamedPathList(params BasePathEnum[] basePathEnums) Parameters basePathEnums BasePathEnum[] The base path types to include. Returns List<NamedPath> A list of named paths. LoadProjectByRelativePath(string) Loads a project from the specified relative file path. public void LoadProjectByRelativePath(string relativeFilePathFromAdminRoot) Parameters relativeFilePathFromAdminRoot string The relative file path from the admin directory root NewProjectByRelFile(string) Creates a new project from a relative file path. public void NewProjectByRelFile(string relFilePath) Parameters relFilePath string The relative file path from the admin directory Reg(XFactory) Bootstraps XML-factory registration for the HiNC host. Equivalent to Reg(XFactory); entry points that construct HiNcHost directly (without going through LocalProjectService) should call this once at startup. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ReloadProject() Reloads the current project. public void ReloadProject() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root SaveProject() Save project in the current path. public void SaveProject() ShowMessageBoard(string, string, BootstrapTheme) Shows a message board with specified title, message and theme. public void ShowMessageBoard(string title, string message, BootstrapTheme bootstrapThemeColor) Parameters title string The title of the message board message string The message to display bootstrapThemeColor BootstrapTheme The bootstrap theme color for the message board Events OnShownMessageBoard Event raised when a message board is shown. public event ShowMessageBoardDelegate OnShownMessageBoard Event Type ShowMessageBoardDelegate"
},
"api/Hi.HiNcKits.LocalApp.html": {
"href": "api/Hi.HiNcKits.LocalApp.html",
"title": "Class LocalApp | HiAPI-C# 2025",
"summary": "Class LocalApp Namespace Hi.HiNcKits Assembly HiNc.dll Local application initialization and cleanup utilities. public static class LocalApp Inheritance object LocalApp Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields DefaultLocalAppConfigPath Path to the configuration file. public const string DefaultLocalAppConfigPath = \"hinc-host-config.xml\" Field Value string Properties LocalAppConfig Gets or sets the host configuration. public static LocalAppConfig LocalAppConfig { get; set; } Property Value LocalAppConfig Methods AppBegin(LocalAppConfig, ILogger) Initializes the application with the specified configuration. public static void AppBegin(LocalAppConfig localAppConfig, ILogger logger) Parameters localAppConfig LocalAppConfig The local application configuration. logger ILogger Logger used for startup diagnostics. AppBegin(ILogger, string) Initializes the application with the specified cache database path. public static void AppBegin(ILogger logger, string cacheDbPath = null) Parameters logger ILogger Logger instance for startup diagnostics. cacheDbPath string The path to the SQLite cache database. If null, uses default path. AppBeginWithConfigFile(ILogger, string) Initializes the application with configuration from a file. public static void AppBeginWithConfigFile(ILogger logger, string hostConfigPath = null) Parameters logger ILogger Logger used when loading configuration and initializing caches. hostConfigPath string Path to the host configuration file. Uses default path if null. AppEnd() Cleans up the application by stopping services and logging out licenses. public static void AppEnd()"
},
"api/Hi.HiNcKits.LocalAppConfig.html": {
"href": "api/Hi.HiNcKits.LocalAppConfig.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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. 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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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",
"title": "Class AuthorizationFailedEventArgs | HiAPI-C# 2025",
"summary": "Class AuthorizationFailedEventArgs Namespace Hi.Licenses Assembly HiDisp.dll Event arguments for authorization failure events. public class AuthorizationFailedEventArgs : EventArgs Inheritance object EventArgs AuthorizationFailedEventArgs Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AuthorizationFailedEventArgs() Initializes a new instance of the AuthorizationFailedEventArgs class. public AuthorizationFailedEventArgs() AuthorizationFailedEventArgs(string) Initializes a new instance of the AuthorizationFailedEventArgs class with a specified error message. public AuthorizationFailedEventArgs(string msg) Parameters msg string The error message associated with the authorization failure. Properties Msg Gets or sets the error message associated with the authorization failure. public string Msg { get; set; } Property Value string"
},
"api/Hi.Licenses.BlockType.html": {
"href": "api/Hi.Licenses.BlockType.html",
"title": "Enum BlockType | HiAPI-C# 2025",
"summary": "Enum BlockType Namespace Hi.Licenses Assembly HiDisp.dll Block type. public enum BlockType Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields NoBlock = 0 No block. NoLicense = 2 No license. Block. ReachStepLimit = 1 Reach step limit. Block."
},
"api/Hi.Licenses.License.html": {
"href": "api/Hi.Licenses.License.html",
"title": "Class License | HiAPI-C# 2025",
"summary": "Class License Namespace Hi.Licenses Assembly HiDisp.dll License of this module. public static class License Inheritance object License Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields CoreDll Core dll path. public const string CoreDll = \"core.dll\" Field Value string Methods AbortIfNotLoggedIn(AuthFeature) Aborts the application if a specific feature is not logged in. public static void AbortIfNotLoggedIn(AuthFeature feature) Parameters feature AuthFeature The feature to check. GetProducerInfo() Get Producer Info. public static string GetProducerInfo() Returns string Producer Info. IsFeatureAuth(AuthFeature) Checks if a specific feature is authorized. public static bool IsFeatureAuth(AuthFeature authFeature) Parameters authFeature AuthFeature The feature to check. Returns bool True if the feature is authorized; otherwise, false. IsLoggedIn(AuthFeature) Checks if a specific feature is logged in. public static bool IsLoggedIn(AuthFeature feature) Parameters feature AuthFeature The feature to check. Returns bool True if the feature is logged in; otherwise, false. LogInAll() Attempts to log in to all available features. public static List<AuthFeature> LogInAll() Returns List<AuthFeature> An enumeration of successfully logged in features. LogOut(AuthFeature) Logs out from a specific feature. public static void LogOut(AuthFeature feature) Parameters feature AuthFeature The feature to log out from. LogOutAll() Logs out from all features. public static void LogOutAll() Login(AuthFeature) Logs in to a specific feature. public static bool Login(AuthFeature feature) Parameters feature AuthFeature The feature to log in to. Returns bool True if login was successful; otherwise, false. SafelyEndLicenseRoutineCheck() Safely ends the license routine check. public static void SafelyEndLicenseRoutineCheck() Events AbortMessageAction Event handler for license abort events. public static event Action<string> AbortMessageAction Event Type Action<string>"
},
"api/Hi.Licenses.LicenseType.html": {
"href": "api/Hi.Licenses.LicenseType.html",
"title": "Enum LicenseType | HiAPI-C# 2025",
"summary": "Enum LicenseType Namespace Hi.Licenses Assembly HiDisp.dll Defines the types of licenses available. public enum LicenseType Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields NoLicense = 0 No license available. StepLimit = 2 License with step limitations. UnInit = 3 License not initialized. Unlimit = 1 Unlimited license."
},
"api/Hi.Licenses.html": {
"href": "api/Hi.Licenses.html",
"title": "Namespace Hi.Licenses | HiAPI-C# 2025",
"summary": "Namespace Hi.Licenses Classes AuthorizationFailedEventArgs Event arguments for authorization failure events. License License of this module. Enums AuthFeature Internal Use Only. BlockType Block type. LicenseType Defines the types of licenses available."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) 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<IMessage>, object[]) Initializes a new instance from XML data. public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredCollidableNode> GetAnchoredCollidables() Returns List<IAnchoredCollidableNode> A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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",
"title": "Interface ICutter | HiAPI-C# 2025",
"summary": "Interface ICutter Namespace Hi.Machining Assembly HiMech.dll Interface of cutter. public interface ICutter : IGetSweptable, IVolumeRemover, IAnchoredDisplayee, IDisplayee, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IExpandToBox3d, IDuplicate, IDisposable, IClearCache, INameNote Inherited Members IGetSweptable.GetSweptable(double) IDisplayee.Display(Bind) IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetFletchBuckle.GetFletchBuckle() IMakeXmlSource.MakeXmlSource(string, string, bool) IAbstractNote.AbstractNote IAnchoredCollidableStem.GetAnchoredCollidables() IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() IExpandToBox3d.ExpandToBox3d(Box3d) IDuplicate.Duplicate(params object[]) IDisposable.Dispose() IClearCache.ClearCache() INameNote.Name INameNote.Note Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CutterThemeColor The default theme color for cutter body visualization. public static Vec3d CutterThemeColor { get; } Property Value Vec3d CutterTip Gets the anchor point representing the tip of the cutter. Anchor CutterTip { get; } Property Value Anchor The anchor point at the cutter tip, or null if the shaper topology brick is not available. Remarks The cutter tip is the reference point for the cutting tool, typically located at the end of the shaper part. This point is used for positioning and orientation calculations during machining operations. IsSpinningCutter Is cutter spining when machining. bool IsSpinningCutter { get; } Property Value bool Is cutter spining when machining. ShankThemeColor The default theme color for shank visualization. public static Vec3d ShankThemeColor { get; } Property Value Vec3d ShaperTopoBrick cutable part of cutter. the part cut the workpiece if overlapped. ITopoBrick ShaperTopoBrick { get; } Property Value ITopoBrick StrutTopoBrick uncutable part of cutter. the part triggers collision to workpiece if overlapped. ITopoBrick StrutTopoBrick { get; } Property Value ITopoBrick"
},
"api/Hi.Machining.ICutterAnchorable.html": {
"href": "api/Hi.Machining.ICutterAnchorable.html",
"title": "Interface ICutterAnchorable | HiAPI-C# 2025",
"summary": "Interface ICutterAnchorable Namespace Hi.Machining Assembly HiMech.dll IGetAnchor of cutter. [Obsolete] public interface ICutterAnchorable : IGetSweptable, IVolumeRemover, IGetAnchor, IGetTopoIndex Inherited Members IGetSweptable.GetSweptable(double) IGetAnchor.GetAnchor() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Machining.IGetSweptable.html": {
"href": "api/Hi.Machining.IGetSweptable.html",
"title": "Interface IGetSweptable | HiAPI-C# 2025",
"summary": "Interface IGetSweptable Namespace Hi.Machining Assembly HiCbtr.dll Interface of Get Sweptable. public interface IGetSweptable : IVolumeRemover Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSweptable(double) Get Sweptable. Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The fraction tolerance for the sweptable. Returns Sweptable Sweptable"
},
"api/Hi.Machining.IMachiningTool.html": {
"href": "api/Hi.Machining.IMachiningTool.html",
"title": "Interface IMachiningTool | HiAPI-C# 2025",
"summary": "Interface IMachiningTool Namespace Hi.Machining Assembly HiMech.dll Interface for machining tools that combine a holder and a cutter. public interface IMachiningTool : IDisplayee, IExpandToBox3d, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IDuplicate, IClearCache, IGetFluteNum Inherited Members IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetFletchBuckle.GetFletchBuckle() IMakeXmlSource.MakeXmlSource(string, string, bool) IAbstractNote.AbstractNote IDuplicate.Duplicate(params object[]) IClearCache.ClearCache() IGetFluteNum.GetFluteNum() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MillingToolUtil.GetFullH(IMachiningTool) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Cutter Gets the cutting tool. ICutter Cutter { get; } Property Value ICutter ExposedCutterBendingPara_umdN Gets the exposed cutter bending parameter in micrometers per Newton. double ExposedCutterBendingPara_umdN { get; } Property Value double ExposedCutterHeight_mm Gets or sets the exposed cutter height in millimeters. double ExposedCutterHeight_mm { get; set; } Property Value double ExposedCutterZDeflectionPara_umdN Gets the exposed cutter Z-axis deflection parameter in micrometers per Newton. double ExposedCutterZDeflectionPara_umdN { get; } Property Value double Holder Gets the tool holder. IHolder Holder { get; } Property Value IHolder Note Gets or sets the note for this machining tool. string Note { get; set; } Property Value string SpindleBuckleToToolTipLength Gets the length from spindle buckle to tool tip in millimeters. double SpindleBuckleToToolTipLength { get; } Property Value double ToolTip Gets the tool tip anchor point. Anchor ToolTip { get; } Property Value Anchor"
},
"api/Hi.Machining.IVolumeRemover.html": {
"href": "api/Hi.Machining.IVolumeRemover.html",
"title": "Interface IVolumeRemover | HiAPI-C# 2025",
"summary": "Interface IVolumeRemover Namespace Hi.Machining Assembly HiCbtr.dll Only inherit from IGetInitStickConvex and IGetSweptable. public interface IVolumeRemover Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html": {
"href": "api/Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html",
"title": "Enum CollidableComponentEnum | HiAPI-C# 2025",
"summary": "Enum CollidableComponentEnum Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Defines the components of a machining setup that can participate in collision detection. public enum CollidableComponentEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CutterFlute = 4 Cutter Flute. CutterShank = 3 Cutter Shank. Fixture = 1 Fixture. ToolHolder = 2 Tool Holder. Workpiece = 0 Workpiece."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MachiningEquipmentUtil.AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMachinePositionAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment) MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) 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) MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) 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<IMessage>) Initializes a new instance of the MachiningEquipment class from XML data. public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<CubeTree> WorkpieceMeshedGeomGetter { get; set; } Property Value Func<CubeTree> 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",
"title": "Class MachiningEquipmentCollisionIndexPairsSource | HiAPI-C# 2025",
"summary": "Class MachiningEquipmentCollisionIndexPairsSource Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Source of CollisionIndexPair. The adjacent solids will not be added to the CollisionIndexPairs. public class MachiningEquipmentCollisionIndexPairsSource : ICollisionIndexPairsSource, IGetCollisionIndexPairs, IMakeXmlSource Inheritance object MachiningEquipmentCollisionIndexPairsSource Implements ICollisionIndexPairsSource IGetCollisionIndexPairs 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningEquipmentCollisionIndexPairsSource(IMachiningChain, HashSet<CollisionIndexPair>) Initializes a new instance of the MachiningEquipmentCollisionIndexPairsSource class with a specified machining chain and excluded pairs. public MachiningEquipmentCollisionIndexPairsSource(IMachiningChain src, HashSet<CollisionIndexPair> excludedPairs) Parameters src IMachiningChain The solid machining chain to build collision pairs from. excludedPairs HashSet<CollisionIndexPair> The set of collision pairs to exclude from collision detection. Remarks This constructor builds the default collision index pairs from the provided machining chain and removes the specified excluded pairs from consideration. MachiningEquipmentCollisionIndexPairsSource(IMachiningChain, string) Initializes a new instance of the MachiningEquipmentCollisionIndexPairsSource class with a specified machining chain and excluded pairs string. public MachiningEquipmentCollisionIndexPairsSource(IMachiningChain src, string excludedPairsString = \"\") Parameters src IMachiningChain The solid machining chain to build collision pairs from. excludedPairsString string A string representation of collision pairs to exclude, in the format \"[Key1][Key2];[Key3][Key4]\". Remarks This constructor builds the default collision index pairs from the provided machining chain and removes the pairs specified in the excludedPairsString from consideration. MachiningEquipmentCollisionIndexPairsSource(XElement, IGetMachiningChain) Initializes a new instance of the MachiningEquipmentCollisionIndexPairsSource class from XML data. public MachiningEquipmentCollisionIndexPairsSource(XElement src, IGetMachiningChain res) Parameters src XElement The XML element containing the collision index pairs configuration. res IGetMachiningChain The solid machining chain reference used to build default index pairs. Fields XName Gets the XML element name used for serialization. public static string XName Field Value string Methods GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable<CollisionIndexPair> GetCollisionIndexPairs() Returns IEnumerable<CollisionIndexPair> A collection of CollisionIndexPair objects. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Static constructor that initializes XML serialization support. public static void Reg(XFactory factory = null) Parameters factory XFactory Remarks Registers the XML factory for deserializing MachiningEquipmentCollisionIndexPairsSource instances and ensures required XML element names are initialized."
},
"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. 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",
"title": "Namespace Hi.Machining.MachiningEquipmentUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Machining.MachiningEquipmentUtils Classes MachiningEquipment Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc.. MachiningEquipmentCollisionIndex Represents a collision index for machining equipment components. This class manages collision detection between different parts of the machining equipment. MachiningEquipmentCollisionIndexPairsSource Source of CollisionIndexPair. The adjacent solids will not be added to the CollisionIndexPairs. MachiningEquipmentUtil Utility methods for working with machining equipment. Interfaces IGetMachiningEquipment Interface for objects that can provide access to a machining equipment instance. IMachiningEquipment Machining equipment. Enums CollidableComponentEnum Defines the components of a machining setup that can participate in collision detection."
},
"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<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 Inheritance object Dictionary<int, IMachiningTool> MachiningToolHouse Implements 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 Inherited Members Dictionary<int, IMachiningTool>.Add(int, IMachiningTool) Dictionary<int, IMachiningTool>.Clear() Dictionary<int, IMachiningTool>.ContainsKey(int) Dictionary<int, IMachiningTool>.ContainsValue(IMachiningTool) Dictionary<int, IMachiningTool>.EnsureCapacity(int) Dictionary<int, IMachiningTool>.GetAlternateLookup<TAlternateKey>() Dictionary<int, IMachiningTool>.GetEnumerator() Dictionary<int, IMachiningTool>.OnDeserialization(object) Dictionary<int, IMachiningTool>.Remove(int) Dictionary<int, IMachiningTool>.Remove(int, out IMachiningTool) Dictionary<int, IMachiningTool>.TrimExcess() Dictionary<int, IMachiningTool>.TrimExcess(int) Dictionary<int, IMachiningTool>.TryAdd(int, IMachiningTool) Dictionary<int, IMachiningTool>.TryGetAlternateLookup<TAlternateKey>(out Dictionary<int, IMachiningTool>.AlternateLookup<TAlternateKey>) Dictionary<int, IMachiningTool>.TryGetValue(int, out IMachiningTool) Dictionary<int, IMachiningTool>.Comparer Dictionary<int, IMachiningTool>.Count Dictionary<int, IMachiningTool>.Capacity Dictionary<int, IMachiningTool>.this[int] Dictionary<int, IMachiningTool>.Keys Dictionary<int, IMachiningTool>.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DictionaryUtil.Retrieve<K, V>(Dictionary<K, V>, K, out V, bool) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, TValue) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, Func<TValue>) DictionaryUtil.TryGetValueByKeys<TKey, TValue>(IDictionary<TKey, TValue>, IEnumerable<TKey>, out TValue) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) 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<IMessage>) Ctor. public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress<IMessage> 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<int, MillingTool> CreateStickMillingTool() Returns KeyValuePair<int, MillingTool> 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",
"title": "Class MachiningVolumeRemovalProc.StepMotionSnapshot | HiAPI-C# 2025",
"summary": "Class MachiningVolumeRemovalProc.StepMotionSnapshot Namespace Hi.Machining Assembly HiMech.dll Represents a snapshot of the machining motion state. public record MachiningVolumeRemovalProc.StepMotionSnapshot : IEquatable<MachiningVolumeRemovalProc.StepMotionSnapshot> Inheritance object MachiningVolumeRemovalProc.StepMotionSnapshot Implements IEquatable<MachiningVolumeRemovalProc.StepMotionSnapshot> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StepMotionSnapshot(DVec3d, DVec3d, SeqPair<Mat4d>, Dictionary<Anchor, Mat4d>, double[], bool, IMachiningTool, WorkpieceService, double, CoolantHeatCondition, SortedList<double, double>) Represents a snapshot of the machining motion state. public StepMotionSnapshot(DVec3d GeomCl, DVec3d ProgramCl, SeqPair<Mat4d> Seq, Dictionary<Anchor, Mat4d> AnchorTransformDictionary, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double BackgroundTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList<double, double> FluteZToDzList) Parameters GeomCl DVec3d The geometric CL point. ProgramCl DVec3d The program CL point. Seq SeqPair<Mat4d> The sequence pair of transformation matrices. AnchorTransformDictionary Dictionary<Anchor, Mat4d> Dictionary mapping anchors to their transformation matrices. McValues double[] Array of machine values. EnableSweeping bool Whether sweeping is enabled. MachiningTool IMachiningTool The machining tool being used. WorkpieceService WorkpieceService Service that owns the workpiece being machined. BackgroundTemperature_K double Background temperature in Kelvin. CoolantHeatCondition CoolantHeatCondition The coolant heat condition. FluteZToDzList SortedList<double, double> Sorted list mapping flute Z positions to their deltas. Properties AnchorTransformDictionary Dictionary mapping anchors to their transformation matrices. public Dictionary<Anchor, Mat4d> AnchorTransformDictionary { get; init; } Property Value Dictionary<Anchor, Mat4d> BackgroundTemperature_K Background temperature in Kelvin. public double BackgroundTemperature_K { get; init; } Property Value double CoolantHeatCondition The coolant heat condition. public CoolantHeatCondition CoolantHeatCondition { get; init; } Property Value CoolantHeatCondition EnableSweeping Whether sweeping is enabled. public bool EnableSweeping { get; init; } Property Value bool FluteZToDzList Sorted list mapping flute Z positions to their deltas. public SortedList<double, double> FluteZToDzList { get; init; } Property Value SortedList<double, double> GeomCl The geometric CL point. public DVec3d GeomCl { get; init; } Property Value DVec3d MachiningTool The machining tool being used. public IMachiningTool MachiningTool { get; init; } Property Value IMachiningTool McValues Array of machine values. public double[] McValues { get; init; } Property Value double[] ProgramCl The program CL point. public DVec3d ProgramCl { get; init; } Property Value DVec3d Seq The sequence pair of transformation matrices. public SeqPair<Mat4d> Seq { get; init; } Property Value SeqPair<Mat4d> Workpiece The workpiece data model. public Workpiece Workpiece { get; } Property Value Workpiece WorkpieceService Service that owns the workpiece being machined. public WorkpieceService WorkpieceService { get; init; } Property Value WorkpieceService"
},
"api/Hi.Machining.MachiningVolumeRemovalProc.html": {
"href": "api/Hi.Machining.MachiningVolumeRemovalProc.html",
"title": "Class MachiningVolumeRemovalProc | HiAPI-C# 2025",
"summary": "Class MachiningVolumeRemovalProc Namespace Hi.Machining Assembly HiMech.dll Handles the machining volume removal process and related operations. public class MachiningVolumeRemovalProc Inheritance object MachiningVolumeRemovalProc Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningVolumeRemovalProc(Func<MachiningEquipment>, Func<WorkpieceService>) Initializes a new instance of the MachiningVolumeRemovalProc class. public MachiningVolumeRemovalProc(Func<MachiningEquipment> machiningEquipmentGetter, Func<WorkpieceService> workpieceServiceGetter) Parameters machiningEquipmentGetter Func<MachiningEquipment> workpieceServiceGetter Func<WorkpieceService> Properties ClMachiningValve Gets the CL machining valve used to control the machining process. public ClMachiningValve ClMachiningValve { get; } Property Value ClMachiningValve Methods ClearCache() Clears the internal cache, including the CL machining valve state and step-related caches. public void ClearCache() StepAssignDummyAttach(WorkpieceService, ClStrip, DVec3d) Creates a dummy attachment point in the CL strip. public static ClStripPos StepAssignDummyAttach(WorkpieceService workpieceService, ClStrip clStrip, DVec3d programCl) Parameters workpieceService WorkpieceService Service that owns the workpiece to attach to. clStrip ClStrip The CL strip to add the attachment to. programCl DVec3d The program CL point for the attachment. Returns ClStripPos The created CL strip position. StepGetGeomBoolCache(ICutter, double, SeqPair<Mat4d>, bool, bool?) Gets a geometric boolean cache for the current step based on cutter and motion parameters. public static GeomBoolCache StepGetGeomBoolCache(ICutter cutter, double stepPreferredCubeWidth, SeqPair<Mat4d> seq, bool enableSweeping, bool? isFluteTouchingWorkpiece) Parameters cutter ICutter The cutter to use for the operation. stepPreferredCubeWidth double The preferred cube width for discretization. seq SeqPair<Mat4d> The sequence pair of transformation matrices. enableSweeping bool Whether to enable sweeping operation. isFluteTouchingWorkpiece bool? Optional flag indicating if the flute is touching the workpiece. Returns GeomBoolCache A geometric boolean cache containing the operation data. Remarks Note that it is hard to know if flute is touching the workpiece by sweeping without making sweeping volume. Checking by non-sweeping geometry may miss the touching part of the sweeping volume. Hence isFluteTouchingWorkpiece should be kept null and be considered obsolete. There is no performance gain from that parameter. Events CutterChanged Event that is triggered when the cutter is changed, providing the previous and current cutter. public event Action<SeqPair<ICutter>> CutterChanged Event Type Action<SeqPair<ICutter>>"
},
"api/Hi.Machining.MatInterpolationKit.html": {
"href": "api/Hi.Machining.MatInterpolationKit.html",
"title": "Class MatInterpolationKit | HiAPI-C# 2025",
"summary": "Class MatInterpolationKit Namespace Hi.Machining Assembly HiMech.dll Provides functionality for interpolating between two transformation matrices. public class MatInterpolationKit Inheritance object MatInterpolationKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MatInterpolationKit(Mat4d, Mat4d) Initializes a new instance of the MatInterpolationKit class with two matrices. public MatInterpolationKit(Mat4d m0, Mat4d m1) Parameters m0 Mat4d The first matrix. m1 Mat4d The second matrix. Properties Mat0 Gets the first matrix. public Mat4d Mat0 { get; } Property Value Mat4d Mat1 Gets the second matrix. public Mat4d Mat1 { get; } Property Value Mat4d RotationAxisAngle Gets the rotation axis and angle between the two matrices. public AxisAngle4d RotationAxisAngle { get; } Property Value AxisAngle4d Trans Gets the translation vector between the two matrices. public Vec3d Trans { get; } Property Value Vec3d Methods GetInterpolation(double) Gets an interpolated matrix between the two matrices. public Mat4d GetInterpolation(double alpha) Parameters alpha double The interpolation factor between 0 and 1. Returns Mat4d The interpolated matrix."
},
"api/Hi.Machining.MatRelation.html": {
"href": "api/Hi.Machining.MatRelation.html",
"title": "Enum MatRelation | HiAPI-C# 2025",
"summary": "Enum MatRelation Namespace Hi.Machining Assembly HiMech.dll Defines the relationship between two matrices. public enum MatRelation Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Identity = 0 Matrices are identical. Linear = 1 Matrices have a linear relationship. NonLinear = 2 Matrices have a non-linear relationship."
},
"api/Hi.Machining.MatRelationUtil.html": {
"href": "api/Hi.Machining.MatRelationUtil.html",
"title": "Class MatRelationUtil | HiAPI-C# 2025",
"summary": "Class MatRelationUtil Namespace Hi.Machining Assembly HiMech.dll Utility methods for determining relationships between matrices. public static class MatRelationUtil Inheritance object MatRelationUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMatRelation(SeqPair<Mat4d>) Gets the relationship between two matrices in a sequence pair. public static MatRelation GetMatRelation(SeqPair<Mat4d> seq) Parameters seq SeqPair<Mat4d> The sequence pair containing two matrices. Returns MatRelation The relationship between the matrices. GetMatRelation(Mat4d, Mat4d) Gets the relationship between two matrices. public static MatRelation GetMatRelation(Mat4d m0, Mat4d m1) Parameters m0 Mat4d The first matrix. m1 Mat4d The second matrix. Returns MatRelation The relationship between the matrices."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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",
"title": "Class ToolNotFoundException | HiAPI-C# 2025",
"summary": "Class ToolNotFoundException Namespace Hi.Machining Assembly HiMech.dll Exception thrown when a tool with the specified ID is not found. public class ToolNotFoundException : Exception, ISerializable Inheritance object Exception ToolNotFoundException 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 Exception.SerializeObjectState object.Equals(object) object.Equals(object, object) object.GetHashCode() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ToolNotFoundException(int) Initializes a new instance of the ToolNotFoundException class with the specified tool ID. public ToolNotFoundException(int toolId) Parameters toolId int The ID of the tool that was not found. ToolNotFoundException(int, string) Initializes a new instance of the ToolNotFoundException class with the specified tool ID and error message. public ToolNotFoundException(int toolId, string msg) Parameters toolId int The ID of the tool that was not found. msg string The error message that explains the reason for the exception. Properties ToolId Gets or sets the ID of the tool that was not found. public int ToolId { get; set; } Property Value int"
},
"api/Hi.Machining.html": {
"href": "api/Hi.Machining.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ApiActionResult> Inheritance object ApiActionResult Implements IEquatable<ApiActionResult> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.MachiningProcs.ConfigStepFunc.html": {
"href": "api/Hi.MachiningProcs.ConfigStepFunc.html",
"title": "Delegate ConfigStepFunc | HiAPI-C# 2025",
"summary": "Delegate ConfigStepFunc Namespace Hi.MachiningProcs Assembly HiMech.dll Delegate for configuring a milling step with additional arguments. public delegate object ConfigStepFunc(MachiningStep millingStep, object arg) Parameters millingStep MachiningStep The milling step to configure. arg object Additional arguments for configuration. Returns object The configuration result. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.MachiningProcs.IMachiningProjectGetter.html": {
"href": "api/Hi.MachiningProcs.IMachiningProjectGetter.html",
"title": "Interface IMachiningProjectGetter | HiAPI-C# 2025",
"summary": "Interface IMachiningProjectGetter Namespace Hi.MachiningProcs Assembly HiNc.dll Interface for objects that can provide a MachiningProject instance. public interface IMachiningProjectGetter Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMachiningProject() Gets the MachiningProject instance. MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance."
},
"api/Hi.MachiningProcs.IProjectService.html": {
"href": "api/Hi.MachiningProcs.IProjectService.html",
"title": "Interface IProjectService | HiAPI-C# 2025",
"summary": "Interface IProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Interface for services that manage machining projects. public interface IProjectService : IMachiningProjectGetter Inherited Members IMachiningProjectGetter.GetMachiningProject() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MachiningProject Gets or sets the machining project instance. MachiningProject MachiningProject { get; set; } Property Value MachiningProject Methods GetLocalProjectService() Get Local Project Service as base-service. LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service"
},
"api/Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html": {
"href": "api/Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html",
"title": "Delegate LocalProjectService.MachiningProjectChangedDelegate | HiAPI-C# 2025",
"summary": "Delegate LocalProjectService.MachiningProjectChangedDelegate Namespace Hi.MachiningProcs Assembly HiNc.dll Delegate for machining project changed events. public delegate void LocalProjectService.MachiningProjectChangedDelegate(MachiningProject project, string projectPath) Parameters project MachiningProject The new machining project. projectPath string The path to the project file. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<LocalProjectService>) Ctor. public LocalProjectService(ILogger<LocalProjectService> logger = null) Parameters logger ILogger<LocalProjectService> 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<object, object> Global { get; set; } Property Value Dictionary<object, object> 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<MachiningStep, double?> InspectingQuantityFunc { get; } Property Value Func<MachiningStep, double?> 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 Logger Gets the logger instance for this service. public ILogger<LocalProjectService> Logger { get; } Property Value ILogger<LocalProjectService> 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<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 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<MillingStepLuggage> MillingStepLuggageReader { get; } Property Value ParallelBulkReader<MillingStepLuggage> 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<string, PropertyAccess<MachiningStep>> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary<string, PropertyAccess<MachiningStep>> 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<IMessage>). public bool CheckStrokeLimitOnStep() Returns bool True if within limits or no limits configured. CloseProject() Closes the current project. public void CloseProject() 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. 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<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. 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<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 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<object> 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<object> Enumerable of results from processing the act. ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress<IMessage>) Train Milling Parameter. public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, IProgress<IMessage> messageProgress = null) Parameters sampleFlags SampleFlag outlierRatio double dstRelFile string 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 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<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. ReloadProject() Reloads the current project. public void ReloadProject() ResetRuntime(IProgress<IMessage>) 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<IMessage> messageProgress = null) Parameters messageProgress IProgress<IMessage> 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. RunCsvFile(string, string) Runs a CSV file from the specified path. public IEnumerable<Action> RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. Returns IEnumerable<Action> An enumerable of actions to be executed. RunNc(string, string) Runs NC commands from raw text. public IEnumerable<Action> 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<Action> 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<Action> 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<Action> 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<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, IProgress<IMessage>) Train Milling Parameter. public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate, IProgress<IMessage> messageProgress = null) Parameters sampleFlags SampleFlag enableFzOnlyDuringDrilling bool outlierRatio double dstRelFile string cancellationToken CancellationToken paraTemplate ICuttingPara messageProgress IProgress<IMessage> 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<IMessage>) 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<IMessage> messageProgress = null) Parameters samplingPeriod TimeSpan The time period between samples relFileTemplate string Template for the output file path, can include [NcName] placeholder messageProgress IProgress<IMessage> Optional caller-supplied progress sink for start/finish messages. WriteStepFile(string, IProgress<IMessage>) Writes step-based data to a file. 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. 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<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 App-lifetime event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action<SourcedActEntry> OnSourcedActEntry Event Type Action<SourcedActEntry> OnSyntaxPieceRan Raised after each SyntaxPiece has been run during NC execution (app lifetime). public event Action<SyntaxPiece> OnSyntaxPieceRan Event Type Action<SyntaxPiece> 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<SeqPair<Workpiece>> WorkpieceChanged Event Type Action<SeqPair<Workpiece>> 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<string, object>) 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<string, object>) 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>(TModel) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func<ModelMetadata, bool>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html": {
"href": "api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html",
"title": "Delegate MachiningActRunner.MachiningStepBuiltDelegate | HiAPI-C# 2025",
"summary": "Delegate MachiningActRunner.MachiningStepBuiltDelegate Namespace Hi.MachiningProcs Assembly HiMech.dll Delegate for configuring a step with previous and current step information. public delegate void MachiningActRunner.MachiningStepBuiltDelegate(MachiningStep preStep, MachiningStep curStep) Parameters preStep MachiningStep The previous milling step. curStep MachiningStep The current milling step. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningActRunner(Action<Exception>, Action<IEnumerable<MillingStepLuggage>>, Func<MachiningToolHouse>, Func<MachiningEquipment>, Func<WorkpieceService>, Action) Initializes a new instance. public MachiningActRunner(Action<Exception> reportException, Action<IEnumerable<MillingStepLuggage>> stepStorageWriter, Func<MachiningToolHouse> machiningToolHouseGetter, Func<MachiningEquipment> machiningEquipmentGetter, Func<WorkpieceService> workpieceServiceGetter, Action resetMillingStepLuggageDbAction) Parameters 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. machiningToolHouseGetter Func<MachiningToolHouse> The getter function for the machining tool house. machiningEquipmentGetter Func<MachiningEquipment> The getter function for the machining equipment. workpieceServiceGetter Func<WorkpieceService> 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<MachiningStep> GrpcPostStepAction { get; set; } Property Value Action<MachiningStep> 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<IAct> 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<IAct> 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<object> 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<object> A sequence of processed objects. ResetMillingStepLuggageDb(StepDiagnosticProgress, IProgress<IMessage>) Resets the milling step luggage database. 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. ResetStateAndClStrip(StepDiagnosticProgress, IProgress<IMessage>) Resets the state and cutter location strip. 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. 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-ShankThermalModelUnavailable 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<MachiningStep> UiPostStepAction Event Type Action<MachiningStep>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the MachiningActRunnerConfig class from XML. public MachiningActRunnerConfig(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The source XML element. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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",
"title": "Class MachiningParallelProc.StepTaskBundle | HiAPI-C# 2025",
"summary": "Class MachiningParallelProc.StepTaskBundle Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a bundle of tasks related to a milling step. public class MachiningParallelProc.StepTaskBundle Inheritance object MachiningParallelProc.StepTaskBundle Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StepTaskBundle(double, double) Initializes a new instance of the MachiningParallelProc.StepTaskBundle class with background and spindle temperatures. public StepTaskBundle(double backgroundTemperature_K, double spindleTemperature_K) Parameters backgroundTemperature_K double The background temperature in Kelvin. spindleTemperature_K double The spindle temperature in Kelvin. Properties MachineMotionStep Gets the machining step. public MachineMotionStep MachineMotionStep { get; } Property Value MachineMotionStep StepIndex Gets the index of the step. public int StepIndex { get; } Property Value int Methods Wait(CancellationToken) Waits for the completion of the post-sequential physics task. public void Wait(CancellationToken token) Parameters token CancellationToken The cancellation token."
},
"api/Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html": {
"href": "api/Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html",
"title": "Class MachiningParallelProc.SubstractionResult | HiAPI-C# 2025",
"summary": "Class MachiningParallelProc.SubstractionResult Namespace Hi.MachiningProcs Assembly HiMech.dll Represents the result of a subtraction operation. public record MachiningParallelProc.SubstractionResult : IEquatable<MachiningParallelProc.SubstractionResult> Inheritance object MachiningParallelProc.SubstractionResult Implements IEquatable<MachiningParallelProc.SubstractionResult> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubstractionResult(Substraction, ClStripPos) Represents the result of a subtraction operation. public SubstractionResult(Substraction Substraction, ClStripPos ClStripPos) Parameters Substraction Substraction ClStripPos ClStripPos Properties ClStripPos public ClStripPos ClStripPos { get; init; } Property Value ClStripPos Substraction public Substraction Substraction { get; init; } Property Value Substraction"
},
"api/Hi.MachiningProcs.MachiningParallelProc.html": {
"href": "api/Hi.MachiningProcs.MachiningParallelProc.html",
"title": "Class MachiningParallelProc | HiAPI-C# 2025",
"summary": "Class MachiningParallelProc Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a parallel processing system for milling operations that manages various tasks such as sweeping, subtraction, force calculation, and physics simulation. public class MachiningParallelProc : IDisposable Inheritance object MachiningParallelProc 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningParallelProc(MachiningActRunner) Initializes a new instance of the MachiningParallelProc class. public MachiningParallelProc(MachiningActRunner millingActRunner) Parameters millingActRunner MachiningActRunner The machining act runner to manage milling operations. Properties MachiningActRunner Gets the machining act runner that manages the milling operations. public MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner 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 MachiningParallelProc 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. WaitAll() Waits for all tasks to complete. public void WaitAll()"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance from XML data. public MachiningProject(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> 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<IMessage>) Loads a machining project from the specified file path. public static MachiningProject LoadFile(string projectFilePath, IProgress<IMessage> progress) Parameters projectFilePath string Path to the project file to load progress IProgress<IMessage> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string>, 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<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> 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<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> NcRunnerSessionState 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. 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<FileLineIndex, string> PostBlockScripts { get; } Property Value Dictionary<FileLineIndex, string> 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<FileLineIndex, string> PreBlockScripts { get; } Property Value Dictionary<FileLineIndex, string> 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<string, StreamWriter> SessionWriters { get; } Property Value Dictionary<string, StreamWriter> 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<int, NcOptOption> StepIndexToNcOptOptionSortedList { get; set; } Property Value SortedList<int, NcOptOption> 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<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> 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<IMachiningTool> WarnedFluteMaterialMissingTools { get; } Property Value HashSet<IMachiningTool> Methods BeginPreserve() Begins a preserve section in the optimization process. public void BeginPreserve() 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. 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<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 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<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> 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<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. 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<NcOptOption>) 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<MachiningStep> MachiningStepSelected Event Type Action<MachiningStep> 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<CancellationToken> OnCurrentLineEnd Event Type Action<CancellationToken> SourcedActEntry Event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action<SourcedActEntry> SourcedActEntry Event Type Action<SourcedActEntry> SyntaxPieceRan Event triggered when a syntax piece has been executed. public event Action<SyntaxPiece> SyntaxPieceRan Event Type Action<SyntaxPiece>"
},
"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<MessageDto> Inheritance object MessageDto Implements IEquatable<MessageDto> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, double>, double, Box3d, List<PairZr>) 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<double, double> GetFluteZToDzListByGapResolutionSwitch(SortedList<double, double> fluteZToDzListByWorkpieceResolution, double workpieceResolution, Box3d boundingBoxOnToolRunningCoordinate, List<PairZr> fluteZAscendentZrContour) Parameters fluteZToDzListByWorkpieceResolution SortedList<double, double> 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<PairZr> The ascending Z coordinates of the flute contour. Returns SortedList<double, double> 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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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 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. 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 IsInitialized True after the first call has built the layered pipeline. public bool IsInitialized { get; } Property Value bool SyntaxPieceLayers 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 RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls extend each layer in place via AppendSource(IEnumerable<T>). public List<LazyLinkedList<SyntaxPiece>> SyntaxPieceLayers { get; set; } Property Value List<LazyLinkedList<SyntaxPiece>> 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<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 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<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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class ProxyProjectService | HiAPI-C# 2025",
"summary": "Class ProxyProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Delegate (User-based) Project Service. Apply relative file path from AdminDirectory. public class ProxyProjectService : IProjectService, IMachiningProjectGetter Inheritance object ProxyProjectService Implements IProjectService 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProxyProjectService(LocalProjectService, ProxyConfig) Initializes a new instance of the ProxyProjectService class. public ProxyProjectService(LocalProjectService localProjectService, ProxyConfig proxyConfig) Parameters localProjectService LocalProjectService The local project service. proxyConfig ProxyConfig The proxy configuration options. Properties AdminDirectory Gets the admin directory path from the proxy configuration. public string AdminDirectory { get; set; } Property Value string LocalProjectService Gets the local project service instance. public LocalProjectService LocalProjectService { get; } Property Value LocalProjectService ProxyConfig Gets the proxy configuration options. public ProxyConfig ProxyConfig { get; } Property Value ProxyConfig RelativeProjectPath Gets the project path relative to the AdminDirectory. public string RelativeProjectPath { get; } Property Value string Methods CloseProject() Closes the current project. public void CloseProject() 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. LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root NewProject(string) Creates a new project by file path relative to the admin directory. public void NewProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory ReloadProject() Reloads the current project. public void ReloadProject() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root SaveProject() Saves the current project. public void SaveProject()"
},
"api/Hi.MachiningProcs.RenderingFlag.html": {
"href": "api/Hi.MachiningProcs.RenderingFlag.html",
"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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<object, object> Global { get; } Property Value Dictionary<object, object> 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<Func<MillingPhysicsBrief, double>, double> OptCallPreferFuncIndexDictionary() Returns Dictionary<Func<MillingPhysicsBrief, double>, 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<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. [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<MachiningStep, object>) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"<p>Register Step Variable.</p> <p>\\\"unit\\\" is nullable</p> <p>\\\"formatString\\\" is nullable</p>\")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func<MachiningStep, object> 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<MachiningStep, object> 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<Action> RunBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable<Action> 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<Action> RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable<Action> 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<Action> 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<Action> 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<MachiningStep> MachiningStepSelected Event Type Action<MachiningStep> 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<SourcedActEntry> SessionSourcedActEntry Event Type Action<SourcedActEntry> 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<MachiningStep> SessionStepSelected Event Type Action<MachiningStep> 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<SyntaxPiece> SessionSyntaxPieceRan Event Type Action<SyntaxPiece> 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<SyntaxPiece> SyntaxPieceRan Event Type Action<SyntaxPiece>"
},
"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]\")] [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<string, object>) 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<string, object>) 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>(TModel) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func<ModelMetadata, bool>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<object, object> Global { get; } Property Value Dictionary<object, object> 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<string> ConvertClToNcFiles(string relNcFileTemplate = \"Output/[NcName].nc\") Parameters relNcFileTemplate string Output path template; [NcName] is replaced by the source file name. Returns IReadOnlyList<string> 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<MachiningStep, object>) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"<p>Register Step Variable.</p> <p>\\\"unit\\\" is nullable</p> <p>\\\"formatString\\\" is nullable</p>\")] [NonAction] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func<MachiningStep, object> 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<MachiningStep, object> 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<Action> RunBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable<Action> 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<Action> RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable<Action> 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<Action> 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<Action> 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<string, object>) 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<string, object>) 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>(TModel) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, params Expression<Func<TModel, object>>[]) ControllerBase.TryUpdateModelAsync<TModel>(TModel, string, IValueProvider, Func<ModelMetadata, bool>) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func<ModelMetadata, bool>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SetupController(LocalProjectService, ILogger<SetupController>) Initializes a new instance. public SetupController(LocalProjectService projectService, ILogger<SetupController> logger) Parameters projectService LocalProjectService logger ILogger<SetupController> 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<IMessage> Inheritance object ShellProgress Implements IProgress<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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress<StepDiagnostic>, 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<IMessage> Messages { get; } Property Value SynList<IMessage> 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<int, IMessage> MessageAdded Event Type Action<int, IMessage>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string>) 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<string> onWarning) Parameters spindleCapability SpindleCapability machineMotionStep MachineMotionStep preSpindleSpeedCache SpindleSpeedCache onWarning Action<string> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 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<StepDiagnostic>, int, ISentenceCarrier) 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 IProgress<IMessage> AnchoredToStep(this IProgress<StepDiagnostic> sink, int stepIndex, ISentenceCarrier carrier = null) Parameters 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 IProgress<IMessage>"
},
"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<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 object StepDiagnosticProgress Implements IProgress<StepDiagnostic> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress<StepDiagnostic>, 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<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>"
},
"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<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 object StepScopedProgress Implements IProgress<IMessage> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress<StepDiagnostic>, 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<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."
},
"api/Hi.MachiningProcs.html": {
"href": "api/Hi.MachiningProcs.html",
"title": "Namespace Hi.MachiningProcs | HiAPI-C# 2025",
"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<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. 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<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. 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",
"title": "Interface IFlagText | HiAPI-C# 2025",
"summary": "Interface IFlagText Namespace Hi.MachiningSteps Assembly HiMech.dll temperary design for showing flag text. public interface IFlagText Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FlagsText Gets the text representation of command flags. [Present(\"NC Flag\", \"NC Flag\", PhysicsUnit.None, \"G\")] string FlagsText { get; } Property Value string"
},
"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.GetMachiningEquipment() IGetMachiningEquipment.GetMillingEquipment() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<MillingStepLuggage> MillingStepLuggageReader { get; } Property Value ParallelBulkReader<MillingStepLuggage> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface IStepPropertyAccessHost | HiAPI-C# 2025",
"summary": "Interface IStepPropertyAccessHost Namespace Hi.MachiningSteps Assembly HiMech.dll 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. public interface IStepPropertyAccessHost Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties StepPropertyAccessDictionary Dictionary of step-property accessors keyed by property name. Used by CSV title-row processing to decide whether a column already maps to a reserved step property; new columns are registered via RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>). ConcurrentDictionary<string, PropertyAccess<MachiningStep>> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary<string, PropertyAccess<MachiningStep>> Methods 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. 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."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Mat4d>) 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<Mat4d> 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<Mat4d> 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<string>) 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<Mat4d> SeqOnToolRunningCoordinate { get; } Property Value SeqPair<Mat4d> SeqOnWorkpieceGeomCoordinate Gets or sets the sequence of transformations on workpiece geometry coordinate. public SeqPair<Mat4d> SeqOnWorkpieceGeomCoordinate { get; set; } Property Value SeqPair<Mat4d> 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<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. Returns List<double> 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<Mat4d> GetToothSeqOnToolRunningCoordinate(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns SeqPair<Mat4d> 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",
"title": "Class MachiningStep.CollidedKeyPair | HiAPI-C# 2025",
"summary": "Class MachiningStep.CollidedKeyPair Namespace Hi.MachiningSteps Assembly HiMech.dll A pair of collided keys that indicates two entities are in collision. public record MachiningStep.CollidedKeyPair : IEquatable<MachiningStep.CollidedKeyPair> Inheritance object MachiningStep.CollidedKeyPair Implements IEquatable<MachiningStep.CollidedKeyPair> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CollidedKeyPair(string, string) A pair of collided keys that indicates two entities are in collision. public CollidedKeyPair(string KeyA, string KeyB) Parameters KeyA string KeyB string Properties KeyA public string KeyA { get; init; } Property Value string KeyB public string KeyB { get; init; } Property Value string"
},
"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<object>, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority, ISentenceCarrier, IGetSentence, ISentenceIndexed, IMotionStepIndex Inheritance object MachiningStep Implements IGetIndexedFileLine IFlexDictionaryHost<object> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) FlexDictionaryUtil.CallFlexDictionary<T>(IFlexDictionaryHost<T>) FlexDictionaryUtil.GetFlexDictionaryBytes<T>(IFlexDictionaryHost<T>, IntegerKeyDictionaryConverter<T>) FlexDictionaryUtil.WriteFlexDictionary<T>(IFlexDictionaryHost<T>, BinaryWriter, IntegerKeyDictionaryConverter<T>) 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<Vec3d> CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List<Vec3d> CuttingForcesToWorkpieceOnProgramCoordinate_N Get the cutting forces on program coordinate. Unit is Newtons. The forced item is workpiece. public List<Vec3d> CuttingForcesToWorkpieceOnProgramCoordinate_N { get; } Property Value List<Vec3d> 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<string, object> FlexDictionary { get; set; } Property Value Dictionary<string, object> 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<Vec3d> MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm { get; } Property Value List<Vec3d> 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<double> SideCuspList_um { get; } Property Value List<double> 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<Vec3d> TipDeflectionsOnToolRunningCoordinate_um { get; } Property Value List<Vec3d> 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<Mat4d> ToothSeqOnToolRunningCoordinate { get; } Property Value SeqPair<Mat4d> 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<NcOptOption>) 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<NcOptOption> action) Parameters action Action<NcOptOption> the action to modify the step."
},
"api/Hi.MachiningSteps.MachiningStepUtil.html": {
"href": "api/Hi.MachiningSteps.MachiningStepUtil.html",
"title": "Class MachiningStepUtil | HiAPI-C# 2025",
"summary": "Class MachiningStepUtil Namespace Hi.MachiningSteps Assembly HiMech.dll Utility class for milling step related constants and helper methods. public static class MachiningStepUtil Inheritance object MachiningStepUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties MachiningStepDbName Gets the database name for milling steps. public static string MachiningStepDbName { get; } Property Value string MillingStepLuggageCollectionName Gets the collection name for milling step luggage. public static string MillingStepLuggageCollectionName { get; } Property Value string"
},
"api/Hi.MachiningSteps.PresentAccess.html": {
"href": "api/Hi.MachiningSteps.PresentAccess.html",
"title": "Class PresentAccess | HiAPI-C# 2025",
"summary": "Class PresentAccess Namespace Hi.MachiningSteps Assembly HiMech.dll Provides a value accessor bound with its PresentAttribute metadata. public class PresentAccess Inheritance object PresentAccess Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PresentAccess(PresentAttribute, Func<object, object>) Initializes a new instance of the PresentAccess class. public PresentAccess(PresentAttribute present, Func<object, object> getFunc) Parameters present PresentAttribute The presentation metadata. getFunc Func<object, object> The accessor delegate that retrieves the value. Properties GetValueFunc Gets or sets the accessor delegate used to retrieve the value. public Func<object, object> GetValueFunc { get; set; } Property Value Func<object, object> Present Gets or sets the presentation metadata. public PresentAttribute Present { get; set; } Property Value PresentAttribute"
},
"api/Hi.MachiningSteps.PresentAttribute.html": {
"href": "api/Hi.MachiningSteps.PresentAttribute.html",
"title": "Class PresentAttribute | HiAPI-C# 2025",
"summary": "Class PresentAttribute Namespace Hi.MachiningSteps Assembly HiMech.dll Attribute for presenting property information with localization support. public class PresentAttribute : Attribute Inheritance object Attribute PresentAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PresentAttribute() Initializes a new instance of the PresentAttribute class. public PresentAttribute() PresentAttribute(PresentAttribute) Initializes a new instance of the PresentAttribute class by copying from another instance. public PresentAttribute(PresentAttribute src) Parameters src PresentAttribute The source attribute to copy from. PresentAttribute(string, string, PhysicsUnit, string) Initializes a new instance of the PresentAttribute class with specified parameters. public PresentAttribute(string name, string shortName, PhysicsUnit unit, string dataFormatString) Parameters name string The display name of the property. shortName string The short name of the property. unit PhysicsUnit The physics unit of the property. dataFormatString string The format string for displaying the property value. Properties DataFormatString Gets or sets the format string for displaying the property value. public string DataFormatString { get; set; } Property Value string Name Gets or sets the display name of the property. public string Name { get; set; } Property Value string ShortName Gets or sets the short name of the property. public string ShortName { get; set; } Property Value string TailUnitString Gets the unit string with parentheses for display purposes. public string TailUnitString { get; } Property Value string Unit Gets or sets the physics unit of the property. public PhysicsUnit Unit { get; set; } Property Value PhysicsUnit Methods GetPresentName(StringLocalizer) Gets the localized presentation name with unit string. public string GetPresentName(StringLocalizer loc) Parameters loc StringLocalizer The string localizer. Returns string The localized name with unit string. GetPresentName(IStringLocalizer) Gets the localized presentation name with unit string. public string GetPresentName(IStringLocalizer loc) Parameters loc IStringLocalizer The string localizer. Returns string The localized name with unit string."
},
"api/Hi.MachiningSteps.PropertyAccess-1.html": {
"href": "api/Hi.MachiningSteps.PropertyAccess-1.html",
"title": "Class PropertyAccess<TData> | HiAPI-C# 2025",
"summary": "Class PropertyAccess<TData> Namespace Hi.MachiningSteps Assembly HiMech.dll Provides access to properties of a milling step with presentation information. public class PropertyAccess<TData> where TData : class Type Parameters TData Inheritance object PropertyAccess<TData> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PropertyAccess(PresentAttribute, Func<TData, double?>) Initializes a new instance for numeric properties. public PropertyAccess(PresentAttribute presentAttribute, Func<TData, double?> getQuantityFunc) Parameters presentAttribute PresentAttribute The presentation attribute for the property. getQuantityFunc Func<TData, double?> The function to retrieve the numeric value. PropertyAccess(PresentAttribute, Func<TData, object>) Initializes a new instance for non-numeric properties. public PropertyAccess(PresentAttribute presentAttribute, Func<TData, object> getNonQuantityFunc) Parameters presentAttribute PresentAttribute The presentation attribute for the property. getNonQuantityFunc Func<TData, object> 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<TData, object> GetNonQuantityFunc { get; set; } Property Value Func<TData, object> GetQuantityFunc Gets or sets the function to retrieve a numeric value from a milling step. public Func<TData, double?> GetQuantityFunc { get; set; } Property Value Func<TData, double?> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, PropertyAccess<MachiningStep>> BuildNativeAccessDictionary() Returns Dictionary<string, PropertyAccess<MachiningStep>> 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<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). 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<CsvNcStep, CsvNcStep, CsvNcStep>, IMultiplyOperators<CsvNcStep, double, CsvNcStep> Inheritance object CsvNcStep Implements IGetFileLineIndex IAdditionOperators<CsvNcStep, CsvNcStep, CsvNcStep> IMultiplyOperators<CsvNcStep, double, CsvNcStep> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvNcStep(FileLineIndex, TimeSpan, DVec3d, List<double>) Initializes a new instance of the CsvNcStep class with the specified parameters. public CsvNcStep(FileLineIndex fileLineIndex, TimeSpan time, DVec3d mcXyzabc, List<double> 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<double> 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<double> DoubleFlexList { get; set; } Property Value List<double> 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<IMessage>, Func<DateTime, TimeSpan>) 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<IMessage> messageProgress, Func<DateTime, TimeSpan> 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<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. 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",
"title": "Class FileToTimeShotMapping | HiAPI-C# 2025",
"summary": "Class FileToTimeShotMapping Namespace Hi.Mapping Assembly HiMech.dll 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. public class FileToTimeShotMapping Inheritance object FileToTimeShotMapping Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties LineReaded Gets or sets the callback action that is invoked when a line is read from a file. This can be used to track progress during file loading operations. public Action<int> LineReaded { get; set; } Property Value Action<int> Remarks The parameter passed to the action is the current line number being read. This is useful for implementing progress indicators or logging. Methods CallTimeShotByFile(string, CancellationToken?) Gets time shot data from a file, using cache if available. If the data is not in the cache, reads the file and caches the results. public List<ITimeShot> CallTimeShotByFile(string file, CancellationToken? cancellationToken = null) Parameters file string The file path to read time shot data from. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. Returns List<ITimeShot> A list of time shots from the file. The results are cached for subsequent calls. Returns null if the file cannot be read or contains invalid data. Remarks This method is thread-safe and ensures each file is only read once, even with concurrent access. The cached data is shared between all callers to improve performance. Clear() Clears the file to time shot mapping cache. This removes all cached data and frees up memory. public void Clear() Remarks Call this method when: The cached data is no longer needed You need to force a reload of data from files You need to free up memory"
},
"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, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 : ITimecoded Inherited Members ITimecoded.Timecode Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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<string, string>). 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<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"
},
"api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html": {
"href": "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html",
"title": "Enum StepTimeShotUtil.CycleSamplingMode | HiAPI-C# 2025",
"summary": "Enum StepTimeShotUtil.CycleSamplingMode Namespace Hi.Mapping Assembly HiMech.dll Defines the cycle sampling modes for mapping time shots to machining steps. The sampling mode determines how time shots are aligned with machining cycles. public enum StepTimeShotUtil.CycleSamplingMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FluteCycle = 2 Sample based on flute cutting cycle. Uses the period between successive flute cuts to map time shots. More precise for actual cutting engagement analysis. SpindleCycle = 1 Sample based on spindle rotation cycle. Uses the spindle's rotational period to map time shots."
},
"api/Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html": {
"href": "api/Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html",
"title": "Delegate StepTimeShotUtil.GetTimeShotByFileDelegate | HiAPI-C# 2025",
"summary": "Delegate StepTimeShotUtil.GetTimeShotByFileDelegate Namespace Hi.Mapping Assembly HiMech.dll Delegate for retrieving time shots from a file. Implementations should handle file reading, parsing, and error handling. public delegate List<ITimeShot> StepTimeShotUtil.GetTimeShotByFileDelegate(string file) Parameters file string The absolute or relative path to the file containing time shot data. Returns List<ITimeShot> A list of parsed time shots, or null if reading fails. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"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<int, List<ITimeShot>>, IProgress<IMessage>, 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<int, List<ITimeShot>> dstStepToShotsDictionary, IProgress<IMessage> 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<int, List<ITimeShot>> The destination dictionary to store the mapping. messageProgress IProgress<IMessage> The session message host for logging. cancellationToken CancellationToken? The cancellation token. GetTimeShotByFile(string, Action<int>, CancellationToken?, Func<DateTime, TimeSpan>) Gets time shots from a file, reading and parsing force acceleration data. public static List<ITimeShot> GetTimeShotByFile(string file, Action<int> lineReaded, CancellationToken? cancellationToken = null, Func<DateTime, TimeSpan> toTimecode = null) Parameters file string The file path to read time shots from. lineReaded Action<int> 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<DateTime, TimeSpan> Converter from an absolute sample DateTime to its timecode TimeSpan (used for step timing). Returns List<ITimeShot> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeMapping(Func<string>) Initializes a new instance of the TimeMapping class with the specified CL strip and tool house. public TimeMapping(Func<string> baseDirectoryGetter) Parameters baseDirectoryGetter Func<string> The function to get the base directory for file paths. TimeMapping(XElement, Func<string>) Initializes a new instance of the TimeMapping class from XML data. public TimeMapping(XElement src, Func<string> baseDirectoryGetter) Parameters src XElement The XML element containing the mapping data. baseDirectoryGetter Func<string> 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<string> BaseDirectoryGetter { get; set; } Property Value Func<string> 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<string, IFileTimeSection> KeyToRelFileTimeSectionDictionary { get; set; } Property Value 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? 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<string, Task<List<ITimeShot>>> RelFileToTimeShotListDictionary { get; set; } Property Value ConcurrentDictionary<string, Task<List<ITimeShot>>> StepToTimeShotListDictionary Gets a concurrent dictionary mapping step indices to their corresponding time shot lists. This dictionary is populated during the mapping process. public ConcurrentDictionary<int, List<ITimeShot>> StepToTimeShotListDictionary { get; } Property Value ConcurrentDictionary<int, List<ITimeShot>> 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<IMessage>, CancellationToken?) Retrieves time shots from a file, using cached results if available. public List<ITimeShot> CallTimeShotByRelFile(string relFile, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null) Parameters relFile string The relative path to the file containing time shots. messageProgress IProgress<IMessage> The message host for logging progress. cancellationToken CancellationToken? Optional token to cancel the loading operation. Returns List<ITimeShot> 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<ITimeShot> GetShots(int stepIndex) Parameters stepIndex int The index of the step to get shots for. Returns List<ITimeShot> A list of time shots associated with the specified step, or null if no shots are found. LoadTimeShotFiles(IProgress<IMessage>, CancellationToken?) Loads all time shot files referenced in the KeyToFileTimeSectionMapping. public void LoadTimeShotFiles(IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null) Parameters messageProgress IProgress<IMessage> 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<int>, IFileTimeSection, CycleSamplingMode, ClStrip, IProgress<IMessage>, 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<int> stepSection, IFileTimeSection relFileTimeSection, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null) Parameters stepSection Range<int> 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<IMessage> The message host for logging progress. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. MapSeriesByActualTime(string, CycleSamplingMode, ClStrip, IProgress<IMessage>, CancellationToken?) Maps steps to time shots based on actual time. public void MapSeriesByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<IMessage> 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<IMessage> 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<TimeSpan>) Initializes from a file and a timecode range. public FileTimecodeSection(string file, Range<TimeSpan> timeRange) Parameters file string timeRange Range<TimeSpan> 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 <FileTimeSection> 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<TimeSpan> TimeRange { get; set; } Property Value Range<TimeSpan> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) 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<IMessage>) Initializes a new instance of the GeneralMechanism class from XML. public GeneralMechanism(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML element containing the mechanism data. baseDirectory string The base directory for resolving relative file paths. progress IProgress<IMessage> Progress reporter for diagnostic messages emitted during construction. Properties AnchorToSolid Gets the dictionary mapping anchors to their corresponding solids. public Dictionary<Anchor, Solid> AnchorToSolid { get; } Property Value Dictionary<Anchor, Solid> 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> 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",
"title": "Interface IGetMachiningChain | HiAPI-C# 2025",
"summary": "Interface IGetMachiningChain Namespace Hi.Mech Assembly HiMech.dll Provides functionality to retrieve a machining chain instance. public interface IGetMachiningChain Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMachiningChain() Gets the machining chain instance. IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance."
},
"api/Hi.Mech.IMachiningChain.html": {
"href": "api/Hi.Mech.IMachiningChain.html",
"title": "Interface IMachiningChain | HiAPI-C# 2025",
"summary": "Interface IMachiningChain Namespace Hi.Mech Assembly HiMech.dll Represents a machining chain with two ends, connecting a tool and a workpiece. public interface IMachiningChain : IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary Inherited Members IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchorToSolidDictionary.GetAnchorToSolidDictionary() IGetAnchorToSolidDictionary.PrepareAnchorSolids() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties McCodes Gets the machine coordinate code sequence for decoding the MC array. string[] McCodes { get; } Property Value string[] McTransformers Gets the machine coordinate transformers. IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Methods GetTableBuckle() Gets the table buckle anchor point. IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point."
},
"api/Hi.Mech.IMachiningChainSource.html": {
"href": "api/Hi.Mech.IMachiningChainSource.html",
"title": "Interface IMachiningChainSource | HiAPI-C# 2025",
"summary": "Interface IMachiningChainSource Namespace Hi.Mech Assembly HiMech.dll Provides XML serialization/deserialization capabilities for IMachiningChain objects. public interface IMachiningChainSource : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMachiningChain() Gets the machining chain instance. IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance."
},
"api/Hi.Mech.MachiningChainUtil.html": {
"href": "api/Hi.Mech.MachiningChainUtil.html",
"title": "Class MachiningChainUtil | HiAPI-C# 2025",
"summary": "Class MachiningChainUtil Namespace Hi.Mech Assembly HiMech.dll Utility methods for machining chains. public static class MachiningChainUtil Inheritance object MachiningChainUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMcCodeTransformerDictionary(IMachiningChain) Get code to IDynamicRegular dictionary. public static Dictionary<string, IDynamicRegular> GetMcCodeTransformerDictionary(this IMachiningChain chain) Parameters chain IMachiningChain Returns Dictionary<string, IDynamicRegular> code to IDynamicRegular dictionary"
},
"api/Hi.Mech.Topo.Anchor.html": {
"href": "api/Hi.Mech.Topo.Anchor.html",
"title": "Class Anchor | HiAPI-C# 2025",
"summary": "Class Anchor Namespace Hi.Mech.Topo Assembly HiMech.dll A coordinate system using in kinematic chain. public class Anchor : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inheritance object Anchor Implements IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Anchor() Ctor. public Anchor() Anchor(Asmb) Ctor. public Anchor(Asmb asmb) Parameters asmb Asmb add this to asmb.ChildAncs Anchor(Asmb, string) Ctor. public Anchor(Asmb asmb, string name) Parameters asmb Asmb add this to asmb.ChildAncs name string Name Properties BranchMap Gets the branch map. this anchor locates on Fletch . public Dictionary<Anchor, Branch> BranchMap { get; } Property Value Dictionary<Anchor, Branch> The branch map. BranchMapInv Gets the branch map. this anchor locates on Arrow . public Dictionary<Anchor, Branch> BranchMapInv { get; } Property Value Dictionary<Anchor, Branch> The branch map. Guid GUID. public Guid Guid { get; } Property Value Guid IndexXName The XML element name used for indexing anchors. public static string IndexXName { get; } Property Value string IndexXml Get XML for indexing. Only the Guid takes effect when reading. public XElement IndexXml { get; } Property Value XElement The XML contains Name and Guid. Name Name. public string Name { get; set; } Property Value string Methods Detach() Detach all related Branch. public void Detach() 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 virtual void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetByIndexXml(XElement, Dictionary<Guid, Anchor>) Gets an anchor from its XML index representation using a GUID-to-Anchor dictionary. public static Anchor GetByIndexXml(XElement src, Dictionary<Guid, Anchor> guidToAncDictionary) Parameters src XElement The source XML element containing the anchor index information. guidToAncDictionary Dictionary<Guid, Anchor> Dictionary mapping GUIDs to Anchor objects. Returns Anchor The anchor object corresponding to the XML index. GetClusterAnchors() Gets all the linked anchors by Branch. public HashSet<Anchor> GetClusterAnchors() Returns HashSet<Anchor> GetMat4d(IGetAnchor) Get transform matrix from this to tail. public Mat4d GetMat4d(IGetAnchor tail) Parameters tail IGetAnchor tail Returns Mat4d transform matrix GetMat4dMap() Gets the mat4d map in GetClusterAnchors() public Dictionary<Anchor, Mat4d> GetMat4dMap() Returns Dictionary<Anchor, Mat4d> GetNeighborAnchorList() Get neighbor anchors. public List<Anchor> GetNeighborAnchorList() Returns List<Anchor> neighbor anchors GetNeighborAnchorSet() Get neighbor anchors. public HashSet<Anchor> GetNeighborAnchorSet() Returns HashSet<Anchor> neighbor anchors 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.AnchorFuncSource.html": {
"href": "api/Hi.Mech.Topo.AnchorFuncSource.html",
"title": "Class AnchorFuncSource | HiAPI-C# 2025",
"summary": "Class AnchorFuncSource Namespace Hi.Mech.Topo Assembly HiMech.dll Provides an anchor through a function delegate. public class AnchorFuncSource : IGetAnchor, IGetTopoIndex Inheritance object AnchorFuncSource Implements 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AnchorFuncSource() Initializes a new instance of the AnchorFuncSource class. public AnchorFuncSource() AnchorFuncSource(Func<Anchor>) Initializes a new instance of the AnchorFuncSource class with the specified anchor function. public AnchorFuncSource(Func<Anchor> anchorFunc) Parameters anchorFunc Func<Anchor> The function that returns an anchor. Properties AnchorFunc Gets or sets the function that returns an anchor. public Func<Anchor> AnchorFunc { get; set; } Property Value Func<Anchor> Methods GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor"
},
"api/Hi.Mech.Topo.AnchoredBoxable.html": {
"href": "api/Hi.Mech.Topo.AnchoredBoxable.html",
"title": "Class AnchoredBoxable | HiAPI-C# 2025",
"summary": "Class AnchoredBoxable Namespace Hi.Mech.Topo Assembly HiMech.dll Represents an object that is both anchored to a root point and can expand to a 3D box. public class AnchoredBoxable : IGetAnchor, IGetTopoIndex, IExpandToBox3d Inheritance object AnchoredBoxable Implements IGetAnchor IGetTopoIndex 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AnchoredBoxable() Initializes a new instance of the AnchoredBoxable class. public AnchoredBoxable() AnchoredBoxable(IGetAnchor, IExpandToBox3d) Initializes a new instance of the AnchoredBoxable class with the specified anchor and boxable object. public AnchoredBoxable(IGetAnchor anchor, IExpandToBox3d boxable) Parameters anchor IGetAnchor The object that provides the root anchor. boxable IExpandToBox3d The object that can expand to a 3D box. Properties Anchor Gets or sets the anchor point. public Anchor Anchor { get; set; } Property Value Anchor Boxable Gets or sets the boxable object that can expand to a 3D box. public IExpandToBox3d Boxable { get; set; } Property Value IExpandToBox3d Methods 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"
},
"api/Hi.Mech.Topo.AnchoredDisplayee.html": {
"href": "api/Hi.Mech.Topo.AnchoredDisplayee.html",
"title": "Class AnchoredDisplayee | HiAPI-C# 2025",
"summary": "Class AnchoredDisplayee Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a displayable object that is anchored to a specific point in a topology. public class AnchoredDisplayee : IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IGetAnchor, IGetTopoIndex Inheritance object AnchoredDisplayee Implements IAnchoredDisplayee 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 DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AnchoredDisplayee() Initializes a new instance of the AnchoredDisplayee class. public AnchoredDisplayee() AnchoredDisplayee(IGetAnchor, IDisplayee) Initializes a new instance of the AnchoredDisplayee class with the specified anchor and displayee. public AnchoredDisplayee(IGetAnchor anchor, IDisplayee displayee) Parameters anchor IGetAnchor The object that provides the anchor. displayee IDisplayee The displayable object. Properties AnchorSource Gets or sets the source of the anchor. public IGetAnchor AnchorSource { get; set; } Property Value IGetAnchor Displayee Gets or sets the displayable object. public IDisplayee Displayee { get; set; } Property Value IDisplayee Methods Display(Bind) Displays this object using the specified binding. public void Display(Bind bind) Parameters bind Bind The binding to use for display. ExpandToBox3d(Box3d) Expands the specified box to include this object. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand. GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Anchor> ChildAncs { get; } Property Value ThreadSafeSet<Anchor> ChildAsmbs Gets the collection of child assemblies in this assembly. public ThreadSafeSet<Asmb> ChildAsmbs { get; } Property Value ThreadSafeSet<Asmb> 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<Guid, Asmb>, Dictionary<Guid, Anchor>, Dictionary<Guid, Branch>, IProgress<IMessage>) 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<Guid, Asmb> asmbs = null, Dictionary<Guid, Anchor> ancs = null, Dictionary<Guid, Branch> brns = null, IProgress<IMessage> progress = null) Parameters asmbXml XElement xml of asmb baseDirectory string Base directory path for resolving relative paths asmbs Dictionary<Guid, Asmb> existed asmb map ancs Dictionary<Guid, Anchor> existed anc map brns Dictionary<Guid, Branch> existed branch map progress IProgress<IMessage> 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<Anchor, Mat4d>, params IGetAnchor[]) Display the displayees according to map. If displayees is null, do nothing. public static void Display(Bind bind, Dictionary<Anchor, Mat4d> map, params IGetAnchor[] displayees) Parameters bind Bind bind map Dictionary<Anchor, Mat4d> 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<Anchor> GetAnchorChain(Anchor head, Anchor tail) Parameters head Anchor The starting anchor of the chain. tail Anchor The ending anchor of the chain. Returns List<Anchor> A list of anchors representing the chain, or an empty list if no chain exists. GetAnchoredDisplayeeList(Dictionary<Anchor, Solid>) Gets a list of anchored displayable objects based on the provided anchor-to-solid mapping. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList(Dictionary<Anchor, Solid> anchorToSolidDictionary) Parameters anchorToSolidDictionary Dictionary<Anchor, Solid> Dictionary mapping anchors to their corresponding solids. Returns List<IAnchoredDisplayee> 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<DirectionBranchEntry> GetBranchChain(IGetAnchor head, IGetAnchor tail) Parameters head IGetAnchor The starting anchor of the chain. tail IGetAnchor The ending anchor of the chain. Returns List<DirectionBranchEntry> 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<Anchor> GetDescendantAnchorSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool Returns HashSet<Anchor> descendant anchor set GetDescendantAnchors(bool) Gets a list of all descendant anchors in the assembly hierarchy. public List<Anchor> GetDescendantAnchors(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List<Anchor> A list of all descendant anchors. GetDescendantAsmbSet(bool) Gets a set of all descendant assemblies in the assembly hierarchy. public HashSet<Asmb> GetDescendantAsmbSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet<Asmb> A set of all descendant assemblies. GetDescendantAsmbs(bool) Gets a list of all descendant assemblies in the assembly hierarchy. public List<Asmb> GetDescendantAsmbs(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List<Asmb> 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<Branch> GetInnerBranchSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet<Branch> 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<Anchor, Mat4d> GetMat4dMap(IGetAnchor root) Parameters root IGetAnchor The root anchor to calculate transformations from. Returns Dictionary<Anchor, Mat4d> 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<Anchor, Mat4d> 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<Anchor, Mat4d> A dictionary mapping anchors to their transformation matrices. ShowMat4dMap(Dictionary<Anchor, Mat4d>) Show mat map in text on console. public static void ShowMat4dMap(Dictionary<Anchor, Mat4d> map) Parameters map Dictionary<Anchor, Mat4d> 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",
"title": "Class AsmbDraw | HiAPI-C# 2025",
"summary": "Class AsmbDraw Namespace Hi.Mech.Topo Assembly HiMech.dll Render all Anchors of the Asmb in form of CoordinateDrawing. public class AsmbDraw : IDisplayee, IExpandToBox3d Inheritance object AsmbDraw 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AsmbDraw(Asmb, Anchor) Ctor. public AsmbDraw(Asmb asmb, Anchor root) Parameters asmb Asmb asmb root Anchor fixed anchor Properties Asmb Asmb. public Asmb Asmb { get; set; } Property Value Asmb Root Fixed anchor. public Anchor Root { get; set; } Property Value Anchor 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.Mech.Topo.Branch.html": {
"href": "api/Hi.Mech.Topo.Branch.html",
"title": "Class Branch | HiAPI-C# 2025",
"summary": "Class Branch Namespace Hi.Mech.Topo Assembly HiMech.dll The linkage between two Anchor objects. public class Branch Inheritance object Branch Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Arrow Anchor from arrow side. public Anchor Arrow { get; } Property Value Anchor Fletch Anchor from fletch side. public Anchor Fletch { get; } Property Value Anchor Guid GUID. public Guid Guid { get; } Property Value Guid IsBreak Is break. public bool IsBreak { get; } Property Value bool Name Gets or sets the name of the branch. public string Name { get; set; } Property Value string Step If the Transformer is IDynamicRegular, the property is delegated from IDynamicRegular.Step; otherwise, the getter returns NAN and setter does nothing. public double Step { get; set; } Property Value double Transformer Transformer. public ITransformer Transformer { get; set; } Property Value ITransformer Methods Attach(IGetAnchor, IGetAnchor) Attempts to attach two anchors. public static Branch Attach(IGetAnchor fletch, IGetAnchor arrow) Parameters fletch IGetAnchor See Fletch arrow IGetAnchor See Arrow Returns Branch branch Attach(IGetAnchor, IGetAnchor, ITransformer) Attempts to attach two anchors with a specified transformer. public static Branch Attach(IGetAnchor fletch, IGetAnchor arrow, ITransformer transformer) Parameters fletch IGetAnchor See Fletch arrow IGetAnchor See Arrow transformer ITransformer See Transformer Returns Branch branch AttachIfAbsence(IGetAnchor, IGetAnchor) Attempts to attach two anchors if they are not already connected. If the anchors are already connected, returns null instead of throwing an exception. public static Branch AttachIfAbsence(IGetAnchor fletch, IGetAnchor arrow) Parameters fletch IGetAnchor The fletch-side anchor to attach arrow IGetAnchor The arrow-side anchor to attach Returns Branch The newly created branch if successful, null if the anchors are already connected Detach() Break the branch. public void Detach() Detach(IGetAnchor, IGetAnchor) Break the branch from Get(IGetAnchor, IGetAnchor). public static void Detach(IGetAnchor fletch, IGetAnchor arrow) Parameters fletch IGetAnchor See Fletch arrow IGetAnchor See Arrow Exceptions InvalidOperationException The exception is throwed if the Branch is not existed. DetachIfExisted(IGetAnchor, IGetAnchor) Break the branch from Get(IGetAnchor, IGetAnchor). public static bool DetachIfExisted(IGetAnchor fletch, IGetAnchor arrow) Parameters fletch IGetAnchor See Fletch arrow IGetAnchor See Arrow Returns bool true if the Branch existed and then been deteched. Get(IGetAnchor, IGetAnchor) Get existed Branch by fletchSource and arrowSource. public static Branch Get(IGetAnchor fletchSource, IGetAnchor arrowSource) Parameters fletchSource IGetAnchor fletch arrowSource IGetAnchor arrow Returns Branch The branch. If branch not exist, return null. IsExisted(IGetAnchor, IGetAnchor) Checks if a branch exists between two anchors. public static bool IsExisted(IGetAnchor fletch, IGetAnchor arrow) Parameters fletch IGetAnchor The fletch-side anchor. arrow IGetAnchor The arrow-side anchor. Returns bool True if a branch exists between the anchors, false otherwise. ToLinkString() Get brief link description. public string ToLinkString() Returns string ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. TryAttach(IGetAnchor, IGetAnchor, ITransformer) Attempts to attach two anchors with a specified transformer. If the attachment fails, returns null instead of throwing an exception. public static Branch TryAttach(IGetAnchor fletch, IGetAnchor arrow, ITransformer transformer) Parameters fletch IGetAnchor The fletch-side anchor to attach arrow IGetAnchor The arrow-side anchor to attach transformer ITransformer The transformer to use for the branch Returns Branch The newly created branch if successful, null if the attachment fails"
},
"api/Hi.Mech.Topo.DirectionBranchEntry.html": {
"href": "api/Hi.Mech.Topo.DirectionBranchEntry.html",
"title": "Class DirectionBranchEntry | HiAPI-C# 2025",
"summary": "Class DirectionBranchEntry Namespace Hi.Mech.Topo Assembly HiMech.dll A data pack contains Branch and a boolean isForward. public class DirectionBranchEntry Inheritance object DirectionBranchEntry Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DirectionBranchEntry(bool, Branch) Ctor. public DirectionBranchEntry(bool isForward, Branch brn) Parameters isForward bool is forward brn Branch branch Fields brn A branch. public Branch brn Field Value Branch isForward Is forward. public bool isForward Field 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.Mech.Topo.DirectionBranchPackUtil.html": {
"href": "api/Hi.Mech.Topo.DirectionBranchPackUtil.html",
"title": "Class DirectionBranchPackUtil | HiAPI-C# 2025",
"summary": "Class DirectionBranchPackUtil Namespace Hi.Mech.Topo Assembly HiMech.dll Utility of topology. public static class DirectionBranchPackUtil Inheritance object DirectionBranchPackUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMat4d(IEnumerable<DirectionBranchEntry>) Get the transformation matrix. The transformation matrix is obtained by mat(n-1)*...*mat(1)*mat(0). Where the number in parentheses is the index number of the chain. public static Mat4d GetMat4d(this IEnumerable<DirectionBranchEntry> chain) Parameters chain IEnumerable<DirectionBranchEntry> chain Returns Mat4d transformation matrix"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface IAnchoredDisplayee | HiAPI-C# 2025",
"summary": "Interface IAnchoredDisplayee Namespace Hi.Mech.Topo Assembly HiMech.dll Interface for objects that can be displayed and are anchored to a root point in a topology. public interface IAnchoredDisplayee : IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inherited Members IGetAnchor.GetAnchor() IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.IDynamicRegular.html": {
"href": "api/Hi.Mech.Topo.IDynamicRegular.html",
"title": "Interface IDynamicRegular | HiAPI-C# 2025",
"summary": "Interface IDynamicRegular Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic Regular Transformer public interface IDynamicRegular : IDynamicTransformer, ITransformer, IMakeXmlSource, IToPresentDto Inherited Members ITransformer.GetMat() ITransformer.GetMatInv() ITransformer.Clone() IMakeXmlSource.MakeXmlSource(string, string, bool) IToPresentDto.ToPresentDto() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Step Gets or sets the step. double Step { get; set; } Property Value double The step."
},
"api/Hi.Mech.Topo.IDynamicRotation.html": {
"href": "api/Hi.Mech.Topo.IDynamicRotation.html",
"title": "Interface IDynamicRotation | HiAPI-C# 2025",
"summary": "Interface IDynamicRotation Namespace Hi.Mech.Topo Assembly HiMech.dll Topology joint that applies a single-axis rotation about Pivot by Angle_rad. public interface IDynamicRotation : IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inherited Members IDynamicRegular.Step ITransformer.GetMat() ITransformer.GetMatInv() ITransformer.Clone() IMakeXmlSource.MakeXmlSource(string, string, bool) IGetInverseTransformer.GetInverseTransformer() IToPresentDto.ToPresentDto() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Angle_deg Rotation angle in degree. double Angle_deg { get; set; } Property Value double Angle_rad Rotation angle in radian. double Angle_rad { get; set; } Property Value double Axis Rotation axis. Vec3d Axis { get; set; } Property Value Vec3d Pivot pivot Vec3d Pivot { get; set; } Property Value Vec3d"
},
"api/Hi.Mech.Topo.IDynamicTransformer.html": {
"href": "api/Hi.Mech.Topo.IDynamicTransformer.html",
"title": "Interface IDynamicTransformer | HiAPI-C# 2025",
"summary": "Interface IDynamicTransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic Transformer. public interface IDynamicTransformer : ITransformer, IMakeXmlSource, IToPresentDto Inherited Members ITransformer.GetMat() ITransformer.GetMatInv() ITransformer.Clone() IMakeXmlSource.MakeXmlSource(string, string, bool) IToPresentDto.ToPresentDto() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.IGetAnchor.html": {
"href": "api/Hi.Mech.Topo.IGetAnchor.html",
"title": "Interface IGetAnchor | HiAPI-C# 2025",
"summary": "Interface IGetAnchor Namespace Hi.Mech.Topo Assembly HiMech.dll Interface to get the key Anchor. public interface IGetAnchor : IGetTopoIndex Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAnchor() Get key anchor. (i.e. root anchor) Anchor GetAnchor() Returns Anchor key anchor"
},
"api/Hi.Mech.Topo.IGetAnchoredDisplayeeList.html": {
"href": "api/Hi.Mech.Topo.IGetAnchoredDisplayeeList.html",
"title": "Interface IGetAnchoredDisplayeeList | HiAPI-C# 2025",
"summary": "Interface IGetAnchoredDisplayeeList Namespace Hi.Mech.Topo Assembly HiMech.dll Interface for getting a list of anchored displayable objects. public interface IGetAnchoredDisplayeeList Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> A list of IAnchoredDisplayee objects"
},
"api/Hi.Mech.Topo.IGetAsmb.html": {
"href": "api/Hi.Mech.Topo.IGetAsmb.html",
"title": "Interface IGetAsmb | HiAPI-C# 2025",
"summary": "Interface IGetAsmb Namespace Hi.Mech.Topo Assembly HiMech.dll Interface of Getting a key Asmb. public interface IGetAsmb : IGetTopoIndex Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAsmb() Gets the key asmb. Asmb GetAsmb() Returns Asmb The key asmb."
},
"api/Hi.Mech.Topo.IGetFletchBuckle.html": {
"href": "api/Hi.Mech.Topo.IGetFletchBuckle.html",
"title": "Interface IGetFletchBuckle | HiAPI-C# 2025",
"summary": "Interface IGetFletchBuckle Namespace Hi.Mech.Topo Assembly HiMech.dll Interface of GetFletchBuckle(). public interface IGetFletchBuckle Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. Anchor GetFletchBuckle() Returns Anchor buckle anchor"
},
"api/Hi.Mech.Topo.IGetInverseTransformer.html": {
"href": "api/Hi.Mech.Topo.IGetInverseTransformer.html",
"title": "Interface IGetInverseTransformer | HiAPI-C# 2025",
"summary": "Interface IGetInverseTransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Interface for objects that can provide their inverse transformer. public interface IGetInverseTransformer Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetInverseTransformer() Gets the inverse transformer of this transformer. ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer."
},
"api/Hi.Mech.Topo.IGetTopoIndex.html": {
"href": "api/Hi.Mech.Topo.IGetTopoIndex.html",
"title": "Interface IGetTopoIndex | HiAPI-C# 2025",
"summary": "Interface IGetTopoIndex Namespace Hi.Mech.Topo Assembly HiMech.dll interface of IGetAnchor or IGetAsmb. public interface IGetTopoIndex Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.IStaticTransformer.html": {
"href": "api/Hi.Mech.Topo.IStaticTransformer.html",
"title": "Interface IStaticTransformer | HiAPI-C# 2025",
"summary": "Interface IStaticTransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Static Transformer public interface IStaticTransformer : ITransformer, IMakeXmlSource, IToPresentDto Inherited Members ITransformer.GetMat() ITransformer.GetMatInv() ITransformer.Clone() IMakeXmlSource.MakeXmlSource(string, string, bool) IToPresentDto.ToPresentDto() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.ITopo.html": {
"href": "api/Hi.Mech.Topo.ITopo.html",
"title": "Interface ITopo | HiAPI-C# 2025",
"summary": "Interface ITopo Namespace Hi.Mech.Topo Assembly HiMech.dll Defines an interface for displaying topological elements that combines assembly, anchoring, and display capabilities. public interface ITopo : IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList Inherited Members IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() Extension Methods TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.ITopoDisplayee.html": {
"href": "api/Hi.Mech.Topo.ITopoDisplayee.html",
"title": "Interface ITopoDisplayee | HiAPI-C# 2025",
"summary": "Interface ITopoDisplayee Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a topology object that can be displayed and has an anchor. public interface ITopoDisplayee : ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inherited Members IGetAsmb.GetAsmb() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetAnchor.GetAnchor() IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Mech.Topo.ITransformer.html": {
"href": "api/Hi.Mech.Topo.ITransformer.html",
"title": "Interface ITransformer | HiAPI-C# 2025",
"summary": "Interface ITransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Interface of single transform matrix manipulation. public interface ITransformer : IMakeXmlSource, IToPresentDto Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IToPresentDto.ToPresentDto() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Clone() Clones this instance. ITransformer Clone() Returns ITransformer clone GetMat() Gets the transform matrix. Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. Mat4d GetMatInv() Returns Mat4d The inverse transform matrix."
},
"api/Hi.Mech.Topo.ITransformerProperty.html": {
"href": "api/Hi.Mech.Topo.ITransformerProperty.html",
"title": "Interface ITransformerProperty | HiAPI-C# 2025",
"summary": "Interface ITransformerProperty Namespace Hi.Mech.Topo Assembly HiMech.dll Interface for objects that have a transformer property. public interface ITransformerProperty Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Transformer Gets or sets the transformer associated with this object. ITransformer Transformer { get; set; } Property Value ITransformer"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the StackTransformer class from XML data. public StackTransformer(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML element containing the transformer stack configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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<ITransformer> GetStack() Returns List<ITransformer> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class TopoDisplayee | HiAPI-C# 2025",
"summary": "Class TopoDisplayee Namespace Hi.Mech.Topo Assembly HiMech.dll Implements a displayable topological element that manages a collection of anchored displayees within an assembly. public class TopoDisplayee : ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList Inheritance object TopoDisplayee Implements ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList 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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TopoDisplayee(Anchor, Asmb, params IAnchoredDisplayee[]) Initializes a new instance of the TopoDisplayee class with the specified root anchor, assembly, and displayees. public TopoDisplayee(Anchor rootAnchor, Asmb asmb, params IAnchoredDisplayee[] displayees) Parameters rootAnchor Anchor The root anchor for the topological displayee. asmb Asmb The assembly associated with the topological displayee. displayees IAnchoredDisplayee[] The array of anchored displayees to be managed. Properties AnchoredDisplayeeList Gets or sets the list of anchored displayees managed by this instance. public List<IAnchoredDisplayee> AnchoredDisplayeeList { get; set; } Property Value List<IAnchoredDisplayee> Asmb Gets or sets the assembly associated with this topological displayee. public Asmb Asmb { get; set; } Property Value Asmb RootAnchor Gets or sets the root anchor for this topological displayee. public Anchor RootAnchor { get; set; } Property Value Anchor Methods Display(Bind) public void Display(Bind bind) Parameters bind Bind ExpandToBox3d(Box3d) public void ExpandToBox3d(Box3d dst) Parameters dst Box3d 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb."
},
"api/Hi.Mech.Topo.TopoDisplayeeUtil.html": {
"href": "api/Hi.Mech.Topo.TopoDisplayeeUtil.html",
"title": "Class TopoDisplayeeUtil | HiAPI-C# 2025",
"summary": "Class TopoDisplayeeUtil Namespace Hi.Mech.Topo Assembly HiMech.dll Provides utility methods for displaying and manipulating topological displayees. public static class TopoDisplayeeUtil Inheritance object TopoDisplayeeUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(ITopo, Bind) Displays the topological displayee using the specified bind context. public static void Display(this ITopo src, Bind bind) Parameters src ITopo The topological displayee to display. bind Bind The bind context used for displaying. ExpandToBox3d(ITopo, Box3d) Expands the bounding box to include the topological displayee's geometry. public static void ExpandToBox3d(this ITopo src, Box3d dst) Parameters src ITopo The topological displayee whose geometry should be included. dst Box3d The bounding box to expand."
},
"api/Hi.Mech.Topo.TopoReflection.html": {
"href": "api/Hi.Mech.Topo.TopoReflection.html",
"title": "Class TopoReflection | HiAPI-C# 2025",
"summary": "Class TopoReflection Namespace Hi.Mech.Topo Assembly HiMech.dll Clone Asmb and provide map between source topology and cloned topology. public class TopoReflection Inheritance object TopoReflection Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TopoReflection(Asmb) Ctor. public TopoReflection(Asmb rootAsmb) Parameters rootAsmb Asmb root assembly Properties AnchorMap Key is source anchor. Value is cloned anchor. public Dictionary<Anchor, Anchor> AnchorMap { get; } Property Value Dictionary<Anchor, Anchor> AsmbMap Key is source asmb. Value is cloned asmb. public Dictionary<Asmb, Asmb> AsmbMap { get; } Property Value Dictionary<Asmb, Asmb> BranchMap Key is source branch. Value is cloned branch. public Dictionary<Branch, Branch> BranchMap { get; } Property Value Dictionary<Branch, Branch> HostAsmbTwins Pair<TA, TB>.A is the source host; Pair<TA, TB>.B is the cloned host. public Pair<Asmb, Asmb> HostAsmbTwins { get; } Property Value Pair<Asmb, Asmb> TransformerMap Key is source branch. Value is cloned branch. public Dictionary<ITransformer, ITransformer> TransformerMap { get; } Property Value Dictionary<ITransformer, ITransformer>"
},
"api/Hi.Mech.Topo.TopoUtil.html": {
"href": "api/Hi.Mech.Topo.TopoUtil.html",
"title": "Class TopoUtil | HiAPI-C# 2025",
"summary": "Class TopoUtil Namespace Hi.Mech.Topo Assembly HiMech.dll Utility of handling Anchor. public static class TopoUtil Inheritance object TopoUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) Display to rendering canvas. comp has to be IDisplayee to take effect. public static void Display(this IGetAnchor comp, Bind bind, Dictionary<Anchor, Mat4d> matMap) Parameters comp IGetAnchor component bind Bind rendering bind matMap Dictionary<Anchor, Mat4d> matrix map ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) Expand to Box3d. comp has to be IExpandToBox3d to take effect. public static void ExpandToBox3d(this IGetAnchor comp, Box3d dst, Dictionary<Anchor, Mat4d> matMap) Parameters comp IGetAnchor component dst Box3d dstination matMap Dictionary<Anchor, Mat4d> matrix map"
},
"api/Hi.Mech.Topo.TransformerUtil.html": {
"href": "api/Hi.Mech.Topo.TransformerUtil.html",
"title": "Class TransformerUtil | HiAPI-C# 2025",
"summary": "Class TransformerUtil Namespace Hi.Mech.Topo Assembly HiMech.dll Utility for ITransformer. public static class TransformerUtil Inheritance object TransformerUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetSteps(IDynamicRegular[]) Gets the steps. public static double[] GetSteps(IDynamicRegular[] dynamics) Parameters dynamics IDynamicRegular[] The dynamics. Returns double[] the steps Reg(XFactory) Registers every concrete ITransformer implementation with the given XFactory: NoTransform, StaticTranslation, StaticRotation, StaticFreeform, DynamicTranslation, DynamicRotation, DynamicFreeform, StackTransformer, and GeneralTransform. Composites that deserialize a Branch (whose Transformer child can be any of the above) should chain this from their own Reg(factory). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetSteps(IDynamicRegular[], double[]) Sets the steps. public static void SetSteps(IDynamicRegular[] dynamics, double[] steps) Parameters dynamics IDynamicRegular[] The dynamics. steps double[] The steps."
},
"api/Hi.Mech.Topo.html": {
"href": "api/Hi.Mech.Topo.html",
"title": "Namespace Hi.Mech.Topo | HiAPI-C# 2025",
"summary": "Namespace Hi.Mech.Topo Classes Anchor A coordinate system using in kinematic chain. AnchorFuncSource Provides an anchor through a function delegate. AnchoredBoxable Represents an object that is both anchored to a root point and can expand to a 3D box. AnchoredDisplayee Represents a displayable object that is anchored to a specific point in a topology. Asmb Collection of Anchor and Asmb. AsmbDraw Render all Anchors of the Asmb in form of CoordinateDrawing. Branch The linkage between two Anchor objects. DirectionBranchEntry A data pack contains Branch and a boolean isForward. DirectionBranchPackUtil Utility of topology. DynamicFreeform Dynamic Freeform transformer. DynamicRotation Dynamic rotate transformer. DynamicTranslation Dynamic translate transformer GeneralTransform Represents a general transformation that combines scaling, rotation, and translation. NoTransform Static Identity Transformer. StackTransformer Represents a transformer that maintains a stack of transformations. StaticFreeform Static Freeform transformer. StaticRotation Static Rotation. StaticTranslation Static Translate. TopoDisplayee Implements a displayable topological element that manages a collection of anchored displayees within an assembly. TopoDisplayeeUtil Provides utility methods for displaying and manipulating topological displayees. TopoReflection Clone Asmb and provide map between source topology and cloned topology. TopoUtil Utility of handling Anchor. TransformerUtil Utility for ITransformer. Interfaces IAnchoredDisplayee Interface for objects that can be displayed and are anchored to a root point in a topology. IDynamicRegular Dynamic Regular Transformer IDynamicRotation Topology joint that applies a single-axis rotation about Pivot by Angle_rad. IDynamicTransformer Dynamic Transformer. IGetAnchor Interface to get the key Anchor. IGetAnchoredDisplayeeList Interface for getting a list of anchored displayable objects. IGetAsmb Interface of Getting a key Asmb. IGetFletchBuckle Interface of GetFletchBuckle(). IGetInverseTransformer Interface for objects that can provide their inverse transformer. IGetTopoIndex interface of IGetAnchor or IGetAsmb. IStaticTransformer Static Transformer ITopo Defines an interface for displaying topological elements that combines assembly, anchoring, and display capabilities. ITopoDisplayee Represents a topology object that can be displayed and has an anchor. ITransformer Interface of single transform matrix manipulation. ITransformerProperty Interface for objects that have a transformer property."
},
"api/Hi.Mech.html": {
"href": "api/Hi.Mech.html",
"title": "Namespace Hi.Mech | HiAPI-C# 2025",
"summary": "Namespace Hi.Mech Classes GeneralMechanism General Mechanism. MachiningChainUtil Utility methods for machining chains. Interfaces IGetAnchorToSolidDictionary Provides functionality to retrieve a dictionary mapping anchors to their corresponding solids. IGetMachiningChain Provides functionality to retrieve a machining chain instance. IMachiningChain Represents a machining chain with two ends, connecting a tool and a workpiece. IMachiningChainSource Provides XML serialization/deserialization capabilities for IMachiningChain objects."
},
"api/Hi.Milling.Apts.AptDerivative.html": {
"href": "api/Hi.Milling.Apts.AptDerivative.html",
"title": "Class AptDerivative | HiAPI-C# 2025",
"summary": "Class AptDerivative Namespace Hi.Milling.Apts Assembly HiCbtr.dll Apt derivative. public class AptDerivative : IExpandToBox3d, IGetZrContour, IGenStl Inheritance object AptDerivative Implements IExpandToBox3d IGetZrContour IGenStl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AptDerivative(GeneralApt) Ctor. public AptDerivative(GeneralApt apt) Parameters apt GeneralApt apt Properties Apt Gets the general APT. public GeneralApt Apt { get; } Property Value GeneralApt CosAlpha Gets the cosine of Alpha angle. public double CosAlpha { get; } Property Value double CosBeta Gets the cosine of Beta angle. public double CosBeta { get; } Property Value double DefaultPolarResolution2d Gets or sets the default polar resolution for 2D operations. public static IPolarResolution2d DefaultPolarResolution2d { get; set; } Property Value IPolarResolution2d Mr Gets the radial coordinate of point M. public double Mr { get; } Property Value double Mz Gets the Z-coordinate of point M. public double Mz { get; } Property Value double Nr Gets the radial coordinate of point N. public double Nr { get; } Property Value double Nz Gets the Z-coordinate of point N. public double Nz { get; } Property Value double SinAlpha Gets the sine of Alpha angle. public double SinAlpha { get; } Property Value double SinBeta Gets the sine of Beta angle. public double SinBeta { get; } Property Value double TanAlpha Gets the tangent of Alpha angle. public double TanAlpha { get; } Property Value double TanBeta Gets the tangent of Beta angle. public double TanBeta { get; } Property Value double Methods 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 GenStl(IPolarResolution2d) Generates an STL representation of the tool geometry. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d The polar resolution to use for generation. Returns Stl The generated STL object. GetNormal(double, double) Get Normal Vector by height and angle. public Vec3d GetNormal(double z, double rad) Parameters z double height rad double x-axis is begin; z-axis is principle Returns Vec3d GetRadius(double) Get Radius by z. public double GetRadius(double z) Parameters z double z Returns double radius at z 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<PairZr> GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList<PairZr> Z-R contour data as a list of PairZr objects"
},
"api/Hi.Milling.Apts.BallApt.html": {
"href": "api/Hi.Milling.Apts.BallApt.html",
"title": "Class BallApt | HiAPI-C# 2025",
"summary": "Class BallApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Ball End Apt. public class BallApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IToXElement Inheritance object BallApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BallApt() Ctor. public BallApt() BallApt(XElement) Ctor. public BallApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Flute Height. public double FluteHeight_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.BullNoseApt.html": {
"href": "api/Hi.Milling.Apts.BullNoseApt.html",
"title": "Class BullNoseApt | HiAPI-C# 2025",
"summary": "Class BullNoseApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Bull Nose End APT. public class BullNoseApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IAptRc, IToXElement Inheritance object BullNoseApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IAptRc IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BullNoseApt() Ctor. public BullNoseApt() BullNoseApt(XElement) Ctor. public BullNoseApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Flute Height. public double FluteHeight_mm { get; set; } Property Value double Rc_mm Round corner radius. public double Rc_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.ColumnApt.html": {
"href": "api/Hi.Milling.Apts.ColumnApt.html",
"title": "Class ColumnApt | HiAPI-C# 2025",
"summary": "Class ColumnApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Column End APT. The composition is identical to the BullNoseApt. However, the nose radius is generally smaller than the BullNoseApt. public class ColumnApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IAptRc, IToXElement Inheritance object ColumnApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IAptRc IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ColumnApt() Ctor. public ColumnApt() ColumnApt(XElement) Ctor. public ColumnApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Flute Height. public double FluteHeight_mm { get; set; } Property Value double Rc_mm Round corner radius. public double Rc_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.ConeApt.html": {
"href": "api/Hi.Milling.Apts.ConeApt.html",
"title": "Class ConeApt | HiAPI-C# 2025",
"summary": "Class ConeApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Cone End APT. public class ConeApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IAptAlpha, IToXElement Inheritance object ConeApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IAptAlpha IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConeApt() Ctor. public ConeApt() ConeApt(XElement) Ctor. public ConeApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Alpha_deg Alpha angle in degree. public double Alpha_deg { get; set; } Property Value double Alpha_rad Alpha angle in radian. public double Alpha_rad { get; set; } Property Value double Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Flute Height. public double FluteHeight_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.ExactColumnApt.html": {
"href": "api/Hi.Milling.Apts.ExactColumnApt.html",
"title": "Class ExactColumnApt | HiAPI-C# 2025",
"summary": "Class ExactColumnApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Column End APT. public class ExactColumnApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IToXElement Inheritance object ExactColumnApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ExactColumnApt() Ctor. public ExactColumnApt() ExactColumnApt(XElement) Ctor. public ExactColumnApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Flute Height. public double FluteHeight_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.GeneralApt.html": {
"href": "api/Hi.Milling.Apts.GeneralApt.html",
"title": "Class GeneralApt | HiAPI-C# 2025",
"summary": "Class GeneralApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll APT standard milling cutter geometry. public class GeneralApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IEquatable<GeneralApt>, IAptRc, IAptRr, IAptRz, IAptAlpha, IAptBeta, IGetZrContour, IToXElement, IGenStl, IClearCache Inheritance object GeneralApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IEquatable<GeneralApt> IAptRc IAptRr IAptRz IAptAlpha IAptBeta IGetZrContour IToXElement IGenStl IClearCache Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeneralApt() Ctor. public GeneralApt() GeneralApt(GeneralApt) Copy ctor. public GeneralApt(GeneralApt src) Parameters src GeneralApt src GeneralApt(double, double, double, double, double, double, double) Ctor. public GeneralApt(double D, double R0, double Rr, double Rz, double alpha_rad, double beta_rad, double fluteH) Parameters D double see Diameter_mm R0 double see Rc_mm Rr double see Rr_mm Rz double see Rz_mm alpha_rad double see Alpha_rad beta_rad double see Beta_rad fluteH double see FluteHeight_mm GeneralApt(XElement) Ctor. public GeneralApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Alpha_deg Alpha_rad in degree. public double Alpha_deg { get; set; } Property Value double Alpha_rad The angle between horizontal plane and the cone surface of the cutter tip. The angle is downside the cutter round (if exists). If the cutter is cylindrical mill, the angle is 0. The unit is radian. public double Alpha_rad { get; set; } Property Value double AptDerivative Gets the APT derivative object, creating it if it doesn't exist. public AptDerivative AptDerivative { get; } Property Value AptDerivative Beta_deg Beta_rad in degree. public double Beta_deg { get; set; } Property Value double Beta_rad The angle between stick axis and the side plane of cutter. The angle is upside the cutter round (if exists). The unit is radian. public double Beta_rad { get; set; } Property Value double Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Full Height. public double FluteHeight_mm { get; set; } Property Value double Rc_mm Round radius. public double Rc_mm { get; set; } Property Value double Rr_mm Distance between round center to the stick axis. public double Rr_mm { get; set; } Property Value double Rz_mm Center between the tip to the round center. public double Rz_mm { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears the internal cache of APT derivative. 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 Equals(GeneralApt) Indicates whether the current object is equal to another object of the same type. public bool Equals(GeneralApt src) Parameters src GeneralApt 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 GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d polarResolution) Parameters polarResolution IPolarResolution2d Returns Stl A newly created STL. GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current 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<PairZr> GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList<PairZr> Z-R contour data as a list of PairZr objects MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 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. ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Milling.Apts.IAptAlpha.html": {
"href": "api/Hi.Milling.Apts.IAptAlpha.html",
"title": "Interface IAptAlpha | HiAPI-C# 2025",
"summary": "Interface IAptAlpha Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT objects with alpha angle. public interface IAptAlpha Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Alpha_deg Alpha_rad in degree. double Alpha_deg { get; set; } Property Value double Alpha_rad The angle between horizontal plane and the cone surface of the cutter tip. The angle is downside the cutter round (if exists). If the cutter is cylindrical mill, the angle is 0. The unit is radian. double Alpha_rad { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IAptBased.html": {
"href": "api/Hi.Milling.Apts.IAptBased.html",
"title": "Interface IAptBased | HiAPI-C# 2025",
"summary": "Interface IAptBased Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT-based objects. public interface IAptBased : IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate Inherited Members IGetGeneralApt.GetGeneralApt() IAbstractNote.AbstractNote IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Diameter_mm Diameter in mm. double Diameter_mm { get; set; } Property Value double FluteHeight_mm Height of flute. double FluteHeight_mm { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IAptBeta.html": {
"href": "api/Hi.Milling.Apts.IAptBeta.html",
"title": "Interface IAptBeta | HiAPI-C# 2025",
"summary": "Interface IAptBeta Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT objects with beta angle. public interface IAptBeta Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Beta_deg Beta_rad in degree. double Beta_deg { get; set; } Property Value double Beta_rad The angle between stick axis and the side plane of cutter. The angle is upside the cutter round (if exists). The unit is radian. double Beta_rad { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IAptRc.html": {
"href": "api/Hi.Milling.Apts.IAptRc.html",
"title": "Interface IAptRc | HiAPI-C# 2025",
"summary": "Interface IAptRc Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT objects with corner radius. public interface IAptRc Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Rc_mm Corner radius. Round radius. double Rc_mm { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IAptRr.html": {
"href": "api/Hi.Milling.Apts.IAptRr.html",
"title": "Interface IAptRr | HiAPI-C# 2025",
"summary": "Interface IAptRr Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT objects with round radius. public interface IAptRr Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Rr_mm Distance between round center to the stick axis. double Rr_mm { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IAptRz.html": {
"href": "api/Hi.Milling.Apts.IAptRz.html",
"title": "Interface IAptRz | HiAPI-C# 2025",
"summary": "Interface IAptRz Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for APT objects with Z-axis round center distance. public interface IAptRz Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Rz_mm Center between the tip to the round center. double Rz_mm { get; set; } Property Value double"
},
"api/Hi.Milling.Apts.IGetApt.html": {
"href": "api/Hi.Milling.Apts.IGetApt.html",
"title": "Interface IGetApt | HiAPI-C# 2025",
"summary": "Interface IGetApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface for objects that can provide an APT-based object. public interface IGetApt Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Apt Gets the APT-based object. IAptBased Apt { get; } Property Value IAptBased"
},
"api/Hi.Milling.Apts.IGetGeneralApt.html": {
"href": "api/Hi.Milling.Apts.IGetGeneralApt.html",
"title": "Interface IGetGeneralApt | HiAPI-C# 2025",
"summary": "Interface IGetGeneralApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Interface of GetGeneralApt(). public interface IGetGeneralApt Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetGeneralApt() Get Apt. GeneralApt GetGeneralApt() Returns GeneralApt Apt"
},
"api/Hi.Milling.Apts.TaperApt.html": {
"href": "api/Hi.Milling.Apts.TaperApt.html",
"title": "Class TaperApt | HiAPI-C# 2025",
"summary": "Class TaperApt Namespace Hi.Milling.Apts Assembly HiCbtr.dll Taper End APT. public class TaperApt : IAptBased, IGetGeneralApt, IAbstractNote, IGetDiameter, IGetFluteHeight, IExpandToBox3d, IMakeXmlSource, IDuplicate, IAptRz, IAptAlpha, IAptBeta, IToXElement Inheritance object TaperApt Implements IAptBased IGetGeneralApt IAbstractNote IGetDiameter IGetFluteHeight IExpandToBox3d IMakeXmlSource IDuplicate IAptRz IAptAlpha IAptBeta IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TaperApt() Ctor. public TaperApt() TaperApt(XElement) Ctor. public TaperApt(XElement src) Parameters src XElement XML Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Alpha_deg Alpha_rad in degree. public double Alpha_deg { get; set; } Property Value double Alpha_rad The angle between horizontal plane and the cone surface of the cutter tip. The angle is downside the cutter round (if exists). If the cutter is cylindrical mill, the angle is 0. The unit is radian. public double Alpha_rad { get; set; } Property Value double Beta_deg Beta_rad in degree. public double Beta_deg { get; set; } Property Value double Beta_rad The angle between stick axis and the side plane of cutter. The angle is upside the cutter round (if exists). The unit is radian. public double Beta_rad { get; set; } Property Value double Diameter_mm Diameter. public double Diameter_mm { get; set; } Property Value double FluteHeight_mm Height of flute. public double FluteHeight_mm { get; set; } Property Value double Rz_mm Center between the tip to the round center. public double Rz_mm { get; set; } Property Value double 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 GetGeneralApt() Get Apt. public GeneralApt GetGeneralApt() Returns GeneralApt Apt MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Milling.Apts.apt_t.html": {
"href": "api/Hi.Milling.Apts.apt_t.html",
"title": "Struct apt_t | HiAPI-C# 2025",
"summary": "Struct apt_t Namespace Hi.Milling.Apts Assembly HiCbtr.dll Native apt. public struct apt_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors apt_t() Ctor. public apt_t() apt_t(IGetGeneralApt) Ctor. public apt_t(IGetGeneralApt src) Parameters src IGetGeneralApt src Fields D Diameter. public double D Field Value double H Height. public double H Field Value double Rc Round radius. public double Rc Field Value double Rr Horizontal length from cutter axis to round center. public double Rr Field Value double Rz Vertical length from cutter tip to round center. public double Rz Field Value double alpha Angle (radian) between bottom surface and horizontal. public double alpha Field Value double beta Angle (radian) between wall surface and vertical. public double beta Field Value double"
},
"api/Hi.Milling.Apts.html": {
"href": "api/Hi.Milling.Apts.html",
"title": "Namespace Hi.Milling.Apts | HiAPI-C# 2025",
"summary": "Namespace Hi.Milling.Apts Classes AptDerivative Apt derivative. BallApt Ball End Apt. BullNoseApt Bull Nose End APT. ColumnApt Column End APT. The composition is identical to the BullNoseApt. However, the nose radius is generally smaller than the BullNoseApt. ConeApt Cone End APT. ExactColumnApt Column End APT. GeneralApt APT standard milling cutter geometry. TaperApt Taper End APT. Structs apt_t Native apt. Interfaces IAptAlpha Interface for APT objects with alpha angle. IAptBased Interface for APT-based objects. IAptBeta Interface for APT objects with beta angle. IAptRc Interface for APT objects with corner radius. IAptRr Interface for APT objects with round radius. IAptRz Interface for APT objects with Z-axis round center distance. IGetApt Interface for objects that can provide an APT-based object. IGetGeneralApt Interface of GetGeneralApt()."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the AptProfile class. public AptProfile(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML element containing the profile configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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<IPolarResolution2d> PolarResolution2dSource { get; set; } Property Value Func<IPolarResolution2d> 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<PairZr> GetZrList() Returns List<PairZr> 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",
"title": "Class ConstRatioProfile | HiAPI-C# 2025",
"summary": "Class ConstRatioProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a constant ratio profile for a milling cutter. This profile maintains a constant ratio between inner and outer radii. public class ConstRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGetStl, IDuplicate, IClearCache, IGenStl, IZrListSourceProperty Inheritance object ConstRatioProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGetStl IDuplicate IClearCache IGenStl IZrListSourceProperty 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstRatioProfile() Initializes a new instance of the ConstRatioProfile class. public ConstRatioProfile() ConstRatioProfile(double) Initializes a new instance of the ConstRatioProfile class with a specified radius ratio. public ConstRatioProfile(double innerRadiusRatio) Parameters innerRadiusRatio double The ratio between inner and outer radii ConstRatioProfile(XElement, string) Initializes a new instance of the ConstRatioProfile class. public ConstRatioProfile(XElement element, string baseDirectory) Parameters element XElement The XML element containing profile data. baseDirectory string The base directory for resolving relative paths. Properties AbstractNote Gets the abstract note describing the profile. public string AbstractNote { get; } Property Value string RadiusRatio Gets or sets the ratio between inner and outer radii. public double RadiusRatio { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZrListSource Get base geometry source. Runtime property. public Func<IGetZrList> ZrListSource { get; set; } Property Value Func<IGetZrList> Methods ClearCache() Clears any cached data held by the implementing object. 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 geometry data. public Stl GetStl() Returns Stl The STL geometry object GetZrList() Gets a list of Z-R coordinate pairs. public List<PairZr> GetZrList() Returns List<PairZr> 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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Initializes a new instance of the CustomSpinningProfile class. public CustomSpinningProfile(XElement element, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters element XElement The XML element containing profile data. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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<IPolarResolution2d> PolarResolution2dSource { get; set; } Property Value Func<IPolarResolution2d> 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<PairZr> GetZrList() Returns List<PairZr> 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",
"title": "Class CutterUtil | HiAPI-C# 2025",
"summary": "Class CutterUtil Namespace Hi.Milling.Cutters Assembly HiMech.dll Utility class providing extension methods for cutter operations. public static class CutterUtil Inheritance object CutterUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCutterBodyCoolingArea_mm2(ICutter) Gets the cooling area of the cutter body in square millimeters. public static double? GetCutterBodyCoolingArea_mm2(this ICutter cutter) Parameters cutter ICutter The cutter to calculate the cooling area for. Returns double? The cooling area in square millimeters, or null if the cutter is null."
},
"api/Hi.Milling.Cutters.FluteContourDisplayee.html": {
"href": "api/Hi.Milling.Cutters.FluteContourDisplayee.html",
"title": "Class FluteContourDisplayee | HiAPI-C# 2025",
"summary": "Class FluteContourDisplayee Namespace Hi.Milling.Cutters Assembly HiMech.dll Provides display functionality for flute contours in milling cutters. This class handles the visualization of both front and back surfaces of flute contours. Internal Use Only public class FluteContourDisplayee : IDisplayee, IExpandToBox3d, IClearCache, IDisposable Inheritance object FluteContourDisplayee Implements IDisplayee IExpandToBox3d IClearCache 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FluteContourDisplayee(Func<MillingCutter>, FluteContour) Initializes a new instance of the FluteContourDisplayee class. Internal Use Only public FluteContourDisplayee(Func<MillingCutter> millingCutterHost, FluteContour fluteContour) Parameters millingCutterHost Func<MillingCutter> The function that provides the host milling cutter. fluteContour FluteContour The flute contour to be displayed. Properties FluteContour Gets or sets the flute contour to be displayed. Internal Use Only public FluteContour FluteContour { get; set; } Property Value FluteContour MillingCutterHost Gets or sets the function that provides the host milling cutter. Internal Use Only public Func<MillingCutter> MillingCutterHost { get; set; } Property Value Func<MillingCutter> Methods ClearCache() Clears the cached display data. Internal Use Only public void ClearCache() Display(Bind) Displays the flute contour using the specified binding. Internal Use Only public void Display(Bind bind) Parameters bind Bind The display binding to use. Dispose() Disposes of all resources. Internal Use Only public void Dispose() Dispose(bool) Disposes of unmanaged resources. Internal Use Only protected virtual void Dispose(bool disposing) Parameters disposing bool True if disposing, false if finalizing ExpandToBox3d(Box3d) Expands the destination box to include the bounds of this displayee. Internal Use Only public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand."
},
"api/Hi.Milling.Cutters.FluteDependentRatioProfile.html": {
"href": "api/Hi.Milling.Cutters.FluteDependentRatioProfile.html",
"title": "Class FluteDependentRatioProfile | HiAPI-C# 2025",
"summary": "Class FluteDependentRatioProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a flute number dependent ratio profile for a milling cutter. This profile determines the ratio between inner and outer radii based on the number of flutes. public class FluteDependentRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache, IFluteNumSourceProperty, IZrListSourceProperty Inheritance object FluteDependentRatioProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGenStl IGetStl IDuplicate IClearCache IFluteNumSourceProperty IZrListSourceProperty 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FluteDependentRatioProfile() Initializes a new instance. public FluteDependentRatioProfile() FluteDependentRatioProfile(XElement, string) Initializes a new instance of the FluteDependentRatioProfile class. public FluteDependentRatioProfile(XElement element, string baseDirectory) Parameters element XElement The XML element containing profile data. baseDirectory string The base directory for resolving relative paths. Properties AbstractNote Gets the abstract note describing the profile. public string AbstractNote { get; } Property Value string FluteNumSource Gets or sets a delegate that returns the current flute number. public Func<int> FluteNumSource { get; set; } Property Value Func<int> RadiusRatio Gets the radius ratio based on the current number of flutes. public double RadiusRatio { get; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZrListSource Get base geometry source. Runtime property. public Func<IGetZrList> ZrListSource { get; set; } Property Value Func<IGetZrList> Methods ClearCache() Clears any cached data held by the implementing object. 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 geometry data. public Stl GetStl() Returns Stl The STL geometry object GetZrList() Gets a list of Z-R coordinate pairs. public List<PairZr> GetZrList() Returns List<PairZr> 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"
},
"api/Hi.Milling.Cutters.IShaperProfile.html": {
"href": "api/Hi.Milling.Cutters.IShaperProfile.html",
"title": "Interface IShaperProfile | HiAPI-C# 2025",
"summary": "Interface IShaperProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Interface defining the shape profile of a cutter flute. public interface IShaperProfile : IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IAbstractNote.AbstractNote IGetZrList.GetZrList() IGenStl.GenStl(IPolarResolution2d) IGetStl.GetStl() IDuplicate.Duplicate(params object[]) IClearCache.ClearCache() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html": {
"href": "api/Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html",
"title": "Enum MillingCutter.IntegralModeEnum | HiAPI-C# 2025",
"summary": "Enum MillingCutter.IntegralModeEnum Namespace Hi.Milling.Cutters Assembly HiMech.dll Defines the integral mode of the cutter. public enum MillingCutter.IntegralModeEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields InsertEnd = 1 Insert end mode. SolidEnd = 0 Solid end mode."
},
"api/Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html": {
"href": "api/Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html",
"title": "Enum MillingCutter.MassAssignmentMode | HiAPI-C# 2025",
"summary": "Enum MillingCutter.MassAssignmentMode Namespace Hi.Milling.Cutters Assembly HiMech.dll Defines the mass assignment mode for the cutter. public enum MillingCutter.MassAssignmentMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Custom = 0 Custom mass assignment mode. EvaluateByVolume = 1 Evaluate mass by volume mode."
},
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Ctor. public MillingCutter(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress<IMessage> 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<ThermalLayer1D> CoatingLayerList { get; set; } Property Value List<ThermalLayer1D> 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<PolarResolution2d> UpperBeamPolarResolution2dSource { get; set; } Property Value Func<PolarResolution2d> 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<IAnchoredCollidableNode> GetAnchoredCollidables() Returns List<IAnchoredCollidableNode> A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<ThermalLayer1D> GetFluteThermalLayerList() Returns List<ThermalLayer1D> 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<ThermalLayer1D> GetThermalLayerList() Returns List<ThermalLayer1D> 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-UpperBeamBelowFluteHeight); 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<PairZr> GetZrList() Returns List<PairZr> 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",
"title": "Enum MillingCutterEditorDisplayee.ShapeModeEnum | HiAPI-C# 2025",
"summary": "Enum MillingCutterEditorDisplayee.ShapeModeEnum Namespace Hi.Milling.Cutters Assembly HiMech.dll Display shape mode for the cutter. public enum MillingCutterEditorDisplayee.ShapeModeEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields DetailPhysicsShape = 1 Render detailed physics-related shapes. SolidBoundingShape = 0 Render only a simplified solid bounding shape."
},
"api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.html": {
"href": "api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.html",
"title": "Class MillingCutterEditorDisplayee | HiAPI-C# 2025",
"summary": "Class MillingCutterEditorDisplayee Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a displayable editor for milling cutter visualization. This class handles the rendering of cutter geometry, including flutes, profiles, and inner structures. Internal Use Only public class MillingCutterEditorDisplayee : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IClearCache, IDisposable Inheritance object MillingCutterEditorDisplayee Implements IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d IClearCache 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) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingCutterEditorDisplayee() Initializes a new instance of the MillingCutterEditorDisplayee class. public MillingCutterEditorDisplayee() MillingCutterEditorDisplayee(Func<MillingCutter>) Initializes a new instance of the MillingCutterEditorDisplayee class with a milling cutter host. public MillingCutterEditorDisplayee(Func<MillingCutter> millingCutterHost) Parameters millingCutterHost Func<MillingCutter> Function that provides the milling cutter instance Properties MillingCutterSourceFunc Gets or sets the function that provides the milling cutter instance. public Func<MillingCutter> MillingCutterSourceFunc { get; set; } Property Value Func<MillingCutter> ShapeMode Gets or sets the current display shape mode. public MillingCutterEditorDisplayee.ShapeModeEnum ShapeMode { get; set; } Property Value MillingCutterEditorDisplayee.ShapeModeEnum Methods ClearCache() Clears all cached display data. public void ClearCache() Display(Bind) Displays the milling cutter visualization. public void Display(Bind bind) Parameters bind Bind The binding context for display 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 ExpandToBox3d(Box3d) Expands the bounding box to include the cutter geometry. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The destination bounding box to expand GetAnchor() Gets the root anchor point of the cutter. public Anchor GetAnchor() Returns Anchor The cutter tip anchor"
},
"api/Hi.Milling.Cutters.html": {
"href": "api/Hi.Milling.Cutters.html",
"title": "Namespace Hi.Milling.Cutters | HiAPI-C# 2025",
"summary": "Namespace Hi.Milling.Cutters Classes AptProfile Represents an APT (Automatically Programmed Tool) based profile for a milling cutter. This profile uses APT definitions to describe the cutter geometry. ConstRatioProfile Represents a constant ratio profile for a milling cutter. This profile maintains a constant ratio between inner and outer radii. CustomSpinningProfile Represents a custom spinning profile for a milling cutter. This profile allows for custom geometry to be used as the cutter profile. CutterUtil Utility class providing extension methods for cutter operations. FluteContourDisplayee Provides display functionality for flute contours in milling cutters. This class handles the visualization of both front and back surfaces of flute contours. Internal Use Only FluteDependentRatioProfile Represents a flute number dependent ratio profile for a milling cutter. This profile determines the ratio between inner and outer radii based on the number of flutes. MillingCutter Represents a milling cutter with its geometric and physical properties. MillingCutterEditorDisplayee Represents a displayable editor for milling cutter visualization. This class handles the rendering of cutter geometry, including flutes, profiles, and inner structures. Internal Use Only Interfaces IShaperProfile Interface defining the shape profile of a cutter flute. Enums MillingCutter.IntegralModeEnum Defines the integral mode of the cutter. MillingCutter.MassAssignmentMode Defines the mass assignment mode for the cutter. MillingCutterEditorDisplayee.ShapeModeEnum Display shape mode for the cutter."
},
"api/Hi.Milling.Engagements.BitwiseMillingEngagement.html": {
"href": "api/Hi.Milling.Engagements.BitwiseMillingEngagement.html",
"title": "Class BitwiseMillingEngagement | HiAPI-C# 2025",
"summary": "Class BitwiseMillingEngagement Namespace Hi.Milling.Engagements Assembly HiMech.dll Represents a bitwise milling engagement that uses bit arrays to efficiently store engagement information. public class BitwiseMillingEngagement Inheritance object BitwiseMillingEngagement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BitwiseMillingEngagement(List<PairZr>, List<List<Vec3d>>, SeqPair<Mat4d>, double, double) Initializes a new instance of the BitwiseMillingEngagement class. public BitwiseMillingEngagement(List<PairZr> fluteZrContour, List<List<Vec3d>> orthodoxForwardContours, SeqPair<Mat4d> seqOnToolRunningCoordinate, double zInterval, double rInterval) Parameters fluteZrContour List<PairZr> The flute Z-R contour. orthodoxForwardContours List<List<Vec3d>> The orthodox forward contours. seqOnToolRunningCoordinate SeqPair<Mat4d> The sequence on tool running coordinate. zInterval double The Z interval. rInterval double The R interval. Fields angleIntervalNum Number of angle interval. public const int angleIntervalNum = 64 Field Value int angleInterval_rad angle interval in radian. public const double angleInterval_rad = 0.09817477042468103 Field Value double Properties BottomBits Gets or sets the bottom bits representing bottom engagement. public List<ulong> BottomBits { get; set; } Property Value List<ulong> SideBits Gets or sets the side bits representing side engagement. public List<ulong> SideBits { get; set; } Property Value List<ulong> Methods Delta(BitwiseMillingEngagement, BitwiseMillingEngagement, out int) Contact area difference from engagement1. public static int Delta(BitwiseMillingEngagement engagement0, BitwiseMillingEngagement engagement1, out int deltaIncreaseNum) Parameters engagement0 BitwiseMillingEngagement previous engagement on time line. Null value is accepted. engagement1 BitwiseMillingEngagement current engagement on time line. Null value is accepted. deltaIncreaseNum int The relative increase number of contact area from engagement0 to engagement1. Negative value means the contact area decreased. Returns int Contact area difference ToBottomBitString() Converts the bottom bits to a string representation. public string ToBottomBitString() Returns string A string representation of the bottom bits. ToSideBitString() Converts the side bits to a string representation. public string ToSideBitString() Returns string A string representation of the side bits."
},
"api/Hi.Milling.Engagements.EngagementLayer.html": {
"href": "api/Hi.Milling.Engagements.EngagementLayer.html",
"title": "Class EngagementLayer | HiAPI-C# 2025",
"summary": "Class EngagementLayer Namespace Hi.Milling.Engagements Assembly HiMech.dll Represents a layer of engagement between a tool and workpiece. public class EngagementLayer : IWriteBin Inheritance object EngagementLayer 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors EngagementLayer() Initializes a new instance of the EngagementLayer class public EngagementLayer() EngagementLayer(BinaryReader) Initializes a new instance of the EngagementLayer class by reading from a binary stream public EngagementLayer(BinaryReader reader) Parameters reader BinaryReader The binary reader to read the engagement layer data from Properties Dv Gets or sets the interval value (in millimeters) for either Z coordinate (for side engagement) or R coordinate (for bottom engagement) public double Dv { get; set; } Property Value double Ranges Gets or sets the list of angular ranges where the tool engages with the workpiece. Each range represents a start and end angle in radians. public List<Range<double>> Ranges { get; set; } Property Value List<Range<double>> Methods ToString() Returns a string representation of the engagement layer public override string ToString() Returns string A string containing the Dv value and the ranges of engagement angles WriteBin(BinaryWriter) Writes the engagement layer data to a binary stream public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write the data to"
},
"api/Hi.Milling.Engagements.EngagementSlice.html": {
"href": "api/Hi.Milling.Engagements.EngagementSlice.html",
"title": "Class EngagementSlice | HiAPI-C# 2025",
"summary": "Class EngagementSlice Namespace Hi.Milling.Engagements Assembly HiMech.dll Engagement slice. public class EngagementSlice Inheritance object EngagementSlice Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors EngagementSlice(double, double, double) Initializes a new instance of the EngagementSlice class. public EngagementSlice(double v, double begin, double end) Parameters v double The z or r value. begin double The begin angle in radians. end double The end angle in radians. Fields begin begin angle in radian. public double begin Field Value double end end angle in radian. public double end Field Value double v z or r. public double v Field Value double Methods ToString() Returns a string that represents the current engagement slice. public override string ToString() Returns string A string that represents the current engagement slice."
},
"api/Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html": {
"href": "api/Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html",
"title": "Interface IBitwiseMillingEngagementSupport | HiAPI-C# 2025",
"summary": "Interface IBitwiseMillingEngagementSupport Namespace Hi.Milling.Engagements Assembly HiMech.dll Interface for classes that support bitwise milling engagement. public interface IBitwiseMillingEngagementSupport Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties BitwiseMillingEngagement Gets or sets the bitwise milling engagement. BitwiseMillingEngagement BitwiseMillingEngagement { get; set; } Property Value BitwiseMillingEngagement"
},
"api/Hi.Milling.Engagements.IGetLayerMillingEngagement.html": {
"href": "api/Hi.Milling.Engagements.IGetLayerMillingEngagement.html",
"title": "Interface IGetLayerMillingEngagement | HiAPI-C# 2025",
"summary": "Interface IGetLayerMillingEngagement Namespace Hi.Milling.Engagements Assembly HiMech.dll Interface of GetLayerMillingEngagement(). public interface IGetLayerMillingEngagement Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetLayerMillingEngagement() Get LayerMillingEngagement. LayerMillingEngagement GetLayerMillingEngagement() Returns LayerMillingEngagement LayerMillingEngagement"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<double, EngagementLayer> BottomEngagements { get; set; } Property Value SortedList<double, EngagementLayer> 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<double, EngagementLayer> SideEngagements { get; set; } Property Value SortedList<double, EngagementLayer> 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",
"title": "Class MillingEngagementUtil | HiAPI-C# 2025",
"summary": "Class MillingEngagementUtil Namespace Hi.Milling.Engagements Assembly HiMech.dll Utility of LayerMillingEngagement. public static class MillingEngagementUtil Inheritance object MillingEngagementUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetContoursDrawing(List<List<Vec3d>>) Gets a drawing representation of the contours. public static Drawing GetContoursDrawing(List<List<Vec3d>> contours) Parameters contours List<List<Vec3d>> The list of contours to draw. Returns Drawing A drawing object representing the contours. GetZToDzList(List<double>, double) Get Z to dZ list. The z values, i.e. the key of generated list, are all not repeated with the source z values. The generated z values are interpolated by the source z values. And each of the dz area is the same slope from the original source. public static SortedList<double, double> GetZToDzList(List<double> constantZlopeZs, double resolution) Parameters constantZlopeZs List<double> resolution double Returns SortedList<double, double>"
},
"api/Hi.Milling.Engagements.html": {
"href": "api/Hi.Milling.Engagements.html",
"title": "Namespace Hi.Milling.Engagements | HiAPI-C# 2025",
"summary": "Namespace Hi.Milling.Engagements Classes BitwiseMillingEngagement Represents a bitwise milling engagement that uses bit arrays to efficiently store engagement information. EngagementLayer Represents a layer of engagement between a tool and workpiece. EngagementSlice Engagement slice. LayerMillingEngagement Milling Engagement. MillingEngagementUtil Utility of LayerMillingEngagement. Interfaces IBitwiseMillingEngagementSupport Interface for classes that support bitwise milling engagement. IGetLayerMillingEngagement Interface of GetLayerMillingEngagement()."
},
"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<ConstHelixSideContour> Inheritance object ConstHelixSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable<ConstHelixSideContour> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<double> KeyRange { get; } Property Value Range<double> 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<SpanContourPos4d> GetSpanContourPosList() Returns List<SpanContourPos4d> 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<List<SpanContourPos4d>> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Initializes a new instance of the FluteContour class from XML data public FluteContour(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters src XElement The source XML element baseDirectory string The base directory for resolving relative paths progress IProgress<IMessage> 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 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Initializes a new instance of the FreeFluting class from XML data public FreeFluting(XElement src, string baseDirectory, IProgress<IMessage> 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<IMessage> 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<FluteContour> ContourList { get; set; } Property Value List<FluteContour> 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<FluteContour> GetFluteContourList() Returns List<FluteContour> 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<FreeformBottomContour> Inheritance object FreeformBottomContour Implements IBottomContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable<FreeformBottomContour> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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()"
},
"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<FreeformSideContour> Inheritance object FreeformSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable<FreeformSideContour> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 Z-coordinate SpanContourPosList Gets or sets the list of contour positions ordered by Z-coordinate 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 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<SpanContourPos4d> GetSpanContourPosList() Returns List<SpanContourPos4d> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<int> FluteNumSource { get; set; } Property Value Func<int>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<FluteContour> GetFluteContourList() Returns List<FluteContour> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface IWorkingContour | HiAPI-C# 2025",
"summary": "Interface IWorkingContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a working contour for cutting operations in milling tools. This interface is implemented by both side contours (ISideContour) and bottom contours (IBottomContour). public interface IWorkingContour : IMakeXmlSource, IExpandToBox3d, IClearCache Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IClearCache.ClearCache() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The working contour provides essential geometry for tool cutting operations: For side contours, the key range represents Z values (height) For bottom contours, the key range represents R values (radius) Properties KeyRange Gets the key range of the flute contour. Range<double> KeyRange { get; } Property Value Range<double> Remarks For ISideContour, this represents the Z-value range (height range) For IBottomContour, this represents the R-value range (radial range) Methods Duplicate(IGetZrList) Creates a duplicate of this working contour. IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information for the new contour. Returns IWorkingContour A new instance of IWorkingContour with the same properties and geometry. GetSpanContourPosList() Gets a list of span contour positions that define the working contour geometry. List<SpanContourPos4d> GetSpanContourPosList() Returns List<SpanContourPos4d> 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<List<SpanContourPos4d>> for block flute support."
},
"api/Hi.Milling.FluteContours.ShiftedWorkingContour.html": {
"href": "api/Hi.Milling.FluteContours.ShiftedWorkingContour.html",
"title": "Class ShiftedWorkingContour | HiAPI-C# 2025",
"summary": "Class ShiftedWorkingContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll 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. public class ShiftedWorkingContour : IWorkingContour, IExpandToBox3d, IClearCache, IMakeXmlSource, IEquatable<ShiftedWorkingContour> Inheritance object ShiftedWorkingContour Implements IWorkingContour IExpandToBox3d IClearCache IMakeXmlSource IEquatable<ShiftedWorkingContour> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ShiftedWorkingContour() Initializes a new instance of the ShiftedWorkingContour class public ShiftedWorkingContour() ShiftedWorkingContour(double, IWorkingContour) Initializes a new instance of the ShiftedWorkingContour class with a specified shift angle and baseline contour public ShiftedWorkingContour(double shiftAngle_rad, IWorkingContour baselineWorkingContour) Parameters shiftAngle_rad double The shift angle in radians baselineWorkingContour IWorkingContour The baseline working contour to be shifted ShiftedWorkingContour(XElement, string, IWorkingContour) Initializes a new instance of the ShiftedWorkingContour class from XML data public ShiftedWorkingContour(XElement src, string baseDirectory, IWorkingContour baselineWorkingContour) Parameters src XElement The source XML element baseDirectory string The base directory for resolving relative paths baselineWorkingContour IWorkingContour The baseline working contour to be shifted Properties BaselineWorkingContour Gets or sets the baseline working contour that is being shifted public IWorkingContour BaselineWorkingContour { get; set; } Property Value IWorkingContour KeyRange Gets the key range of the baseline working contour public Range<double> KeyRange { get; } Property Value Range<double> ShiftAngle_deg Gets or sets the shift angle in degrees public double ShiftAngle_deg { get; set; } Property Value double ShiftAngle_rad Gets or sets the shift angle in radians public double ShiftAngle_rad { get; set; } Property Value double XName Gets the XML name for serialization 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 with a new Z-radius list provider. public IWorkingContour Duplicate(IGetZrList zrList) Parameters zrList IGetZrList The Z-radius list provider for the duplicate. Returns IWorkingContour A new instance of ShiftedWorkingContour. Equals(ShiftedWorkingContour) Determines whether the specified ShiftedWorkingContour is equal to the current ShiftedWorkingContour public bool Equals(ShiftedWorkingContour contour) Parameters contour ShiftedWorkingContour The ShiftedWorkingContour to compare with the current ShiftedWorkingContour Returns bool true if the specified ShiftedWorkingContour is equal to the current ShiftedWorkingContour; 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 shifted working 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 GetSpanContourPosList() Gets the list of span contour positions after applying the shift transformation public List<SpanContourPos4d> GetSpanContourPosList() Returns List<SpanContourPos4d> A list of transformed span contour positions MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 Operators operator ==(ShiftedWorkingContour, ShiftedWorkingContour) Determines whether two ShiftedWorkingContour instances are equal public static bool operator ==(ShiftedWorkingContour left, ShiftedWorkingContour right) Parameters left ShiftedWorkingContour The first ShiftedWorkingContour to compare right ShiftedWorkingContour The second ShiftedWorkingContour to compare Returns bool true if the specified ShiftedWorkingContour instances are equal; otherwise, false operator !=(ShiftedWorkingContour, ShiftedWorkingContour) Determines whether two ShiftedWorkingContour instances are not equal public static bool operator !=(ShiftedWorkingContour left, ShiftedWorkingContour right) Parameters left ShiftedWorkingContour The first ShiftedWorkingContour to compare right ShiftedWorkingContour The second ShiftedWorkingContour to compare Returns bool true if the specified ShiftedWorkingContour instances are not equal; otherwise, false"
},
"api/Hi.Milling.FluteContours.SideContourDisplayee.html": {
"href": "api/Hi.Milling.FluteContours.SideContourDisplayee.html",
"title": "Class SideContourDisplayee | HiAPI-C# 2025",
"summary": "Class SideContourDisplayee Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a displayable side contour. public class SideContourDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object SideContourDisplayee 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SideContourDisplayee(ISideContour) Initializes a new instance of the SideContourDisplayee class. public SideContourDisplayee(ISideContour sideContourSurface) Parameters sideContourSurface ISideContour The side contour surface to display. Properties SideContourSurface Gets or sets the side contour surface. public ISideContour SideContourSurface { get; set; } Property Value ISideContour 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 ResetDrawingCache() Resets the drawing cache. public void ResetDrawingCache()"
},
"api/Hi.Milling.FluteContours.SlideBottomContour.html": {
"href": "api/Hi.Milling.FluteContours.SlideBottomContour.html",
"title": "Class SlideBottomContour | HiAPI-C# 2025",
"summary": "Class SlideBottomContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a slide bottom contour for milling cutters. public class SlideBottomContour : IBottomContour, IWorkingContour, IMakeXmlSource, IExpandToBox3d, IClearCache Inheritance object SlideBottomContour Implements IBottomContour IWorkingContour IMakeXmlSource 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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SlideBottomContour() Initializes a new instance of the SlideBottomContour class. public SlideBottomContour() SlideBottomContour(XElement, string) Ctor by XML. public SlideBottomContour(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties AxialRakeAngle_deg AxialRakeAngle_rad in degree. public double AxialRakeAngle_deg { get; set; } Property Value double AxialRakeAngle_rad Axial rake angle. Sometimes it is equal to Helix angle from side contour. in radian. public double AxialRakeAngle_rad { get; set; } Property Value double CutterLengthOnBottomProjection_mm cutter length projection from outer edge on bottom plane. public double CutterLengthOnBottomProjection_mm { get; set; } Property Value double DiskAngle_deg angle between bottom surface and horizontal plane. unit is degree. public double DiskAngle_deg { get; set; } Property Value double DiskAngle_rad angle between bottom surface and horizontal plane. unit is radian. public double DiskAngle_rad { get; set; } Property Value double EccentricAngle_deg Gets or sets the eccentric angle in degrees. public double EccentricAngle_deg { get; set; } Property Value double EccentricAngle_rad Projection angle between the line from outer edge tip to center and bottom flute contour on bottom plane. Sometimes it is equal to Radial Rake Angle from side contour. in radian. public double EccentricAngle_rad { get; set; } Property Value double InnerHeight_mm Gets the inner height of the contour in millimeters. public double InnerHeight_mm { get; } Property Value double KeyRange Gets the key range of the flute contour. public Range<double> KeyRange { get; } Property Value Range<double> Remarks For ISideContour, this represents the Z-value range (height range) For IBottomContour, this represents the R-value range (radial range) OuterRadius_mm Gets or sets the outer radius of the contour in millimeters. public double OuterRadius_mm { get; set; } Property Value double 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 with the specified ZR list host. public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The ZR list host to use for the duplicate Returns IWorkingContour A new working contour 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 GetSpanContourPos4d(double) public SpanContourPos4d GetSpanContourPos4d(double r) Parameters r double specific radius Returns SpanContourPos4d GetSpanContourPosList() Gets a list of span contour positions that define the working contour geometry. public List<SpanContourPos4d> GetSpanContourPosList() Returns List<SpanContourPos4d> 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<List<SpanContourPos4d>> 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 (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.Milling.FluteContours.SpanContourPos4d.html": {
"href": "api/Hi.Milling.FluteContours.SpanContourPos4d.html",
"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<SpanContourPos4d, SpanContourPos4d, SpanContourPos4d>, IMultiplyOperators<SpanContourPos4d, double, SpanContourPos4d>, IDivisionOperators<SpanContourPos4d, double, SpanContourPos4d>, ICsvRowIo Inheritance object SpanContourPos4d Implements IAdditionOperators<SpanContourPos4d, SpanContourPos4d, SpanContourPos4d> IMultiplyOperators<SpanContourPos4d, double, SpanContourPos4d> IDivisionOperators<SpanContourPos4d, double, SpanContourPos4d> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Ctor. public UniformFluting(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths progress IProgress<IMessage> 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<FluteContour> GetFluteContourList() Returns List<FluteContour> 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. 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",
"title": "Interface IGetDiameter | HiAPI-C# 2025",
"summary": "Interface IGetDiameter Namespace Hi.Milling Assembly HiGeom.dll Interface for objects that provide diameter information. public interface IGetDiameter Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Diameter_mm Gets the diameter in millimeters. double Diameter_mm { get; } Property Value double"
},
"api/Hi.Milling.IGetFluteHeight.html": {
"href": "api/Hi.Milling.IGetFluteHeight.html",
"title": "Interface IGetFluteHeight | HiAPI-C# 2025",
"summary": "Interface IGetFluteHeight Namespace Hi.Milling Assembly HiGeom.dll Interface for objects that provide flute height information. public interface IGetFluteHeight Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FluteHeight_mm Gets the height of the flute in millimeters. double FluteHeight_mm { get; } Property Value double"
},
"api/Hi.Milling.IGetMillingGeomBrief.html": {
"href": "api/Hi.Milling.IGetMillingGeomBrief.html",
"title": "Interface IGetMillingGeomBrief | HiAPI-C# 2025",
"summary": "Interface IGetMillingGeomBrief Namespace Hi.Milling Assembly HiGeom.dll Interface for retrieving milling geometry brief information. public interface IGetMillingGeomBrief Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMillingGeomBrief() Gets the milling geometry brief information. MillingGeomBrief GetMillingGeomBrief() Returns MillingGeomBrief The milling geometry brief information."
},
"api/Hi.Milling.IGetRadialReliefAngle.html": {
"href": "api/Hi.Milling.IGetRadialReliefAngle.html",
"title": "Interface IGetRadialReliefAngle | HiAPI-C# 2025",
"summary": "Interface IGetRadialReliefAngle Namespace Hi.Milling Assembly HiGeom.dll Interface for objects that provide radial relief angle information. public interface IGetRadialReliefAngle Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties RadialReliefAngle_rad Gets the radial relief angle in radians. double RadialReliefAngle_rad { get; } Property Value double"
},
"api/Hi.Milling.IMillingGeomBriefAccessor.html": {
"href": "api/Hi.Milling.IMillingGeomBriefAccessor.html",
"title": "Interface IMillingGeomBriefAccessor | HiAPI-C# 2025",
"summary": "Interface IMillingGeomBriefAccessor Namespace Hi.Milling Assembly HiGeom.dll Interface for accessing and modifying milling geometry brief information. public interface IMillingGeomBriefAccessor : IGetMillingGeomBrief Inherited Members IGetMillingGeomBrief.GetMillingGeomBrief() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MillingGeomBrief Gets or sets the milling geometry brief information. MillingGeomBrief MillingGeomBrief { get; set; } Property Value MillingGeomBrief"
},
"api/Hi.Milling.MillingGeomBrief.html": {
"href": "api/Hi.Milling.MillingGeomBrief.html",
"title": "Class MillingGeomBrief | HiAPI-C# 2025",
"summary": "Class MillingGeomBrief Namespace Hi.Milling Assembly HiGeom.dll Brief of milling geometry. public class MillingGeomBrief : IGetMillingGeomBrief, IGetQuantityByKey, IGetCsvDictionary Inheritance object MillingGeomBrief Implements IGetMillingGeomBrief IGetQuantityByKey IGetCsvDictionary Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingGeomBrief() Ctor. public MillingGeomBrief() MillingGeomBrief(DVec3d, Vec3d, bool?, double, double, double, double) Ctor. public MillingGeomBrief(DVec3d cl, Vec3d movingDirection, bool? isTouched, double radialWidth, double axialDepth, double mrr_mm3ds, double chipThickness) Parameters cl DVec3d cutter location movingDirection Vec3d moving direction on Workpiece Coordinate isTouched bool? is touched radialWidth double radial width axialDepth double axial depth mrr_mm3ds double meterial removal rate mm3/s chipThickness double chip thickness Properties AxialDepth Axial depth. public double AxialDepth { get; set; } Property Value double ChipThickness Max chip thickness in mm. public double ChipThickness { get; set; } Property Value double Cl Cutter location. public DVec3d Cl { get; set; } Property Value DVec3d IsTouched Is touched. public bool? IsTouched { get; set; } Property Value bool? MovingDirectionOnWorkpieceCoordinate Moving direction on Workpiece Coordinate public Vec3d MovingDirectionOnWorkpieceCoordinate { get; set; } Property Value Vec3d Mrr_mm3ds Material removal rate. Unit: mm3/s. public double Mrr_mm3ds { get; set; } Property Value double RadialWidth Radial width. public double RadialWidth { get; set; } Property Value double Methods GetCsvDictionary() Get row dictionary. It suits for CSV output. public Dictionary<string, string> GetCsvDictionary() Returns Dictionary<string, string> csv row dictionary GetMillingGeomBrief() Gets the milling geometry brief information. public MillingGeomBrief GetMillingGeomBrief() Returns MillingGeomBrief The milling geometry brief information. 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 GetQuantityDictionary() public Dictionary<string, double> GetQuantityDictionary() Returns Dictionary<string, double> SetByCsvDictionary(Dictionary<string, string>, bool) Sets the properties of this object from a CSV dictionary. public void SetByCsvDictionary(Dictionary<string, string> src, bool removeFromSource = false) Parameters src Dictionary<string, string> The source dictionary containing property values as strings removeFromSource bool If true, removes the entries from the source dictionary after retrieving them"
},
"api/Hi.Milling.MillingRemovalUtil.html": {
"href": "api/Hi.Milling.MillingRemovalUtil.html",
"title": "Class MillingRemovalUtil | HiAPI-C# 2025",
"summary": "Class MillingRemovalUtil Namespace Hi.Milling Assembly HiMech.dll Utility for milling removal. public static class MillingRemovalUtil Inheritance object MillingRemovalUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetContoursOnToolRunningCoordinate(Substraction, MachineMotionStep) Gets contours on tool running coordinate from a subtraction. public static List<List<Vec3d>> GetContoursOnToolRunningCoordinate(this Substraction substraction, MachineMotionStep machineStep) Parameters substraction Substraction The subtraction containing contact contours. machineStep MachineMotionStep The machining step with coordinate transformation. Returns List<List<Vec3d>> List of contours on tool running coordinate. GetMrr_mm3ds(List<List<Vec3d>>, Vec3d, double) Calculates the material removal rate in cubic millimeters per second. public static double GetMrr_mm3ds(List<List<Vec3d>> contoursOnToolRunningCoordinate, Vec3d movingDirectionOnToolRunningCoordinate, double feedrate_mmds) Parameters contoursOnToolRunningCoordinate List<List<Vec3d>> Contours on tool running coordinate. movingDirectionOnToolRunningCoordinate Vec3d Moving direction on tool running coordinate. feedrate_mmds double Feed rate in millimeters per second. Returns double Material removal rate in cubic millimeters per second."
},
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the MillingTool class. public MillingTool(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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",
"title": "Enum MillingToolAnchorReference | HiAPI-C# 2025",
"summary": "Enum MillingToolAnchorReference Namespace Hi.Milling.MillingTools Assembly HiMech.dll Defines reference points for anchoring milling tools. public enum MillingToolAnchorReference Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields HolderAnc = 2 The holder anchor as the reference point. None = 0 No specific anchor reference point. SpindleBuckleAnc = 4 The spindle buckle anchor as the reference point. ToolTip = 1 The tool tip as the anchor reference point."
},
"api/Hi.Milling.MillingTools.MillingToolEditorDisplayee.html": {
"href": "api/Hi.Milling.MillingTools.MillingToolEditorDisplayee.html",
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<MillingTool> MillingToolGetter { get; set; } Property Value Func<MillingTool> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<MillingToolPhysicsPack> Inheritance object MillingToolPhysicsPack Implements IEquatable<MillingToolPhysicsPack> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"summary": "Class MillingToolUtil Namespace Hi.Milling.MillingTools Assembly HiMech.dll Provides utility methods for working with milling tools. public static class MillingToolUtil Inheritance object MillingToolUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFullH(IMachiningTool) Gets the full height of the milling tool. public static double GetFullH(this IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool to measure. Returns double The height of the tool in the Z dimension."
},
"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. 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",
"title": "Class SpindleCapability | HiAPI-C# 2025",
"summary": "Class SpindleCapability Namespace Hi.Milling Assembly HiMech.dll Represents the capability of a spindle, including power, torque, and thermal characteristics. Internal Use Only public class SpindleCapability : IMakeXmlSource, INameNote Inheritance object SpindleCapability Implements IMakeXmlSource INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SpindleCapability() Ctor. public SpindleCapability() SpindleCapability(XElement, string, params object[]) Initializes a new instance of the SpindleCapability class. public SpindleCapability(XElement src, string baseDirectory, params object[] res) Parameters src XElement The XML element containing spindle data. baseDirectory string The base directory for resolving relative paths. res object[] Additional resolution parameters. Properties DryRunFrictionPowerCoefficient_mWdrpm Dry Run Friction Power Coefficient. unit is mW/rpm. DryRunFrictionPower = DryRunFrictionPowerCoefficient * S. public double DryRunFrictionPowerCoefficient_mWdrpm { get; set; } Property Value double Remarks default value 4.82 is estimated by paper: The Friction of Radially Loaded Hybrid Spindle Bearings under High Speeds. Figure 13. At 9k rpm, Torque 0.046Nm. DryRunWindagePowerCoefficient_pWdrpm3 Dry Run Windage Power Coefficient. unit is pW/(rpm^3). DryRunWindagePower = DryRunWindagePowerCoefficient * (S^3). public double DryRunWindagePowerCoefficient_pWdrpm3 { get; set; } Property Value double Remarks default value 90 is estimated by paper: CFD Study on the Windage Power Loss of High Speed Gear. rpm W 5000 12 6000 20 7000 29 EnergyEfficiency Energy Conversion Efficiency. Where is Ouput/Input. public double EnergyEfficiency { get; set; } Property Value double GearShiftSpindleSpeed_cycleds Crossover speed. Gear Shift speed. spindle speed at shifting point between low gear mode and high gear mode. null means there is no gear shift mechanism. public double? GearShiftSpindleSpeed_cycleds { get; set; } Property Value double? GearShiftSpindleSpeed_rpm Gear shift spindle speed in RPM. public double? GearShiftSpindleSpeed_rpm { get; set; } Property Value double? InfInsistentSpindleSpeedToPower_cycleDs_kW SpindleSpeed(cycle/sec) to Power(kW) at infinte workable time. public List<Vec2d> InfInsistentSpindleSpeedToPower_cycleDs_kW { get; set; } Property Value List<Vec2d> InfInsistentSpindleSpeedToTorque_cycleDs_Nm SpindleSpeed(cycle/sec) to Torque(Nm) at 100% insistent ratio. public List<Vec2d> InfInsistentSpindleSpeedToTorque_cycleDs_Nm { get; set; } Property Value List<Vec2d> Name Name. public string Name { get; set; } Property Value string Note Note. public string Note { get; set; } Property Value string WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW WorkableDuration To SpindleSpeedToPowerContours. The dictionary is workable time (min) to (x:SpindleSpeed(cycle/sec), y:Power(kW)) public Dictionary<double, List<Vec2d>> WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW { get; set; } Property Value Dictionary<double, List<Vec2d>> WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm WorkableDuration To SpindleSpeedToTorqueContours. The dictionary is workable time (min) to (x:SpindleSpeed(cycle/sec), y:Torque(Nm)). public Dictionary<double, List<Vec2d>> WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm { get; set; } Property Value Dictionary<double, List<Vec2d>> WorkingTemperatureUpperBoundary_C Upper boundary of working temperature in Celsius. public double WorkingTemperatureUpperBoundary_C { get; set; } Property Value double WorkingTemperatureUpperBoundary_K Upper boundary of working temperature in Kelvin. public double WorkingTemperatureUpperBoundary_K { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods GetHeatPara(double) Gets thermal parameters for the spindle at a given speed. Internal Use Only public (double HeatCapacity_JdK, double ConvectionPara_WdK) GetHeatPara(double spindleSpeed_cycleDs) Parameters spindleSpeed_cycleDs double Spindle speed in cycles per second Returns (double HeatCapacity_JdK, double ConvectionPara_WdK) A tuple containing heat capacity and convection parameter MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.html": {
"href": "api/Hi.Milling.html",
"title": "Namespace Hi.Milling | HiAPI-C# 2025",
"summary": "Namespace Hi.Milling Classes MillingGeomBrief Brief of milling geometry. MillingRemovalUtil Utility for milling removal. SpindleCapability Represents the capability of a spindle, including power, torque, and thermal characteristics. Internal Use Only Interfaces IGetDiameter Interface for objects that provide diameter information. IGetFluteHeight Interface for objects that provide flute height information. IGetMillingGeomBrief Interface for retrieving milling geometry brief information. IGetRadialReliefAngle Interface for objects that provide radial relief angle information. IMillingGeomBriefAccessor Interface for accessing and modifying milling geometry brief information."
},
"api/Hi.MillingForces.Fittings.CuttingParaUtil.html": {
"href": "api/Hi.MillingForces.Fittings.CuttingParaUtil.html",
"title": "Class CuttingParaUtil | HiAPI-C# 2025",
"summary": "Class CuttingParaUtil Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Utility methods for working with cutting parameters. public static class CuttingParaUtil Inheritance object CuttingParaUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ToRakeFaceCuttingPara(ICuttingPara) Converts various cutting parameter types to a RakeFaceCuttingPara. This function is for adjusting obsoleted design as some milling parameter formats are not used anymore. public static RakeFaceCuttingPara3d ToRakeFaceCuttingPara(this ICuttingPara millingPara) Parameters millingPara ICuttingPara The cutting parameter to convert. Returns RakeFaceCuttingPara3d A RakeFaceCuttingPara instance, or null if conversion is not possible."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> 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",
"title": "Interface IGetCuttingPara | HiAPI-C# 2025",
"summary": "Interface IGetCuttingPara Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Interface of GetCuttingPara(). public interface IGetCuttingPara : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetCuttingPara() Get ICuttingPara. ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara"
},
"api/Hi.MillingForces.Fittings.SampleCategory.html": {
"href": "api/Hi.MillingForces.Fittings.SampleCategory.html",
"title": "Class SampleCategory | HiAPI-C# 2025",
"summary": "Class SampleCategory Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a category for milling force samples with step and division information. public class SampleCategory Inheritance object SampleCategory Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SampleCategory() Initializes a new instance of the SampleCategory class. public SampleCategory() SampleCategory(int, int, SampleFlag) Initializes a new instance of the SampleCategory class with specified step index, division index, and sample flag. public SampleCategory(int stepIndex, int localDivisionIndex, SampleFlag sampleDataEnum) Parameters stepIndex int The step index. localDivisionIndex int The local division index. sampleDataEnum SampleFlag The sample data flag. Properties LocalDivisionIndex Gets or sets the local division index. public int LocalDivisionIndex { get; set; } Property Value int SampleDataEnum Gets or sets the sample data flag. public SampleFlag SampleDataEnum { get; set; } Property Value SampleFlag SampleInstance Gets or sets the sample instance. public SampleInstance SampleInstance { get; set; } Property Value SampleInstance StepIndex Gets or sets the step index. 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."
},
"api/Hi.MillingForces.Fittings.SampleFlag.html": {
"href": "api/Hi.MillingForces.Fittings.SampleFlag.html",
"title": "Enum SampleFlag | HiAPI-C# 2025",
"summary": "Enum SampleFlag Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Flags representing different types of force and moment samples in milling operations. [Flags] public enum SampleFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) SampleFlagUtil.IsForce(SampleFlag) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Fx = 1 Force in X direction. Fy = 2 Force in Y direction. Fz = 4 Force in Z direction. Mx = 8 Moment around X axis. My = 16 Moment around Y axis. Mz = 32 Moment around Z axis. Virtual = 0 Virtual or no sample."
},
"api/Hi.MillingForces.Fittings.SampleFlagUtil.html": {
"href": "api/Hi.MillingForces.Fittings.SampleFlagUtil.html",
"title": "Class SampleFlagUtil | HiAPI-C# 2025",
"summary": "Class SampleFlagUtil Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Utility methods for working with sample flags. public static class SampleFlagUtil Inheritance object SampleFlagUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods IsForce(SampleFlag) Determines if the sample flag represents a force component (Fx, Fy, or Fz). public static bool IsForce(this SampleFlag src) Parameters src SampleFlag The sample flag to check. Returns bool True if the flag represents a force component; otherwise, false."
},
"api/Hi.MillingForces.Fittings.SampleInstance.html": {
"href": "api/Hi.MillingForces.Fittings.SampleInstance.html",
"title": "Class SampleInstance | HiAPI-C# 2025",
"summary": "Class SampleInstance Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a sample instance with step and local division indices for milling force analysis. public class SampleInstance : IEquatable<SampleInstance> Inheritance object SampleInstance Implements IEquatable<SampleInstance> Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SampleInstance() Initializes a new instance of the SampleInstance class. public SampleInstance() SampleInstance(int, int) Initializes a new instance of the SampleInstance class with specified step and local division indices. public SampleInstance(int stepIndex, int localDivisionIndex) Parameters stepIndex int The step index. localDivisionIndex int The local division index. Properties LocalDivisionIndex Gets or sets the local division index. public int LocalDivisionIndex { get; set; } Property Value int StepIndex Gets or sets the step index. public int StepIndex { get; set; } Property Value int Methods Equals(SampleInstance) Indicates whether the current object is equal to another object of the same type. public bool Equals(SampleInstance other) Parameters other SampleInstance 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. 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.Fittings.TimeForce.html": {
"href": "api/Hi.MillingForces.Fittings.TimeForce.html",
"title": "Class TimeForce | HiAPI-C# 2025",
"summary": "Class TimeForce Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a force measurement at a specific time point. public class TimeForce Inheritance object TimeForce Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeForce(double, Vec3d) Initializes a new instance of the TimeForce class. public TimeForce(double time_sec, Vec3d force_N) Parameters time_sec double Time in seconds. force_N Vec3d Force in Newtons. Properties Force_N Gets or sets the force vector in Newtons. public Vec3d Force_N { get; set; } Property Value Vec3d Time_s Gets or sets the time in seconds. public double Time_s { get; set; } Property Value double"
},
"api/Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html": {
"href": "api/Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html",
"title": "Class TimeForceFrequencyDomain | HiAPI-C# 2025",
"summary": "Class TimeForceFrequencyDomain Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents force data in the frequency domain after Fourier transformation. public class TimeForceFrequencyDomain Inheritance object TimeForceFrequencyDomain Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AmpXs Gets or sets the amplitude values for each frequency component. public double[] AmpXs { get; set; } Property Value double[] PhaseXs Gets or sets the phase values for each frequency component. public double[] PhaseXs { get; set; } Property Value double[] SamplingTimeInterval_s Gets or sets the sampling time interval in seconds. public double SamplingTimeInterval_s { get; set; } Property Value double SamplingTime_s Gets or sets the total sampling time in seconds. public double SamplingTime_s { get; set; } Property Value double"
},
"api/Hi.MillingForces.Fittings.TimeForceSeries.html": {
"href": "api/Hi.MillingForces.Fittings.TimeForceSeries.html",
"title": "Class TimeForceSeries | HiAPI-C# 2025",
"summary": "Class TimeForceSeries Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a time series of force measurements. public class TimeForceSeries Inheritance object TimeForceSeries Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties TimeForceList TimeForce list. The time is sorted in ascending order. public List<TimeForce> TimeForceList { get; set; } Property Value List<TimeForce> Methods FourierTransform(int, double, out double[], out double[]) Performs Fourier transform on the force data in the specified direction. public void FourierTransform(int dir, double samplingTimeInterval_s, out double[] amplitudes, out double[] phases) Parameters dir int The direction index (0=X, 1=Y, 2=Z) for the force component to transform. samplingTimeInterval_s double The sampling time interval in seconds. amplitudes double[] Output array of amplitude values for each frequency component. phases double[] Output array of phase values for each frequency component. ReadCsv(string) Reads time-force data from a CSV file. public void ReadCsv(string file) Parameters file string Path to the CSV file containing time-force data."
},
"api/Hi.MillingForces.Fittings.TimeForceUtil.html": {
"href": "api/Hi.MillingForces.Fittings.TimeForceUtil.html",
"title": "Class TimeForceUtil | HiAPI-C# 2025",
"summary": "Class TimeForceUtil Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Utility class for reading and processing time-based force measurement data. public static class TimeForceUtil Inheritance object TimeForceUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ReadCsv(string) Reads time-force data from a CSV file. public static List<TimeForce> ReadCsv(string file) Parameters file string The path to the CSV file containing time-force data. Returns List<TimeForce> A list of TimeForce objects containing the parsed data. The CSV file should have at least 4 columns: Column 1: Time in seconds Column 2: X-component of force in Newtons Column 3: Y-component of force in Newtons Column 4: Z-component of force in Newtons Remarks The method: Skips the first line (assumed to be headers) Parses each subsequent line into time and force components Validates that each line has at least 4 numeric values Creates a TimeForce object for each valid line"
},
"api/Hi.MillingForces.Fittings.TimeVsForceSeries.html": {
"href": "api/Hi.MillingForces.Fittings.TimeVsForceSeries.html",
"title": "Class TimeVsForceSeries | HiAPI-C# 2025",
"summary": "Class TimeVsForceSeries Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a time series of force measurements with compensation capabilities. public class TimeVsForceSeries Inheritance object TimeVsForceSeries Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CompensatedTimeVsForce Gets the force data with offset compensation applied. public SortedList<double, Vec3d> CompensatedTimeVsForce { get; } Property Value SortedList<double, Vec3d> ForceOffset Gets the force offset calculated as the average force in the zero zone. public Vec3d ForceOffset { get; } Property Value Vec3d OriginalTimeVsForce Gets or sets the original time-force data pairs, where the key is time and the value is the force vector. public SortedList<double, Vec3d> OriginalTimeVsForce { get; set; } Property Value SortedList<double, Vec3d> ZeroZoneTimeBegin Gets or sets the start time of the zero force zone used for offset calculation. public double ZeroZoneTimeBegin { get; set; } Property Value double ZeroZoneTimeEnd Gets or sets the end time of the zero force zone used for offset calculation. public double ZeroZoneTimeEnd { get; set; } Property Value double Methods ReadCsv(string) Reads force data from a CSV file. public void ReadCsv(string file) Parameters file string The path to the CSV file containing time-force data."
},
"api/Hi.MillingForces.Fittings.TimeVsTorqueSeries.html": {
"href": "api/Hi.MillingForces.Fittings.TimeVsTorqueSeries.html",
"title": "Class TimeVsTorqueSeries | HiAPI-C# 2025",
"summary": "Class TimeVsTorqueSeries Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a time series of torque measurements with compensation capabilities. public class TimeVsTorqueSeries Inheritance object TimeVsTorqueSeries Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CompensatedTimeVsTorque Gets the torque data with offset compensation applied. public SortedList<double, double> CompensatedTimeVsTorque { get; } Property Value SortedList<double, double> OriginalTimeVsTorque Gets or sets the original time-torque data pairs, where the key is time and the value is the torque magnitude. public SortedList<double, double> OriginalTimeVsTorque { get; set; } Property Value SortedList<double, double> TorqueOffset Gets the torque offset calculated as the average torque in the zero zone. public double TorqueOffset { get; } Property Value double ZeroZoneTimeBegin Gets or sets the start time of the zero torque zone used for offset calculation. public double ZeroZoneTimeBegin { get; set; } Property Value double ZeroZoneTimeEnd Gets or sets the end time of the zero torque zone used for offset calculation. public double ZeroZoneTimeEnd { get; set; } Property Value double Methods ReadCsv(string) Reads torque data from a CSV file. public void ReadCsv(string file) Parameters file string The path to the CSV file containing time-torque data."
},
"api/Hi.MillingForces.Fittings.TrainingSample.html": {
"href": "api/Hi.MillingForces.Fittings.TrainingSample.html",
"title": "Class TrainingSample | HiAPI-C# 2025",
"summary": "Class TrainingSample Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Represents a training sample for milling force prediction models. public class TrainingSample Inheritance object TrainingSample Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Category Gets or sets the category information for this sample. public SampleCategory Category { get; set; } Property Value SampleCategory InputArray Gets or sets the input feature array for the training sample. public double[] InputArray { get; set; } Property Value double[] Output Gets or sets the output value according to the angle offset. public double Output { get; set; } Property Value double Methods NormalizeByInput() public void NormalizeByInput() 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 ToString() Returns a string representation of the training sample. public override string ToString() Returns string A string containing the category, output, and input array values."
},
"api/Hi.MillingForces.Fittings.html": {
"href": "api/Hi.MillingForces.Fittings.html",
"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.IGetMillingForce.html": {
"href": "api/Hi.MillingForces.IGetMillingForce.html",
"title": "Interface IGetMillingForce | HiAPI-C# 2025",
"summary": "Interface IGetMillingForce Namespace Hi.MillingForces Assembly HiMech.dll Interface of GetMillingForce(). public interface IGetMillingForce Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMillingForce() Get MillingForce. MillingForce GetMillingForce() Returns MillingForce MillingForce"
},
"api/Hi.MillingForces.IMillingForceAccessor.html": {
"href": "api/Hi.MillingForces.IMillingForceAccessor.html",
"title": "Interface IMillingForceAccessor | HiAPI-C# 2025",
"summary": "Interface IMillingForceAccessor Namespace Hi.MillingForces Assembly HiMech.dll Interface of MillingForce. public interface IMillingForceAccessor : IGetMillingForce Inherited Members IGetMillingForce.GetMillingForce() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MillingForce Milling force. MillingForce MillingForce { get; set; } Property Value MillingForce"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Vec3d> CuttingForcesToToolOnToolRunningCoordinate { get; } Property Value List<Vec3d> CuttingForcesToToolOnWorkpieceCoodinate Cutting forces on workpiece coordinate. The forced item is tool. public List<Vec3d> CuttingForcesToToolOnWorkpieceCoodinate { get; } Property Value List<Vec3d> CuttingForcesToWorkpieceOnWorkpieceCoordinate Cutting forces on workpiece coordinate. The forced item is workpiece. public List<Vec3d> CuttingForcesToWorkpieceOnWorkpieceCoordinate { get; } Property Value List<Vec3d> 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<Vec3d> MomentsAboutObservationPointOnObservationCoordinate_Nm { get; } Property Value List<Vec3d> MomentsAboutObservationPointOnToolRunningZero_Nm Gets the minimum absolute moment about the observation point in Newton-meters. public List<Vec3d> MomentsAboutObservationPointOnToolRunningZero_Nm { get; } Property Value List<Vec3d> MomentsAboutSpindle_Nm Gets the moments about spindle on the spindle sensor coordinate system. public List<Vec3d> MomentsAboutSpindle_Nm { get; } Property Value List<Vec3d> 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<Vec3d> MomentsToToolAboutObservationPointOnSpindleRotationZero_Nm { get; } Property Value List<Vec3d> 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<Vec3d> MomentsToToolAboutToolTipOnToolRunningZero_Nm { get; } Property Value List<Vec3d> 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<Vec3d> PloughForcesOnTr { get; } Property Value List<Vec3d> 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<Vec3d> ShearForcesOnTr { get; } Property Value List<Vec3d> 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<string, string> GetCsvDictionary() Returns Dictionary<string, string> 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<string, double> GetForceBriefDictionary(bool isIncludingWave = false) Parameters isIncludingWave bool If true, includes wave-related force data. Returns Dictionary<string, double> 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<Vec3d> GetMomentsAboutObservationPointOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from tool tip to observation point in millimeters Returns List<Vec3d> 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<Vec3d> GetMomentsAboutObservationPointOnToolRunningZero_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d The position vector from tool tip to observation point Returns List<Vec3d> 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",
"title": "Class MillingForceLicense | HiAPI-C# 2025",
"summary": "Class MillingForceLicense Namespace Hi.MillingForces Assembly HiMech.dll Provides license information and management for the milling force calculation functionality. public static class MillingForceLicense Inheritance object MillingForceLicense Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties LicenseType Gets the current license type for milling force calculations. public static LicenseType LicenseType { get; } Property Value LicenseType RemainedStep Gets the number of remaining steps available in the current license. public static int RemainedStep { get; } Property Value int"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Vec3d> CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List<Vec3d> 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<Vec3d> MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value List<Vec3d> PloughForcesOnTr plough force on tool running coordinate. The force is taken by tool. In sequence of time. public List<Vec3d> PloughForcesOnTr { get; } Property Value List<Vec3d> 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<Vec3d> ShearForcesOnTr { get; } Property Value List<Vec3d> 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<Vec3d> GetCuttingForcesToToolOnWorkpieceCoodinate_N(Mat4d CdnTransformFromToolRunningZeroToWorkpieceGeom) Parameters CdnTransformFromToolRunningZeroToWorkpieceGeom Mat4d Returns List<Vec3d> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d) Cutting forces on workpiece coordinate. The forced item is workpiece. public List<Vec3d> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d cdnTransformFromToolRunningToProgram) Parameters cdnTransformFromToolRunningToProgram Mat4d Returns List<Vec3d> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep) Gets the cutting forces to workpiece on program coordinate in Newtons. public List<Vec3d> GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for Returns List<Vec3d> 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<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. Returns List<Vec3d> A list of moment vectors. GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Gets the moments about tool tip on spindle rotation coordinate in Newton-meters. public List<Vec3d> GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Returns List<Vec3d> A list of moment vectors. GetMomentsOnToolRunningCoordinate_Nm(Vec3d) Get moments to tool. public List<Vec3d> GetMomentsOnToolRunningCoordinate_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d Returns List<Vec3d> GetMomentsOnToolRunningCoordinate_Nm(double) Gets the moments on the tool running coordinate system at a specified height from the tool tip. public List<Vec3d> GetMomentsOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from the tool tip where moments are calculated. Returns List<Vec3d> 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<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> 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<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. Returns List<Vec3d> 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<MillingForceLuggage>, MillingToolPhysicsPack) Gets the deflection transformation matrix in the workpiece geometric coordinate system. public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. 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. 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<MillingForceLuggage>) Absolute max force changed per degree. public double GetMaxAbsForceSlope_NdDeg(MachiningToolHouse toolHouse, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc) Parameters toolHouse MachiningToolHouse workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func<MillingForceLuggage> Returns double GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>, 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<MillingForceLuggage> 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<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. Returns Vec3d The maximum deflection vector in millimeters. GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>, MillingToolPhysicsPack) GetDeflectionTransformationByTipMovementOnToolRunningCoordinate public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc, MillingToolPhysicsPack physicsPack = null) Parameters millingTool_ IMachiningTool workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func<MillingForceLuggage> 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",
"title": "Class PhysicsUtil | HiAPI-C# 2025",
"summary": "Class PhysicsUtil Namespace Hi.MillingForces Assembly HiMech.dll Provides utility methods for physics calculations in milling operations. public static class PhysicsUtil Inheritance object PhysicsUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()"
},
"api/Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html": {
"href": "api/Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html",
"title": "Interface IGetLocalProfileMillingPara | HiAPI-C# 2025",
"summary": "Interface IGetLocalProfileMillingPara Namespace Hi.MillingForces.ProfileMillingParas Assembly HiMech.dll Interface of getting LocalProfileMillingPara. public interface IGetLocalProfileMillingPara Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMillingPara() Get LocalProfileMillingPara. LocalProfileMillingPara GetMillingPara() Returns LocalProfileMillingPara LocalProfileMillingPara"
},
"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<LocalProfileMillingPara>, IMakeXmlSource, IGetLocalProfileMillingPara, ICsvRowIo Inheritance object LocalProfileMillingPara Implements IEquatable<LocalProfileMillingPara> IMakeXmlSource IGetLocalProfileMillingPara ICsvRowIo Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class ProfileMillingParaMap | HiAPI-C# 2025",
"summary": "Class ProfileMillingParaMap Namespace Hi.MillingForces.ProfileMillingParas Assembly HiMech.dll Represents a mapping of milling parameters for profile milling operations. This class manages cutting parameters for both side and bottom milling operations. public class ProfileMillingParaMap : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote Inheritance object ProfileMillingParaMap Implements ICuttingPara IGetCuttingPara IMakeXmlSource INameNote 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProfileMillingParaMap(LocalProfileMillingPara, LocalProfileMillingPara, bool) Ctor for single LocalProfileMillingPara. public ProfileMillingParaMap(LocalProfileMillingPara sidePara, LocalProfileMillingPara bottomPara = null, bool containUpperSide = false) Parameters sidePara LocalProfileMillingPara milling parameter on side bottomPara LocalProfileMillingPara milling parameter on bottom containUpperSide bool Whether to include upper side parameters ProfileMillingParaMap(ProfileMillingParaMap) Copy ctor. public ProfileMillingParaMap(ProfileMillingParaMap src) Parameters src ProfileMillingParaMap src ProfileMillingParaMap(int, int, int, bool) Initializes a new instance of the ProfileMillingParaMap class with specified dimensions. public ProfileMillingParaMap(int fluteNum, int yDivisionNum, int zDivisionNum, bool isUpperSideContained = false) Parameters fluteNum int The number of flutes. yDivisionNum int The number of divisions in Y direction. zDivisionNum int The number of divisions in Z direction. isUpperSideContained bool Whether to include the upper side of the milling profile. ProfileMillingParaMap(XElement, string, bool) Initializes a new instance of the ProfileMillingParaMap class from XML data. public ProfileMillingParaMap(XElement src, string baseDirectory, bool isRtaVersion) Parameters src XElement The XML element containing the parameter data. baseDirectory string The base directory for resolving relative paths. isRtaVersion bool Whether the data is in RTA format. Properties BottomShearParas Gets the bottom shear parameters array. Each element contains cutting coefficients for each flute. public Vec3d[] BottomShearParas { get; } Property Value Vec3d[] ElementNum Gets the total number of elements in the parameter map. public int ElementNum { get; } Property Value int FluteFormNum Gets the number of flute forms in the parameter map. The number should be 1 or be equal to the flute number of the cutter. public int FluteFormNum { get; } Property Value int IsUpperSideContained Gets a value indicating whether the upper side of the milling profile is included in calculations. public bool IsUpperSideContained { get; } Property Value bool Name Gets or sets the name of the parameter map. public string Name { get; set; } Property Value string Note Gets or sets additional notes or descriptions for the parameter map. public string Note { get; set; } Property Value string PloughPara Gets the ploughing force coefficients (Kpr, Kpt, Kpa) for the entire tool. public Vec3d PloughPara { get; } Property Value Vec3d SideShearParas Gets the side shear parameters array. The dimensions represent [flute form, Y division, Z division]. Each element contains cutting coefficients (Ksr, Kst, Ksa) for the corresponding position. public Vec3d[,,] SideShearParas { get; } Property Value Vec3d[,,] SideYParaNum Gets the number of divisions in the Y direction for side milling parameters. public int SideYParaNum { get; } Property Value int SideZParaNum Gets the number of divisions in the Z direction for side milling parameters. public int SideZParaNum { get; } Property Value int XName Name for XML IO. public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods CloneTemplate() Creates a template clone of this parameter map. public ICuttingPara CloneTemplate() Returns ICuttingPara A new instance with the same dimensions but zero values. GenUnitParas() Generates a list of unit cutting parameters. public List<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> A list of unit cutting parameters. GetBottomMillingPara(int) Gets the milling parameters for the bottom of a specific flute. public LocalProfileMillingPara GetBottomMillingPara(int fluteIndex) Parameters fluteIndex int The index of the flute. Returns LocalProfileMillingPara The local milling parameters for the bottom of the specified flute. GetCuttingPara() Gets the cutting parameter interface for this instance. public ICuttingPara GetCuttingPara() Returns ICuttingPara The cutting parameter interface. GetElementByIndex(int) Gets a parameter value by its element index. public double GetElementByIndex(int elementIndex) Parameters elementIndex int The index of the element to get. Returns double The value at the specified index. GetElements() Gets the elements as an array of values. public double[] GetElements() Returns double[] An array containing all parameter values. GetSideMillingPara(int, double, double) Gets the milling parameters for a specific side position. public LocalProfileMillingPara GetSideMillingPara(int fluteIndex, double atanYX_rad, double atanZX_rad) Parameters fluteIndex int The index of the flute. atanYX_rad double The YX angle in radians. atanZX_rad double The ZX angle in radians. Returns LocalProfileMillingPara The local milling parameters for the specified 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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Sets a parameter value by its element index. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int The index of the element 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. ToTemplateXElement() Creates a template XML element for the parameter map. public XElement ToTemplateXElement() Returns XElement A template XML element."
},
"api/Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html": {
"href": "api/Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html",
"title": "Enum RtaMillingParaKey | HiAPI-C# 2025",
"summary": "Enum RtaMillingParaKey Namespace Hi.MillingForces.ProfileMillingParas Assembly HiMech.dll Keys for milling parameters in radial-tangential-axial (RTA) coordinate system public enum RtaMillingParaKey Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Kpa = 5 Ploughing force coefficient in axial direction Kpr = 3 Ploughing force coefficient in radial direction Kpt = 4 Ploughing force coefficient in tangential direction Ksa = 2 Shear force coefficient in axial direction Ksr = 0 Shear force coefficient in radial direction Kst = 1 Shear force coefficient in tangential direction"
},
"api/Hi.MillingForces.ProfileMillingParas.html": {
"href": "api/Hi.MillingForces.ProfileMillingParas.html",
"title": "Namespace Hi.MillingForces.ProfileMillingParas | HiAPI-C# 2025",
"summary": "Namespace Hi.MillingForces.ProfileMillingParas Classes LocalProfileMillingPara Milling parameter of altintas model. ProfileMillingParaMap Represents a mapping of milling parameters for profile milling operations. This class manages cutting parameters for both side and bottom milling operations. Interfaces IGetLocalProfileMillingPara Interface of getting LocalProfileMillingPara. Enums RtaMillingParaKey Keys for milling parameters in radial-tangential-axial (RTA) coordinate system"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class MillingPhysicsUtil | HiAPI-C# 2025",
"summary": "Class MillingPhysicsUtil Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Utility class for milling physics calculations. public static class MillingPhysicsUtil Inheritance object MillingPhysicsUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetShearAngle_rad(double, double, double, double) Calculates the shear angle in radians based on the given rake angles and friction parameters. public static double GetShearAngle_rad(double radialRakeAngle_rad, double axialRakeAngle_rad, double frictionAngle_rad, double chipFlowAngle_rad) Parameters radialRakeAngle_rad double The radial rake angle in radians. axialRakeAngle_rad double The axial rake angle (helix angle) in radians. frictionAngle_rad double The friction angle in radians. chipFlowAngle_rad double The chip flow angle in radians. Returns double The calculated shear angle in radians, normalized to [0, π]."
},
"api/Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html": {
"href": "api/Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html",
"title": "Class MultiFormRakeFaceCuttingPara | HiAPI-C# 2025",
"summary": "Class MultiFormRakeFaceCuttingPara Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents a multi-form rake face cutting parameter set that can handle multiple flute forms. Internal Use Only. public class MultiFormRakeFaceCuttingPara : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote Inheritance object MultiFormRakeFaceCuttingPara Implements ICuttingPara IGetCuttingPara IMakeXmlSource INameNote 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MultiFormRakeFaceCuttingPara(int) Initializes a new instance of the MultiFormRakeFaceCuttingPara class with the specified number of flute forms. public MultiFormRakeFaceCuttingPara(int fluteFormNum) Parameters fluteFormNum int The number of flute forms to initialize. MultiFormRakeFaceCuttingPara(XElement, string) Initializes a new instance of the MultiFormRakeFaceCuttingPara class from XML data. public MultiFormRakeFaceCuttingPara(XElement src, string baseDirectory) Parameters src XElement The source XML element. baseDirectory string The base directory for resolving relative paths. Properties ElementNum Gets the total number of elements in this parameter set. public int ElementNum { get; } Property Value int FluteFormNum Gets the number of flute forms in this parameter set. public int FluteFormNum { get; } Property Value int LocalRakeFaceCuttingParas Gets or sets the array of local rake face cutting parameters for each flute form. public RakeFaceCuttingPara3d[] LocalRakeFaceCuttingParas { get; set; } Property Value RakeFaceCuttingPara3d[] 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 XmlSourceFile Gets or sets the XML source file path. public string XmlSourceFile { get; set; } Property Value string Methods CloneTemplate() Creates a clone of this parameter set as a template. public ICuttingPara CloneTemplate() Returns ICuttingPara A cloned instance of this parameter set. GenUnitParas() Generates a list of unit cutting parameters. public List<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> A list of unit cutting parameters. GetCuttingPara() Gets this instance as an ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara This instance. GetElementByIndex(int) Gets the value of an element at the specified index. public double GetElementByIndex(int elementIndex) Parameters elementIndex int The index of the element to get. Returns double The value of the element at the specified index. GetLocalRakeFaceCuttingPara(int) Gets the local rake face cutting parameters for the specified flute index. public RakeFaceCuttingPara3d GetLocalRakeFaceCuttingPara(int fluteIndex) Parameters fluteIndex int The zero-based index of the flute. Returns RakeFaceCuttingPara3d The rake face cutting parameters for the specified flute. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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) 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. v double The value to set. ToString() Returns a string representation of this parameter set. public override string ToString() Returns string A string containing the name and note of this parameter set. ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ICuttingPara> GenUnitParas() Returns List<ICuttingPara> 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",
"title": "Namespace Hi.MillingForces.RakeFaceCuttingParas | HiAPI-C# 2025",
"summary": "Namespace Hi.MillingForces.RakeFaceCuttingParas Classes MillingPhysicsUtil Utility class for milling physics calculations. MultiFormRakeFaceCuttingPara Represents a multi-form rake face cutting parameter set that can handle multiple flute forms. Internal Use Only. RakeFaceCuttingPara2d Represents a 2D cutting parameter for rake face cutting operations. RakeFaceCuttingPara3d 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. RakeFaceCuttingParaMap Represents a map of rake face cutting parameters. Interfaces IRakeFaceCuttingPara Defines cutting parameters on the rake face for force modeling, supporting XML IO and duplication."
},
"api/Hi.MillingForces.ToolObservationReference.html": {
"href": "api/Hi.MillingForces.ToolObservationReference.html",
"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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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 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<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 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<IMessage>, 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<IMessage> 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<IMessage> Message host for logging cancellationToken CancellationToken Cancellation token Returns ICuttingPara The converted cutting parameter model Convert(LocalProfileMillingPara, double, double, IProgress<IMessage>, CancellationToken) Converts a LocalProfileMillingPara to a RakeFaceCuttingPara. public static RakeFaceCuttingPara2d Convert(LocalProfileMillingPara src, double helixAngle_rad, double radialRakeAngle_rad, IProgress<IMessage> 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<IMessage> Message host for logging cancellationToken CancellationToken Cancellation token Returns RakeFaceCuttingPara2d The converted RakeFaceCuttingPara GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>>, ClStrip, ICuttingPara, SampleFlag, double, IProgress<IMessage>, CancellationToken) Gathers training samples and updates an existing cutting parameter model. public static ICuttingPara GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>> stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara anchorPara, SampleFlag sampleFlags, double outlierRatio, IProgress<IMessage> messageProgress, CancellationToken cancellationToken) Parameters stepToTimeShotListDictionary ConcurrentDictionary<int, List<ITimeShot>> 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<IMessage> 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 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the MillingGuide class from XML data. public MillingGuide(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> 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",
"title": "Namespace Hi.MillingProcs | HiAPI-C# 2025",
"summary": "Namespace Hi.MillingProcs Classes MillingGuide Provides guidance and configuration for milling visualization and analysis."
},
"api/Hi.MillingStepUtils.ClStripChartConfig.html": {
"href": "api/Hi.MillingStepUtils.ClStripChartConfig.html",
"title": "Class ClStripChartConfig | HiAPI-C# 2025",
"summary": "Class ClStripChartConfig Namespace Hi.MillingStepUtils Assembly HiNc.dll Configuration for ClStrip charts. public class ClStripChartConfig : IMakeXmlSource Inheritance object ClStripChartConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStripChartConfig() Initializes a new instance of the ClStripChartConfig class. public ClStripChartConfig() ClStripChartConfig(XElement) Ctor. public ClStripChartConfig(XElement src) Parameters src XElement XML Properties ItemConfigDictionary Dictionary of chart item configurations, indexed by key. public Dictionary<string, ClStripChartItemConfig> ItemConfigDictionary { get; set; } Property Value Dictionary<string, ClStripChartItemConfig> 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.MillingStepUtils.ClStripChartItemConfig.html": {
"href": "api/Hi.MillingStepUtils.ClStripChartItemConfig.html",
"title": "Class ClStripChartItemConfig | HiAPI-C# 2025",
"summary": "Class ClStripChartItemConfig Namespace Hi.MillingStepUtils Assembly HiNc.dll Configuration for an individual ClStrip chart item. public class ClStripChartItemConfig : IMakeXmlSource Inheritance object ClStripChartItemConfig Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStripChartItemConfig() Ctor. public ClStripChartItemConfig() ClStripChartItemConfig(XElement) Ctor. public ClStripChartItemConfig(XElement src) Parameters src XElement XML Properties TimeChartYConfig Gets or sets the Y-axis configuration for time charts. public TimeChartYConfig TimeChartYConfig { get; set; } Property Value TimeChartYConfig 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.MillingStepUtils.ForceCycleFlag.html": {
"href": "api/Hi.MillingStepUtils.ForceCycleFlag.html",
"title": "Enum ForceCycleFlag | HiAPI-C# 2025",
"summary": "Enum ForceCycleFlag Namespace Hi.MillingStepUtils Assembly HiNc.dll Flags representing different force cycle types. public enum ForceCycleFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ForceToToolOnToolRunningCoordinate = 2 Force applied to tool on tool running coordinate. ForceToWorkpieceOnProgramCoordinate = 1 Force applied to workpiece on program coordinate."
},
"api/Hi.MillingStepUtils.ForceCycleLineDivConfig.html": {
"href": "api/Hi.MillingStepUtils.ForceCycleLineDivConfig.html",
"title": "Class ForceCycleLineDivConfig | HiAPI-C# 2025",
"summary": "Class ForceCycleLineDivConfig Namespace Hi.MillingStepUtils Assembly HiNc.dll Configuration for force cycle line division display and analysis. public class ForceCycleLineDivConfig : TimeChartYConfig, IMakeXmlSource Inheritance object TimeChartYConfig ForceCycleLineDivConfig Implements IMakeXmlSource Inherited Members TimeChartYConfig.VRangeMode TimeChartYConfig.VRange TimeChartYConfig.ToString() object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ForceCycleLineDivConfig() Default constructor with initial range settings. public ForceCycleLineDivConfig() ForceCycleLineDivConfig(XElement) Ctor. public ForceCycleLineDivConfig(XElement src) Parameters src XElement XML Properties MainForceCycleFlag Gets or sets the main force cycle flag determining how forces are represented. public ForceCycleFlag MainForceCycleFlag { get; set; } Property Value ForceCycleFlag XName Name for XML IO. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) 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.MillingStepUtils.LineChartVRangeMode.html": {
"href": "api/Hi.MillingStepUtils.LineChartVRangeMode.html",
"title": "Enum LineChartVRangeMode | HiAPI-C# 2025",
"summary": "Enum LineChartVRangeMode Namespace Hi.MillingStepUtils Assembly HiNc.dll Specifies the mode for vertical range in line charts. public enum LineChartVRangeMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Fit = 0 Automatically fit the vertical range to data. Lock = 1 Lock the vertical range to specified values."
},
"api/Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html": {
"href": "api/Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html",
"title": "Class SpindleMomentCycleLineDivConfig | HiAPI-C# 2025",
"summary": "Class SpindleMomentCycleLineDivConfig Namespace Hi.MillingStepUtils Assembly HiNc.dll Configuration for spindle moment cycle line division display and analysis. public class SpindleMomentCycleLineDivConfig : IMakeXmlSource Inheritance object SpindleMomentCycleLineDivConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SpindleMomentCycleLineDivConfig() Ctor. public SpindleMomentCycleLineDivConfig() SpindleMomentCycleLineDivConfig(XElement) Ctor. public SpindleMomentCycleLineDivConfig(XElement src) Parameters src XElement XML Properties TimeChartYConfig Gets or sets the Y-axis configuration for the time chart display. public TimeChartYConfig TimeChartYConfig { get; set; } Property Value TimeChartYConfig 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.MillingStepUtils.TimeChartYConfig.html": {
"href": "api/Hi.MillingStepUtils.TimeChartYConfig.html",
"title": "Class TimeChartYConfig | HiAPI-C# 2025",
"summary": "Class TimeChartYConfig Namespace Hi.MillingStepUtils Assembly HiNc.dll Configuration for Y-axis settings in time charts. public class TimeChartYConfig : IMakeXmlSource Inheritance object TimeChartYConfig Implements IMakeXmlSource Derived ForceCycleLineDivConfig Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeChartYConfig() Ctor. public TimeChartYConfig() TimeChartYConfig(XElement) Ctor. public TimeChartYConfig(XElement src) Parameters src XElement XML Properties VRange Minimum and maximum values for the vertical range. public Range<double> VRange { get; set; } Property Value Range<double> VRangeMode Vertical range mode. public LineChartVRangeMode VRangeMode { get; set; } Property Value LineChartVRangeMode 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.MillingStepUtils.html": {
"href": "api/Hi.MillingStepUtils.html",
"title": "Namespace Hi.MillingStepUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.MillingStepUtils Classes ClStripChartConfig Configuration for ClStrip charts. ClStripChartItemConfig Configuration for an individual ClStrip chart item. ForceCycleLineDivConfig Configuration for force cycle line division display and analysis. SpindleMomentCycleLineDivConfig Configuration for spindle moment cycle line division display and analysis. TimeChartYConfig Configuration for Y-axis settings in time charts. Enums ForceCycleFlag Flags representing different force cycle types. LineChartVRangeMode Specifies the mode for vertical range in line charts."
},
"api/Hi.MillingSteps.MillingInstance.html": {
"href": "api/Hi.MillingSteps.MillingInstance.html",
"title": "Class MillingInstance | HiAPI-C# 2025",
"summary": "Class MillingInstance Namespace Hi.MillingSteps Assembly HiMech.dll Instance of milling in a MachiningStep. public class MillingInstance : ISuccessivePhysicsBriefAccessor Inheritance object MillingInstance Implements ISuccessivePhysicsBriefAccessor Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The name is not MillingStep since it conflicts with the MachiningStep. The object is part of data in the MachiningStep but not the same level object. Properties BoundingBoxOnToolRunningCoordinate Gets or sets the bounding box of the cutting area on the tool running coordinate system. public Box3d BoundingBoxOnToolRunningCoordinate { get; } Property Value Box3d CuttingDepth_mm Axial Depth. public double CuttingDepth_mm { get; } Property Value double CuttingWidth_mm Radial Width. The value may not equal to the bounding box. It has filtered by plural method. The value is for human viewing. public double CuttingWidth_mm { get; } Property Value double IsTouched Gets a value indicating whether the tool is touching the workpiece. public bool IsTouched { get; } Property Value bool MillingPhysicsBrief Gets the rake face physics brief containing force and other physical calculations. Tri-state contract: null — physics not computed (EnablePhysics=false, or no tool, or spindle not rotating). non-null with computed forces — physics computed on an engaged step (IsTouched=true). non-null with all-zero forces / ratios — physics computed on a no-engagement step (EnablePhysics=true, IsTouched=false); produced via NoCut(int). Use IsTouched to distinguish this from a real cut whose forces happen to be near zero. public MillingPhysicsBrief MillingPhysicsBrief { get; } Property Value MillingPhysicsBrief Mrr_mm3ds Gets or sets the material removal rate in cubic millimeters per second. public double Mrr_mm3ds { get; } Property Value double SeqPhysicsBrief Gets or sets the sequential physics brief for this step. public SeqPhysicsBrief SeqPhysicsBrief { get; set; } Property Value SeqPhysicsBrief StepIndex Gets the index of this step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; } Property Value int"
},
"api/Hi.MillingSteps.MillingStepLuggage.html": {
"href": "api/Hi.MillingSteps.MillingStepLuggage.html",
"title": "Class MillingStepLuggage | HiAPI-C# 2025",
"summary": "Class MillingStepLuggage Namespace Hi.MillingSteps Assembly HiMech.dll Represents additional data associated with a milling step. public class MillingStepLuggage Inheritance object MillingStepLuggage Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingStepLuggage() Initializes a new instance of the MillingStepLuggage class. public MillingStepLuggage() MillingStepLuggage(int, Substraction, LayerMillingEngagement, MillingForceLuggage) Initializes a new instance of the MillingStepLuggage class with specified parameters. public MillingStepLuggage(int stepIndex, Substraction substraction, LayerMillingEngagement layerMillingEngagement, MillingForceLuggage millingForceLuggage) Parameters stepIndex int The index of the associated milling step. substraction Substraction The substraction information. layerMillingEngagement LayerMillingEngagement The layer milling engagement information. millingForceLuggage MillingForceLuggage The milling force luggage information. Properties LayerMillingEngagement Gets or sets the layer milling engagement information. public LayerMillingEngagement LayerMillingEngagement { get; set; } Property Value LayerMillingEngagement MillingForceLuggage Gets or sets the milling force luggage information. public MillingForceLuggage MillingForceLuggage { get; set; } Property Value MillingForceLuggage StepIndex Gets or sets the index of the associated milling step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Substraction Gets or sets the substraction information for the milling step. public Substraction Substraction { get; set; } Property Value Substraction"
},
"api/Hi.MillingSteps.html": {
"href": "api/Hi.MillingSteps.html",
"title": "Namespace Hi.MillingSteps | HiAPI-C# 2025",
"summary": "Namespace Hi.MillingSteps Classes MillingInstance Instance of milling in a MachiningStep. MillingStepLuggage Represents additional data associated with a milling step."
},
"api/Hi.Motion.MatValves.ClMachiningValve.html": {
"href": "api/Hi.Motion.MatValves.ClMachiningValve.html",
"title": "Class ClMachiningValve | HiAPI-C# 2025",
"summary": "Class ClMachiningValve Namespace Hi.Motion.MatValves Assembly HiMech.dll Optimize the sequential transformation matrixes step by step for machining. Filtering the unnecessary transformation matrixes. Accept milling mode by IsSpinMachining. public class ClMachiningValve : IMotionValve Inheritance object ClMachiningValve Implements IMotionValve Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClMachiningValve() Ctor. public ClMachiningValve() Properties IsSpinMachining Gets or sets a value indicating whether the machining is in spin mode. When true, the valve optimizes for milling operations with tool rotation. public bool IsSpinMachining { get; set; } Property Value bool MotionValve Motion valve. The default value is StepMotionValve. public IMotionValve MotionValve { get; set; } Property Value IMotionValve Methods ClearState() Clear state. public void ClearState() Finish() Finish. public SeqPair<Mat4d> Finish() Returns SeqPair<Mat4d> The end of the optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat. Step(DVec3d) Output optimized sequence transformation matrixes. public SeqPair<Mat4d> Step(DVec3d cl) Parameters cl DVec3d cutter location Returns SeqPair<Mat4d> optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat Step(Mat4d) Output optimized sequence transformation matrixes. public SeqPair<Mat4d> Step(Mat4d at) Parameters at Mat4d Input matrix Returns SeqPair<Mat4d> optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat. Remarks return null if the transformation has been returned before."
},
"api/Hi.Motion.MatValves.IMotionValve.html": {
"href": "api/Hi.Motion.MatValves.IMotionValve.html",
"title": "Interface IMotionValve | HiAPI-C# 2025",
"summary": "Interface IMotionValve Namespace Hi.Motion.MatValves Assembly HiMech.dll Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes. public interface IMotionValve Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ClearState() Clear state. void ClearState() Finish() Finish. SeqPair<Mat4d> Finish() Returns SeqPair<Mat4d> The end of the optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat. Step(Mat4d) Output optimized sequence transformation matrixes. SeqPair<Mat4d> Step(Mat4d at) Parameters at Mat4d Input matrix Returns SeqPair<Mat4d> optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat."
},
"api/Hi.Motion.MatValves.MacroMotionValve.html": {
"href": "api/Hi.Motion.MatValves.MacroMotionValve.html",
"title": "Class MacroMotionValve | HiAPI-C# 2025",
"summary": "Class MacroMotionValve Namespace Hi.Motion.MatValves Assembly HiMech.dll Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes. The steps in the middle of each linear cut are filtered. public class MacroMotionValve : IMotionValve Inheritance object MacroMotionValve Implements IMotionValve Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MacroMotionValve() Initializes a new instance of the MacroMotionValve class. public MacroMotionValve() Methods ClearState() Clear state. public void ClearState() Finish() Finish. public SeqPair<Mat4d> Finish() Returns SeqPair<Mat4d> The end of the optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat. Step(Mat4d) Output optimized sequence transformation matrixes. public SeqPair<Mat4d> Step(Mat4d at) Parameters at Mat4d Input matrix Returns SeqPair<Mat4d> optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat."
},
"api/Hi.Motion.MatValves.StepMotionValve.html": {
"href": "api/Hi.Motion.MatValves.StepMotionValve.html",
"title": "Class StepMotionValve | HiAPI-C# 2025",
"summary": "Class StepMotionValve Namespace Hi.Motion.MatValves Assembly HiMech.dll Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes. All step will be pumped. public class StepMotionValve : IMotionValve Inheritance object StepMotionValve Implements IMotionValve Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StepMotionValve() Initializes a new instance of the StepMotionValve class. public StepMotionValve() Methods ClearState() Clear state. public void ClearState() Finish() Finish. public SeqPair<Mat4d> Finish() Returns SeqPair<Mat4d> The end of the optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat. Step(Mat4d) Output optimized sequence transformation matrixes. public SeqPair<Mat4d> Step(Mat4d at) Parameters at Mat4d Input matrix Returns SeqPair<Mat4d> optimized sequence transformation matrixes. return pair.first: one of the previous mat; pair.second: current mat."
},
"api/Hi.Motion.MatValves.html": {
"href": "api/Hi.Motion.MatValves.html",
"title": "Namespace Hi.Motion.MatValves | HiAPI-C# 2025",
"summary": "Namespace Hi.Motion.MatValves Classes ClMachiningValve Optimize the sequential transformation matrixes step by step for machining. Filtering the unnecessary transformation matrixes. Accept milling mode by IsSpinMachining. MacroMotionValve Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes. The steps in the middle of each linear cut are filtered. StepMotionValve Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes. All step will be pumped. Interfaces IMotionValve Optimize the sequential transformation matrixes step by step by filtering the unnecessary transformation matrixes."
},
"api/Hi.Motion.MotionUtil.html": {
"href": "api/Hi.Motion.MotionUtil.html",
"title": "Class MotionUtil | HiAPI-C# 2025",
"summary": "Class MotionUtil Namespace Hi.Motion Assembly HiMech.dll Cutter location utility. public static class MotionUtil Inheritance object MotionUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetLinearRatio(Vec3d, Vec3d, Vec3d) Get linear ratio, which is cos(theta) square. Theta is the clamping angle between (v1-v0) and (v2-v1). public static double GetLinearRatio(Vec3d v0, Vec3d v1, Vec3d v2) Parameters v0 Vec3d v1 Vec3d v2 Vec3d Returns double InterpolateClMat(Mat4d, DVec3d) Interpolates the cutter location mat by cutter location and orientation. public static IEnumerable<Mat4d> InterpolateClMat(Mat4d clMat0, DVec3d targetCl) Parameters clMat0 Mat4d current cutter location mat, at begining position targetCl DVec3d The target cl, at end position Returns IEnumerable<Mat4d> InterpolateClRotMatByClNormal(Mat4d, Vec3d) Interpolates the cutter location mat by cutter orientation. public static IEnumerable<Mat4d> InterpolateClRotMatByClNormal(Mat4d clMat0, Vec3d targetClNormal) Parameters clMat0 Mat4d current cutter location mat, at begining position targetClNormal Vec3d The target cl.n, at end position Returns IEnumerable<Mat4d> Interpolation(Mat4d, Mat4d, double) Interpolate by rotation and translation. public static Mat4d Interpolation(Mat4d m0, Mat4d m1, double alpha) Parameters m0 Mat4d m0 m1 Mat4d m1 alpha double ratio between m0 and m1. Returns Mat4d interpolated matrix IsMcLinear(DVec3d, DVec3d, DVec3d, double) Determines if three machine coordinate points form a linear path. public static bool IsMcLinear(DVec3d mc0, DVec3d mc1, DVec3d mc2, double linearGap = 0.9999999) Parameters mc0 DVec3d The first machine coordinate point. mc1 DVec3d The second machine coordinate point. mc2 DVec3d The third machine coordinate point. linearGap double The threshold for linearity determination. Default is (1 - 1e-7). Returns bool True if the points form a linear path; otherwise, false."
},
"api/Hi.Motion.html": {
"href": "api/Hi.Motion.html",
"title": "Namespace Hi.Motion | HiAPI-C# 2025",
"summary": "Namespace Hi.Motion Classes MotionUtil Cutter location utility."
},
"api/Hi.Native.StopSource.html": {
"href": "api/Hi.Native.StopSource.html",
"title": "Class StopSource | HiAPI-C# 2025",
"summary": "Class StopSource Namespace Hi.Native Assembly HiDisp.dll Represents a source that can be used to create and control stop tokens. public class StopSource : IDisposable Inheritance object StopSource 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StopSource() Initializes a new instance of the StopSource class. public StopSource() Properties StopSourcePtr Gets the pointer to the native stop source. public nint StopSourcePtr { 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 ~StopSource() Finalizer for the StopSource class. protected ~StopSource() GetStopToken() Gets a stop token from this source. public StopToken GetStopToken() Returns StopToken A new StopToken instance. IsStopPossible() Checks if stopping is possible for this source. public bool IsStopPossible() Returns bool True if stopping is possible; otherwise, false. IsStopRequested() Checks if stopping has been requested for this source. public bool IsStopRequested() Returns bool True if stopping has been requested; otherwise, false. RequestStop() Requests stopping of operations associated with this source. public bool RequestStop() Returns bool True if the stop request was successful; otherwise, false."
},
"api/Hi.Native.StopToken.html": {
"href": "api/Hi.Native.StopToken.html",
"title": "Class StopToken | HiAPI-C# 2025",
"summary": "Class StopToken Namespace Hi.Native Assembly HiDisp.dll Represents a token that can be used to request cancellation of operations. public class StopToken : IDisposable Inheritance object StopToken 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StopToken(nint, bool) Initializes a new instance of the StopToken class. public StopToken(nint stopTokenPtr, bool isDisposable) Parameters stopTokenPtr nint Pointer to the native stop token isDisposable bool Specifies whether this token should be disposed by managed code: Set to false if the pointer is created by C++ (disposal handled by native code) Set to true if the pointer is created by StopSource.GetStopToken() (disposal handled by managed code) Properties StopTokenPtr Gets the pointer to the native stop token. public nint StopTokenPtr { 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 ~StopToken() Finalizer for the StopToken class. protected ~StopToken() IsStopPossible() Checks if stopping is possible for this token. public bool IsStopPossible() Returns bool True if stopping is possible; otherwise, false. IsStopRequested() Checks if stopping has been requested for this token. public bool IsStopRequested() Returns bool True if stopping has been requested; otherwise, false."
},
"api/Hi.Native.StopTokenKit.html": {
"href": "api/Hi.Native.StopTokenKit.html",
"title": "Class StopTokenKit | HiAPI-C# 2025",
"summary": "Class StopTokenKit Namespace Hi.Native Assembly HiDisp.dll A kit that manages the lifecycle of a StopToken and its associated resources. public class StopTokenKit : IDisposable Inheritance object StopTokenKit 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StopTokenKit(CancellationToken) Initializes a new instance of the StopTokenKit class. public StopTokenKit(CancellationToken token) Parameters token CancellationToken The cancellation token to register with. Properties StopTokenPtr Gets the pointer to the native stop token. public nint StopTokenPtr { 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"
},
"api/Hi.Native.StopTokenUtil.html": {
"href": "api/Hi.Native.StopTokenUtil.html",
"title": "Class StopTokenUtil | HiAPI-C# 2025",
"summary": "Class StopTokenUtil Namespace Hi.Native Assembly HiDisp.dll Utility class for working with stop tokens. public static class StopTokenUtil Inheritance object StopTokenUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GenStopTokenKit(CancellationToken) Generates a StopTokenKit from a CancellationToken. public static StopTokenKit GenStopTokenKit(this CancellationToken token) Parameters token CancellationToken The cancellation token to convert. Returns StopTokenKit A new StopTokenKit instance."
},
"api/Hi.Native.bind_t.html": {
"href": "api/Hi.Native.bind_t.html",
"title": "Struct bind_t | HiAPI-C# 2025",
"summary": "Struct bind_t Namespace Hi.Native Assembly HiDisp.dll 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. public struct bind_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields height Canvas height. public int height Field Value int is_picking_mode Is picking mode. public int is_picking_mode Field Value int models Model matrixes in MVP convention. public mat_stack_t models Field Value mat_stack_t picking_id Current picking id. public int picking_id Field Value int pixelProj Pixel mapping part of the projection matrix in MVP convention. public mat4d pixelProj Field Value mat4d See Also projMat pixel_width_on_model Pixel width on model layer. public double pixel_width_on_model Field Value double projMat Projection matrix in MVP convention. Equal to scaleProj * pixelProj. public mat4d projMat Field Value mat4d rgb Current color (rgb). public vec3f rgb Field Value vec3f scaleProj Scale part of the projection matrix in MVP convention. public mat4d scaleProj Field Value mat4d See Also projMat sparkle_rate Sparkle rate of specular light. The rate only effects on the Drawing which contains N(normal) value. public float sparkle_rate Field Value float view View matrix in MVP convention. public mat4d view Field Value mat4d vpMat view * projMat. public mat4d vpMat Field Value mat4d width Canvas width. public int width Field Value int"
},
"api/Hi.Native.box2d.html": {
"href": "api/Hi.Native.box2d.html",
"title": "Struct box2d | HiAPI-C# 2025",
"summary": "Struct box2d Namespace Hi.Native Assembly HiGeom.dll Native box3d. public struct box2d Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors box2d(Box2d) Ctor. public box2d(Box2d src) Parameters src Box2d src Fields max max. public vec2d max Field Value vec2d min min. public vec2d min Field Value vec2d Methods ExpandToBox2d(Box2d) public void ExpandToBox2d(Box2d dst) Parameters dst Box2d"
},
"api/Hi.Native.box3d.html": {
"href": "api/Hi.Native.box3d.html",
"title": "Struct box3d | HiAPI-C# 2025",
"summary": "Struct box3d Namespace Hi.Native Assembly HiGeom.dll Native implementation of a 3D bounding box structure for interop scenarios. public struct box3d : IExpandToBox3d Implements IExpandToBox3d Inherited Members ValueType.Equals(object) ValueType.GetHashCode() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors box3d(Box3d) Initializes a new instance of the box3d struct from a Box3d object. public box3d(Box3d src) Parameters src Box3d The source Box3d object to convert from. Fields max The maximum point of the box (upper-right-front corner). public vec3d max Field Value vec3d min The minimum point of the box (lower-left-back corner). public vec3d min Field Value vec3d Methods 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 ToString() Returns the fully qualified type name of this instance. public override string ToString() Returns string The fully qualified type name."
},
"api/Hi.Native.expand_to_box3d_func_t.html": {
"href": "api/Hi.Native.expand_to_box3d_func_t.html",
"title": "Delegate expand_to_box3d_func_t | HiAPI-C# 2025",
"summary": "Delegate expand_to_box3d_func_t Namespace Hi.Native Assembly HiDisp.dll Delegate for expanding a bounding box. public delegate void expand_to_box3d_func_t(void* para, box3d* dst) Parameters para void* User parameter. dst box3d* Destination box to expand. Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Native.html": {
"href": "api/Hi.Native.html",
"title": "Namespace Hi.Native | HiAPI-C# 2025",
"summary": "Namespace Hi.Native Classes StopSource Represents a source that can be used to create and control stop tokens. StopToken Represents a token that can be used to request cancellation of operations. StopTokenKit A kit that manages the lifecycle of a StopToken and its associated resources. StopTokenUtil Utility class for working with stop tokens. Structs bind_t 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. box2d Native box3d. box3d Native implementation of a 3D bounding box structure for interop scenarios. key_event_t Native key event. key_table__transform_view_by_key_pressing_t Native key table for native function transform_view_by_key_pressing. Key values follow W3C KeyboardEvent.key standard (e.g. “Home”, “ArrowLeft”, “Shift”). mat4d Native mat4d. mat_stack_t Native mat_stack_t. mouse_button_event_t Native mouse button event. mouse_button_table__transform_view_by_mouse_drag_t Mouse button table for native function of transform_view_by_mouse_drag. mouse_move_event_t Native mouse move event. mouse_wheel_event_t Native mouse wheel event. panel_state_t Native panel state. picking_event_t Internal Use Only. picking_mark_t Internal Use Only. tri3d Native tri3d. vec2d Native vec2d. vec3d Native vec3d. vec3f Native vec3f. Enums ui_event_type Native ui event. Delegates expand_to_box3d_func_t Delegate for expanding a bounding box."
},
"api/Hi.Native.key_event_t.html": {
"href": "api/Hi.Native.key_event_t.html",
"title": "Struct key_event_t | HiAPI-C# 2025",
"summary": "Struct key_event_t Namespace Hi.Native Assembly HiDisp.dll Native key event. public struct key_event_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields type Event type. public ui_event_type type Field Value ui_event_type Properties Key Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”, “a”). public string Key { get; } Property Value string"
},
"api/Hi.Native.key_table__transform_view_by_key_pressing_t.html": {
"href": "api/Hi.Native.key_table__transform_view_by_key_pressing_t.html",
"title": "Struct key_table__transform_view_by_key_pressing_t | HiAPI-C# 2025",
"summary": "Struct key_table__transform_view_by_key_pressing_t Namespace Hi.Native Assembly HiDisp.dll Native key table for native function transform_view_by_key_pressing. Key values follow W3C KeyboardEvent.key standard (e.g. “Home”, “ArrowLeft”, “Shift”). public struct key_table__transform_view_by_key_pressing_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ARROW_DOWN ARROW_DOWN. W3C key: “ArrowDown” public string ARROW_DOWN Field Value string ARROW_LEFT ARROW_LEFT. W3C key: “ArrowLeft” public string ARROW_LEFT Field Value string ARROW_RIGHT ARROW_RIGHT. W3C key: “ArrowRight” public string ARROW_RIGHT Field Value string ARROW_UP ARROW_UP. W3C key: “ArrowUp” public string ARROW_UP Field Value string F1 F1. W3C key: “F1” public string F1 Field Value string F2 F2. W3C key: “F2” public string F2 Field Value string F3 F3. W3C key: “F3” public string F3 Field Value string F4 F4. W3C key: “F4” public string F4 Field Value string HOME HOME. W3C key: “Home” public string HOME Field Value string PAGE_DOWN PAGE_DOWN. W3C key: “PageDown” public string PAGE_DOWN Field Value string PAGE_UP PAGE_UP. W3C key: “PageUp” public string PAGE_UP Field Value string SHIFT SHIFT. W3C key: “Shift” public string SHIFT Field Value string"
},
"api/Hi.Native.mat4d.html": {
"href": "api/Hi.Native.mat4d.html",
"title": "Struct mat4d | HiAPI-C# 2025",
"summary": "Struct mat4d Namespace Hi.Native Assembly HiGeom.dll Native mat4d. public struct mat4d : IEquatable<mat4d> Implements IEquatable<mat4d> Inherited Members ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors mat4d(Mat4d) Ctor. public mat4d(Mat4d mat) Parameters mat Mat4d managed matrix mat4d(double[]) Ctor. public mat4d(double[] m) Parameters m double[] array that has 4x4=16 elements Fields m value array. public double* m Field Value double* Methods Equals(mat4d) Indicates whether the current object is equal to another object of the same type. public bool Equals(mat4d other) Parameters other mat4d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Indicates whether this instance and a specified object are equal. public override bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. GetHashCode() Returns the hash code for this instance. public override int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. Operators operator ==(mat4d, mat4d) public static bool operator ==(mat4d left, mat4d right) Parameters left mat4d right mat4d Returns bool operator !=(mat4d, mat4d) public static bool operator !=(mat4d left, mat4d right) Parameters left mat4d right mat4d Returns bool"
},
"api/Hi.Native.mat_stack_t.html": {
"href": "api/Hi.Native.mat_stack_t.html",
"title": "Struct mat_stack_t | HiAPI-C# 2025",
"summary": "Struct mat_stack_t Namespace Hi.Native Assembly HiDisp.dll Native mat_stack_t. public struct mat_stack_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Native.mouse_button_event_t.html": {
"href": "api/Hi.Native.mouse_button_event_t.html",
"title": "Struct mouse_button_event_t | HiAPI-C# 2025",
"summary": "Struct mouse_button_event_t Namespace Hi.Native Assembly HiDisp.dll Native mouse button event. public struct mouse_button_event_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields mouse_button Mouse button code. public long mouse_button Field Value long type Event type. public ui_event_type type Field Value ui_event_type"
},
"api/Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html": {
"href": "api/Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html",
"title": "Struct mouse_button_table__transform_view_by_mouse_drag_t | HiAPI-C# 2025",
"summary": "Struct mouse_button_table__transform_view_by_mouse_drag_t Namespace Hi.Native Assembly HiDisp.dll Mouse button table for native function of transform_view_by_mouse_drag. public struct mouse_button_table__transform_view_by_mouse_drag_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields LEFT_BUTTON Left button. public long LEFT_BUTTON Field Value long RIGHT_BUTTON Right button. public long RIGHT_BUTTON Field Value long"
},
"api/Hi.Native.mouse_move_event_t.html": {
"href": "api/Hi.Native.mouse_move_event_t.html",
"title": "Struct mouse_move_event_t | HiAPI-C# 2025",
"summary": "Struct mouse_move_event_t Namespace Hi.Native Assembly HiDisp.dll Native mouse move event. public struct mouse_move_event_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields cursor_x Cursor position x. public int cursor_x Field Value int cursor_y Cursor position y. public int cursor_y Field Value int type Event type. public ui_event_type type Field Value ui_event_type"
},
"api/Hi.Native.mouse_wheel_event_t.html": {
"href": "api/Hi.Native.mouse_wheel_event_t.html",
"title": "Struct mouse_wheel_event_t | HiAPI-C# 2025",
"summary": "Struct mouse_wheel_event_t Namespace Hi.Native Assembly HiDisp.dll Native mouse wheel event. public struct mouse_wheel_event_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields type Event type. public ui_event_type type Field Value ui_event_type wheel_offset_x Wheel offset X. public int wheel_offset_x Field Value int wheel_offset_y Wheel offset Y. public int wheel_offset_y Field Value int"
},
"api/Hi.Native.panel_state_t.html": {
"href": "api/Hi.Native.panel_state_t.html",
"title": "Struct panel_state_t | HiAPI-C# 2025",
"summary": "Struct panel_state_t Namespace Hi.Native Assembly HiDisp.dll Native panel state. public struct panel_state_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields cursor_pre_x Previous cursor X position. public int cursor_pre_x Field Value int cursor_pre_y Previous cursor Y position. public int cursor_pre_y Field Value int cursor_x Current cursor X position. public int cursor_x Field Value int cursor_y Current cursor Y position. public int cursor_y Field Value int is_visible Is panel visible. public int is_visible Field Value int panel_h Panel height. public int panel_h Field Value int panel_w Panel width. public int panel_w Field Value int panel_x X position of the panel from the system desktop. public int panel_x Field Value int panel_y Y position of the panel from the system desktop. public int panel_y Field Value int Methods IsKeyPressed(string) Checks if a keyboard key is currently pressed. public bool IsKeyPressed(string key) Parameters key string Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”). Returns bool IsMouseButtonPressed(long) Checks if a mouse button is currently pressed. public bool IsMouseButtonPressed(long mouse_button) Parameters mouse_button long Mouse button code. Returns bool"
},
"api/Hi.Native.picking_event_t.html": {
"href": "api/Hi.Native.picking_event_t.html",
"title": "Struct picking_event_t | HiAPI-C# 2025",
"summary": "Struct picking_event_t Namespace Hi.Native Assembly HiDisp.dll Internal Use Only. public struct picking_event_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Native.picking_mark_t.html": {
"href": "api/Hi.Native.picking_mark_t.html",
"title": "Struct picking_mark_t | HiAPI-C# 2025",
"summary": "Struct picking_mark_t Namespace Hi.Native Assembly HiDisp.dll Internal Use Only. public struct picking_mark_t Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields picked Internal Use Only. Pointer to the picked object. public void* picked Field Value void* picking_func Internal Use Only. Function pointer to the picking function. public nint picking_func Field Value nint"
},
"api/Hi.Native.tri3d.html": {
"href": "api/Hi.Native.tri3d.html",
"title": "Struct tri3d | HiAPI-C# 2025",
"summary": "Struct tri3d Namespace Hi.Native Assembly HiGeom.dll Native tri3d. public struct tri3d Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors tri3d(Tri3d) Ctor. public tri3d(Tri3d src) Parameters src Tri3d src tri3d(vec3d, vec3d, vec3d, vec3d) Ctor. public tri3d(vec3d p0, vec3d p1, vec3d p2, vec3d n) Parameters p0 vec3d p0 p1 vec3d p1 p2 vec3d p2 n vec3d n Fields n Normal. public vec3d n Field Value vec3d p0 Apex 0. public vec3d p0 Field Value vec3d p1 Apex 1. public vec3d p1 Field Value vec3d p2 Apex 2. public vec3d p2 Field Value vec3d"
},
"api/Hi.Native.ui_event_type.html": {
"href": "api/Hi.Native.ui_event_type.html",
"title": "Enum ui_event_type | HiAPI-C# 2025",
"summary": "Enum ui_event_type Namespace Hi.Native Assembly HiDisp.dll Native ui event. public enum ui_event_type Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Key_Pressed = 1 Key pressed. Key_Released = 2 Key released. Mouse_Entered = 5 Mouse entered. Mouse_Exited = 6 Mouse exited. Mouse_Moved = 7 Mouse moved. Mouse_Pressed = 3 Mouse pressed. Mouse_Released = 4 Mouse released. Mouse_Wheel_Moved = 8 Mouse wheel moved. No_Event = 0 No event. Not_Defined = 9 Not defined."
},
"api/Hi.Native.vec2d.html": {
"href": "api/Hi.Native.vec2d.html",
"title": "Struct vec2d | HiAPI-C# 2025",
"summary": "Struct vec2d Namespace Hi.Native Assembly HiGeom.dll Native vec2d. public struct vec2d : IEquatable<vec2d> Implements IEquatable<vec2d> Inherited Members ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors vec2d(Vec2d) Ctor. public vec2d(Vec2d src) Parameters src Vec2d src vec2d(double, double) Ctor.x public vec2d(double x, double y) Parameters x double x y double y Fields x x. public double x Field Value double y y. public double y Field Value double Methods Equals(vec2d) Indicates whether the current object is equal to another object of the same type. public bool Equals(vec2d other) Parameters other vec2d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Indicates whether this instance and a specified object are equal. public override bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. GetHashCode() Returns the hash code for this instance. public override int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. Operators operator ==(vec2d, vec2d) public static bool operator ==(vec2d left, vec2d right) Parameters left vec2d right vec2d Returns bool operator !=(vec2d, vec2d) public static bool operator !=(vec2d left, vec2d right) Parameters left vec2d right vec2d Returns bool"
},
"api/Hi.Native.vec3d.html": {
"href": "api/Hi.Native.vec3d.html",
"title": "Struct vec3d | HiAPI-C# 2025",
"summary": "Struct vec3d Namespace Hi.Native Assembly HiGeom.dll Native vec3d. public struct vec3d : IEquatable<vec3d> Implements IEquatable<vec3d> Inherited Members object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors vec3d(Vec3d) Ctor. public vec3d(Vec3d src) Parameters src Vec3d src vec3d(double, double, double) Ctor.x public vec3d(double x, double y, double z) Parameters x double x y double y z double z Fields x x. public double x Field Value double y y. public double y Field Value double z z. public double z Field Value double Methods 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(object) Indicates whether this instance and a specified object are equal. public override bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. GetHashCode() Returns the hash code for this instance. public override int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. ToString() To representative string with format:(x,y,z). public override string ToString() Returns string Representative string Operators operator ==(vec3d, vec3d) public static bool operator ==(vec3d left, vec3d right) Parameters left vec3d right vec3d Returns bool operator !=(vec3d, vec3d) public static bool operator !=(vec3d left, vec3d right) Parameters left vec3d right vec3d Returns bool"
},
"api/Hi.Native.vec3f.html": {
"href": "api/Hi.Native.vec3f.html",
"title": "Struct vec3f | HiAPI-C# 2025",
"summary": "Struct vec3f Namespace Hi.Native Assembly HiGeom.dll Native vec3f. public struct vec3f : IEquatable<vec3f> Implements IEquatable<vec3f> Inherited Members ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors vec3f(Vec3d) Ctor. public vec3f(Vec3d src) Parameters src Vec3d src vec3f(float, float, float) Ctor. public vec3f(float x, float y, float z) Parameters x float x y float y z float z Fields x x. public float x Field Value float y y. public float y Field Value float z z. public float z Field Value float Methods Equals(vec3f) Indicates whether the current object is equal to another object of the same type. public bool Equals(vec3f other) Parameters other vec3f An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Indicates whether this instance and a specified object are equal. public override bool Equals(object obj) Parameters obj object The object to compare with the current instance. Returns bool true if obj and this instance are the same type and represent the same value; otherwise, false. GetHashCode() Returns the hash code for this instance. public override int GetHashCode() Returns int A 32-bit signed integer that is the hash code for this instance. Operators operator ==(vec3f, vec3f) public static bool operator ==(vec3f left, vec3f right) Parameters left vec3f right vec3f Returns bool operator !=(vec3f, vec3f) public static bool operator !=(vec3f left, vec3f right) Parameters left vec3f right vec3f Returns bool"
},
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the Fixture class from XML. public Fixture(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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",
"title": "Class FixtureEditorDisplayee | HiAPI-C# 2025",
"summary": "Class FixtureEditorDisplayee Namespace Hi.NcMech.Fixtures Assembly HiMech.dll Displayee for fixture visualization and editor overlays. public class FixtureEditorDisplayee : IDisplayee, IExpandToBox3d, IGetAsmb, IGetAnchor, IGetTopoIndex Inheritance object FixtureEditorDisplayee Implements IDisplayee IExpandToBox3d IGetAsmb 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 DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Config Gets or sets the visualization configuration. public FixtureEditorDisplayeeConfig Config { get; set; } Property Value FixtureEditorDisplayeeConfig Fixture Gets the current Fixture. public Fixture Fixture { get; } Property Value Fixture FixtureGetter Gets or sets the delegate that provides the current Fixture. public Func<Fixture> FixtureGetter { get; set; } Property Value Func<Fixture> RenderingMode Gets or sets the rendering mode for the underlying solid. public Solid.RenderingModeEnum RenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowGeomAnchor Gets or sets whether to show the geometry anchor. public bool ShowGeomAnchor { get; set; } Property Value bool ShowTableBuckle Gets or sets whether to show the table buckle anchor. public bool ShowTableBuckle { get; set; } Property Value bool ShowWorkpieceBuckle Gets or sets whether to show the workpiece buckle anchor. public bool ShowWorkpieceBuckle { get; set; } 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. 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 GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb."
},
"api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html": {
"href": "api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html",
"title": "Class FixtureEditorDisplayeeConfig | HiAPI-C# 2025",
"summary": "Class FixtureEditorDisplayeeConfig Namespace Hi.NcMech.Fixtures Assembly HiMech.dll Configuration settings for fixture editor display features. public class FixtureEditorDisplayeeConfig : IMakeXmlSource Inheritance object FixtureEditorDisplayeeConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FixtureEditorDisplayeeConfig() Initializes a new instance of the FixtureEditorDisplayeeConfig class. public FixtureEditorDisplayeeConfig() FixtureEditorDisplayeeConfig(XElement) Initializes a new instance from XML. public FixtureEditorDisplayeeConfig(XElement element) Parameters element XElement Properties RenderingMode Gets or sets the rendering mode of the solid. public Solid.RenderingModeEnum RenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowGeomAnchor Gets or sets whether to show the geometry anchor. public bool ShowGeomAnchor { get; set; } Property Value bool ShowTableBuckle Gets or sets whether to show the table buckle. public bool ShowTableBuckle { get; set; } Property Value bool ShowWorkpieceBuckle Gets or sets whether to show the workpiece buckle. public bool ShowWorkpieceBuckle { 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.Fixtures.html": {
"href": "api/Hi.NcMech.Fixtures.html",
"title": "Namespace Hi.NcMech.Fixtures | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech.Fixtures Classes Fixture Represents a fixture used to hold workpieces during machining operations. FixtureEditorDisplayee Displayee for fixture visualization and editor overlays. FixtureEditorDisplayeeConfig Configuration settings for fixture editor display features."
},
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the CylindroidHolder class from XML. public CylindroidHolder(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the FreeformHolder class from XML data. public FreeformHolder(XElement src, string baseDirectory, string relFile, IProgress<IMessage> 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<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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",
"title": "Class HolderEditorDisplayee | HiAPI-C# 2025",
"summary": "Class HolderEditorDisplayee Namespace Hi.NcMech.Holders Assembly HiMech.dll Displayee for holder editor that provides visualization functionality. public class HolderEditorDisplayee : IAnchoredDisplayee, IGetAnchor, IDisplayee, IExpandToBox3d, IGetAsmb, IGetTopoIndex Inheritance object HolderEditorDisplayee Implements IAnchoredDisplayee IGetAnchor IDisplayee IExpandToBox3d IGetAsmb IGetTopoIndex 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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HolderEditorDisplayee() Initializes a new instance of the HolderEditorDisplayee class public HolderEditorDisplayee() HolderEditorDisplayee(IHolder) Initializes a new instance of the HolderEditorDisplayee class with a specified holder public HolderEditorDisplayee(IHolder holder) Parameters holder IHolder The holder to display Properties Holder Gets or sets the holder to be displayed public IHolder Holder { get; set; } Property Value IHolder RenderingMode Gets or sets the rendering mode for the holder solid. public Solid.RenderingModeEnum RenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowCutterBuckle Gets or sets whether to show the cutter buckle anchor. public bool ShowCutterBuckle { get; set; } Property Value bool ShowGeomAnchor Gets or sets whether to show the geometry anchor. public bool ShowGeomAnchor { get; set; } Property Value bool ShowSpindleBuckle Gets or sets whether to show the spindle buckle anchor. public bool ShowSpindleBuckle { get; set; } 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. 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 GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb."
},
"api/Hi.NcMech.Holders.IHolder.html": {
"href": "api/Hi.NcMech.Holders.IHolder.html",
"title": "Interface IHolder | HiAPI-C# 2025",
"summary": "Interface IHolder Namespace Hi.NcMech.Holders Assembly HiMech.dll Interface for tool holders in NC machining. public interface IHolder : ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IMakeXmlSource, IAbstractNote, IGetFletchBuckle, IAnchoredCollidableBased, IDuplicate, INameNote, IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex, IGetSolid Inherited Members IGetAsmb.GetAsmb() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IAbstractNote.AbstractNote IGetFletchBuckle.GetFletchBuckle() IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() IDuplicate.Duplicate(params object[]) INameNote.Name INameNote.Note IAnchoredCollidabled.GetCollidableAnchor() IGetCollidable.GetCollidable() IGetAnchor.GetAnchor() IGetSolid.GetSolid() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CutterBuckle Gets the cutter buckle anchor. Anchor CutterBuckle { get; } Property Value Anchor GeomAnchor Gets the geometry anchor of the holder. Anchor GeomAnchor { get; } Property Value Anchor SpindleBuckle Gets the spindle buckle anchor. Anchor SpindleBuckle { get; } Property Value Anchor ThemeColor Default theme color for holder visualization. public static Vec3d ThemeColor { get; } Property Value Vec3d Methods GetTailBuckle() Gets the cutter buckle anchor, generally located on the free-end side. Anchor GetTailBuckle() Returns Anchor"
},
"api/Hi.NcMech.Holders.html": {
"href": "api/Hi.NcMech.Holders.html",
"title": "Namespace Hi.NcMech.Holders | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech.Holders Classes CylindroidHolder Represents a cylindrical tool holder for machining operations. FreeformHolder Represents a freeform tool holder with customizable geometry. HolderEditorDisplayee Displayee for holder editor that provides visualization functionality. Interfaces IHolder Interface for tool holders in NC machining."
},
"api/Hi.NcMech.ICollisionIndexPairsSource.html": {
"href": "api/Hi.NcMech.ICollisionIndexPairsSource.html",
"title": "Interface ICollisionIndexPairsSource | HiAPI-C# 2025",
"summary": "Interface ICollisionIndexPairsSource Namespace Hi.NcMech Assembly HiMech.dll Interface that provides access to collision index pairs and XML serialization capabilities. Extends IGetCollisionIndexPairs with XML serialization support. public interface ICollisionIndexPairsSource : IGetCollisionIndexPairs, IMakeXmlSource Inherited Members IGetCollisionIndexPairs.GetCollisionIndexPairs() IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcMech.Solids.IGetSolid.html": {
"href": "api/Hi.NcMech.Solids.IGetSolid.html",
"title": "Interface IGetSolid | HiAPI-C# 2025",
"summary": "Interface IGetSolid Namespace Hi.NcMech.Solids Assembly HiMech.dll Interface for retrieving solid geometry objects. Provides a standardized way to access solid models. public interface IGetSolid Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSolid() Gets the solid geometry object. Solid GetSolid() Returns Solid The solid geometry object."
},
"api/Hi.NcMech.Solids.Solid.RenderingModeEnum.html": {
"href": "api/Hi.NcMech.Solids.Solid.RenderingModeEnum.html",
"title": "Enum Solid.RenderingModeEnum | HiAPI-C# 2025",
"summary": "Enum Solid.RenderingModeEnum Namespace Hi.NcMech.Solids Assembly HiMech.dll Rendering mode for solids. public enum Solid.RenderingModeEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Edge = 1 Render only feature edges. Hide = 2 Hidden (do not render). Solid = 0 Render full solid surfaces."
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the Solid class from XML. public Solid(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> 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<IPolarResolution2d> PolarResolution2dSource { get; set; } Property Value Func<IPolarResolution2d> 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 <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 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",
"title": "Class SolidFuncSource | HiAPI-C# 2025",
"summary": "Class SolidFuncSource Namespace Hi.NcMech.Solids Assembly HiMech.dll Provides a function-based source for solid geometry objects. Allows dynamic generation of solid models through a delegate function. public class SolidFuncSource : IGetSolid Inheritance object SolidFuncSource Implements IGetSolid Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SolidFuncSource(Func<Solid>) Initializes a new instance of the SolidFuncSource class with the specified solid getter function. public SolidFuncSource(Func<Solid> solidGetter) Parameters solidGetter Func<Solid> The function that generates the solid geometry object. Properties SolidGetter Gets or sets the function that generates the solid geometry object. public Func<Solid> SolidGetter { get; set; } Property Value Func<Solid> Methods GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object."
},
"api/Hi.NcMech.Solids.html": {
"href": "api/Hi.NcMech.Solids.html",
"title": "Namespace Hi.NcMech.Solids | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech.Solids Classes Solid Represents a solid geometry object with display, collision detection, and STL capabilities. Provides thread-safe access to geometry data and caching mechanisms. SolidFuncSource Provides a function-based source for solid geometry objects. Allows dynamic generation of solid models through a delegate function. Interfaces IGetSolid Interface for retrieving solid geometry objects. Provides a standardized way to access solid models. Enums Solid.RenderingModeEnum Rendering mode for solids."
},
"api/Hi.NcMech.Topo.INcStroke.html": {
"href": "api/Hi.NcMech.Topo.INcStroke.html",
"title": "Interface INcStroke | HiAPI-C# 2025",
"summary": "Interface INcStroke Namespace Hi.NcMech.Topo Assembly HiMech.dll Nc capability include key char, stroke and speed limit. public interface INcStroke Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetKeyCode() Get key code of the motion axis. string GetKeyCode() Returns string GetSpeedLimit() Get speed limit. double GetSpeedLimit() Returns double GetStrokeMax() Get positivest stroke. double GetStrokeMax() Returns double GetStrokeMin() Get negativest stroke. double GetStrokeMin() Returns double"
},
"api/Hi.NcMech.Topo.INcTransformer.html": {
"href": "api/Hi.NcMech.Topo.INcTransformer.html",
"title": "Interface INcTransformer | HiAPI-C# 2025",
"summary": "Interface INcTransformer Namespace Hi.NcMech.Topo Assembly HiMech.dll Transformer for NC motion axis. public interface INcTransformer : IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IToPresentDto, INcStroke Inherited Members IDynamicRegular.Step ITransformer.GetMat() ITransformer.GetMatInv() ITransformer.Clone() IMakeXmlSource.MakeXmlSource(string, string, bool) IToPresentDto.ToPresentDto() INcStroke.GetKeyCode() INcStroke.GetStrokeMin() INcStroke.GetStrokeMax() INcStroke.GetSpeedLimit() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcMech.Topo.ITopoBrick.html": {
"href": "api/Hi.NcMech.Topo.ITopoBrick.html",
"title": "Interface ITopoBrick | HiAPI-C# 2025",
"summary": "Interface ITopoBrick Namespace Hi.NcMech.Topo Assembly HiMech.dll Interface that represents a topological brick in NC machining. Combines solid geometry, display capabilities, and collision detection functionality. public interface ITopoBrick : IGetSolid, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inherited Members IGetSolid.GetSolid() IGetAnchor.GetAnchor() IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IAnchoredCollidableLeaf.GetCollidableAnchor() IAnchoredCollidableBased.CollidableName IAnchoredCollidableBased.GetAnchoredCollidableNode() ICollidable.CollisionFlag ICollidable.GetCollidee() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcMech.Topo.NcRotation.html": {
"href": "api/Hi.NcMech.Topo.NcRotation.html",
"title": "Class NcRotation | HiAPI-C# 2025",
"summary": "Class NcRotation Namespace Hi.NcMech.Topo Assembly HiMech.dll Represents a rotational transformer for NC machine tool axes. Provides functionality for rotational motion with stroke and speed limits. public class NcRotation : DynamicRotation, IDynamicRotation, IGetInverseTransformer, INcTransformer, IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IToPresentDto, INcStroke Inheritance object DynamicRotation NcRotation Implements IDynamicRotation IGetInverseTransformer INcTransformer IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IToPresentDto INcStroke Inherited Members DynamicRotation.Set(DynamicRotation) DynamicRotation.Step DynamicRotation.GetMat() DynamicRotation.GetMatInv() DynamicRotation.GetInverseTransformer() DynamicRotation.Axis DynamicRotation.Angle_rad DynamicRotation.Angle_deg DynamicRotation.Pivot DynamicRotation.ToPresentDto() object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcRotation() Initializes a new instance of the NcRotation class. public NcRotation() NcRotation(Vec3d, double) Initializes a new instance of the NcRotation class with the specified axis and angle. public NcRotation(Vec3d axis, double angle_rad = 0) Parameters axis Vec3d The rotation axis vector. angle_rad double The rotation angle in radians. NcRotation(Vec3d, double, Vec3d) Initializes a new instance of the NcRotation class with the specified axis, angle and pivot point. public NcRotation(Vec3d axis, double angle_rad, Vec3d pivot) Parameters axis Vec3d The rotation axis vector. angle_rad double The rotation angle in radians. pivot Vec3d The pivot point for rotation. NcRotation(XElement) Initializes a new instance of the NcRotation class from XML. public NcRotation(XElement src) Parameters src XElement The XML source element. Properties KeyCode Gets or sets the key code of the motion axis. public string KeyCode { get; set; } Property Value string SpeedLimit_radds Gets or sets the speed limit in radians per second. public double SpeedLimit_radds { get; set; } Property Value double SpeedLimit_rpm Gets or sets the speed limit in revolutions per minute. public double SpeedLimit_rpm { get; set; } Property Value double StrokeMax_deg Gets or sets the maximum stroke angle in degrees. public double StrokeMax_deg { get; set; } Property Value double StrokeMax_rad Gets or sets the maximum stroke angle in radians. public double StrokeMax_rad { get; set; } Property Value double StrokeMin_deg Gets or sets the minimum stroke angle in degrees. public double StrokeMin_deg { get; set; } Property Value double StrokeMin_rad Gets or sets the minimum stroke angle in radians. public double StrokeMin_rad { get; set; } Property Value double XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public override ITransformer Clone() Returns ITransformer clone GetKeyCode() Get key code of the motion axis. public string GetKeyCode() Returns string GetSpeedLimit() Get speed limit. public double GetSpeedLimit() Returns double Remarks Gets the speed limit in radians per second. GetStrokeMax() Get positivest stroke. public double GetStrokeMax() Returns double Remarks Gets the maximum stroke angle in radians. GetStrokeMin() Get negativest stroke. public double GetStrokeMin() Returns double Remarks Gets the minimum stroke angle in radians. 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.NcMech.Topo.NcTranslation.html": {
"href": "api/Hi.NcMech.Topo.NcTranslation.html",
"title": "Class NcTranslation | HiAPI-C# 2025",
"summary": "Class NcTranslation Namespace Hi.NcMech.Topo Assembly HiMech.dll Represents a translational transformer for NC machine tool axes. Provides functionality for linear motion with stroke and speed limits. public class NcTranslation : DynamicTranslation, IGetInverseTransformer, INcTransformer, IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IToPresentDto, INcStroke Inheritance object DynamicTranslation NcTranslation Implements IGetInverseTransformer INcTransformer IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IToPresentDto INcStroke Inherited Members DynamicTranslation.Set(DynamicTranslation) DynamicTranslation.Step DynamicTranslation.GetMat() DynamicTranslation.GetMatInv() DynamicTranslation.GetInverseTransformer() DynamicTranslation.Axis DynamicTranslation.Len DynamicTranslation.ToPresentDto() object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcTranslation() Initializes a new instance of the NcTranslation class. public NcTranslation() NcTranslation(Vec3d, double) Initializes a new instance of the NcTranslation class with the specified translation vector and length. public NcTranslation(Vec3d trans, double len = 0) Parameters trans Vec3d The translation vector. len double The translation length. NcTranslation(XElement) Initializes a new instance of the NcTranslation class from XML. public NcTranslation(XElement src) Parameters src XElement The XML source element. Properties KeyCode Gets or sets the key code of the motion axis. public string KeyCode { get; set; } Property Value string SpeedLimit_mmdmin Gets or sets the speed limit in millimeters per minute. public double SpeedLimit_mmdmin { get; set; } Property Value double SpeedLimit_mmds Gets or sets the speed limit in millimeters per second. public double SpeedLimit_mmds { get; set; } Property Value double StrokeMax_mm Gets or sets the maximum stroke distance in millimeters. public double StrokeMax_mm { get; set; } Property Value double StrokeMin_mm Gets or sets the minimum stroke distance in millimeters. public double StrokeMin_mm { get; set; } Property Value double XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public override ITransformer Clone() Returns ITransformer clone GetKeyCode() Get key code of the motion axis. public string GetKeyCode() Returns string GetSpeedLimit() Get speed limit. public double GetSpeedLimit() Returns double Remarks Gets the speed limit in millimeters per second. GetStrokeMax() Get positivest stroke. public double GetStrokeMax() Returns double Remarks Gets the maximum stroke distance in millimeters. GetStrokeMin() Get negativest stroke. public double GetStrokeMin() Returns double Remarks Gets the minimum stroke distance in millimeters. 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.NcMech.Topo.SolidSourceTopoBrick.html": {
"href": "api/Hi.NcMech.Topo.SolidSourceTopoBrick.html",
"title": "Class SolidSourceTopoBrick | HiAPI-C# 2025",
"summary": "Class SolidSourceTopoBrick Namespace Hi.NcMech.Topo Assembly HiMech.dll Represents a topological brick that sources its geometry from a solid model. Implements display, collision detection, and content update capabilities. public class SolidSourceTopoBrick : ITopoBrick, IGetSolid, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IUpdateByContent, IClearCache Inheritance object SolidSourceTopoBrick Implements ITopoBrick IGetSolid IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable 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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SolidSourceTopoBrick() Initializes a new instance of the SolidSourceTopoBrick class. public SolidSourceTopoBrick() SolidSourceTopoBrick(Anchor) Initializes a new instance of the SolidSourceTopoBrick class with the specified anchor. public SolidSourceTopoBrick(Anchor anchor) Parameters anchor Anchor The anchor point for this brick. SolidSourceTopoBrick(Anchor, IGetSolid) Initializes a new instance of the SolidSourceTopoBrick class with the specified anchor and solid source. public SolidSourceTopoBrick(Anchor anchor, IGetSolid solidSource) Parameters anchor Anchor The anchor point for this brick. solidSource IGetSolid The solid 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 SolidSource Gets the solid geometry source. public IGetSolid SolidSource { get; } Property Value IGetSolid 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 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.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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Namespace Hi.NcMech.Topo | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech.Topo Classes NcRotation Represents a rotational transformer for NC machine tool axes. Provides functionality for rotational motion with stroke and speed limits. NcTranslation Represents a translational transformer for NC machine tool axes. Provides functionality for linear motion with stroke and speed limits. SolidSourceTopoBrick Represents a topological brick that sources its geometry from a solid model. Implements display, collision detection, and content update capabilities. StlSourceTopoBrick Represents a topological brick that sources its geometry from an STL file. Implements display, collision detection, and content update capabilities. Interfaces INcStroke Nc capability include key char, stroke and speed limit. INcTransformer Transformer for NC motion axis. ITopoBrick Interface that represents a topological brick in NC machining. Combines solid geometry, display capabilities, and collision detection functionality."
},
"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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the Workpiece class. public Workpiece(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement XML element source. baseDirectory string Base directory. relFile string Relative file path. progress IProgress<IMessage> 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/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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WorkpieceEditorDisplayee(IProgress<object>) public WorkpieceEditorDisplayee(IProgress<object> progress = null) Parameters progress IProgress<object> 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<MachiningEquipment> MachiningEquipmentGetter { get; set; } Property Value Func<MachiningEquipment> Progress Progress reporter for meshed geometry operations. public IProgress<object> Progress { get; } Property Value IProgress<object> 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<WorkpieceService> WorkpieceServiceGetter { get; set; } Property Value Func<WorkpieceService> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Workpiece>, Func<string>) Ctor. public WorkpieceService(Func<Workpiece> workpieceGetter, Func<string> baseDirectoryGetter = null) Parameters workpieceGetter Func<Workpiece> baseDirectoryGetter Func<string> 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<string> BaseDirectoryGetter { get; } Property Value Func<string> 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<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 DiffAttachmentBag transient object. For Internal Use. public ConcurrentBag<DiffAttachment> DiffAttachmentBag { get; } Property Value ConcurrentBag<DiffAttachment> 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<Workpiece> WorkpieceGetter { get; } Property Value Func<Workpiece> 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<IMessage>) Calculates the difference between ideal and actual geometry. public void Diff(double detectionRadius, CancellationToken token, IProgress<IMessage> messageProgress = null) Parameters detectionRadius double Detection radius; also saved to DetectionRadius_mm. token CancellationToken Cancellation token. messageProgress IProgress<IMessage> 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<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<IMessage>) 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 GetOrBuildMeshedGeom(CancellationToken token, IProgress<IMessage> messageProgress = null) Parameters token CancellationToken Cancels an in-progress build (leaves the geometry unbuilt / null). messageProgress IProgress<IMessage> 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<IMessage>) Reads the meshed geometry from a file, relative to BaseDirectoryGetter. public bool ReadMeshedGeom(string relFile, IProgress<IMessage> messageProgress = null) Parameters 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. ResetMeshedGeom() Resets the meshed geometry. 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 attachments IReadOnlyCollection<CbtrPickable> ScanMeshedGeomInfDefect(IProgress<IMessage>, CancellationToken) Scans the meshed geometry for inf defects. public bool? ScanMeshedGeomInfDefect(IProgress<IMessage> messageProgress, CancellationToken cancellationToken) Parameters messageProgress IProgress<IMessage> 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<IMessage>) Writes the meshed geometry to a file, relative to BaseDirectoryGetter. public void WriteMeshedGeom(string relFile, CancellationToken token, IProgress<IMessage> messageProgress = null) Parameters relFile string Target file path, relative to the injected base directory. token CancellationToken Cancellation token. messageProgress IProgress<IMessage> 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/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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance from XML. public CodeXyzabcMachineTool(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> The progress reporter. Properties CollisionIndexPairs Gets or sets the collection of collision index pairs. public HashSet<CollisionIndexPair> CollisionIndexPairs { get; set; } Property Value HashSet<CollisionIndexPair> 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<CollisionIndexPair> GetCollisionIndexPairs() Returns IEnumerable<CollisionIndexPair> A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary<string, IDynamicRegular> GetMcCodeTransformerDictionary() Returns Dictionary<string, IDynamicRegular> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>, object[]) Ctor. public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress<IMessage> Progress reporter passed to LoadFromUri(string, IProgress<IMessage>, 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<IMessage>, object[]) Loads the machine tool data from the URI. public void LoadFromUri(string baseDirectory, IProgress<IMessage> progress, object[] res) Parameters baseDirectory string Base directory. progress IProgress<IMessage> 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<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Initializes a new instance of the GeneralXyzabcMachineTool class from XML. public GeneralXyzabcMachineTool(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress<IMessage> 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<CollisionIndexPair> CollisionIndexPairs { get; } Property Value HashSet<CollisionIndexPair> 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> 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<CollisionIndexPair> GetCollisionIndexPairs() Returns IEnumerable<CollisionIndexPair> A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary<string, IDynamicRegular> GetMcCodeTransformerDictionary() Returns Dictionary<string, IDynamicRegular> 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",
"title": "Interface IGetCodeXyzabcMachineTool | HiAPI-C# 2025",
"summary": "Interface IGetCodeXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll Interface of GetXyzabcMachineTool(). public interface IGetCodeXyzabcMachineTool Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetXyzabcMachineTool() Get CodeXyzabcMachineTool. CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool."
},
"api/Hi.NcMech.Xyzabc.IXyzabcMachineTool.html": {
"href": "api/Hi.NcMech.Xyzabc.IXyzabcMachineTool.html",
"title": "Interface IXyzabcMachineTool | HiAPI-C# 2025",
"summary": "Interface IXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll Interface for XYZABC machine tools that combines chain, display, collision and other functionalities. public interface IXyzabcMachineTool : IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inherited Members IDisplayee.Display(Bind) IGetCollisionIndexPairs.GetCollisionIndexPairs() IXyzabcChain.GetTransformerX() IXyzabcChain.GetTransformerY() IXyzabcChain.GetTransformerZ() IXyzabcChain.GetTransformerA() IXyzabcChain.GetTransformerB() IXyzabcChain.GetTransformerC() IXyzabcChain.GetTransformerXyz() IXyzabcChain.GetTransformerAbc() IGetXyzabcChain.GetXyzabcChain() IMachiningChain.GetTableBuckle() IMachiningChain.GetToolBuckle() IMachiningChain.McCodes IMachiningChain.McTransformers IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchorToSolidDictionary.GetAnchorToSolidDictionary() IGetAnchorToSolidDictionary.PrepareAnchorSolids() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IExpandToBox3d.ExpandToBox3d(Box3d) INameNote.Name INameNote.Note Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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)"
},
"api/Hi.NcMech.Xyzabc.html": {
"href": "api/Hi.NcMech.Xyzabc.html",
"title": "Namespace Hi.NcMech.Xyzabc | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech.Xyzabc Classes CodeXyzabcMachineTool This machine tool class helps very quick test by the code configuration. For general/end-user use, apply GeneralXyzabcMachineTool instead. CodeXyzabcMachineToolUri Represents a URI-based container for CodeXyzabcMachineTool. GeneralXyzabcMachineTool General implementation of an XYZABC machine tool. Interfaces IGetCodeXyzabcMachineTool Interface of GetXyzabcMachineTool(). IXyzabcMachineTool Interface for XYZABC machine tools that combines chain, display, collision and other functionalities."
},
"api/Hi.NcMech.html": {
"href": "api/Hi.NcMech.html",
"title": "Namespace Hi.NcMech | HiAPI-C# 2025",
"summary": "Namespace Hi.NcMech Interfaces ICollisionIndexPairsSource Interface that provides access to collision index pairs and XML serialization capabilities. Extends IGetCollisionIndexPairs with XML serialization support."
},
"api/Hi.NcOpt.CuttingVelocityOptLimit.html": {
"href": "api/Hi.NcOpt.CuttingVelocityOptLimit.html",
"title": "Class CuttingVelocityOptLimit | HiAPI-C# 2025",
"summary": "Class CuttingVelocityOptLimit Namespace Hi.NcOpt Assembly HiMech.dll Represents optimization limits for cutting velocity parameters. public class CuttingVelocityOptLimit : ICuttingVelocityOptLimit, IMakeXmlSource, IDuplicate, IToXElement Inheritance object CuttingVelocityOptLimit Implements ICuttingVelocityOptLimit IMakeXmlSource IDuplicate IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CuttingVelocityOptLimit() Initializes a new instance of the CuttingVelocityOptLimit class. public CuttingVelocityOptLimit() CuttingVelocityOptLimit(XElement, string) Initializes a new instance of the CuttingVelocityOptLimit class from XML. public CuttingVelocityOptLimit(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Properties MaxCuttingVelocity_mmdmin Gets or sets the maximum cutting velocity in millimeters per minute. public double MaxCuttingVelocity_mmdmin { get; set; } Property Value double MaxCuttingVelocity_mmds Gets or sets the maximum cutting velocity in millimeters per second. public double MaxCuttingVelocity_mmds { get; set; } Property Value double MinCuttingVelocity_mmdmin Gets or sets the minimum cutting velocity in millimeters per minute. public double MinCuttingVelocity_mmdmin { get; set; } Property Value double MinCuttingVelocity_mmds Gets or sets the minimum cutting velocity in millimeters per second. public double MinCuttingVelocity_mmds { get; set; } Property Value double 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 GetMaxCuttingVelocity_mmds() Gets the maximum cutting velocity in millimeters per second. public double GetMaxCuttingVelocity_mmds() Returns double The maximum cutting velocity in millimeters per second. GetMinCuttingVelocity_mmds() Gets the minimum cutting velocity in millimeters per second. public double GetMinCuttingVelocity_mmds() Returns double The minimum cutting velocity in millimeters per second. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.FixedFeedPerCycleOptLimit.html": {
"href": "api/Hi.NcOpt.FixedFeedPerCycleOptLimit.html",
"title": "Class FixedFeedPerCycleOptLimit | HiAPI-C# 2025",
"summary": "Class FixedFeedPerCycleOptLimit Namespace Hi.NcOpt Assembly HiMech.dll Represents fixed feed-per-cycle optimization limits. Provides implementation for feed-per-cycle optimization with fixed minimum and maximum values. public class FixedFeedPerCycleOptLimit : IFeedPerToothOptLimit, IMakeXmlSource, IDuplicate, IClearCache, IToXElement Inheritance object FixedFeedPerCycleOptLimit Implements IFeedPerToothOptLimit IMakeXmlSource IDuplicate IClearCache IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FixedFeedPerCycleOptLimit(Func<int>, double) Initializes a new instance of the FixedFeedPerCycleOptLimit class with specified parameters. public FixedFeedPerCycleOptLimit(Func<int> fluteNumFunc, double maxFeedPerCycle_mm) Parameters fluteNumFunc Func<int> Function that returns the number of flutes maxFeedPerCycle_mm double Maximum feed per cycle in millimeters FixedFeedPerCycleOptLimit(XElement, string, MillingCutter) Ctor. public FixedFeedPerCycleOptLimit(XElement src, string baseDirectory, MillingCutter cutter) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths cutter MillingCutter The milling cutter to use for flute number calculation Properties FluteNum Gets the number of flutes. public int FluteNum { get; } Property Value int MaxFeedPerCycle_mm Gets or sets the maximum feed per cycle value in millimeters. public double MaxFeedPerCycle_mm { get; set; } Property Value double MinFeedPerCycle_mm Gets or sets the minimum feed per cycle value in millimeters. public double MinFeedPerCycle_mm { get; set; } Property Value double 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(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 GetMaxFeedPerTooth_mm() Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. public double GetMaxFeedPerTooth_mm() Returns double The maximum feed per tooth value in millimeters. GetMinFeedPerTooth_mm() Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. public double GetMinFeedPerTooth_mm() Returns double The minimum feed per tooth value in millimeters. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.NcOpt.FixedFeedPerToothOptLimit.html": {
"href": "api/Hi.NcOpt.FixedFeedPerToothOptLimit.html",
"title": "Class FixedFeedPerToothOptLimit | HiAPI-C# 2025",
"summary": "Class FixedFeedPerToothOptLimit Namespace Hi.NcOpt Assembly HiMech.dll Represents fixed feed-per-tooth optimization limits. Provides implementation for feed-per-tooth optimization with fixed minimum and maximum values. public class FixedFeedPerToothOptLimit : IFeedPerToothOptLimit, IMakeXmlSource, IDuplicate, IToXElement Inheritance object FixedFeedPerToothOptLimit Implements IFeedPerToothOptLimit IMakeXmlSource IDuplicate IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FixedFeedPerToothOptLimit() Ctor. public FixedFeedPerToothOptLimit() FixedFeedPerToothOptLimit(XElement, string) Initializes a new instance of the FixedFeedPerToothOptLimit class. public FixedFeedPerToothOptLimit(XElement element, string baseDirectory) Parameters element XElement The XML element containing optimization limit data. baseDirectory string The base directory for resolving relative paths. Properties MaxFeedPerTooth_mm Gets or sets the maximum feed per tooth value in millimeters. public double MaxFeedPerTooth_mm { get; set; } Property Value double MinFeedPerTooth_mm Gets or sets the minimum feed per tooth value in millimeters. public double MinFeedPerTooth_mm { get; set; } Property Value double 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 GetMaxFeedPerTooth_mm() Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. public double GetMaxFeedPerTooth_mm() Returns double The maximum feed per tooth value in millimeters. GetMinFeedPerTooth_mm() Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. public double GetMinFeedPerTooth_mm() Returns double The minimum feed per tooth value in millimeters. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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. ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.NcOpt.ICutterOptLimitHost.html": {
"href": "api/Hi.NcOpt.ICutterOptLimitHost.html",
"title": "Interface ICutterOptLimitHost | HiAPI-C# 2025",
"summary": "Interface ICutterOptLimitHost Namespace Hi.NcOpt Assembly HiMech.dll Interface for hosts that contain cutter optimization limits. Provides access to cutter optimization limit settings. public interface ICutterOptLimitHost Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CutterOptLimit Gets or sets the cutter optimization limit settings. ICutterOptOption CutterOptLimit { get; set; } Property Value ICutterOptOption"
},
"api/Hi.NcOpt.ICutterOptOption.html": {
"href": "api/Hi.NcOpt.ICutterOptOption.html",
"title": "Interface ICutterOptOption | HiAPI-C# 2025",
"summary": "Interface ICutterOptOption Namespace Hi.NcOpt Assembly HiMech.dll Interface for cutter optimization limits. Combines feed-per-tooth optimization capabilities with duplication and XML serialization support. Inherits from IMakeXmlSource, IFeedPerToothOptLimit, and IDuplicate. public interface ICutterOptOption : IFeedPerToothOptLimit, IMakeXmlSource, IDuplicate Inherited Members IFeedPerToothOptLimit.GetMinFeedPerTooth_mm() IFeedPerToothOptLimit.GetMaxFeedPerTooth_mm() IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties EnableOpt Gets or sets whether optimization is enabled for this cutter. bool EnableOpt { get; set; } Property Value bool"
},
"api/Hi.NcOpt.ICuttingVelocityOptLimit.html": {
"href": "api/Hi.NcOpt.ICuttingVelocityOptLimit.html",
"title": "Interface ICuttingVelocityOptLimit | HiAPI-C# 2025",
"summary": "Interface ICuttingVelocityOptLimit Namespace Hi.NcOpt Assembly HiMech.dll 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. public interface ICuttingVelocityOptLimit : IMakeXmlSource, IDuplicate Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMaxCuttingVelocity_mmds() Gets the maximum cutting velocity in millimeters per second. double GetMaxCuttingVelocity_mmds() Returns double The maximum cutting velocity in millimeters per second. GetMinCuttingVelocity_mmds() Gets the minimum cutting velocity in millimeters per second. double GetMinCuttingVelocity_mmds() Returns double The minimum cutting velocity in millimeters per second."
},
"api/Hi.NcOpt.IFeedPerToothOptLimit.html": {
"href": "api/Hi.NcOpt.IFeedPerToothOptLimit.html",
"title": "Interface IFeedPerToothOptLimit | HiAPI-C# 2025",
"summary": "Interface IFeedPerToothOptLimit Namespace Hi.NcOpt Assembly HiMech.dll 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. public interface IFeedPerToothOptLimit : IMakeXmlSource, IDuplicate Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMaxFeedPerTooth_mm() Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. double GetMaxFeedPerTooth_mm() Returns double The maximum feed per tooth value in millimeters. GetMinFeedPerTooth_mm() Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. double GetMinFeedPerTooth_mm() Returns double The minimum feed per tooth value in millimeters."
},
"api/Hi.NcOpt.MillingCutterOptOption.html": {
"href": "api/Hi.NcOpt.MillingCutterOptOption.html",
"title": "Class MillingCutterOptOption | HiAPI-C# 2025",
"summary": "Class MillingCutterOptOption Namespace Hi.NcOpt Assembly HiMech.dll Represents NC optimization option for milling cutters. public class MillingCutterOptOption : ICutterOptOption, IFeedPerToothOptLimit, IMakeXmlSource, IDuplicate, IClearCache, IToXElement Inheritance object MillingCutterOptOption Implements ICutterOptOption IFeedPerToothOptLimit IMakeXmlSource IDuplicate IClearCache IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingCutterOptOption() Ctor with null properties. public MillingCutterOptOption() MillingCutterOptOption(XElement, string, string, MillingCutter) Initializes a new instance of the MillingCutterOptOption class from XML. public MillingCutterOptOption(XElement src, string baseDirectory, string relFile, MillingCutter cutter) Parameters src XElement XML element source. baseDirectory string Base directory. relFile string Relative file path. cutter MillingCutter Milling cutter. Properties EnableLimitByMinimumUncutChipThickness Gets or sets whether to limit feedrate by minimum uncut chip thickness. It is a lower bound limit. public bool EnableLimitByMinimumUncutChipThickness { get; set; } Property Value bool EnableLimitByReliefAngle Gets or sets whether to limit feedrate by relief angle collision. It is a upper bound limit. public bool EnableLimitByReliefAngle { get; set; } Property Value bool EnableOpt Gets or sets whether optimization is enabled. public bool EnableOpt { get; set; } Property Value bool MaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters. Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. public double MaxFeedPerTooth_mm { get; set; } Property Value double MinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters. Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. public double MinFeedPerTooth_mm { 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 NcOptOption.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 ClearCache() Clears any cached data held by the implementing object. 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 Remarks res[0] has to be ICutter. GetMaxFeedPerTooth_mm() Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. public double GetMaxFeedPerTooth_mm() Returns double The maximum feed per tooth value in millimeters. GetMinFeedPerTooth_mm() Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. public double GetMinFeedPerTooth_mm() Returns double The minimum feed per tooth value in millimeters. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.NcOpt.NcOptOption.html": {
"href": "api/Hi.NcOpt.NcOptOption.html",
"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<NcOptOption>, IToXElement Inheritance object NcOptOption Implements IMakeXmlSource IEquatable<NcOptOption> IToXElement Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<Func<MillingPhysicsBrief, double>, double> CallPreferFuncIndexDictionary() Returns Dictionary<Func<MillingPhysicsBrief, double>, 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.NcOptimizationEmbeddedLogMode.html": {
"href": "api/Hi.NcOpt.NcOptimizationEmbeddedLogMode.html",
"title": "Enum NcOptimizationEmbeddedLogMode | HiAPI-C# 2025",
"summary": "Enum NcOptimizationEmbeddedLogMode Namespace Hi.NcOpt Assembly HiNc.dll Embedded log mode for NC optimization. public enum NcOptimizationEmbeddedLogMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FullLog = 2 All the lines are added the log of StepIndex and LineNo. None = 0 No embedded logging. SimpleLog = 1 Only the re-interpolated lines are added the log of StepIndex. The last re-interpolated line from each original line are added the log of LineNo."
},
"api/Hi.NcOpt.ShapeBasedCutterOptLimit.html": {
"href": "api/Hi.NcOpt.ShapeBasedCutterOptLimit.html",
"title": "Class ShapeBasedCutterOptLimit | HiAPI-C# 2025",
"summary": "Class ShapeBasedCutterOptLimit Namespace Hi.NcOpt Assembly HiMech.dll Represents optimization limits based on cutter shape parameters. public class ShapeBasedCutterOptLimit : IFeedPerToothOptLimit, IMakeXmlSource, IDuplicate, IClearCache Inheritance object ShapeBasedCutterOptLimit Implements IFeedPerToothOptLimit IMakeXmlSource IDuplicate 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ShapeBasedCutterOptLimit(MillingCutter) Initializes a new instance of the ShapeBasedCutterOptLimit class. public ShapeBasedCutterOptLimit(MillingCutter cutter) Parameters cutter MillingCutter The milling cutter. ShapeBasedCutterOptLimit(Func<int>, Func<double>, Func<double>) Initializes a new instance of the ShapeBasedCutterOptLimit class. public ShapeBasedCutterOptLimit(Func<int> fluteNumFunc, Func<double> radiusFunc_mm, Func<double> radialReliefAngleFunc_rad) Parameters fluteNumFunc Func<int> Function to get the number of flutes radiusFunc_mm Func<double> Function to get the radius in millimeters radialReliefAngleFunc_rad Func<double> Function to get the radial relief angle in radians ShapeBasedCutterOptLimit(XElement, string, MillingCutter) Ctor. public ShapeBasedCutterOptLimit(XElement src, string baseDirectory, MillingCutter cutter) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths cutter MillingCutter The milling cutter to use for calculations Properties FluteNum Gets the number of flutes. public int FluteNum { get; } Property Value int FluteNumFunc Gets or sets the function to get the number of flutes. public Func<int> FluteNumFunc { get; set; } Property Value Func<int> MinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters. public double MinFeedPerTooth_mm { get; set; } Property Value double RadialReliefAngleFunc_rad Gets or sets the function to get the radial relief angle in radians. public Func<double> RadialReliefAngleFunc_rad { get; set; } Property Value Func<double> RadialReliefAngle_rad Gets or sets the radial relief angle in radians. public double RadialReliefAngle_rad { get; } Property Value double RadiusFunc_mm Gets or sets the function to get the radius in millimeters. public Func<double> RadiusFunc_mm { get; set; } Property Value Func<double> Radius_mm Gets or sets the radius in millimeters. public double Radius_mm { get; } Property Value double SafetyFactor Gets or sets the safety factor. public double SafetyFactor { get; set; } Property Value double 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(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 GetMaxFeedPerTooth_mm() Gets the maximum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MaxFeedPerTooth_mm, The smaller value will be applied in the optimization process. public double GetMaxFeedPerTooth_mm() Returns double The maximum feed per tooth value in millimeters. GetMinFeedPerTooth_mm() Gets the minimum feed per tooth value in millimeters. By the principle of conservation, if the value is different from the NcOptOption.MinFeedPerTooth_mm, The larger value will be applied in the optimization process. public double GetMinFeedPerTooth_mm() Returns double The minimum feed per tooth value in millimeters. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.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. 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<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."
},
"api/Hi.NcParsers.Dependencys.AxisType.html": {
"href": "api/Hi.NcParsers.Dependencys.AxisType.html",
"title": "Enum AxisType | HiAPI-C# 2025",
"summary": "Enum AxisType Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Axis type: linear (translation), rotary (rotation), or spindle (speed/positioning dual mode). public enum AxisType Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Linear = 0 Translation axis (X, Y, Z, U, V, W). Rotary = 1 Rotation axis (A, B, C). Spindle = 2 Spindle axis — can switch between speed mode (S command) and positioning mode (C axis). Common in mill-turn machines. Siemens MD30300, Okuma OSP."
},
"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 PipelineNcDependencyList. Use ncDependencyList.OfType<CncBrandDependency>().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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string> AxisNames { get; } Property Value IEnumerable<string> AxisParams Per-axis float parameters. Outer key = parameter number, inner key = axis name. public Dictionary<int, Dictionary<string, double>> AxisParams { get; set; } Property Value Dictionary<int, Dictionary<string, double>> 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<string, MCodeEffects> EffectiveMCodeDeclarations { get; } Property Value IReadOnlyDictionary<string, MCodeEffects> 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<int, Dictionary<string, int>> IntAxisParams { get; set; } Property Value Dictionary<int, Dictionary<string, int>> 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> 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<string, SpindleDirection> SpindleDirectionCodes { get; } Property Value IReadOnlyDictionary<string, SpindleDirection> 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<int, double> SystemParams { get; set; } Property Value Dictionary<int, double> 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<string, double> AxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary<string, double> 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<string, int> IntAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary<string, int> 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",
"title": "Enum CutterCompensationType | HiAPI-C# 2025",
"summary": "Enum CutterCompensationType Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc #5003: Cutter compensation startup/cancellation type. public enum CutterCompensationType Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields TypeA = 0 Type A: compensation vector perpendicular to the block next to startup/cancellation. TypeB = 1 Type B: compensation vector perpendicular to startup/cancellation block + intersection vector. TypeC = 2 Type C: when startup/cancellation block has no movement, shift perpendicular to the adjacent block."
},
"api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html": {
"href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html",
"title": "Class FanucGotoIterationDependency | HiAPI-C# 2025",
"summary": "Class FanucGotoIterationDependency Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Watchdog for Fanuc Custom Macro B GOTO loops. Holds a MaxIterationsPerTarget limit (XML-persisted user config — the soft cap above which the upcoming FanucGotoSyntax stops firing and emits a warning) plus a runtime per-target hit counter (CountByTarget — not serialised, cleared at session start by the ISessionResettable sweep in 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, int> AxisParam1006 { get; set; } Property Value Dictionary<string, int> AxisParam1240 #1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary<string, double> AxisParam1240 { get; set; } Property Value Dictionary<string, double> AxisParam1420 #1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary<string, double> AxisParam1420 { get; set; } Property Value Dictionary<string, double> 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<string> CoordinateIds { get; } Property Value IEnumerable<string> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class FanucPositionVariableLookup | HiAPI-C# 2025",
"summary": "Class FanucPositionVariableLookup Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc-style position system variables read from the previous block's runtime-state JSON sections: #5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz. #5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState. #5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz. Stateless. Configured on RuntimeVariableLookups rather than NcDependencyList because the read needs the block node for Previous access — there is no long-lived dependency object that owns this data. public sealed class FanucPositionVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object FanucPositionVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucPositionVariableLookup() Default constructor. public FanucPositionVariableLookup() FanucPositionVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public FanucPositionVariableLookup(XElement src) Parameters src XElement Fields AbsoluteXyzBase Inclusive lower bound of the absolute XYZ position range (#5041). public const int AbsoluteXyzBase = 5041 Field Value int BlockEndXyzBase Inclusive lower bound of the block-end XYZ position range (#5001). public const int BlockEndXyzBase = 5001 Field Value int MachineCoordXyzBase Inclusive lower bound of the machine-coordinate XYZ position range (#5021). public const int MachineCoordXyzBase = 5021 Field Value int Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode<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"
},
"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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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? 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",
"title": "Class FanucWhileDoIterationDependency | HiAPI-C# 2025",
"summary": "Class FanucWhileDoIterationDependency Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll 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. public class FanucWhileDoIterationDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object FanucWhileDoIterationDependency 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucWhileDoIterationDependency() Initializes a new instance with the default limit and an empty counter. public FanucWhileDoIterationDependency() FanucWhileDoIterationDependency(XElement) Loads MaxIterationsPerLoopId from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerLoopId. public FanucWhileDoIterationDependency(XElement src) Parameters src XElement Root element named XName. Fields DefaultMaxIterationsPerLoopId Default for MaxIterationsPerLoopId. Sized for legitimate macro iteration (NcOpt drill grids, calibration sweeps) while still catching runaway loops in a tractable time. public const int DefaultMaxIterationsPerLoopId = 10000 Field Value int Properties CountByLoop Per-loop hit counter keyed by (FileName, LoopId). 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 LoopId), int> CountByLoop { get; } Property Value Dictionary<(string FileName, int TargetN), int> MaxIterationsPerLoopId Soft cap on consecutive END m reverse-jumps for any single (FileName, LoopId) pair. Above this the END m block emits FanucWhileDoIterationLimitExceeded and suppresses the redirect; flow falls through past END. public int MaxIterationsPerLoopId { 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 MaxIterationsPerLoopId 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.RetainedCommonVariableTable.html": {
"href": "api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html",
"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 <vacant>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 #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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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 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 <vacant>) 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 PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType<T>().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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class GenericBlockSkipConfig | HiAPI-C# 2025",
"summary": "Class GenericBlockSkipConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll 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: <GenericBlockSkipConfig> <EnabledLayers>1,3</EnabledLayers> </GenericBlockSkipConfig> When EnabledLayers is absent the default is layer 1 only. public class GenericBlockSkipConfig : IBlockSkipConfig, INcDependency, IMakeXmlSource Inheritance object GenericBlockSkipConfig Implements IBlockSkipConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GenericBlockSkipConfig() Initializes a new instance with only layer 1 (the bare / prefix) enabled, matching the typical Fanuc factory default. public GenericBlockSkipConfig() GenericBlockSkipConfig(XElement) Initializes a new instance by deserializing from src. Falls back to layer 1 only when the EnabledLayers child element is absent or blank. public GenericBlockSkipConfig(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties EnabledLayers CSV of currently-enabled layers, e.g. “1,3”. public string EnabledLayers { get; set; } Property Value string XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods IsLayerEnabled(int) Returns true when blocks tagged with this layer should be skipped (controller switch ON). public bool IsLayerEnabled(int layer) Parameters layer int Skip layer, 1..9. Bare / is layer 1. 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 SetLayerEnabled(int, bool) Enables / disables a specific skip layer. public 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.Generic.IsoCoordinateTable.html": {
"href": "api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html",
"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<string, Vec3d>, IDictionary<string, Vec3d>, ICollection<KeyValuePair<string, Vec3d>>, IReadOnlyDictionary<string, Vec3d>, IReadOnlyCollection<KeyValuePair<string, Vec3d>>, IEnumerable<KeyValuePair<string, Vec3d>>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object Dictionary<string, Vec3d> IsoCoordinateTable Implements IDictionary<string, Vec3d> ICollection<KeyValuePair<string, Vec3d>> IReadOnlyDictionary<string, Vec3d> IReadOnlyCollection<KeyValuePair<string, Vec3d>> IEnumerable<KeyValuePair<string, Vec3d>> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable IIsoCoordinateConfig INcDependency IMakeXmlSource Inherited Members Dictionary<string, Vec3d>.Add(string, Vec3d) Dictionary<string, Vec3d>.Clear() Dictionary<string, Vec3d>.ContainsKey(string) Dictionary<string, Vec3d>.ContainsValue(Vec3d) Dictionary<string, Vec3d>.EnsureCapacity(int) Dictionary<string, Vec3d>.GetAlternateLookup<TAlternateKey>() Dictionary<string, Vec3d>.GetEnumerator() Dictionary<string, Vec3d>.OnDeserialization(object) Dictionary<string, Vec3d>.Remove(string) Dictionary<string, Vec3d>.Remove(string, out Vec3d) Dictionary<string, Vec3d>.TrimExcess() Dictionary<string, Vec3d>.TrimExcess(int) Dictionary<string, Vec3d>.TryAdd(string, Vec3d) Dictionary<string, Vec3d>.TryGetAlternateLookup<TAlternateKey>(out Dictionary<string, Vec3d>.AlternateLookup<TAlternateKey>) Dictionary<string, Vec3d>.TryGetValue(string, out Vec3d) Dictionary<string, Vec3d>.Comparer Dictionary<string, Vec3d>.Count Dictionary<string, Vec3d>.Capacity Dictionary<string, Vec3d>.this[string] Dictionary<string, Vec3d>.Keys Dictionary<string, Vec3d>.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DictionaryUtil.Retrieve<K, V>(Dictionary<K, V>, K, out V, bool) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, TValue) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, Func<TValue>) DictionaryUtil.TryGetValueByKeys<TKey, TValue>(IDictionary<TKey, TValue>, IEnumerable<TKey>, out TValue) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) 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<string> CoordinateIds { get; } Property Value IEnumerable<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 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 (G54G59…). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html": {
"href": "api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html",
"title": "Class SubProgramFolderConfig | HiAPI-C# 2025",
"summary": "Class SubProgramFolderConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Folder lookup configuration for SubProgramCallSyntax: where to find an O<n> 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. public class SubProgramFolderConfig : INcDependency, IMakeXmlSource Inheritance object SubProgramFolderConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramFolderConfig() Initializes a new instance with the default “NC” internal folder and null external folder. public SubProgramFolderConfig() SubProgramFolderConfig(XElement) Loads InternalFolder / ExternalFolder from XML produced by MakeXmlSource(string, string, bool); either child element may be absent. public SubProgramFolderConfig(XElement src) Parameters src XElement Root element named XName. Properties ExternalFolder Folder for M198 P_ lookup, modelling Fanuc's “subprogram on external storage” semantics. Absolute or relative. Null means “fall back to InternalFolder” — a simulator-friendly default for projects that don't actually distinguish internal vs external storage on disk. public string ExternalFolder { get; set; } Property Value string InternalFolder Folder for M98 P_ lookup. Absolute or relative; relative is resolved against the host file's parent directory at use time. Null means “use the host file's parent directory directly”. Default “NC” mirrors a typical project layout where the main program sits beside an NC/ subdirectory of subprograms. public string InternalFolder { get; set; } Property Value string 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.ToolOffsetRow.html": {
"href": "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html",
"title": "Class ToolOffsetRow | HiAPI-C# 2025",
"summary": "Class ToolOffsetRow Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll 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. public class ToolOffsetRow Inheritance object ToolOffsetRow Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ToolOffsetRow() Initializes a new instance with all components zero. public ToolOffsetRow() ToolOffsetRow(double, double, double, double) Initializes a new instance with the supplied geometry and wear components. public ToolOffsetRow(double idealHeight_mm, double axialWear_mm, double idealRadius_mm, double radialWear_mm) Parameters idealHeight_mm double Initial value of IdealHeight_mm. axialWear_mm double Initial value of AxialWear_mm. idealRadius_mm double Initial value of IdealRadius_mm. radialWear_mm double Initial value of RadialWear_mm. Properties AxialWear_mm Accumulated axial wear in millimetres, subtracted from IdealHeight_mm by FullHeight_mm. public double AxialWear_mm { get; set; } Property Value double FullHeight_mm Effective height: geometry minus wear. public double FullHeight_mm { get; } Property Value double FullRadius_mm Effective radius: geometry minus wear. public double FullRadius_mm { get; } Property Value double IdealHeight_mm Geometric tool height in millimetres before wear is subtracted. Combined with AxialWear_mm via FullHeight_mm. public double IdealHeight_mm { get; set; } Property Value double IdealRadius_mm Geometric tool radius in millimetres before wear is subtracted. Combined with RadialWear_mm via FullRadius_mm. public double IdealRadius_mm { get; set; } Property Value double RadialWear_mm Accumulated radial wear in millimetres, subtracted from IdealRadius_mm by FullRadius_mm. public double RadialWear_mm { get; set; } Property Value double"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<int, ToolOffsetRow> Offsets { get; set; } Property Value Dictionary<int, ToolOffsetRow> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, double> AxisPositions { get; set; } Property Value Dictionary<string, double> 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 PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType<T>().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: <GenericBlockSkipConfig> <EnabledLayers>1,3</EnabledLayers> </GenericBlockSkipConfig> 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 (G54G59…). 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<n> 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 912 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 HeidenhainGotoIterationLimitExceeded 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. MP100MP199: General machine configuration. MP400MP499: 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, double> AxisMp1010 { get; set; } Property Value Dictionary<string, double> AxisMp400 MP400: Axis type per axis. See AxisType. See AxisNames. public Dictionary<string, int> AxisMp400 { get; set; } Property Value Dictionary<string, int> AxisMp410 MP410: Reference point position per axis. See IHomeMcConfig. public Dictionary<string, double> AxisMp410 { get; set; } Property Value Dictionary<string, double> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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."
},
"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 (Q0Q99 + QR0QR499). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 HeidenhainGotoIterationDependency Watchdog for Heidenhain FN 912 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. MP100MP199: General machine configuration. MP400MP499: 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 (Q0Q99 + QR0QR499)."
},
"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 (120) 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 G54G59 codes to preset rows 16, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string> CoordinateIds { get; } Property Value IEnumerable<string> 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<int, Vec3d> DatumPresetTable { get; set; } Property Value Dictionary<int, Vec3d> DatumShiftTable Datum shift rows (CYCL DEF 7 #N) keyed by table id (1-20). public Dictionary<int, Vec3d> DatumShiftTable { get; set; } Property Value Dictionary<int, Vec3d> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface ICannedCycleConfig | HiAPI-C# 2025",
"summary": "Interface ICannedCycleConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public interface ICannedCycleConfig : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). double PeckRetractionDistance_mm { get; } Property Value double"
},
"api/Hi.NcParsers.Dependencys.IHomeMcConfig.html": {
"href": "api/Hi.NcParsers.Dependencys.IHomeMcConfig.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 MD30501MD30503). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 G54G59 and #7001+ for G54.1 P1P48), 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string> CoordinateIds { get; } Property Value IEnumerable<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). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"api/Hi.NcParsers.Dependencys.IMachineAxisConfig.html": {
"href": "api/Hi.NcParsers.Dependencys.IMachineAxisConfig.html",
"title": "Interface IMachineAxisConfig | HiAPI-C# 2025",
"summary": "Interface IMachineAxisConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Machine axis configuration: which axes exist and their types. Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma. public interface IMachineAxisConfig : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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. IEnumerable<string> AxisNames { get; } Property Value IEnumerable<string> Methods IsModularRotary(string) Whether the rotary axis wraps 0°–360° (modular). Affects cyclic shortest-path resolution. Returns false for linear axes. bool IsModularRotary(string axisName) Parameters axisName string Returns bool IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. bool IsRotaryAxis(string axisName) Parameters axisName string Returns bool RemoveAxis(string) Removes an axis from the configuration. void RemoveAxis(string axisName) Parameters axisName string SetAxis(string, AxisType) Adds or updates an axis with the specified type. void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType"
},
"api/Hi.NcParsers.Dependencys.INcDependency.html": {
"href": "api/Hi.NcParsers.Dependencys.INcDependency.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<INcDependency> PerCaseNcDependencyList { get; } Property Value List<INcDependency>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"summary": "Interface IPowerResettable Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public interface IPowerResettable : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods OnPowerReset() Clears the volatile subset owned by this dependency. Called by SessionShell.PowerReset() for every IPowerResettable in the active NcDependencyList. void OnPowerReset()"
},
"api/Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html": {
"href": "api/Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html",
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods CheckStrokeLimit(DVec3d, IProgress<IMessage>) Checks whether a position is within all configured stroke limits. bool CheckStrokeLimit(DVec3d mcXyzabc, IProgress<IMessage> stripReporter = null) Parameters mcXyzabc DVec3d Machine coordinate. Point = XYZ (mm), Normal = ABC (rad). stripReporter IProgress<IMessage> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Interface IToolOffsetConfig | HiAPI-C# 2025",
"summary": "Interface IToolOffsetConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public interface IToolOffsetConfig Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetToolHeightOffset_mm(int) Gets the effective tool height offset (geometry - wear) in mm. Returns 0 if the offset number is not configured. 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. double GetToolRadiusOffset_mm(int offsetNumber) Parameters offsetNumber int Offset number: Fanuc D number, Heidenhain tool number, etc. Returns double SetToolOffset(int, double, double, double, double) Sets all four offset components for the given offset number. 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"
},
"api/Hi.NcParsers.Dependencys.IToolingMcConfig.html": {
"href": "api/Hi.NcParsers.Dependencys.IToolingMcConfig.html",
"title": "Interface IToolingMcConfig | HiAPI-C# 2025",
"summary": "Interface IToolingMcConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Machine position axes move to during tool change (M06). public interface IToolingMcConfig : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ToolingMcAbc_deg ABC tooling position in degrees. NaN per missing or stay-in-place axis. Vec3d ToolingMcAbc_deg { get; set; } Property Value Vec3d ToolingMcXyz XYZ tooling position. NaN per missing or stay-in-place axis. Vec3d ToolingMcXyz { get; set; } Property Value Vec3d ToolingTime Duration of the tool changer mechanism (arm swap, magazine rotation, etc.). Does not include axis motion time to/from the tooling position. TimeSpan ToolingTime { get; set; } Property Value TimeSpan 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. double? GetToolingPosition(string axisName) Parameters axisName string Returns double? SetToolingPosition(string, double) Sets the tooling position for a specific axis. Use NaN to indicate the axis should stay. void SetToolingPosition(string axisName, double value) Parameters axisName string value double"
},
"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. G54G59 → #5221+ (stride 20, three consecutive numbers per entry for X/Y/Z), G54.1 P1P48 → #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<int, double>) Enumerates the coordinate ids (G54..G59, G54.1P1..G54.1P48) that have at least one axis entry present in systemParams. public static IEnumerable<string> EnumerateCoordinateIds(IDictionary<int, double> systemParams) Parameters systemParams IDictionary<int, double> Returns IEnumerable<string> Read(IDictionary<int, double>, 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<int, double> systemParams, int baseAddr) Parameters systemParams IDictionary<int, double> baseAddr int Returns Vec3d SeedAllDefaults(IDictionary<int, double>) Seeds all G54G59 and G54.1 P1P48 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<int, double> systemParams) Parameters systemParams IDictionary<int, double> 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 (G54G59, G54.1P1G54.1P48). public static int? TryResolveBase(string coordId) Parameters coordId string Returns int? Write(IDictionary<int, double>, int, Vec3d) Writes X/Y/Z to systemParams at consecutive addresses starting at baseAddr. public static void Write(IDictionary<int, double> systemParams, int baseAddr, Vec3d offset) Parameters systemParams IDictionary<int, double> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 ParsingUnconsumed 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 G54G57 (ISO-compatible), G505G599 (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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, Dictionary<string, double>> AxisOffsets { get; set; } Property Value Dictionary<string, Dictionary<string, double>> CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable<string> CoordinateIds { get; } Property Value IEnumerable<string> Frames Settable frames keyed by G-code id. G500 is treated specially (always zero) and is not stored here. public Dictionary<string, Vec3d> Frames { get; set; } Property Value Dictionary<string, Vec3d> 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, G54G57…). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 SiemensGotoIterationLimitExceeded 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 SiemensLoopIterationLimitExceeded, 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. MD10000MD19999: General machine data. MD20000MD29999: Axis-specific machine data. MD30000MD39999: 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 (DeclaredMCodeUnmodeledEffects) instead of the unknown-code ParsingUnconsumed 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<string, int> AxisMd30300 { get; set; } Property Value Dictionary<string, int> 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> AxisMd32000 MD32000: Max axis velocity per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary<string, double> AxisMd32000 { get; set; } Property Value Dictionary<string, double> AxisMd34010 MD34010: Reference point position per axis. See IHomeMcConfig. public Dictionary<string, double> AxisMd34010 { get; set; } Property Value Dictionary<string, double> 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<string, MCodeEffects> EffectiveMCodeDeclarations { get; } Property Value IReadOnlyDictionary<string, MCodeEffects> 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<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> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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."
},
"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 (R0R999). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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, 711 = extended geometry, 1620 = extended wear, 2123 = 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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 G54G57 (ISO-compatible), G505G599 (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, G54G57…). 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. MD10000MD19999: General machine data. MD20000MD29999: Axis-specific machine data. MD30000MD39999: 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 (R0R999). 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, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<string, int> AxisPr1006 { get; set; } Property Value Dictionary<string, int> AxisPr1240 Pr1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary<string, double> AxisPr1240 { get; set; } Property Value Dictionary<string, double> AxisPr1420 Pr1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary<string, double> AxisPr1420 { get; set; } Property Value Dictionary<string, double> 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<string> CoordinateIds { get; } Property Value IEnumerable<string> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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. 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 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: RunNcLines(string, IEnumerable<string>, 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMachiningService>) Initializes a new instance with the given ServiceProvider. public MachiningServiceDependency(Func<IMachiningService> provider) Parameters provider Func<IMachiningService> 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<IMachiningService> ServiceProvider { get; set; } Property Value Func<IMachiningService> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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?"
},
"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.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<IMachineKinematics>(). 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMachineKinematics>) Initializes a new instance with the given KinematicsProvider. public NcKinematicsDependency(Func<IMachineKinematics> provider) Parameters provider Func<IMachineKinematics> 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<IMachineKinematics> KinematicsProvider { get; set; } Property Value Func<IMachineKinematics> 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> 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<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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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",
"title": "Class ProjectFolderDependency | HiAPI-C# 2025",
"summary": "Class ProjectFolderDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll 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<n> 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. public class ProjectFolderDependency : INcDependency, IMakeXmlSource Inheritance object ProjectFolderDependency 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProjectFolderDependency() Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries. public ProjectFolderDependency() ProjectFolderDependency(Func<string>) Initializes a new instance with the given BaseDirectoryProvider. public ProjectFolderDependency(Func<string> provider) Parameters provider Func<string> Delegate that resolves the absolute base directory at lookup time. Properties BaseDirectory The live absolute base directory, or null when BaseDirectoryProvider is unset or returns null. public string BaseDirectory { get; } Property Value string BaseDirectoryProvider Runtime provider for the absolute project base directory. Public so cross-assembly hosts (e.g. LocalProjectService in HiNc) can wire it after the runner is constructed — same host-wired posture as KinematicsProvider. Null provider or null return means the host has not configured a base directory yet — consumers should treat this as a configuration error and surface a diagnostic rather than silently falling back. public Func<string> BaseDirectoryProvider { get; set; } Property Value Func<string> 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 BaseDirectoryProvider is wired per-host 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.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<n> 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<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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<ISegmenter>) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider. public SegmenterDependency(Func<ISegmenter> provider) Parameters provider Func<ISegmenter> 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<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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"api/Hi.NcParsers.Dependencys.SystemWired.StepPropertyAccessDictionaryDependency.html": {
"href": "api/Hi.NcParsers.Dependencys.SystemWired.StepPropertyAccessDictionaryDependency.html",
"title": "Class StepPropertyAccessDictionaryDependency | HiAPI-C# 2025",
"summary": "Class StepPropertyAccessDictionaryDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll 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. public class StepPropertyAccessDictionaryDependency : INcDependency, IMakeXmlSource Inheritance object StepPropertyAccessDictionaryDependency 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StepPropertyAccessDictionaryDependency() Initializes a new instance with no HostProvider; the host wires one before queries. public StepPropertyAccessDictionaryDependency() StepPropertyAccessDictionaryDependency(Func<IStepPropertyAccessHost>) Initializes a new instance with the given HostProvider. public StepPropertyAccessDictionaryDependency(Func<IStepPropertyAccessHost> provider) Parameters provider Func<IStepPropertyAccessHost> Delegate that resolves the live host at lookup time. Properties Host The live host, or null when HostProvider is unset or returns null. public IStepPropertyAccessHost Host { get; } Property Value IStepPropertyAccessHost HostProvider Runtime provider for the host. Null provider or null return means the host is not wired (e.g. the dependency sits in a runner that runs in a unit-test fixture without a real project service). Consumers must null-check before use. public Func<IStepPropertyAccessHost> HostProvider { get; set; } Property Value Func<IStepPropertyAccessHost> 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.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<T> 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<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. 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<List<LazyLinkedList<SyntaxPiece>>>) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider. public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider) Parameters provider Func<List<LazyLinkedList<SyntaxPiece>>> 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<LazyLinkedList<SyntaxPiece>> Layers { get; } Property Value List<LazyLinkedList<SyntaxPiece>> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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 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: RunNcLines(string, IEnumerable<string>, 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<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. 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<n> 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<n> 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<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 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. 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<T> 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<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)."
},
"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 PipelineNcDependencyList. Use ncDependencyList.OfType<CncBrandDependency>().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 (120) 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 G54G59 codes to preset rows 16, 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. G54G59 → #5221+ (stride 20, three consecutive numbers per entry for X/Y/Z), G54.1 P1P48 → #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 MD30501MD30503). 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 G54G59 and #7001+ for G54.1 P1P48), 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",
"title": "Class CallStackUtil | HiAPI-C# 2025",
"summary": "Class CallStackUtil Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Push / pop helpers for the per-block CallStack section. Both produce a fresh deep-cloned JsonObject ready to stamp onto an inlined piece (push site) or onto an M99 return block (pop site); the caller is responsible for deep-cloning again if it distributes the same stamp across multiple pieces of an L-repetition. Pairs with ModalCarrySyntax at the Logic stage: explicit push / pop writes seed the section at frame boundaries, ModalCarry copies it forward to every block in between so each block is self-contained for cache-dump readers and downstream consumers (notably M99 P{seq} reading the top frame's CallerFilePath). public static class CallStackUtil Inheritance object CallStackUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods BuildPoppedCallStack(JsonObject) Builds the post-pop CallStack section to stamp onto an M99 return block. Reads the M99 block's currently-carried stack, deep-clones it, and drops the top frame. Returns null when there was no frame to pop (M99 in main file with no caller — the runner treats this as program-end via the implicit fall-through; no stamp is needed). public static JsonObject BuildPoppedCallStack(JsonObject hostJson) Parameters hostJson JsonObject The M99 block's JSON object (post-carry, before this pop runs). Returns JsonObject BuildPushedCallStack(JsonObject, string) Builds the post-push CallStack section to stamp onto every inlined-body piece of a call. Reads the host block's current stack (defaulting to empty when absent — main-frame caller), deep-clones it, and appends a new CallFrame whose CallerFilePath records where the call originated. The returned JsonObject can be safely deep-cloned by the caller for each piece in an L-repetition. public static JsonObject BuildPushedCallStack(JsonObject hostJson, string callerFilePath) Parameters hostJson JsonObject The call-host block's JSON object. callerFilePath string Project-relative path of the host file (typically FilePath on the host piece). Returns JsonObject GetTopCallerFilePath(JsonObject) Returns the top frame's CallerFilePath from the given block's CallStack section, or null when the stack is empty or absent (block is in the main frame). public static string GetTopCallerFilePath(JsonObject hostJson) Parameters hostJson JsonObject Returns string"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html",
"title": "Struct EvalResult | HiAPI-C# 2025",
"summary": "Struct EvalResult Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll 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. public readonly record struct EvalResult : IEquatable<EvalResult> Implements IEquatable<EvalResult> Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors EvalResult(double?, string, string) 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. public EvalResult(double? Value, string ErrorCode, string ErrorMessage) Parameters Value double? ErrorCode string ErrorMessage string Properties ErrorCode public string ErrorCode { get; init; } Property Value string ErrorMessage public string ErrorMessage { get; init; } Property Value string IsSuccess true when ErrorCode is null. public bool IsSuccess { get; } Property Value bool Value public double? Value { get; init; } Property Value double? Methods Failure(string, string) Failed evaluation with a diagnostic code and message. public static EvalResult Failure(string errorCode, string errorMessage) Parameters errorCode string errorMessage string Returns EvalResult Success(double) Successful evaluation. public static EvalResult Success(double value) Parameters value double Returns EvalResult"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html",
"title": "Interface IRuntimeVariableLookup | HiAPI-C# 2025",
"summary": "Interface IRuntimeVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like MachineCoordinateState / ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference). Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context. IRuntimeVariableLookup is for context-sensitive resolutions configured declaratively on RuntimeVariableLookups. Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup. Implementations are XML-serialised as part of VariableEvaluatorSyntax's round-trip: each impl exposes a static XName, registers itself with Generators, and implements MakeXmlSource(string, string, bool). Since impls are stateless, the typical body is just an empty element carrying the type name; brand identity is restored by XFactory dispatch. public interface IRuntimeVariableLookup : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies) Parameters key string node LazyLinkedListNode<SyntaxPiece> dependencies IReadOnlyList<INcDependency> Returns double?"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html",
"title": "Interface IVariableLookup | HiAPI-C# 2025",
"summary": "Interface IVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Resolves a Custom Macro B variable reference to its current numeric value, or null for vacant (Fanuc <vacant>) 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. public interface IVariableLookup Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Get(string) Returns the value of the variable identified by key (e.g. \"#124\"), or null if vacant or unknown to this lookup. double? Get(string key) Parameters key string Returns double?"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html",
"title": "Class LocalVariableLookup | HiAPI-C# 2025",
"summary": "Class LocalVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, falling back to the immediately previous block when they share the same MacroFrame id. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Two-step lookup (mirrors VolatileVariableLookup): the current block sees writes that FanucMacroCallSyntax stamped at inline time (the call-line argument bindings) and writes that FanucLocalVariableReadingSyntax applied on this block before the lookup runs; the previous block (frame-checked) supplies body-internal writes from the prior block in the same macro frame. Looking past the previous block is unnecessary because the reader carries forward block-by-block within a frame. Frame isolation via MacroFrame: a previous block whose frame id differs from the current block's is skipped — a macro body's body-internal locals are invisible to the caller after return, and the caller's main-frame locals are invisible inside the macro. M98/M198 subprogram inlining (SubProgramCallSyntax) deliberately does not stamp MacroFrame on its inlined blocks, so the callee inherits the caller's frame and sees the caller's locals — matching real Fanuc M98 semantics. Stateless and dependency-free — instances are interchangeable. public class LocalVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object LocalVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LocalVariableLookup() Default constructor. public LocalVariableLookup() LocalVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public LocalVariableLookup(XElement src) Parameters src XElement Fields LocalMax Inclusive upper bound of the macro-local range (#33). public const int LocalMax = 33 Field Value int LocalMin Inclusive lower bound of the macro-local range (#1). public const int LocalMin = 1 Field Value int Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html",
"title": "Class NcBinaryExpr | HiAPI-C# 2025",
"summary": "Class NcBinaryExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary operation on two operands. Covers arithmetic (+ - * / / MOD), comparison (EQ NE GT GE LT LE, yielding 1.0 / 0.0), and logical bitwise (AND OR XOR, operands truncated to long). public sealed record NcBinaryExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcBinaryExpr> Inheritance object NcExpr NcBinaryExpr Implements IEquatable<NcExpr> IEquatable<NcBinaryExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr) Binary operation on two operands. Covers arithmetic (+ - * / / MOD), comparison (EQ NE GT GE LT LE, yielding 1.0 / 0.0), and logical bitwise (AND OR XOR, operands truncated to long). public NcBinaryExpr(NcBinaryOp Op, NcExpr Left, NcExpr Right) Parameters Op NcBinaryOp Left NcExpr Right NcExpr Properties Left public NcExpr Left { get; init; } Property Value NcExpr Op public NcBinaryOp Op { get; init; } Property Value NcBinaryOp Right public NcExpr Right { get; init; } Property Value NcExpr"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html",
"title": "Enum NcBinaryOp | HiAPI-C# 2025",
"summary": "Enum NcBinaryOp Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary operators allowed in Fanuc Custom Macro B value expressions. public enum NcBinaryOp Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Add = 0 a + b. And = 11 a AND b — bitwise AND on operands truncated to long. Non-finite or out-of-range operands surface ArithmeticMathError. Divide = 3 a / b. Eq = 5 a EQ b — equal; yields 1.0 (true) or 0.0 (false). Ge = 8 a GE b — greater than or equal; yields 1.0 or 0.0. Gt = 7 a GT b — greater than; yields 1.0 or 0.0. Le = 10 a LE b — less than or equal; yields 1.0 or 0.0. Lt = 9 a LT b — less than; yields 1.0 or 0.0. Mod = 4 a MOD b (truncated remainder, sign of a). Multiply = 2 a * b. Ne = 6 a NE b — not equal; yields 1.0 or 0.0. Or = 12 a OR b — bitwise OR on operands truncated to long. Non-finite or out-of-range operands surface ArithmeticMathError. Subtract = 1 a - b. Xor = 13 a XOR b — bitwise XOR on operands truncated to long. Non-finite or out-of-range operands surface ArithmeticMathError."
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html",
"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<NcExpr> Inheritance object NcExpr Implements IEquatable<NcExpr> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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<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 (VariableEvaluatorSameBlockForwardReference); 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",
"summary": "Class NcExpressionEvaluator Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Walks an NcExpr AST and produces an EvalResult. Resolves #nnn via an IVariableLookup; built-in function names are matched case-insensitively against a fixed table. Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as UnsupportedFunctionCode; arity mismatches as ArgumentMismatchCode; division / MOD by zero and domain errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode. Numeric domain & type conventions. All values are IEEE 754 double — there is no separate bool / int type at runtime. Comparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or 0.0 (false), using strict double equality / ordering (NaN compares as IEEE specifies — NaN EQ NaN is 0.0). Logical ops (AND OR XOR) truncate each operand to a 64-bit signed integer (Truncate(double) then cast to long) before applying the bitwise operation; non-finite or out-of-range operands surface MathErrorCode rather than silently wrapping. Truthiness at caller-side IF / WHILE gates is value != 0 — any non-zero value (bit, float, comparator result) is true. public sealed class NcExpressionEvaluator Inheritance object NcExpressionEvaluator Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ArgumentMismatchCode Diagnostic code for built-in functions called with the wrong number of arguments. public const string ArgumentMismatchCode = \"BuiltinFunction--ArgumentMismatch\" Field Value string MathErrorCode Diagnostic code for division / MOD by zero and domain errors. public const string MathErrorCode = \"Arithmetic--MathError\" Field Value string UnsupportedFunctionCode Diagnostic code for unrecognised built-in function names. public const string UnsupportedFunctionCode = \"BuiltinFunction--Unsupported\" Field Value string VacantErrorCode Diagnostic code emitted when an evaluated #nnn is vacant. public const string VacantErrorCode = \"Variable--Vacant\" Field Value string Methods Evaluate(NcExpr, IVariableLookup) Evaluates expr against variables. public EvalResult Evaluate(NcExpr expr, IVariableLookup variables) Parameters expr NcExpr variables IVariableLookup Returns EvalResult"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html",
"title": "Class NcExpressionParser | HiAPI-C# 2025",
"summary": "Class NcExpressionParser Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation. Grammar (lowest precedence at top): expr := or-expr or-expr := and-expr (('OR' | 'XOR') and-expr)* and-expr := cmp-expr ('AND' cmp-expr)* cmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)* add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '#' integer | '#' '[' expr ']' | '[' expr ']' | ident '[' arglist ']' ('/' '[' expr ']')? arglist := expr (',' expr)* Function names and keyword operators (MOD, EQ NE GT GE LT LE, AND OR XOR) are case-insensitive (SIN = sin, EQ = eq); each keyword requires a non-identifier character on its right boundary so EQ1 is not the EQ operator followed by 1. Whitespace is skipped between tokens. The '/' '[' expr ']' tail captures the dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a function with an extra arg, which the evaluator rejects with an arity error. Operator precedence intentionally puts boolean / logical layers below arithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and #1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10), matching the Fanuc Custom Macro B spec for IF [..] GOTO / IF [..] THEN / WHILE [..] DO conditions. public sealed class NcExpressionParser Inheritance object NcExpressionParser Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods TryParse(string, out NcExpr, out string) Parses source. On success, expr is the AST and error is null. On failure, expr is null and error describes the syntax problem. public static bool TryParse(string source, out NcExpr expr, out string error) Parameters source string expr NcExpr error string Returns bool"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html",
"title": "Class NcFunctionExpr | HiAPI-C# 2025",
"summary": "Class NcFunctionExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b]. public sealed record NcFunctionExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcFunctionExpr> Inheritance object NcExpr NcFunctionExpr Implements IEquatable<NcExpr> IEquatable<NcFunctionExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcFunctionExpr(string, IReadOnlyList<NcExpr>) Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b]. public NcFunctionExpr(string Name, IReadOnlyList<NcExpr> Args) Parameters Name string Args IReadOnlyList<NcExpr> Properties Args public IReadOnlyList<NcExpr> Args { get; init; } Property Value IReadOnlyList<NcExpr> Name public string Name { get; init; } Property Value string"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html",
"title": "Class NcIndirectVariableExpr | HiAPI-C# 2025",
"summary": "Class NcIndirectVariableExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll 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\"). public sealed record NcIndirectVariableExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcIndirectVariableExpr> Inheritance object NcExpr NcIndirectVariableExpr Implements IEquatable<NcExpr> IEquatable<NcIndirectVariableExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcIndirectVariableExpr(string, NcExpr) 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\"). public NcIndirectVariableExpr(string Prefix, NcExpr Index) Parameters Prefix string Index NcExpr Properties Index public NcExpr Index { get; init; } Property Value NcExpr Prefix public string Prefix { get; init; } Property Value string"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html",
"title": "Class NcLiteralExpr | HiAPI-C# 2025",
"summary": "Class NcLiteralExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Numeric literal (e.g. 1.5, 15., .5, 1e-3). public sealed record NcLiteralExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcLiteralExpr> Inheritance object NcExpr NcLiteralExpr Implements IEquatable<NcExpr> IEquatable<NcLiteralExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcLiteralExpr(double) Numeric literal (e.g. 1.5, 15., .5, 1e-3). public NcLiteralExpr(double Value) Parameters Value double Properties Value public double Value { get; init; } Property Value double"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html",
"title": "Class NcUnaryExpr | HiAPI-C# 2025",
"summary": "Class NcUnaryExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Unary + or - applied to an operand. public sealed record NcUnaryExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcUnaryExpr> Inheritance object NcExpr NcUnaryExpr Implements IEquatable<NcExpr> IEquatable<NcUnaryExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcUnaryExpr(NcUnaryOp, NcExpr) Unary + or - applied to an operand. public NcUnaryExpr(NcUnaryOp Op, NcExpr Operand) Parameters Op NcUnaryOp Operand NcExpr Properties Op public NcUnaryOp Op { get; init; } Property Value NcUnaryOp Operand public NcExpr Operand { get; init; } Property Value NcExpr"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html",
"title": "Enum NcUnaryOp | HiAPI-C# 2025",
"summary": "Enum NcUnaryOp Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Unary operators allowed in Fanuc Custom Macro B value expressions. public enum NcUnaryOp Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Minus = 1 Negation: -expr. Plus = 0 Identity: +expr."
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html",
"title": "Class NcVariableExpr | HiAPI-C# 2025",
"summary": "Class NcVariableExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Direct variable reference; Key is the raw source token (e.g. \"#124\") passed verbatim to Get(string). public sealed record NcVariableExpr : NcExpr, IEquatable<NcExpr>, IEquatable<NcVariableExpr> Inheritance object NcExpr NcVariableExpr Implements IEquatable<NcExpr> IEquatable<NcVariableExpr> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcVariableExpr(string) Direct variable reference; Key is the raw source token (e.g. \"#124\") passed verbatim to Get(string). public NcVariableExpr(string Key) Parameters Key string Properties Key public string Key { get; init; } Property Value string"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html",
"title": "Class VolatileVariableLookup | HiAPI-C# 2025",
"summary": "Class VolatileVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style non-retained common variables (#100-#499) from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Single-step lookup: VolatileVariableReadingSyntax already dict-merges every block's Vars.Volatile into the next block, so the entry — if it exists — must be on the current block (when this lookup runs after the reader) or on the immediately previous block (when this lookup runs before the reader on the same block, which is the Fanuc preset's order — evaluator first, reader second). No arbitrary walk-back: such a walk would be defensive overkill given the reader's carry guarantee. Stateless and dependency-free — instances are interchangeable. Reads stay decoupled from the reader (read side here; write side in the reader). public class VolatileVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object VolatileVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VolatileVariableLookup() Default constructor. public VolatileVariableLookup() VolatileVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public VolatileVariableLookup(XElement src) Parameters src XElement Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode<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"
},
"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. 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 <vacant>) 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",
"title": "Class FanucConditionReader | HiAPI-C# 2025",
"summary": "Class FanucConditionReader Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll 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 <Syntax>--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 [<Display>] 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. public static class FanucConditionReader Inheritance object FanucConditionReader Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ReadCondition(JsonNode) Maps a post-evaluation condition JsonNode to a display string + tri-state truthy outcome. See class XmlDoc for the three states' definitions. public static (string Display, bool? Truthy) ReadCondition(JsonNode node) Parameters node JsonNode Returns (string Display, bool? Truthy)"
},
"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<T>) on layers[0] with the re-segmented file content starting at the matching N{target} label. The host block stays materialised (so cache dumps still see the GOTO call site); execution naturally continues from the new source once the pipeline pulls the next block. Both unconditional GOTO <n> and conditional IF [<expr>] GOTO <n> are implemented. The conditional form leans on VariableEvaluatorSyntax's pass-2 tree walk to substitute Parsing.FanucGoto.Condition with a numeric JsonValue when the expression evaluates successfully — ReadCondition(JsonNode) then reads the node polymorphically. Truthy non-zero fires the redirect; zero falls through silently; a still-string (unresolved) Condition emits FanucGoto--ConditionNotEvaluated and falls through. Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation bundle. Must run after VariableEvaluatorSyntax so any #<var> in the target N (e.g. GOTO #1) has been substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes (VolatileVariableReadingSyntax etc.) are independent — they touch Parsing.Assignments, not Parsing.FanucGoto. Label scanning uses two hosted helper syntaxes — CommentSyntax and IndexSyntax — applied to each candidate block in turn so the predicate IndexNote.Number == target matches the same way the Parsing bundle would. Both are XML-IO-able so API customers can swap them (e.g. for a controller variant using ;-style comments or a different head symbol). Defaults match Fanuc: QuoteCommentSyntax and HeadIndexSyntax with the \"N\" symbol. public class FanucGotoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<IMessage>) Loads hosted helper syntaxes from XML produced by MakeXmlSource(string, string, bool). The <LabelProbeSyntaxes> wrapper contains one child element per probe syntax in source order; an absent wrapper falls back to the default list. public FanucGotoSyntax(XElement src, string baseDirectory, IProgress<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 IndexNote.Number == target predicate is checked. The defaults match Fanuc — QuoteCommentSyntax strips parenthesised comments so a commented-out (N100) never matches, then HeadIndexSyntax with symbol “N” extracts the head index into IndexNote.Number. Exposed as a list (rather than two fixed properties) so API customers can insert additional probe syntaxes — for example a TailCommentSyntax for ;-style end-of-block comments alongside the parenthesised form, or a BlockSkipSyntax to skip /-prefixed blocks from the label-scan results. Order matters: comment-strippers before the head-index parser, the index parser last (so its output reflects the post-strip text). public List<ISituNcSyntax> LabelProbeSyntaxes { get; set; } Property Value List<ISituNcSyntax> Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> ncDependencyList List<INcDependency> ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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",
"title": "Class FanucIfThenSyntax | HiAPI-C# 2025",
"summary": "Class FanucIfThenSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Resolves Fanuc Custom Macro B IF [<cond>] THEN <body> single-block conditionals. Triggered by Parsing.FanucIfThen (written by FanucIfThenParsingSyntax); reads the now-resolved Condition node, decides whether to fire, and on fire lifts the parsing-stage PendingAssignments sub-object into the canonical Parsing.Assignments bucket so the brand-specific reader syntaxes downstream route each entry to its store the same way they would handle an unconditional #nnn = <literal> on a normal block. Unlike FanucGotoSyntax there is no source splice, no label scan, no iteration watchdog — the spec restricts the body to the current block. The host block is preserved either way (the stamped FanucIfThen section on the host's top-level JSON keeps the IF-THEN call site visible to cache dumps and diagnostics, with Applied flipped true only on a successful fire). Pipeline placement: in the Evaluation bundle after VariableEvaluatorSyntax (so the Condition expression has been substituted in place by pass-2 tree walk, and each PendingAssignments RHS string has been evaluated to a numeric JsonValue) and before the reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableReadingSyntax, FanucLocalVariableReadingSyntax, FanucSystemControlVariableSyntax) — that ordering lets the lifted entries reach the readers as if they had been written by TagAssignmentSyntax on a normal block. Three condition outcomes mirror the 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. public class FanucIfThenSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucIfThenSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucIfThenSyntax() Parameterless instance (no XML state). public FanucIfThenSyntax() FanucIfThenSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucIfThenSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html",
"title": "Class FanucLocalVariableReadingSyntax | HiAPI-C# 2025",
"summary": "Class FanucLocalVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Routes literal-RHS assignments to Fanuc-style local macro variables (#1-#33) from Parsing.Assignments into Vars.Local on the current block, carrying the previous block's Vars.Local dict forward when both blocks share the same MacroFrame id. Mirrors VolatileVariableReadingSyntax for the #100-#499 range, with two differences: Carry is gated by MacroFrame equality, so a caller block after a G65 return does not inherit the macro body's final locals. Writes outside a macro frame (a main-program block doing #11 = 5) emit LocalVariable--MainFrameWriteUnsupported and consume the assignment without persisting — real Fanuc allows main-frame local writes but this simulator only tracks locals inside G65/G66 call frames; surfacing the gap as a diagnostic is more informative than a silent UnconsumedCheckSyntax hit. Pipeline placement: Evaluation bundle, after VariableEvaluatorSyntax (so any expression RHS such as #11 = #1 + 1 has already been normalised to a literal by the time this reader runs) and after the other range readers (RetainedCommonVariableReadingSyntax, VolatileVariableReadingSyntax) so they all share a similar Reader-stage shape. Only literal numeric RHS values are consumed here; non-literal entries (which can only persist if VariableEvaluatorSyntax failed to resolve them) are left untouched and surface via the evaluator's own VariableExpression--Unevaluated diagnostic plus UnconsumedCheckSyntax. public class FanucLocalVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucLocalVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucLocalVariableReadingSyntax() Default constructor. public FanucLocalVariableReadingSyntax() FanucLocalVariableReadingSyntax(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); no state. public FanucLocalVariableReadingSyntax(XElement src) Parameters src XElement Fields LocalMax Inclusive upper bound of the local range (#33). public const int LocalMax = 33 Field Value int LocalMin Inclusive lower bound of the local range (#1). public const int LocalMin = 1 Field Value int Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html",
"title": "Class FanucMacroArgumentMap | HiAPI-C# 2025",
"summary": "Class FanucMacroArgumentMap Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Fanuc Custom Macro B Type-I argument-letter map: which call-line letter binds to which Vars.Local id (#1-#26) inside the macro body. Reserved letters (G, L, N, O, P) are absent — they are consumed by the call itself, not passed through. Used by FanucMacroCallSyntax (G65, one-shot) and FanucModalMacroSyntax (G66, modal) to translate the argument letters captured by G65Syntax / G66Syntax into the #nnn bindings the macro body's expression evaluator can read. public static class FanucMacroArgumentMap Inheritance object FanucMacroArgumentMap Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields Map Fanuc Custom Macro B Type-I letter-to-local-id map. Single-value per letter; Type-II's repeating I_J_K_ array binding is not modelled here. public static readonly IReadOnlyDictionary<string, int> Map Field Value IReadOnlyDictionary<string, int>"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html",
"title": "Class FanucMacroCallSyntax | HiAPI-C# 2025",
"summary": "Class FanucMacroCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter value …]) into the source layer and binds the call-line argument letters to Vars.Local #1-#26 per the Type-I map (see FanucMacroArgumentMap). Every inlined block carries the binding dict, a clone of the FanucMacroCall diagnostic record, and a MacroFrame id stamp — so LocalVariableLookup resolves arg references in a single-block lookup, a cache dump landing on any block immediately shows which call it belongs to, and downstream FanucLocalVariableReadingSyntax carries body-internal #1-#33 writes forward only within the same frame. The host block itself records FanucMacroCall but stays in the caller's frame (no MacroFrame stamp) and emits no motion act; after the macro body's last inlined block the pipeline continues naturally into the caller's next block (the inlined pieces sit ahead of the host block's successor in layers[0]). Frame isolation works on two layers. Statically, caller blocks have no MacroFrame stamp (frame id 0 by Get(JsonObject)), so the inlined frame ids (allocated fresh per L-repetition) never collide with main. Dynamically, LocalVariableLookup and FanucLocalVariableReadingSyntax compare frame ids before carrying any Vars.Local entry across a block boundary — a macro body's body-internal writes therefore stay inside the macro and never leak back into the caller's frame. Filename lookup mirrors SubProgramCallSyntax: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. The lookup root is InternalFolder (G65 has no \"external storage\" variant; M198's external root is M98/M198-only). L > 1 inlines the same macro L times in series. Each repetition is a fresh segmentation pass (so each block gets its own SyntaxPiece JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared) and gets a fresh FileIndex (so (FileIndex, LineIndex) pairs stay unique across the L-copies of the same source lines). Pipeline placement: ahead of SubProgramCallSyntax inside the Fanuc Evaluation BundleSyntax so a hypothetical G65 P_ + M98 P_ on the same block expands the G65 macro first (would be an unusual but legal composition). Detection is on the Parsing.G65 sub-object written by G65Syntax (a ParameterizedFlagSyntax) — the keyword \"G65\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. public class FanucMacroCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucMacroCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucMacroCallSyntax() Parameterless instance for bundle composition (no XML state). public FanucMacroCallSyntax() FanucMacroCallSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucMacroCallSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html",
"title": "Enum FanucModalMacroSyntax.SyntaxPhase | HiAPI-C# 2025",
"summary": "Enum FanucModalMacroSyntax.SyntaxPhase Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Identifies which pipeline phase the instance runs in. The two values correspond to the Evaluation-bundle and PostLogic-bundle registrations of this same syntax class. public enum FanucModalMacroSyntax.SyntaxPhase Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Expansion = 1 PostLogic phase: on every motion-producing block (signalled by MotionEvent presence) that sits inside an active G66 modal AND lives in the main frame (MacroFrame == 0), inlines the modal macro body — same call mechanism as FanucMacroCallSyntax. Setup = 0 Evaluation phase: captures G66 setup / G67 cancel edges into FanucModalMacro and carries the section forward block-to-block."
},
"api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html",
"title": "Class FanucModalMacroSyntax | HiAPI-C# 2025",
"summary": "Class FanucModalMacroSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup, G67 cancel, and per-motion-block implicit macro invocation). The same class is registered twice in the pipeline via Phase — once in the Evaluation bundle (Setup, captures G66/G67 edges and carries the FanucModalMacro state block-to-block) and once in the PostLogic bundle (Expansion, on every motion block within an active G66 modal, inlines the macro body via the same mechanism FanucMacroCallSyntax uses). Keeping both phases in one class makes the pairing visually explicit: readers see \"G66 in one file\" and the two methods (DoSetup, DoExpansion) make the lifecycle obvious. The two factory helpers (Setup, Expansion) mirror the ModalCarrySyntax.Logic / .PostLogic pattern already in the codebase. public class FanucModalMacroSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucModalMacroSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucModalMacroSyntax() Parameterless instance (defaults to Setup). public FanucModalMacroSyntax() FanucModalMacroSyntax(XElement) XML ctor. Reads <Phase> child element; legacy project files without it default to Setup (the pre-expansion behaviour). public FanucModalMacroSyntax(XElement src) Parameters src XElement Root element named XName. Properties Expansion Factory: PostLogic-bundle instance that performs implicit motion-block expansion. public static FanucModalMacroSyntax Expansion { get; } Property Value FanucModalMacroSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string Phase Pipeline phase this instance runs in. Defaults to Setup. public FanucModalMacroSyntax.SyntaxPhase Phase { get; set; } Property Value FanucModalMacroSyntax.SyntaxPhase Setup Factory: Evaluation-bundle instance that handles G66/G67 setup + carry. public static FanucModalMacroSyntax Setup { get; } Property Value FanucModalMacroSyntax XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> ncDependencyList List<INcDependency> ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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.FanucSystemControlVariableSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html",
"title": "Class FanucSystemControlVariableSyntax | HiAPI-C# 2025",
"summary": "Class FanucSystemControlVariableSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Consumes Fanuc-style system-control variable assignments (#3000-#3999) — alarm trigger (#3000), millisecond and hour clocks (#3001 / #3002), single-block / feed-hold bypass flags (#3003 / #3004), pause-with-message (#3006), mirror-image flags (#3007), date / time (#3011 / #3012), tool-life data (#3030 / #3032), etc. Every id in this range is a controller-side state variable — its authoritative value lives on the real hardware (RTC, alarm bus, override switches, …) and an NC write at most triggers a side effect (clock reset, alarm raise, message-pause prompt). Offline simulation has none of that machinery, so this syntax does not emulate the effect. Instead it: records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility); emits a FanucSystemControl--Unsupported UnsupportedMessage(ISentenceCarrier, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit a Warning per block, which would be noisy without signalling anything the user must act on; removes the entry from Parsing.Assignments so it does not re-surface as a generic Parsing--Unconsumed diagnostic. The dictionary carries forward block-by-block (same dict-merge pattern as VolatileVariableReadingSyntax) so a downstream consumer can read the most recent recorded value via SyntaxPiece linkage. Only literal numeric RHS values are consumed; non-literal RHS (e.g. #3002 = #500) is left in Parsing.Assignments for VariableEvaluatorSyntax to resolve, mirroring the retained / volatile reading syntaxes. Fanuc-family only — Siemens uses named system variables ($AC_TIME, $A_DAY, …) and Heidenhain uses FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucSystemControlVariableSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucSystemControlVariableSyntax() Default constructor. public FanucSystemControlVariableSyntax() FanucSystemControlVariableSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public FanucSystemControlVariableSyntax(XElement src) Parameters src XElement Fields SystemControlMax Inclusive upper bound of the system-control range (#3999). public const int SystemControlMax = 3999 Field Value int SystemControlMin Inclusive lower bound of the system-control range (#3000). public const int SystemControlMin = 3000 Field Value int UnsupportedDiagId Diagnostic id emitted for every consumed #3000-#3999 assignment — recognised by the parser, ignored by simulation. public const string UnsupportedDiagId = \"FanucSystemControl--Unsupported\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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 <Syntax>--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 [<Display>] 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<T>) on layers[0] with the re-segmented file content starting at the matching N{target} label. The host block stays materialised (so cache dumps still see the GOTO call site); execution naturally continues from the new source once the pipeline pulls the next block. Both unconditional GOTO <n> and conditional IF [<expr>] GOTO <n> are implemented. The conditional form leans on VariableEvaluatorSyntax's pass-2 tree walk to substitute Parsing.FanucGoto.Condition with a numeric JsonValue when the expression evaluates successfully — ReadCondition(JsonNode) then reads the node polymorphically. Truthy non-zero fires the redirect; zero falls through silently; a still-string (unresolved) Condition emits FanucGoto--ConditionNotEvaluated and falls through. Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation bundle. Must run after VariableEvaluatorSyntax so any #<var> in the target N (e.g. GOTO #1) has been substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes (VolatileVariableReadingSyntax etc.) are independent — they touch Parsing.Assignments, not Parsing.FanucGoto. Label scanning uses two hosted helper syntaxes — CommentSyntax and IndexSyntax — applied to each candidate block in turn so the predicate IndexNote.Number == target matches the same way the Parsing bundle would. Both are XML-IO-able so API customers can swap them (e.g. for a controller variant using ;-style comments or a different head symbol). Defaults match Fanuc: QuoteCommentSyntax and HeadIndexSyntax with the \"N\" symbol. FanucIfThenSyntax Resolves Fanuc Custom Macro B IF [<cond>] THEN <body> single-block conditionals. Triggered by Parsing.FanucIfThen (written by FanucIfThenParsingSyntax); reads the now-resolved Condition node, decides whether to fire, and on fire lifts the parsing-stage PendingAssignments sub-object into the canonical Parsing.Assignments bucket so the brand-specific reader syntaxes downstream route each entry to its store the same way they would handle an unconditional #nnn = <literal> on a normal block. Unlike FanucGotoSyntax there is no source splice, no label scan, no iteration watchdog — the spec restricts the body to the current block. The host block is preserved either way (the stamped FanucIfThen section on the host's top-level JSON keeps the IF-THEN call site visible to cache dumps and diagnostics, with Applied flipped true only on a successful fire). Pipeline placement: in the Evaluation bundle after VariableEvaluatorSyntax (so the Condition expression has been substituted in place by pass-2 tree walk, and each PendingAssignments RHS string has been evaluated to a numeric JsonValue) and before the reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableReadingSyntax, FanucLocalVariableReadingSyntax, FanucSystemControlVariableSyntax) — that ordering lets the lifted entries reach the readers as if they had been written by TagAssignmentSyntax on a normal block. Three condition outcomes mirror the 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 912 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 912 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 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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 912 jump conditions are pre-normalised by HeidenhainGotoParsingSyntax into separate value operands plus a shared comparison word — never parsed here. HeidenhainGotoSyntax Resolves Heidenhain FN 912 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-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>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(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 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> SegmentAndSkipUntilLabel(ISegmenter, List<INcDependency>, string, string, int, int, List<ISituNcSyntax>, Func<JsonObject, bool>, 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<SyntaxPiece> SegmentAndSkipUntilLabel(ISegmenter segmenter, List<INcDependency> ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, List<ISituNcSyntax> probeSyntaxes, Func<JsonObject, bool> match, 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 candidate block before the predicate check. May be null. match Func<JsonObject, bool> Per-candidate predicate; true selects the first match. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes. Returns List<SyntaxPiece> 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> SegmentAndSkipUntilLabel(ISegmenter, List<INcDependency>, string, string, int, int, int, List<ISituNcSyntax>, NcDiagnosticProgress) Re-segments absPath from offset 0, scans for a block whose Number equals targetN (after the probeSyntaxes have stamped it in-place), and returns the sub-list of pieces from that block to EOF. Pieces are produced via GetSyntaxPieces(ISegmenter, 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 IndexNote.Number section — the section name comes from nameof() so a future rename propagates without re-edits. Reconfigurability for non-standard label-output sections is achieved by replacing the probe syntaxes (the natural extension point) rather than parameterising the predicate path here: a probe stack that doesn't end up writing IndexNote on candidates is by definition not participating in this scan. public static List<SyntaxPiece> SegmentAndSkipUntilLabel(ISegmenter segmenter, List<INcDependency> ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, int targetN, List<ISituNcSyntax> probeSyntaxes, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. 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 (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<ISituNcSyntax> Ordered list of helper syntaxes to run on each candidate block before the predicate check (typically comment-stripper(s) followed by a head-index parser). May be null. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes (e.g. comment-stripper malformed-comment warnings). Returns List<SyntaxPiece>"
},
"api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html",
"title": "Struct MacroFileResolver.ResolvedFile | HiAPI-C# 2025",
"summary": "Struct MacroFileResolver.ResolvedFile Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target. public readonly record struct MacroFileResolver.ResolvedFile : IEquatable<MacroFileResolver.ResolvedFile> Implements IEquatable<MacroFileResolver.ResolvedFile> Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ResolvedFile(string, string, string) Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target. public ResolvedFile(string FileName, string RelPath, string AbsPath) Parameters FileName string RelPath string AbsPath string Properties AbsPath public string AbsPath { get; init; } Property Value string FileName public string FileName { get; init; } Property Value string RelPath public string RelPath { get; init; } Property Value string"
},
"api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html",
"title": "Class MacroFileResolver | HiAPI-C# 2025",
"summary": "Class MacroFileResolver Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Shared subprogram-/macro-file resolver for Fanuc-style O<n> lookups consumed by SubProgramCallSyntax (M98 / M198) and FanucMacroCallSyntax (G65). Single helper so the three path forms — file name, project-relative path, absolute path — are produced together at one site and each caller gets exactly the form it should consume: FileName — bare O####.NC form the resolver matched. Stored in JSON sections (FanucMacroCall, SubProgramCall) as the structural NC-language identifier; independent of which folder the dependency happened to be pointing at, so the JSON stays portable across environments. RelPath — relative path against the project base directory (e.g. \"NC/O1234.NC\"). Used as the IndexedFileLine label so diagnostics on inlined blocks align with the relative form already used for the main file label. AbsPath — absolute path. Used only at the ReadLines(int, string, string) call site for actual disk I/O; never persisted, never returned to JSON. Lives inside the resolver's stack frame and the segmenter's enumeration. Filename lookup order (first match wins) mirrors real Fanuc fallback: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). public static class MacroFileResolver Inheritance 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<string>, int, NcDiagnosticProgress, CancellationToken) for the main file so inlined macros stay consistent with the rest of the pipeline (diagnostics anchored to a relative label, not the resolver's transient absolute path). public static IEnumerable<IndexedFileLine> ReadLines(int fileIndex, string absPath, string labelPath) Parameters fileIndex int absPath string labelPath string Returns IEnumerable<IndexedFileLine> Resolve(string, int, string) Resolves an O<p> file against the given folder, returning all three path forms. Returns null when the folder cannot be anchored (relative folder but no baseDirectory), the resolved folder does not exist, or no filename pattern matched. folder may be absolute (used as-is) or relative (combined with baseDirectory). Empty / null folder means \"look directly in baseDirectory\". When the folder is absolute, RelPath falls back to absolute too — there's no natural relative form when the user explicitly configured an out-of-project folder. public static MacroFileResolver.ResolvedFile? Resolve(string folder, int p, string baseDirectory) Parameters folder string p int baseDirectory string Returns MacroFileResolver.ResolvedFile? 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?"
},
"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<string, double>) Writes the resolved #N → value bindings into Vars.Local on the given block. No-op when bindings is empty. Always overwrites any pre-existing Vars.Local on the block — for inlined macro bodies this is a fresh stamp. public static void ApplyLocalBindings(JsonObject json, IReadOnlyDictionary<string, double> bindings) Parameters json JsonObject bindings IReadOnlyDictionary<string, double> BuildInlinedPieces(ResolvedFile, int, IReadOnlyDictionary<string, double>, JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, List<INcDependency>, 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<T>) on 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. public static IEnumerable<SyntaxPiece> BuildInlinedPieces(MacroFileResolver.ResolvedFile resolvedFile, int l, IReadOnlyDictionary<string, double> bindings, JsonObject callRecord, JsonObject pushedCallStack, FileIndexCounterDependency counterDep, ISegmenter segmenter, List<INcDependency> ncDependencyList, int sentenceIndexBegin, NcDiagnosticProgress ncDiagnosticProgress) Parameters resolvedFile MacroFileResolver.ResolvedFile l int bindings IReadOnlyDictionary<string, double> callRecord JsonObject pushedCallStack JsonObject counterDep FileIndexCounterDependency segmenter ISegmenter ncDependencyList List<INcDependency> sentenceIndexBegin int ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable<SyntaxPiece> BuildLocalBindings(JsonObject) Translates the argument-letter map captured by the host call ({ “A”: 1.5, “B”: 2.0, ... }) into the #N → value bindings the macro body's expression evaluator will read off Vars.Local. Skips non-numeric (string) args silently — those are unresolved variable references that the evaluator's own VariableExpressionUnevaluated diagnostic will surface; writing a string into Vars.Local would just propagate the residue. public static Dictionary<string, double> BuildLocalBindings(JsonObject args) Parameters args JsonObject Returns Dictionary<string, double>"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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"
},
"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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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<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 object SiemensGotoSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensIfSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensIfSyntax.html",
"title": "Class SiemensIfSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensIfSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensInlineContextUtil.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensInlineContextUtil.html",
"title": "Class SiemensInlineContextUtil | HiAPI-C# 2025",
"summary": "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 object SiemensInlineContextUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensLoopSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensLoopSyntax.html",
"title": "Class SiemensLoopSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensLoopSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableLookup.html",
"title": "Class SiemensNamedVariableLookup | HiAPI-C# 2025",
"summary": "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 object SiemensNamedVariableLookup 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableReadingSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableReadingSyntax.html",
"title": "Class SiemensNamedVariableReadingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensNamedVariableReadingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRParameterReadingSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRParameterReadingSyntax.html",
"title": "Class SiemensRParameterReadingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensRParameterReadingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRepeatSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRepeatSyntax.html",
"title": "Class SiemensRepeatSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensRepeatSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramCallSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramCallSyntax.html",
"title": "Class SiemensSubProgramCallSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensSubProgramCallSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 SiemensCallDepthLimitExceeded 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramReturnSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramReturnSyntax.html",
"title": "Class SiemensSubProgramReturnSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensSubProgramReturnSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSystemVariableSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSystemVariableSyntax.html",
"title": "Class SiemensSystemVariableSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensSystemVariableSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Assignments\": { \"$SC_PA_ACTIV_IMMED\": \"1\" } } } #AfterBuild: { \"Vars\": { \"SystemNamed\": { \"$SC_PA_ACTIV_IMMED\": 1 } } } Remarks records the literal write on the block JSON under Vars.SystemNamed (round-trip and cache-dump visibility), carried forward block-by-block; 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); 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensUifrVariableLookup.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensUifrVariableLookup.html",
"title": "Class SiemensUifrVariableLookup | HiAPI-C# 2025",
"summary": "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 object SiemensUifrVariableLookup 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensUifrWritingSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensUifrWritingSyntax.html",
"title": "Class SiemensUifrWritingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensUifrWritingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.Siemens.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.html",
"title": "Namespace Hi.NcParsers.EvaluationSyntaxs.Siemens | HiAPI-C# 2025",
"summary": "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: 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. 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)."
},
"api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html",
"title": "Class SubProgramCallSyntax | HiAPI-C# 2025",
"summary": "Class SubProgramCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O<P> file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable<T>); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram and partial-program calls (M98 P{seq}{prog} split encoding). Custom Macro B argument-binding calls (G65 / G66 / G67) live in FanucMacroCallSyntax and FanucModalMacroSyntax — those handle the argument-letter-to-#1..#26 binding and the macro-call frame isolation that M98 deliberately does not provide. public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramCallSyntax() Parameterless instance for bundle composition (no XML state). public SubProgramCallSyntax() SubProgramCallSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public SubProgramCallSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html",
"title": "Class SubProgramReturnSyntax | HiAPI-C# 2025",
"summary": "Class SubProgramReturnSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Consumes Fanuc-style M99 subprogram-return blocks and pops one CallStack frame. Plain M99 relies on the natural pipeline tail — the inlined body's last block is followed in layers[0] by the caller's next block, so the “return” happens implicitly; this syntax only consumes the M99 trigger (so UnconsumedCheckSyntax doesn't warn), stamps a SubProgramReturn diagnostic section, and writes the popped CallStack for downstream blocks to carry. M99 P{seq} additionally redirects control flow to the caller's N{seq} block via ReplaceSource(IEnumerable<T>). The caller's file is resolved from the popped frame's CallerFilePath; the scan uses the same LabelScanUtil.SegmentAndSkipUntilLabel helper as FanucGotoSyntax, with hardcoded Fanuc-default probes (QuoteCommentSyntax + HeadIndexSyntax with symbol \"N\") because the M99 P semantic itself is Fanuc-family-only and Mazak / Syntec follow the same conventions. The iteration is counted against FanucGotoIterationDependency, sharing the same runaway-loop guard as GOTO — keyed on the same (FileName, TargetN) bucket so a tight M98 → M99 P → M98 … loop trips the same threshold. Pipeline placement: same Evaluation bundle slot it always occupied, right after SubProgramCallSyntax at the head. Needs FanucGotoIterationDependency, ProjectFolderDependency, SegmenterDependency, SyntaxPieceLayerDependency, FileIndexCounterDependency on the dep list when M99 P{seq} is to fire; without them the plain-M99 path still works and the P-jump emits a configuration warning. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramReturnSyntax() Parameterless instance with default probe list. public SubProgramReturnSyntax() SubProgramReturnSyntax(XElement, string, IProgress<IMessage>) Loads LabelProbeSyntaxes from XML produced by MakeXmlSource(string, string, bool). An absent wrapper falls back to the default probe list. public SubProgramReturnSyntax(XElement src, string baseDirectory, IProgress<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 probe syntaxes run on each candidate block during the M99 P{seq} caller-side scan, before the integer label predicate fires. Defaults match Fanuc / Mazak / Syntec (parenthesised comment stripper + N head-index parser); API customers can swap or extend (e.g. add a TailCommentSyntax for ; end-of-block comments, or insert a BlockSkipSyntax to exclude /-prefixed candidates) without subclassing. Mirrors the same hosted-list pattern as LabelProbeSyntaxes. public List<ISituNcSyntax> LabelProbeSyntaxes { get; set; } Property Value List<ISituNcSyntax> 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html",
"title": "Class VariableEvaluatorSyntax | HiAPI-C# 2025",
"summary": "Class VariableEvaluatorSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing.<tag> (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). Formula mirror tree — when either pass actually performs a non-trivial expression evaluation (i.e. the RHS / tag value was not already a pure literal and the evaluator returned a finite value), the original expression string is mirrored to a parallel Formula.<same path> entry at the root of the block JSON. 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 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. public class VariableEvaluatorSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VariableEvaluatorSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VariableEvaluatorSyntax() Default constructor. public VariableEvaluatorSyntax() VariableEvaluatorSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool); restores RuntimeVariableLookups via XFactory dispatch. A missing <Dialect> element falls back to Fanuc (legacy files). public VariableEvaluatorSyntax(XElement src) Parameters src XElement Fields FormulaKey Top-level key under which the Formula mirror tree is written. public const string FormulaKey = \"Formula\" Field Value string Properties 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 Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string RuntimeVariableLookups Per-preset list of context-sensitive lookups (block-local Vars.Local / Vars.Volatile, position reads, runtime-state reads). Walked in list order, before the dependency-bound IVariableLookups. Brand presets configure this; the list is XML-serialised so a runner rebuilt from XML keeps its brand-specific lookups (each impl is stateless and dispatches by its XName via XFactory). public List<IRuntimeVariableLookup> RuntimeVariableLookups { get; set; } Property Value List<IRuntimeVariableLookup> 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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html",
"title": "Class VolatileVariableReadingSyntax | HiAPI-C# 2025",
"summary": "Class VolatileVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax. public class VolatileVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VolatileVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VolatileVariableReadingSyntax() Default constructor. public VolatileVariableReadingSyntax() VolatileVariableReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public VolatileVariableReadingSyntax(XElement src) Parameters src XElement Fields VolatileMax Inclusive upper bound of the non-retained common range (#499). public const int VolatileMax = 499 Field Value int VolatileMin Inclusive lower bound of the non-retained common range (#100). public const int VolatileMin = 100 Field Value int Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.EvaluationSyntaxs.html": {
"href": "api/Hi.NcParsers.EvaluationSyntaxs.html",
"title": "Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.EvaluationSyntaxs Classes CallStackUtil Push / pop helpers for the per-block CallStack section. Both produce a fresh deep-cloned JsonObject ready to stamp onto an inlined piece (push site) or onto an M99 return block (pop site); the caller is responsible for deep-cloning again if it distributes the same stamp across multiple pieces of an L-repetition. Pairs with ModalCarrySyntax at the Logic stage: explicit push / pop writes seed the section at frame boundaries, ModalCarry copies it forward to every block in between so each block is self-contained for cache-dump readers and downstream consumers (notably M99 P{seq} reading the top frame's CallerFilePath). LabelScanUtil Shared “re-segment a file and skip pieces until a label matches” scan, used by both FanucGotoSyntax (unconditional GOTO redirect) and SubProgramReturnSyntax (M99 P{seq} jump into the caller file). Reads the file via ReadLines(int, string, string), segments through the provided ISegmenter, runs the 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). MacroFileResolver Shared subprogram-/macro-file resolver for Fanuc-style O<n> lookups consumed by SubProgramCallSyntax (M98 / M198) and FanucMacroCallSyntax (G65). Single helper so the three path forms — file name, project-relative path, absolute path — are produced together at one site and each caller gets exactly the form it should consume: FileName — bare O####.NC form the resolver matched. Stored in JSON sections (FanucMacroCall, SubProgramCall) as the structural NC-language identifier; independent of which folder the dependency happened to be pointing at, so the JSON stays portable across environments. RelPath — relative path against the project base directory (e.g. \"NC/O1234.NC\"). Used as the IndexedFileLine label so diagnostics on inlined blocks align with the relative form already used for the main file label. AbsPath — absolute path. Used only at the ReadLines(int, string, string) call site for actual disk I/O; never persisted, never returned to JSON. Lives inside the resolver's stack frame and the segmenter's enumeration. Filename lookup order (first match wins) mirrors real Fanuc fallback: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). MacroInlineUtil Shared inline mechanism for Fanuc Custom Macro B body expansion — used by both FanucMacroCallSyntax (one-shot) and FanucModalMacroSyntax's expansion phase (modal trigger). Both callers do the same three things on every produced SyntaxPiece: stamp a FanucMacroCall clone, stamp a fresh MacroFrame id, and stamp argument bindings into Vars.Local. Centralising lets the two call sites stay in lock-step — frame allocation, file-index allocation, and the inline-piece JSON shape are guaranteed identical. Frame ids share the same FileIndexCounterDependency counter as file indices — both just need within-session uniqueness and the counter is rewound on session start in lock-step with the pipeline. The main NC file is allocated index 0 first, so all inline frame ids land at > 0 and never collide with main. RetainedCommonVariableReadingSyntax Obtains values for Fanuc-style retained common variables (#500-#999) by consuming literal numeric assignments from Parsing.Assignments.#nnn and writing them straight to a registered RetainedCommonVariableTable. No SyntaxPiece JSON mirror is created — the table is the single source of truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions. Only literal numeric RHS values are consumed by this syntax (#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result through the same table. The two syntaxes are decoupled. If no RetainedCommonVariableTable is registered on the runner's NcDependencyList, this syntax is a no-op. SubProgramCallSyntax Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O<P> file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable<T>); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram and partial-program calls (M98 P{seq}{prog} split encoding). Custom Macro B argument-binding calls (G65 / G66 / G67) live in FanucMacroCallSyntax and FanucModalMacroSyntax — those handle the argument-letter-to-#1..#26 binding and the macro-call frame isolation that M98 deliberately does not provide. SubProgramReturnSyntax Consumes Fanuc-style M99 subprogram-return blocks and pops one CallStack frame. Plain M99 relies on the natural pipeline tail — the inlined body's last block is followed in layers[0] by the caller's next block, so the “return” happens implicitly; this syntax only consumes the M99 trigger (so UnconsumedCheckSyntax doesn't warn), stamps a SubProgramReturn diagnostic section, and writes the popped CallStack for downstream blocks to carry. M99 P{seq} additionally redirects control flow to the caller's N{seq} block via ReplaceSource(IEnumerable<T>). The caller's file is resolved from the popped frame's CallerFilePath; the scan uses the same LabelScanUtil.SegmentAndSkipUntilLabel helper as FanucGotoSyntax, with hardcoded Fanuc-default probes (QuoteCommentSyntax + HeadIndexSyntax with symbol \"N\") because the M99 P semantic itself is Fanuc-family-only and Mazak / Syntec follow the same conventions. The iteration is counted against FanucGotoIterationDependency, sharing the same runaway-loop guard as GOTO — keyed on the same (FileName, TargetN) bucket so a tight M98 → M99 P → M98 … loop trips the same threshold. Pipeline placement: same Evaluation bundle slot it always occupied, right after SubProgramCallSyntax at the head. Needs FanucGotoIterationDependency, ProjectFolderDependency, SegmenterDependency, SyntaxPieceLayerDependency, FileIndexCounterDependency on the dep list when M99 P{seq} is to fire; without them the plain-M99 path still works and the P-jump emits a configuration warning. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. VariableEvaluatorSyntax Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing.<tag> (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). Formula mirror tree — when either pass actually performs a non-trivial expression evaluation (i.e. the RHS / tag value was not already a pure literal and the evaluator returned a finite value), the original expression string is mirrored to a parallel Formula.<same path> entry at the root of the block JSON. 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 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. VolatileVariableReadingSyntax Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax. Structs MacroFileResolver.ResolvedFile Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target. 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."
},
"api/Hi.NcParsers.IGetSentence.html": {
"href": "api/Hi.NcParsers.IGetSentence.html",
"title": "Interface IGetSentence | HiAPI-C# 2025",
"summary": "Interface IGetSentence Namespace Hi.NcParsers Assembly HiMech.dll Abstraction for a source that carries a Sentence. public interface IGetSentence Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSentence() Returns the source Sentence carried by this object. Sentence GetSentence() Returns Sentence"
},
"api/Hi.NcParsers.ISentenceCarrier.html": {
"href": "api/Hi.NcParsers.ISentenceCarrier.html",
"title": "Interface ISentenceCarrier | HiAPI-C# 2025",
"summary": "Interface ISentenceCarrier Namespace Hi.NcParsers Assembly HiMech.dll Carries a reference to a source Sentence together with its execution-order SentenceIndex. Used as the cross-process alignment carrier for diagnostics, messages, ClStripPos, MachiningStep, etc. — both the source content (via GetSentence()) and the execution-order position (via SentenceIndex) are available without needing two separate references. public interface ISentenceCarrier : IGetSentence, ISentenceIndexed Inherited Members IGetSentence.GetSentence() ISentenceIndexed.SentenceIndex Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcParsers.ISentenceIndexed.html": {
"href": "api/Hi.NcParsers.ISentenceIndexed.html",
"title": "Interface ISentenceIndexed | HiAPI-C# 2025",
"summary": "Interface ISentenceIndexed Namespace Hi.NcParsers Assembly HiMech.dll Abstraction for an object that carries a SentenceIndex — a 0-based ordinal of its source Sentence in NC execution order. Use as a cross-process alignment key (messages, ClStripPos, MachiningStep, etc.) when the (FileIndex, LineIndex) source order is not enough because SubProgram inline reorders blocks relative to source order. public interface ISentenceIndexed Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SentenceIndex 0-based ordinal in pipeline execution order. int SentenceIndex { get; } Property Value int"
},
"api/Hi.NcParsers.ISessionResettable.html": {
"href": "api/Hi.NcParsers.ISessionResettable.html",
"title": "Interface ISessionResettable | HiAPI-C# 2025",
"summary": "Interface ISessionResettable Namespace Hi.NcParsers Assembly HiMech.dll Marker for objects that hold session-scoped runtime state which must be 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 PipelineNcDependencyList and NcSyntaxList on the session-init edge and calls OnSessionReset() on every match. Distinct from IPowerResettable: power-reset clears retained-but-volatile state on a controller power cycle (e.g., Fanuc #100-#499), an edge that survives ordinary session boundaries. Session-reset clears state whose lifetime is one pipeline pass (iteration counters, file-index allocators, etc.). public interface ISessionResettable Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods OnSessionReset() Clears the session-scoped subset owned by this object. Called by 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. void OnSessionReset()"
},
"api/Hi.NcParsers.Initializers.HomeMcInitializer.html": {
"href": "api/Hi.NcParsers.Initializers.HomeMcInitializer.html",
"title": "Class HomeMcInitializer | HiAPI-C# 2025",
"summary": "Class HomeMcInitializer Namespace Hi.NcParsers.Initializers Assembly HiMech.dll Sets the initial MachineCoordinateState on the first SyntaxPiece from IHomeMcConfig and 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. public class HomeMcInitializer : INcInitializer, IMakeXmlSource Inheritance object HomeMcInitializer Implements INcInitializer 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HomeMcInitializer() Creates a new HomeMcInitializer. public HomeMcInitializer() HomeMcInitializer(XElement) Creates a HomeMcInitializer from an XML source element. public HomeMcInitializer(XElement src) Parameters src XElement Properties Name Display/registration name of the initializer. public string Name { get; } Property Value string XName XML element name used to register and serialize this initializer. public static string XName { get; } Property Value string Methods Initialize(JsonObject, List<INcDependency>) Writes initial sections into jsonObject, optionally using values resolved from ncDependencyList. public void Initialize(JsonObject jsonObject, List<INcDependency> ncDependencyList) Parameters jsonObject JsonObject ncDependencyList List<INcDependency> MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Initializers.INcInitializer.html": {
"href": "api/Hi.NcParsers.Initializers.INcInitializer.html",
"title": "Interface INcInitializer | HiAPI-C# 2025",
"summary": "Interface INcInitializer Namespace Hi.NcParsers.Initializers Assembly HiMech.dll Populates the init-block JSON sections (e.g. home position, static defaults) before the soft-NC runtime processes any source NC syntax. Implementations such as HomeMcInitializer and StaticInitializer write into the supplied JsonObject. public interface INcInitializer : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display/registration name of the initializer. string Name { get; } Property Value string Methods Initialize(JsonObject, List<INcDependency>) Writes initial sections into jsonObject, optionally using values resolved from ncDependencyList. void Initialize(JsonObject jsonObject, List<INcDependency> ncDependencyList) Parameters jsonObject JsonObject ncDependencyList List<INcDependency>"
},
"api/Hi.NcParsers.Initializers.StaticInitializer.html": {
"href": "api/Hi.NcParsers.Initializers.StaticInitializer.html",
"title": "Class StaticInitializer | HiAPI-C# 2025",
"summary": "Class StaticInitializer Namespace Hi.NcParsers.Initializers Assembly HiMech.dll Merges a fixed Initialization JSON snippet into the init-block JSON. Used to seed brand-default sections (e.g. G54, G80) before any source NC syntax is processed. public class StaticInitializer : INcInitializer, IMakeXmlSource Inheritance object StaticInitializer Implements INcInitializer 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StaticInitializer() Creates an empty StaticInitializer. public StaticInitializer() StaticInitializer(XElement) Creates a StaticInitializer from an XML source element, reading the embedded JSON from the Initialization child element. public StaticInitializer(XElement src) Parameters src XElement Properties Default An empty StaticInitializer with no preset sections. public static StaticInitializer Default { get; } Property Value StaticInitializer HeidenhainDefault Heidenhain default: no coordinate offset active (datum tables used on demand). public static StaticInitializer HeidenhainDefault { get; } Property Value StaticInitializer Initialization JSON sections to merge into the init-block JSON during Initialize(JsonObject, List<INcDependency>). public JsonObject Initialization { get; set; } Property Value JsonObject IsoDefault ISO/Fanuc default: G54 active, canned-cycle cancelled (G80). public static StaticInitializer IsoDefault { get; } Property Value StaticInitializer Name Display/registration name of the initializer. public string Name { get; } Property Value string SiemensDefault 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. public static StaticInitializer SiemensDefault { get; } Property Value StaticInitializer XName XML element name used to register and serialize this initializer. public static string XName { get; } Property Value string Methods Initialize(JsonObject, List<INcDependency>) Writes initial sections into jsonObject, optionally using values resolved from ncDependencyList. public void Initialize(JsonObject jsonObject, List<INcDependency> ncDependencyList) Parameters jsonObject JsonObject ncDependencyList List<INcDependency> MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Initializers.html": {
"href": "api/Hi.NcParsers.Initializers.html",
"title": "Namespace Hi.NcParsers.Initializers | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Initializers Classes HomeMcInitializer Sets the initial MachineCoordinateState on the first SyntaxPiece from IHomeMcConfig and 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. StaticInitializer Merges a fixed Initialization JSON snippet into the init-block JSON. Used to seed brand-default sections (e.g. G54, G80) before any source NC syntax is processed. Interfaces INcInitializer Populates the init-block JSON sections (e.g. home position, static defaults) before the soft-NC runtime processes any source NC syntax. Implementations such as HomeMcInitializer and StaticInitializer write into the supplied JsonObject."
},
"api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html": {
"href": "api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html",
"title": "Class CleanupSyntax | HiAPI-C# 2025",
"summary": "Class CleanupSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. public class CleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CleanupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples new CleanupSyntax(\"ProgramToMcTransform\", \"ToolOrientation\") Constructors CleanupSyntax(params string[]) Creates a CleanupSyntax seeded with the given keys. public CleanupSyntax(params string[] keys) Parameters keys string[] JSON keys to remove on each block; copied into Keys. CleanupSyntax(XElement) Reconstructs a CleanupSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public CleanupSyntax(XElement src) Parameters src XElement XML element with one Key child per entry in Keys. Properties Keys JSON keys to remove from JsonObject each block. public List<string> Keys { 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 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"
},
"api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html": {
"href": "api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html",
"title": "Class ProgramXyzBackfillSyntax | HiAPI-C# 2025",
"summary": "Class ProgramXyzBackfillSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug / observability back-fill: writes ProgramXyz onto blocks that did not have it written by upstream logic syntaxes (e.g. HomeMcInitializer block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the last block that stored a ProgramXyz. Skips the block entirely when either of these holds: The block already has ProgramXyz written — e.g. by ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax, ReferenceReturnSyntax, McAbcXyzFallbackSyntax, or RadiusCompensationSyntax. The effective value equals the last stored value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; ItemsKey items are intentionally skipped (they are managed by Hi.NcParsers.LogicSyntaxs.CompoundMotionSyntaxUtil and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of NcSyntaxList, after UnconsumedCheckSyntax. Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output (IAct stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier. public class ProgramXyzBackfillSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzBackfillSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramXyzBackfillSyntax() Creates a default ProgramXyzBackfillSyntax. public ProgramXyzBackfillSyntax() Fields AddedByValue Value written under AddedByKey on the ProgramXyz JSON object when this syntax synthesized the value. Absent on sub-objects authored by LogicSyntaxs-stage writers (e.g. ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax) — the AddedByKey is only present when a post-Logic / Inspection stage writer (this syntax, or ModalCarrySyntax) injected the sub-object. Purely informational — no downstream syntax / semantic reads this marker. Intended for cache-file diffing: its presence means \"this block did not originally command program motion; the value is a modal back-fill to make debug dumps more complete\". public const string AddedByValue = \"Backfill\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html": {
"href": "api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html",
"title": "Class SnapshotSyntax | HiAPI-C# 2025",
"summary": "Class SnapshotSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug-time JsonObject capture: deep-clones every key on the current JsonObject (except the SnapshotKey envelope itself) into json[SnapshotKey][SectionName], leaving the rest of the block untouched. Insertable at any position in NcSyntaxList — placement determines what stage the dump captures (e.g. drop after the Parsing bundle for \"after-parsing\", drop after the Logic bundle for \"after-logic\"). Two instances with different SectionName values can coexist on the same pipeline and their dumps end up under sibling keys of the same SnapshotKey envelope, so a single cache file shows the data at every captured stage in one place. Excluding the SnapshotKey envelope from the clone keeps each captured section flat: it reflects \"everything else on the block at that stage\", and re-running through additional SnapshotSyntax instances never nests past one level. Set IsEnabled = false to keep the configuration in place but skip the capture (no JSON mutation, no allocation) — convenient for toggling a debug pipeline without removing the entries. public class SnapshotSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SnapshotSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SnapshotSyntax() Creates a SnapshotSyntax with no SectionName set yet. public SnapshotSyntax() SnapshotSyntax(string) Creates a SnapshotSyntax with the given SectionName. public SnapshotSyntax(string sectionName) Parameters sectionName string Sub-key under SnapshotKey for this instance's capture. SnapshotSyntax(XElement) Reconstructs a SnapshotSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public SnapshotSyntax(XElement src) Parameters src XElement XML element carrying SectionName and IsEnabled; null is treated as defaults. Fields SnapshotKey Top-level JSON envelope key under which captured sections are stored. Each SnapshotSyntax instance writes a sibling key (named by SectionName) inside this envelope. public const string SnapshotKey = \"Snapshot\" Field Value string Properties IsEnabled When false, Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) is a no-op — keeps the entry in the syntax list for easy toggling without re-editing the project. public bool IsEnabled { get; set; } Property Value bool Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string SectionName Sub-key inside the SnapshotKey envelope under which this instance writes its capture. Two instances configured with the same SectionName are last-writer-wins on a given block. Required: Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) throws InvalidOperationException when this is null or empty (a misconfiguration the user should see, not a silent skip). public string SectionName { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html": {
"href": "api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html",
"title": "Class UnconsumedCheckSyntax | HiAPI-C# 2025",
"summary": "Class UnconsumedCheckSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Emits diagnostic warnings for content remaining after all upstream syntaxes have run: unconsumed Parsing entries and non-empty UnparsedText. Flags listed in ExcludedFlags are silently ignored. Must be placed at the end of NcSyntaxList. public class UnconsumedCheckSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnconsumedCheckSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors UnconsumedCheckSyntax() Creates a checker with an empty ExcludedFlags set. public UnconsumedCheckSyntax() UnconsumedCheckSyntax(XElement) Loads excluded flag names from <Exclude> child elements. public UnconsumedCheckSyntax(XElement src) Parameters src XElement Root element named XName. Properties ExcludedFlags 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. public HashSet<string> ExcludedFlags { get; set; } Property Value HashSet<string> 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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.NcParsers.InspectionSyntaxs.html": {
"href": "api/Hi.NcParsers.InspectionSyntaxs.html",
"title": "Namespace Hi.NcParsers.InspectionSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.InspectionSyntaxs Classes CleanupSyntax Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. ProgramXyzBackfillSyntax Debug / observability back-fill: writes ProgramXyz onto blocks that did not have it written by upstream logic syntaxes (e.g. HomeMcInitializer block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the last block that stored a ProgramXyz. Skips the block entirely when either of these holds: The block already has ProgramXyz written — e.g. by ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax, ReferenceReturnSyntax, McAbcXyzFallbackSyntax, or RadiusCompensationSyntax. The effective value equals the last stored value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; ItemsKey items are intentionally skipped (they are managed by Hi.NcParsers.LogicSyntaxs.CompoundMotionSyntaxUtil and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of NcSyntaxList, after UnconsumedCheckSyntax. Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output (IAct stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier. SnapshotSyntax Debug-time JsonObject capture: deep-clones every key on the current JsonObject (except the SnapshotKey envelope itself) into json[SnapshotKey][SectionName], leaving the rest of the block untouched. Insertable at any position in NcSyntaxList — placement determines what stage the dump captures (e.g. drop after the Parsing bundle for \"after-parsing\", drop after the Logic bundle for \"after-logic\"). Two instances with different SectionName values can coexist on the same pipeline and their dumps end up under sibling keys of the same SnapshotKey envelope, so a single cache file shows the data at every captured stage in one place. Excluding the SnapshotKey envelope from the clone keeps each captured section flat: it reflects \"everything else on the block at that stage\", and re-running through additional SnapshotSyntax instances never nests past one level. Set IsEnabled = false to keep the configuration in place but skip the capture (no JSON mutation, no allocation) — convenient for toggling a debug pipeline without removing the entries. UnconsumedCheckSyntax Emits diagnostic warnings for content remaining after all upstream syntaxes have run: unconsumed Parsing entries and non-empty UnparsedText. Flags listed in ExcludedFlags are silently ignored. Must be placed at the end of NcSyntaxList."
},
"api/Hi.NcParsers.Keywords.BlockSkip.html": {
"href": "api/Hi.NcParsers.Keywords.BlockSkip.html",
"title": "Class BlockSkip | HiAPI-C# 2025",
"summary": "Class BlockSkip Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Optional block skip marker extracted from the head of an NC block. ISO 6983 / Fanuc calls this feature Block Delete (BDT switch); Siemens / Syntec / Mazak use the same / prefix with matching behaviour. The section is only present on blocks that carry a / prefix. Whether the block's NC commands are actually skipped at runtime depends on IBlockSkipConfig: Config absent or the Layer bit OFF → the / prefix is consumed, Body is left null, and the rest of the line parses as a regular NC block (comments still take effect). Config present and the Layer bit ON → the rest of the line is moved into Body and cleared from UnparsedText, so downstream parsing syntaxes see nothing and no NC action is emitted. Comment syntaxes run before this one so comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. public class BlockSkip Inheritance object BlockSkip Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Body NC commands from the block that were moved out of UnparsedText because the skip took effect (after comment and CsScript extraction, with surrounding whitespace trimmed). Represents the semantic payload of the skipped block — not a verbatim snapshot; recover human-readable NC text with a dedicated formatter if needed. null when the skip did not take effect (no IBlockSkipConfig or its layer bit was OFF); in that case the block's commands are still in UnparsedText and parse normally. public string Body { get; set; } Property Value string Layer Skip layer (1..9). A bare / without a digit is layer 1 (most controllers treat / and /1 as the same switch). /2../9 map to layers 2..9. public int Layer { get; set; } Property Value int Symbol Delimiter symbol as it appeared in the NC block (always \"/\"). public string Symbol { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.CallFrame.html": {
"href": "api/Hi.NcParsers.Keywords.CallFrame.html",
"title": "Class CallFrame | HiAPI-C# 2025",
"summary": "Class CallFrame Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One entry in Frames. Holds the caller-side information consumers need to “unwind” or “look back” — currently only the relative file path of the caller, used by SubProgramReturnSyntax on M99 P{seq} to locate the caller's N{seq} block. public class CallFrame Inheritance object CallFrame Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CallerFilePath Project-relative file path of the calling block — same form as FilePath on the caller side. Used by M99 P{seq} to re-segment the caller file and skip ahead to N{seq}. public string CallerFilePath { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.CallStack.html": {
"href": "api/Hi.NcParsers.Keywords.CallStack.html",
"title": "Class CallStack | HiAPI-C# 2025",
"summary": "Class CallStack Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON-section data shape representing the active call-frame stack on a block — pushed by call-and-inline syntaxes (SubProgramCallSyntax for M98/M198, FanucMacroCallSyntax for G65, and FanucModalMacroSyntax's expansion phase for G66 implicit triggers) and popped by SubProgramReturnSyntax on M99. Every block between push and pop carries the section forward via ModalCarrySyntax; the caller's blocks before push and after pop carry the surrounding stack state (typically empty when running from the main file). The section is wrapped in a JsonObject rather than exposed as a bare JsonArray so it fits ModalCarry's \"deep-clone JsonObject\" carry pattern — the array of frames lives inside Frames. public class CallStack Inheritance object CallStack Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Frames Ordered list of active call frames, bottom-of-stack first. Each entry is a CallFrame-shaped JSON object. Length 0 means the block is in the main (top-level) frame. public JsonArray Frames { get; set; } Property Value JsonArray"
},
"api/Hi.NcParsers.Keywords.CannedCycle.html": {
"href": "api/Hi.NcParsers.Keywords.CannedCycle.html",
"title": "Class CannedCycle | HiAPI-C# 2025",
"summary": "Class CannedCycle Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ICannedCycleDef. public class CannedCycle : ICannedCycleDef Inheritance object CannedCycle Implements ICannedCycleDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Params Resolved absolute cycle parameters: X, Y, Z, R, Q, F, P, K. Used for modal lookback so the next repeat block can merge its own overrides with the previously-resolved values. Absent on G80 blocks. public JsonObject Params { get; set; } Property Value JsonObject ReturnMode Return level mode: “G98” (initial Z) or “G99” (R-point). Only meaningful when Term is an active cycle code; absent on G80 blocks. public string ReturnMode { get; set; } Property Value string Term NC term of the canned-cycle-group code on this block (“G81”, “G82”, ..., “G89”, or “G80” for explicit cancel). Modal-repeat blocks carry the same term as the most recent active cycle. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Comment.html": {
"href": "api/Hi.NcParsers.Keywords.Comment.html",
"title": "Class Comment | HiAPI-C# 2025",
"summary": "Class Comment Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Comment extracted from an NC block. Symbol identifies the comment style; Text holds the content without the symbol. Downstream syntaxes (e.g., CsScript) may further trim Text after extracting embedded markers. public class Comment Inheritance object Comment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Symbol Comment delimiter used in the NC block (e.g., \"%\", \"()\", \";\", \"//\"). public string Symbol { get; set; } Property Value string Text Comment body without the delimiter symbol. Initially set by the comment syntax; may be trimmed by CsScriptSyntax after script extraction. public string Text { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.CompoundMotion.html": {
"href": "api/Hi.NcParsers.Keywords.CompoundMotion.html",
"title": "Class CompoundMotion | HiAPI-C# 2025",
"summary": "Class CompoundMotion Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ICompoundMotionDef. public class CompoundMotion : ICompoundMotionDef Inheritance object CompoundMotion Implements ICompoundMotionDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FeedrateKey JSON key for feedrate (mm/s) inside the Hi.Motion section of non-rapid items. Absent on rapid items whose speed is determined by machine config. public const string FeedrateKey = \"Feedrate_mmds\" Field Value string ItemsKey JSON array key for the sub-operation items within the section. Items are discriminated by Hi.Motion or Dwell key presence. public const string ItemsKey = \"Items\" Field Value string Properties Term CNC term that triggered this compound motion (e.g., “G28”, “G81”). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Coolant.html": {
"href": "api/Hi.NcParsers.Keywords.Coolant.html",
"title": "Class Coolant | HiAPI-C# 2025",
"summary": "Class Coolant Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ICoolantDef. public class Coolant : ICoolantDef Inheritance object Coolant Implements ICoolantDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Flood Flood coolant (corresponds to M08). public const string Flood = \"Flood\" Field Value string Mist Mist coolant (corresponds to M07). public const string Mist = \"Mist\" Field Value string Off Coolant off (corresponds to M09). public const string Off = \"Off\" Field Value string Properties IsOn Whether any coolant is currently active. public bool IsOn { get; set; } Property Value bool Mode Abstract coolant mode (Flood / Mist / Off). public string Mode { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.CoordinateOffset.html": {
"href": "api/Hi.NcParsers.Keywords.CoordinateOffset.html",
"title": "Class CoordinateOffset | HiAPI-C# 2025",
"summary": "Class CoordinateOffset Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1G59.9. Siemens: G54G57 + G505G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). public class CoordinateOffset Inheritance object CoordinateOffset Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 0.0, \"Offset_Y\": 0.0, \"Offset_Z\": -100.0 } Properties CoordinateId Active coordinate system ID: “G54”, “G55”, ..., “G59.9”. public string CoordinateId { get; set; } Property Value string Offset_X X component of the coordinate offset (mm). public double Offset_X { get; set; } Property Value double Offset_Y Y component of the coordinate offset (mm). public double Offset_Y { get; set; } Property Value double Offset_Z Z component of the coordinate offset (mm). public double Offset_Z { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.CsScript.html": {
"href": "api/Hi.NcParsers.Keywords.CsScript.html",
"title": "Class CsScript | HiAPI-C# 2025",
"summary": "Class CsScript Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section-key holder for inline C# scripts attached to an NC block. Carries BeginScript (run before the block's acts) and EndScript (run after). Resolved by CsScriptBeginSemantic and CsScriptEndSemantic. public class CsScript Inheritance object CsScript Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties BeginScript The script effect before the NC block excuting. public string BeginScript { get; set; } Property Value string EndScript The script effect after the NC block excuted. public string EndScript { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Dwell.html": {
"href": "api/Hi.NcParsers.Keywords.Dwell.html",
"title": "Class Dwell | HiAPI-C# 2025",
"summary": "Class Dwell Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IDwellDef. public class Dwell : IDwellDef Inheritance object Dwell Implements IDwellDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Time Dwell time in seconds. public double Time { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html": {
"href": "api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html",
"title": "Class FanucKeywords | HiAPI-C# 2025",
"summary": "Class FanucKeywords Namespace Hi.NcParsers.Keywords.Fanuc Assembly HiMech.dll Fanuc-specific G-code and M-code constants. For ISO standard codes shared across brands, see IsoKeywords. public static class FanucKeywords Inheritance object FanucKeywords Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields G12p1 G12.1: start Polar Coordinate Interpolation (turn-mill face milling). The linear axis word (X) commands a diameter value; the rotary axis word (C) commands a hypothetical Cartesian coordinate in linear units. See PolarInterpolationSyntax. 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 G43.4: TCPM (Tool Center Point Management / RTCP). Fanuc-specific. Siemens equivalent: TRAORI. Heidenhain equivalent: M128. public const string G43p4 = \"G43.4\" Field Value string"
},
"api/Hi.NcParsers.Keywords.Fanuc.html": {
"href": "api/Hi.NcParsers.Keywords.Fanuc.html",
"title": "Namespace Hi.NcParsers.Keywords.Fanuc | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Keywords.Fanuc Classes FanucKeywords Fanuc-specific G-code and M-code constants. For ISO standard codes shared across brands, see IsoKeywords."
},
"api/Hi.NcParsers.Keywords.FanucGoto.html": {
"href": "api/Hi.NcParsers.Keywords.FanucGoto.html",
"title": "Class FanucGoto | HiAPI-C# 2025",
"summary": "Class FanucGoto Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc Custom Macro B GOTO record. Stamped on the host block by FanucGotoSyntax after the control-flow decision has been made; produced earlier by FanucGotoParsingSyntax as a parsing-stage sub-section (Parsing.FanucGoto) carrying the raw captured fields. Two source forms map to the same shape: GOTO <n> — unconditional jump. Condition is null. IF [<bool-expr>] GOTO <n> — conditional jump. Condition holds the expression text from inside the brackets. At parsing time N is a raw token from the source — it may be a literal (\"100\"), a variable reference (\"#1\"), or a bracketed expression (\"#[#2+5]\"). VariableEvaluatorSyntax substitutes a resolved literal back into the same field in the Evaluation bundle; FanucGotoSyntax then int.TryParses the final string to produce an int target. Lifecycle of the condition fields. Condition is written at Parsing time as the raw expression text and substituted in place by VariableEvaluatorSyntax pass-2 — the original text is preserved at Formula.FanucGoto.Condition when substitution succeeds. ConditionEvaluated is the host-level stamp written by FanucGotoSyntax carrying the tri-state truthy outcome. public class FanucGoto Inheritance object FanucGoto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Condition Raw boolean expression text from inside the IF [...] brackets at Parsing time; substituted to a numeric JsonValue in place by VariableEvaluatorSyntax when the expression evaluates successfully. The original text survives at Formula.FanucGoto.Condition. Null for the unconditional form. Note: not written on the host-level stamp; the gate outcome lives at ConditionEvaluated. public string Condition { get; set; } Property Value string ConditionEvaluated Tri-state outcome of evaluating the IF-form's boolean condition, stamped on the host block by FanucGotoSyntax: true — condition met (gate fires). false — condition not met (gate falls through silently). null — evaluator could not produce a finite truth value (vacant variable, parse error, NaN / ±∞), or the host block is the unconditional GOTO form. The original expression text is preserved at Formula.FanucGoto.Condition by VariableEvaluatorSyntax. public bool? ConditionEvaluated { get; set; } Property Value bool? Fired Whether the GOTO actually redirected control flow on this block. False on conditional GOTOs whose condition evaluated to false, on conditional GOTOs whose condition was not evaluable, and on iteration-limit-exceeded blocks. The host block is preserved in either case so diagnostic readers can still see the call. public bool Fired { get; set; } Property Value bool N Target sequence-number expression — kept as a string so the in-place evaluator can substitute \"#1\" → “3” before the Evaluation stage parses it as an int. public string N { get; set; } Property Value string Term Triggering phrase: “GOTO” for the unconditional form, “IF...GOTO” for the conditional form. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.FanucIfThen.html": {
"href": "api/Hi.NcParsers.Keywords.FanucIfThen.html",
"title": "Class FanucIfThen | HiAPI-C# 2025",
"summary": "Class FanucIfThen Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc Custom Macro B IF [<cond>] THEN <body> single-block conditional record. Stamped on the host block by FanucIfThenSyntax after the gate decision; produced earlier by FanucIfThenParsingSyntax as a parsing-stage sub-section (Parsing.FanucIfThen) carrying the raw captured fields plus an internal PendingAssignments sub-object harvested from the body text. Spec: IF [bool-expr] THEN <stmt> executes <stmt> only when the condition is truthy. Unlike FanucGoto's conditional form there is no jump — the body affects the current block only, no source splice, no label scan, no iteration watchdog. The most common body shape is a single Custom Macro B assignment (#nnn = <expr>); multiple assignments in one body are also accepted and lifted together. Condition is held as a string at parsing time so VariableEvaluatorSyntax's pass-2 tree walk can substitute it to a numeric JsonValue in place; the FanucIfThenSyntax tail then reads the resolved node polymorphically via the same ReadCondition shape used by FanucGotoSyntax. public class FanucIfThen Inheritance object FanucIfThen Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Applied Whether the body actually fired on this block. False on conditions that evaluated to zero, on conditions the evaluator could not resolve, and on bodies that did not parse as one or more assignments (a G-code-only body for example, currently unsupported and warned). The host block is preserved in either case so diagnostic readers can still see the IF-THEN call site. public bool Applied { get; set; } Property Value bool BodyText Raw body text after the THEN keyword, retained verbatim for diagnostics and round-trip visibility. The structured sub-section actually lifted on a truthy condition lives at Parsing.FanucIfThen.PendingAssignments, populated by the parsing syntax via NcSyntaxUtil's GrabTagAssignment. public string BodyText { get; set; } Property Value string Condition Raw boolean expression text from inside the IF [...] brackets at Parsing time; substituted to a numeric JsonValue in place by VariableEvaluatorSyntax's pass-2 tree walk when the expression evaluates successfully. The original text survives at Formula.FanucIfThen.Condition. Note: not written on the host-level stamp; the gate outcome lives at ConditionEvaluated. public string Condition { get; set; } Property Value string ConditionEvaluated Tri-state outcome of evaluating the IF-form's boolean condition, stamped on the host block by FanucIfThenSyntax: true — condition met (body fires). false — condition not met (body skipped silently). null — evaluator could not produce a finite truth value (vacant variable, parse error, NaN / ±∞). The original expression text is preserved at Formula.FanucIfThen.Condition by VariableEvaluatorSyntax. public bool? ConditionEvaluated { get; set; } Property Value bool?"
},
"api/Hi.NcParsers.Keywords.FanucMacroCall.html": {
"href": "api/Hi.NcParsers.Keywords.FanucMacroCall.html",
"title": "Class FanucMacroCall | HiAPI-C# 2025",
"summary": "Class FanucMacroCall Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One-shot custom-macro-call record written by FanucMacroCallSyntax. Lives on both the G65 host block (the caller) and every inlined block of the macro body — so a cache-dump reader can land on any block inside the macro and immediately see “this block belongs to a G65 call of FileName with these argument bindings” without back-walking to find the host. Each inlined block additionally carries the resolved Vars.Local #1-#26 bindings derived from Args (see FanucMacroArgumentMap), so LocalVariableLookup resolves macro args in a single-block lookup. Frame isolation is structural: caller blocks never have Vars.Local written, so after the macro body ends, the next caller block reads null for any #1-#26 without any explicit frame marker. public class FanucMacroCall Inheritance object FanucMacroCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Args Argument-letter → numeric-value map captured from the call line (e.g., G65 P9100 A1.5 B2. ⇒ { “A”: 1.5, “B”: 2.0 }). The matching Vars.Local bindings on each inlined block are derived from this via the Type-I argument-letter map (FanucMacroArgumentMap). public JsonObject Args { get; set; } Property Value JsonObject FileName Bare matched file name (e.g. “O9100.NC”). The resolver tries several fallback patterns (FilenamePatterns); this records which one hit. JSON-portable across environments — the folder context lives on the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. public int L { get; set; } Property Value int P Macro program number from the P parameter (e.g., 9100 for O9100). public int P { get; set; } Property Value int Term Triggering keyword (always “G65”). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.FanucModalMacro.html": {
"href": "api/Hi.NcParsers.Keywords.FanucModalMacro.html",
"title": "Class FanucModalMacro | HiAPI-C# 2025",
"summary": "Class FanucModalMacro Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Modal-macro-call record left by FanucModalMacroSyntax. Carries Fanuc G66 setup state forward block-to-block until cancelled by G67. The section is also written on the G67 block itself (with Term = “G67”) so cache dumps show the cancel edge; subsequent blocks then carry no section at all. Per-block expansion of the modal call into an actual macro inline at every positioning move is not yet implemented — a FanucModalMacro--NotExpanded warning is emitted on the setup block to flag the simulation gap. The setup state itself is captured faithfully so external tooling can detect \"this block sits inside a G66 modal\" via the carried section. public class FanucModalMacro Inheritance object FanucModalMacro Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Args Argument-letter → numeric-value map captured from the G66 setup line. Null on a G67 cancel block. public JsonObject Args { get; set; } Property Value JsonObject FileName Bare matched file name (e.g. “O9000.NC”) that would supply the modal-call macro body. Null on a G67 cancel block or when the file could not be resolved at the setup site. Same JSON-portable form as FileName — the folder context lives on the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. Null on a G67 cancel block. public int? L { get; set; } Property Value int? P Macro program number from the P parameter on the G66 setup. Null on a G67 cancel block. public int? P { get; set; } Property Value int? Term Triggering keyword: “G66” for setup / modal-active blocks, “G67” for the cancel block. Carried blocks downstream of a G66 setup mirror the setup section verbatim. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.FanucPathSmoothing.html": {
"href": "api/Hi.NcParsers.Keywords.FanucPathSmoothing.html",
"title": "Class FanucPathSmoothing | HiAPI-C# 2025",
"summary": "Class FanucPathSmoothing Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section data holder for IFanucPathSmoothingDef. public class FanucPathSmoothing : PathSmoothing, IFanucPathSmoothingDef, IPathSmoothingDef Inheritance object PathSmoothing FanucPathSmoothing Implements IFanucPathSmoothingDef IPathSmoothingDef Inherited Members PathSmoothing.IsEnabled PathSmoothing.Term object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Level Fanuc G05.1 R precision / smoothness level number (typically 1..10). null when the source NC line did not specify R. Ignored when IsEnabled is false. public int? Level { get; set; } Property Value int?"
},
"api/Hi.NcParsers.Keywords.FanucProgramNumber.html": {
"href": "api/Hi.NcParsers.Keywords.FanucProgramNumber.html",
"title": "Class FanucProgramNumber | HiAPI-C# 2025",
"summary": "Class FanucProgramNumber Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc-family program identifier header that follows a TapeBoundary line — e.g. O1234 or <O1234>. Wrapper records the surface form so a parsed block can be emitted back to the original notation. public class FanucProgramNumber Inheritance object FanucProgramNumber Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields WrapperAngle Wrapper value for the angle-bracketed form: <O1234>. public const string WrapperAngle = \"Angle\" Field Value string Remarks Fanuc 30i / 31i / 32i extended program-name notation. Some CAM post-processors emit this at the head of subprogram files. WrapperNone Wrapper value for the bare form: O1234. public const string WrapperNone = \"None\" Field Value string Properties Number The numeric portion of the program identifier, as written (no leading zero normalization). public string Number { get; set; } Property Value string Wrapper Surface form of the wrapping symbols around the O token — one of WrapperNone or WrapperAngle. New values may be added as additional notations are observed; consumers should treat unknown values as round-trip-only. public string Wrapper { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.FanucWhileDo.html": {
"href": "api/Hi.NcParsers.Keywords.FanucWhileDo.html",
"title": "Class FanucWhileDo | HiAPI-C# 2025",
"summary": "Class FanucWhileDo Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc Custom Macro B WHILE/END bounded-loop record. Stamped on the host block by FanucWhileDoSyntax after the control-flow decision has been made; produced earlier by FanucWhileDoParsingSyntax as a parsing-stage sub-section (Parsing.FanucWhileDo) carrying the raw captured fields. Two phrases map to the same shape, distinguished by Term: WHILE [<bool-expr>] DO <m> — loop entry. Condition holds the expression text from inside the brackets at parsing time; substituted to a numeric JsonValue by VariableEvaluatorSyntax in place. ConditionEvaluated carries the host-level truthy outcome at stamp time. END <m> — loop terminator. Carries no condition; unconditionally reverse-jumps to the matching WHILE block on every execution (re-evaluation of the entry condition is the WHILE block's responsibility). LoopId is the spec-named \"identification number for nesting\" (the m in DO m / END m). Nested loops must use distinct LoopIds; matching is by exact value. Same-LoopId nesting is spec-undefined and not given special handling here. Active loop frames are carried block-to-block via the top-level WhileFrames JSON section (a JsonObject keyed by LoopId-as-string, each entry recording the BeginLineNo of the WHILE block that opened that frame). Carried by ModalCarrySyntax as part of its Logic tracked keys (mutated in Evaluation, must reach Logic-stage consumers and downstream blocks unchanged). public class FanucWhileDo Inheritance object FanucWhileDo Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Condition Raw boolean expression text from inside the WHILE's [...] brackets at Parsing time; substituted to a numeric JsonValue in place by VariableEvaluatorSyntax when the expression evaluates successfully. The original text survives at Formula.FanucWhileDo.Condition. Null on the END phrase. Note: not written on the host-level stamp; the gate outcome lives at ConditionEvaluated. public string Condition { get; set; } Property Value string ConditionEvaluated Tri-state outcome of evaluating the WHILE's boolean condition, stamped on the host block by FanucWhileDoSyntax: true — condition met (body executes; loop continues). false — condition not met (loop exits; forward-jump past matching END). null — evaluator could not produce a finite truth value (vacant variable, parse error, NaN / ±∞); loop exits defensively and emits FanucWhileDo--ConditionNotEvaluated. Null also on the END phrase (no condition to evaluate). The original expression text is preserved at Formula.FanucWhileDo.Condition by VariableEvaluatorSyntax. public bool? ConditionEvaluated { get; set; } Property Value bool? LoopId The m identifier from DO m / END m — the spec-named “identification number for nesting”. Nested loops use distinct LoopIds (13 typical); WHILE and END pair by exact match. public int LoopId { get; set; } Property Value int Term Triggering phrase: “WHILE...DO” for the loop entry form, “END” for the loop terminator. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Feedrate.html": {
"href": "api/Hi.NcParsers.Keywords.Feedrate.html",
"title": "Class Feedrate | HiAPI-C# 2025",
"summary": "Class Feedrate Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IFeedrateDef. public class Feedrate : IFeedrateDef Inheritance object Feedrate Implements IFeedrateDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). public double FeedrateValue { get; set; } Property Value double Term “G94” (per minute) or “G95” (per revolution). See IsoKeywords. public string Term { get; set; } Property Value string Unit Display unit derived from Term: “mm/min” for G94, “mm/rev” for G95. public string Unit { get; set; } Property Value string Methods GetUnit(string) Returns the display unit for a given feedrate term. public static string GetUnit(string term) Parameters term string Returns string"
},
"api/Hi.NcParsers.Keywords.Generic.IsoKeywords.html": {
"href": "api/Hi.NcParsers.Keywords.Generic.IsoKeywords.html",
"title": "Class IsoKeywords | HiAPI-C# 2025",
"summary": "Class IsoKeywords Namespace Hi.NcParsers.Keywords.Generic Assembly HiMech.dll ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain). public static class IsoKeywords Inheritance object IsoKeywords Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields CannedCycleCodes All canned cycle codes. public static readonly string[] CannedCycleCodes Field Value string[] CoolantCodes All coolant control codes (M07 mist, M08 flood, M09 off). public static readonly string[] CoolantCodes Field Value string[] G00 Rapid positioning — moves all axes at maximum traverse rate to the target. public const string G00 = \"G00\" Field Value string G01 Linear interpolation — moves in a straight line at the programmed feedrate. public const string G01 = \"G01\" Field Value string G02 Circular interpolation clockwise — arc motion in the active plane at the programmed feedrate. Center defined by I/J/K offsets or R radius. public const string G02 = \"G02\" Field Value string G03 Circular interpolation counter-clockwise — arc motion in the active plane at the programmed feedrate. Center defined by I/J/K offsets or R radius. public const string G03 = \"G03\" Field Value string G17 XY plane selection — arcs and canned cycles operate in the XY plane. Default on most controllers. public const string G17 = \"G17\" Field Value string G18 ZX plane selection — arcs and canned cycles operate in the ZX plane. public const string G18 = \"G18\" Field Value string G19 YZ plane selection — arcs and canned cycles operate in the YZ plane. public const string G19 = \"G19\" Field Value string G20 Inch unit mode — axis values and feedrates are interpreted in inches (inch/inch-per-min). Not supported by the HiNC pipeline; emits an Unsupported Error. public const string G20 = \"G20\" Field Value string G21 Metric unit mode — axis values and feedrates are interpreted in millimetres (mm/mm-per-min). HiNC default. public const string G21 = \"G21\" Field Value string G28 Reference point return — moves through an intermediate point, then to the machine reference (home) position. public const string G28 = \"G28\" Field Value string G40 Cutter radius compensation cancel — deactivates G41/G42 tool radius offset. public const string G40 = \"G40\" Field Value string G41 Cutter radius compensation left — offsets tool path to the left of the programmed path by the tool radius. public const string G41 = \"G41\" Field Value string G42 Cutter radius compensation right — offsets tool path to the right of the programmed path by the tool radius. public const string G42 = \"G42\" Field Value string G43 Tool length compensation (+) — applies positive-direction tool height offset from the offset table. public const string G43 = \"G43\" Field Value string G44 Tool length compensation () — applies negative-direction tool height offset from the offset table. public const string G44 = \"G44\" Field Value string G49 Tool length compensation cancel — deactivates G43/G44 tool height offset. public const string G49 = \"G49\" Field Value string G52 Local coordinate system — sets a temporary coordinate offset relative to the active work coordinate system. public const string G52 = \"G52\" Field Value string G53 Machine coordinate selection — non-modal, one-shot. Axis values specify machine coordinates directly, bypassing all work offsets. public const string G53 = \"G53\" Field Value string G53p1 Tool axis direction control — non-modal, one-shot. Positions rotary axes to align with the active tilted work plane (G68.2). Requires G68.2 active. public const string G53p1 = \"G53.1\" Field Value string G54 Work coordinate system 1 — first standard work offset (most commonly used). public const string G54 = \"G54\" Field Value string G54Series All standard work coordinate offsets: G54G59 plus extended offsets G59.1G59.9. public static readonly string[] G54Series Field Value string[] G55 Work coordinate system 2. public const string G55 = \"G55\" Field Value string G56 Work coordinate system 3. public const string G56 = \"G56\" Field Value string G57 Work coordinate system 4. public const string G57 = \"G57\" Field Value string G58 Work coordinate system 5. public const string G58 = \"G58\" Field Value string G59 Work coordinate system 6. public const string G59 = \"G59\" Field Value string G68 Coordinate rotation — rotates the XY program coordinate system around a center point by an angle R. public const string G68 = \"G68\" Field Value string G68p2 Tilted work plane (5-axis) — defines an inclined coordinate system via Euler angles (I/J/K) and an origin (X/Y/Z). public const string G68p2 = \"G68.2\" Field Value string G69 Coordinate rotation / tilted work plane cancel — deactivates G68 or G68.2. public const string G69 = \"G69\" Field Value string G73 High-speed peck drilling cycle — drills in increments of Q with partial retract (chip breaking). public const string G73 = \"G73\" Field Value string G74 Left-hand tapping cycle — feed to Z with CCW spindle, reverse to CW, feed retract. public const string G74 = \"G74\" Field Value string G76 Fine boring cycle — feed to Z, oriented spindle stop, tool shift Q, rapid retract, shift back. public const string G76 = \"G76\" Field Value string G80 Canned cycle cancel — deactivates G81G89. public const string G80 = \"G80\" Field Value string G81 Drilling cycle — rapid to R, feed to Z, rapid retract. public const string G81 = \"G81\" Field Value string G82 Drilling cycle with dwell — same as G81 plus dwell P seconds at bottom. public const string G82 = \"G82\" Field Value string G83 Peck drilling cycle — drills in increments of Q with full retract to R between strokes. public const string G83 = \"G83\" Field Value string G84 Right-hand tapping cycle — feed to Z with CW spindle, reverse to CCW, feed retract. public const string G84 = \"G84\" Field Value string G85 Boring cycle — rapid to R, feed to Z, feed retract. public const string G85 = \"G85\" Field Value string G86 Boring cycle — rapid to R, feed to Z, spindle stop, rapid retract. public const string G86 = \"G86\" Field Value string G87 Back boring cycle — OSS + shift, rapid to Z, shift back, spindle on, feed up to R, OSS + shift, retract. public const string G87 = \"G87\" Field Value string G89 Boring cycle with dwell — rapid to R, feed to Z, dwell P, feed retract. public const string G89 = \"G89\" Field Value string G90 Absolute positioning — axis values specify the target position directly. public const string G90 = \"G90\" Field Value string G91 Incremental positioning — axis values specify the distance to move from the current position. public const string G91 = \"G91\" Field Value string G94 Feed per minute — feedrate F is in mm/min (or inch/min). public const string G94 = \"G94\" Field Value string G95 Feed per revolution — feedrate F is in mm/rev (or inch/rev), synchronized to spindle speed. public const string G95 = \"G95\" Field Value string G98 Canned cycle return to initial level. public const string G98 = \"G98\" Field Value string G99 Canned cycle return to R-point level. public const string G99 = \"G99\" Field Value string M00 Program stop (unconditional) — halts execution; operator must press Cycle Start to resume. Modal state preserved. public const string M00 = \"M00\" Field Value string M01 Optional program stop — halts execution only when the Optional Stop switch on the panel is ON; otherwise ignored. Modal state preserved. public const string M01 = \"M01\" Field Value string M02 Program end (no rewind) — stops execution and resets modal state. public const string M02 = \"M02\" Field Value string M03 Spindle ON clockwise — starts spindle rotation in the CW direction. public const string M03 = \"M03\" Field Value string M04 Spindle ON counter-clockwise — starts spindle rotation in the CCW direction. public const string M04 = \"M04\" Field Value string M05 Spindle stop — halts spindle rotation. public const string M05 = \"M05\" Field Value string M06 Tool change — executes automatic tool change. public const string M06 = \"M06\" Field Value string M07 Coolant ON (mist) — activates a fine oil-mist / air-blast coolant stream. public const string M07 = \"M07\" Field Value string M08 Coolant ON (flood) — activates flood coolant. public const string M08 = \"M08\" Field Value string M09 Coolant OFF — deactivates all coolant. public const string M09 = \"M09\" Field Value string M30 Program end — stops execution, resets modal state, rewinds to start. public const string M30 = \"M30\" Field Value string PlaneSelectCodes All plane selection codes. public static readonly string[] PlaneSelectCodes Field Value string[] ProgramEndCodes All program end codes. public static readonly string[] ProgramEndCodes Field Value string[] ProgramStopCodes All program-stop codes (M00 unconditional, M01 optional). public static readonly string[] ProgramStopCodes Field Value string[] UnitModeCodes All unit-mode codes (Group 06). public static readonly string[] UnitModeCodes Field Value string[]"
},
"api/Hi.NcParsers.Keywords.Generic.MotionForm.html": {
"href": "api/Hi.NcParsers.Keywords.Generic.MotionForm.html",
"title": "Class MotionForm | HiAPI-C# 2025",
"summary": "Class MotionForm Namespace Hi.NcParsers.Keywords.Generic Assembly HiMech.dll Motion interpolation form constants used in Form. Each form corresponds to a specialized INcSemantic that resolves the motion into IAct sequences. public static class MotionForm Inheritance object MotionForm Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ClArc Circular interpolation (arc/helix) purely at cutter-location (CL) level — no machine coordinates involved. Consumed by CL-source runners (e.g. NX CLSF) whose motion semantics emit ActClArc. public const string ClArc = \"ClArc\" Field Value string ClLinear 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 ClLinearMcMotionSemantic. public const string ClLinear = \"ClLinear\" Field Value string ClTeleport Non-cutting reposition purely at cutter-location (CL) level (no path swept, no machining step). Consumed by CL-source runners whose motion semantics emit ActClTeleport. public const string ClTeleport = \"ClTeleport\" Field Value string McArc Circular interpolation (arc/helix) in program coordinates, transformed to machine coordinates via ActMcXyzSpiralContour. Resolved by McArcMotionSemantic. public const string McArc = \"McArc\" Field Value string McLinear Linear interpolation in machine coordinates. McLinearMotionSemantic discriminates XYZ-only vs XYZABC by checking for rotary axis values in MachineCoordinateState. public const string McLinear = \"McLinear\" Field Value string 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"
},
"api/Hi.NcParsers.Keywords.Generic.html": {
"href": "api/Hi.NcParsers.Keywords.Generic.html",
"title": "Namespace Hi.NcParsers.Keywords.Generic | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Keywords.Generic Classes IsoKeywords ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain). MotionForm Motion interpolation form constants used in Form. Each form corresponds to a specialized INcSemantic that resolves the motion into IAct sequences."
},
"api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCall.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCall.html",
"title": "Class HeidenhainCall | HiAPI-C# 2025",
"summary": "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 object HeidenhainCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html",
"title": "Class HeidenhainCyclCall | HiAPI-C# 2025",
"summary": "Class HeidenhainCyclCall Namespace Hi.NcParsers.Keywords.Heidenhain Assembly HiMech.dll 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 HeidenhainCyclCall Inheritance object HeidenhainCyclCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties IsoTerm Mapped ISO term the call fired as; absent when the call was consumed without motion effect. public string IsoTerm { get; set; } Property Value string Number Cycle number of the definition the call resolved against. public int Number { get; set; } Property Value int Term Triggering spelling: CYCL CALL, CYCL CALL POS, M99 or M89. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html",
"title": "Class HeidenhainGoto | HiAPI-C# 2025",
"summary": "Class HeidenhainGoto Namespace Hi.NcParsers.Keywords.Heidenhain Assembly HiMech.dll Heidenhain FN 912 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 (EQU→EQ; 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 object HeidenhainGoto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 HeidenhainGotoConditionNotEvaluated 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 HeidenhainGotoConditionNotEvaluated. 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 TermFn9 … TermFn12, as spelled in the source (whitespace dropped). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainLbl.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainLbl.html",
"title": "Class HeidenhainLbl | HiAPI-C# 2025",
"summary": "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 object HeidenhainLbl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Label number or name (quotes stripped); “0” is the end-of-subprogram sentinel. public string Name { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html",
"title": "Interface ICyclDef | HiAPI-C# 2025",
"summary": "Interface ICyclDef Namespace Hi.NcParsers.Keywords.Heidenhain Assembly HiMech.dll JSON section schema for Heidenhain CYCL DEF blocks. The CyclHead string captures either the cycle title (e.g. “DATUM SETTING”) or a parameter line (e.g. “Q339=+1”). public interface ICyclDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CyclHead Head content of the CYCL DEF (can be title like “DATUM SETTING” or parameters like “Q339=+1”). string CyclHead { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html",
"title": "Class MachiningCycleDef | HiAPI-C# 2025",
"summary": "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 object MachiningCycleDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.Heidenhain.html": {
"href": "api/Hi.NcParsers.Keywords.Heidenhain.html",
"title": "Namespace Hi.NcParsers.Keywords.Heidenhain | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Keywords.Heidenhain 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 912 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 (EQU→EQ; 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 ICyclDef JSON section schema for Heidenhain CYCL DEF blocks. The CyclHead string captures either the cycle title (e.g. “DATUM SETTING”) or a parameter line (e.g. “Q339=+1”)."
},
"api/Hi.NcParsers.Keywords.IArcMotionDef.html": {
"href": "api/Hi.NcParsers.Keywords.IArcMotionDef.html",
"title": "Interface IArcMotionDef | HiAPI-C# 2025",
"summary": "Interface IArcMotionDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Arc motion data written by CircularMotionSyntax. Stored under the MotionEvent JSON section alongside IMotionEventDef properties. The arc plane is read from the modal PlaneSelect section via GetPlaneNormalDir(JsonObject) rather than cached on the event — same source of truth as IsoG68RotationSyntax. public interface IArcMotionDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 10.0, \"Y\": 5.0, \"Z\": 0.0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } Properties AdditionalCircleNum Number of additional full circles (for helix with L parameter). int AdditionalCircleNum { get; } Property Value int ArcCenter Arc center in program coordinates (absolute). object ArcCenter { get; } Property Value object IsCcw True for G03 (CCW), false for G02 (CW). bool IsCcw { get; } Property Value bool 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"
},
"api/Hi.NcParsers.Keywords.ICannedCycleDef.html": {
"href": "api/Hi.NcParsers.Keywords.ICannedCycleDef.html",
"title": "Interface ICannedCycleDef | HiAPI-C# 2025",
"summary": "Interface ICannedCycleDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Canned cycle modal state (Group 09). Captures which cycle is currently active, its return mode (G98/G99), and the resolved absolute parameter set used for modal lookback. Written by CannedCycleResolveSyntax on every block that belongs to the canned-cycle group: cycle code present (G81/G82/G83/G73/G84/G74/G85/G86/G89/G76/G87), modal repeat (cycle still active, only coordinates given), or explicit cancel (G80). Term = \"G80\" is the explicit-cancel sentinel used by FindPreviousActiveCycle(LazyLinkedListNode<SyntaxPiece>, string[]) to terminate modal lookback without ambiguity; regular blocks (e.g. G00 X.. Y..) simply omit the section entirely. public interface ICannedCycleDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples // Active G81 block \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 20, \"Y\": 52, \"Z\": -31, \"R\": 3, \"F\": 600 } } // Explicit cancel block (G80 alone) \"CannedCycle\": { \"Term\": \"G80\" } Properties Params Resolved absolute cycle parameters: X, Y, Z, R, Q, F, P, K. Used for modal lookback so the next repeat block can merge its own overrides with the previously-resolved values. Absent on G80 blocks. JsonObject Params { get; set; } Property Value JsonObject ReturnMode Return level mode: “G98” (initial Z) or “G99” (R-point). Only meaningful when Term is an active cycle code; absent on G80 blocks. string ReturnMode { get; set; } Property Value string Term NC term of the canned-cycle-group code on this block (“G81”, “G82”, ..., “G89”, or “G80” for explicit cancel). Modal-repeat blocks carry the same term as the most recent active cycle. string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ICompoundMotionDef.html": {
"href": "api/Hi.NcParsers.Keywords.ICompoundMotionDef.html",
"title": "Interface ICompoundMotionDef | HiAPI-C# 2025",
"summary": "Interface ICompoundMotionDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Hi.Motion — rapid/feed linear motion (IMotionEventDef + IMachineCoordinateStateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (Angle_deg) public interface ICompoundMotionDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term CNC term that triggered this compound motion (e.g., “G28”, “G81”). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ICoolantDef.html": {
"href": "api/Hi.NcParsers.Keywords.ICoolantDef.html",
"title": "Interface ICoolantDef | HiAPI-C# 2025",
"summary": "Interface ICoolantDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Coolant state (M07 mist / M08 flood / M09 off). Written by CoolantSyntax. Modal — persists until changed. IsOn is the on/off convenience flag (true for M07 and M08, false for M09). Mode carries the abstract kind (Flood / Mist / Off) for consumers that need to distinguish flood vs mist. public interface ICoolantDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Coolant\": { \"IsOn\": true, \"Mode\": \"Flood\" } \"Coolant\": { \"IsOn\": true, \"Mode\": \"Mist\" } \"Coolant\": { \"IsOn\": false, \"Mode\": \"Off\" } Properties IsOn Whether any coolant is currently active. bool IsOn { get; set; } Property Value bool Mode Abstract coolant mode (Flood / Mist / Off). string Mode { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IDwellDef.html": {
"href": "api/Hi.NcParsers.Keywords.IDwellDef.html",
"title": "Interface IDwellDef | HiAPI-C# 2025",
"summary": "Interface IDwellDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Dwell/pause section definition for use inside Sequence items. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActDelay. public interface IDwellDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"Dwell\": { \"Time\": 0.5 } } Properties Time Dwell time in seconds. double Time { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html": {
"href": "api/Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html",
"title": "Interface IFanucPathSmoothingDef | HiAPI-C# 2025",
"summary": "Interface IFanucPathSmoothingDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc-specific path smoothing state written by FanucPathSmoothingSyntax. Extends IPathSmoothingDef with the Fanuc G05.1 R argument (precision / smoothness level number, R1..R10 mapping to controller-internal tuning macro variables). Q is binary in current Fanuc firmware (Q0 disable / Q1 enable), so IsEnabled covers it directly — no raw Q field is stored. JSON section key remains nameof(PathSmoothing) so generic readers (cache dumps, modal carry, UI) can cast to IPathSmoothingDef across all controller brands; brand-specific readers cast to IFanucPathSmoothingDef for the extra fields. public interface IFanucPathSmoothingDef : IPathSmoothingDef Inherited Members IPathSmoothingDef.IsEnabled IPathSmoothingDef.Term Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\", \"Level\": 1 } Properties Level Fanuc G05.1 R precision / smoothness level number (typically 1..10). null when the source NC line did not specify R. Ignored when IsEnabled is false. int? Level { get; set; } Property Value int?"
},
"api/Hi.NcParsers.Keywords.IFeedrateDef.html": {
"href": "api/Hi.NcParsers.Keywords.IFeedrateDef.html",
"title": "Interface IFeedrateDef | HiAPI-C# 2025",
"summary": "Interface IFeedrateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. public interface IFeedrateDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Feedrate\": { \"FeedrateValue\": 300.0, \"Term\": \"G94\", \"Unit\": \"mm/min\" } Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). double FeedrateValue { get; set; } Property Value double Term “G94” (per minute) or “G95” (per revolution). See IsoKeywords. string Term { get; set; } Property Value string Unit Display unit derived from Term: “mm/min” for G94, “mm/rev” for G95. string Unit { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IFlagsDef.html": {
"href": "api/Hi.NcParsers.Keywords.IFlagsDef.html",
"title": "Interface IFlagsDef | HiAPI-C# 2025",
"summary": "Interface IFlagsDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON section schema describing the modal/non-modal flags that take effect on an NC block. Each entry in Flags is a brand-specific keyword recognized by the soft-NC runtime. public interface IFlagsDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Flags Known flags that it takes effect. List<string> Flags { get; set; } Property Value List<string>"
},
"api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html": {
"href": "api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html",
"title": "Interface IMachineCoordinateStateDef | HiAPI-C# 2025",
"summary": "Interface IMachineCoordinateStateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Modal machine-coordinate state — absolute six-axis machine position after the block has executed. Written on every block by motion-related LogicSyntaxs (McAbcSyntax, McAbcXyzFallbackSyntax, McXyzSyntax, MachineCoordSelectSyntax, G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across non-motion blocks — 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. public interface IMachineCoordinateStateDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"MachineCoordinateState\": { \"X\": 100.0, \"Y\": 50.0, \"Z\": -20.0 } \"MachineCoordinateState\": { \"X\": 100.0, \"Y\": 50.0, \"Z\": -20.0, \"A\": 0.0, \"B\": 30.0 } Properties MachineCoordinateState JSON object with per-axis absolute machine coordinate. Configured axes are present; unconfigured axes are omitted. JsonObject MachineCoordinateState { get; set; } Property Value JsonObject"
},
"api/Hi.NcParsers.Keywords.IMotionEventDef.html": {
"href": "api/Hi.NcParsers.Keywords.IMotionEventDef.html",
"title": "Interface IMotionEventDef | HiAPI-C# 2025",
"summary": "Interface IMotionEventDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One-shot motion event — present on every block whose source programmed a motion command, regardless of whether the resulting displacement is non-zero. A redundant G01 X10 on a block already at X10 still gets a MotionEvent; the motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMcMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks. Reason for the \"programmed, not displaced\" definition: Fanuc G66 modal macro fires once per programmed motion command (per Fanuc spec — no distance gate), so FanucModalMacroSyntax.Expansion uses MotionEvent presence as its trigger. Suppressing the section on zero-distance moves would silently change G66 behaviour. The modal sibling MotionState separately latches the Group-01 mode for readers that only need to know \"what G-code is active\". Property names are used as JSON keys via nameof. public interface IMotionEventDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"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 Form Interpolation form. See MotionForm. string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. bool IsRapid { get; set; } Property Value bool 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"
},
"api/Hi.NcParsers.Keywords.IMotionStateDef.html": {
"href": "api/Hi.NcParsers.Keywords.IMotionStateDef.html",
"title": "Interface IMotionStateDef | HiAPI-C# 2025",
"summary": "Interface IMotionStateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Modal motion state — Group 01 G-code mode (G00 / G01 / G02 / G03 ...). Written on every block by LinearMotionSyntax / CircularMotionSyntax; carried across non-motion blocks by ModalCarrySyntax. Property names are used as JSON keys via nameof. Unlike sibling modal sections (Unit, PlaneSelect, Positioning) which carry both a brand-specific Term and a brand-neutral conventional field, MotionState intentionally keeps only Term: the brand-neutral semantic (\"what kind of motion happened\") lives on the sibling one-shot MotionEvent (Form = McLinear / McArc / ClLinear / ClArc). State here is purely the modal latch of the last Group-01 G-code so downstream FindPrevious* can resume motion-mode bookkeeping. public interface IMotionStateDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"MotionState\": { \"Term\": \"G01\" } Properties Term CNC term that defines the modal motion mode (e.g., “G00”, “G01”, “G02”, “G03”). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IParsingDef.html": {
"href": "api/Hi.NcParsers.Keywords.IParsingDef.html",
"title": "Interface IParsingDef | HiAPI-C# 2025",
"summary": "Interface IParsingDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON section schema carrying the raw, brand-specific parsing trace for an NC block. The Parsing node holds intermediate parser output used by downstream syntaxes and diagnostics. public interface IParsingDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Parsing Raw parsing trace JSON for the current block. JsonNode Parsing { get; set; } Property Value JsonNode"
},
"api/Hi.NcParsers.Keywords.IPathSmoothingDef.html": {
"href": "api/Hi.NcParsers.Keywords.IPathSmoothingDef.html",
"title": "Interface IPathSmoothingDef | HiAPI-C# 2025",
"summary": "Interface IPathSmoothingDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Path smoothing state. The base interface is brand-agnostic; controller brands extend it with their own argument fields (e.g. IFanucPathSmoothingDef for Fanuc G05.1 R precision-level). Fanuc-flavour writes are produced by FanucPathSmoothingSyntax. ISO/Fanuc G05.1 Q1 (enable) / G05.1 Q0 (disable): high-precision contour control / AICC / Nano Smoothing. Controller-internal interpolation black box — simulation records the state but does not alter the tool path. public interface IPathSmoothingDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\" } Properties IsEnabled True when path smoothing is active (Q1), false when cancelled (Q0). bool IsEnabled { get; set; } Property Value bool Term CNC term that controls this feature (e.g., “G05.1”). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IPlaneSelectDef.html": {
"href": "api/Hi.NcParsers.Keywords.IPlaneSelectDef.html",
"title": "Interface IPlaneSelectDef | HiAPI-C# 2025",
"summary": "Interface IPlaneSelectDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Active plane selection state written by PlaneSelectSyntax. Property names are used as JSON keys via nameof. ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax. Term carries the brand-specific G-code; Plane stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ). public interface IPlaneSelectDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"PlaneSelect\": { \"Term\": \"G17\", \"Plane\": \"XY\" } Properties Plane Active plane axis-pair (XY, ZX, or YZ). string Plane { get; set; } Property Value string Term NC term of the plane-select code on this block (G17/G18/G19). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IPolarInterpolationDef.html": {
"href": "api/Hi.NcParsers.Keywords.IPolarInterpolationDef.html",
"title": "Interface IPolarInterpolationDef | HiAPI-C# 2025",
"summary": "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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.IPositioningDef.html": {
"href": "api/Hi.NcParsers.Keywords.IPositioningDef.html",
"title": "Interface IPositioningDef | HiAPI-C# 2025",
"summary": "Interface IPositioningDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Modal positioning state — ISO Group 03 (G90 absolute / G91 incremental). Written by PositioningSyntax, consumed by IncrementalResolveSyntax, canned cycle syntaxes, and MachineCoordSelectSyntax. Property names are used as JSON keys via nameof. Term is the brand-specific G-code (Fanuc/ISO G90/G91); Mode is the conventional, brand-neutral name (Absolute / Incremental). public interface IPositioningDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" } Properties Mode Conventional positioning mode name (Absolute / Incremental). string Mode { get; set; } Property Value string Term NC term of the positioning code on this block (G90 or G91). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IProgramEndDef.html": {
"href": "api/Hi.NcParsers.Keywords.IProgramEndDef.html",
"title": "Interface IProgramEndDef | HiAPI-C# 2025",
"summary": "Interface IProgramEndDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Program end marker (M02/M30). Written by ProgramEndSyntax. Other syntaxes (e.g. IsoLocalCoordinateOffsetSyntax) read this section to reset modal state instead of detecting M30 directly. public interface IProgramEndDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"ProgramEnd\": { \"Term\": \"M30\" } Properties Term The M-code that triggered program end (M02 or M30). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IProgramStopDef.html": {
"href": "api/Hi.NcParsers.Keywords.IProgramStopDef.html",
"title": "Interface IProgramStopDef | HiAPI-C# 2025",
"summary": "Interface IProgramStopDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Program-stop marker (M00 unconditional / M01 optional). Written by ProgramStopSyntax on each block that carries an M00/M01 flag. Non-modal: the section appears only on the exact block where the stop code is present. Distinct from IProgramEndDef (M02/M30, end of program). M00 halts execution unconditionally; the operator must press Cycle Start to resume. M01 is an optional stop gated by the operator's \"Optional Stop\" panel switch — ignored when the switch is off. This parsing-layer section records the NC intent; runtime / semantic layers decide whether to actually pause. public interface IProgramStopDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"ProgramStop\": { \"Term\": \"M01\" } Properties Term The M-code that triggered the stop (M00 or M01). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IProgramXyzDef.html": {
"href": "api/Hi.NcParsers.Keywords.IProgramXyzDef.html",
"title": "Interface IProgramXyzDef | HiAPI-C# 2025",
"summary": "Interface IProgramXyzDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON section schema carrying the program-coordinate position commanded on the current block. Written by ProgramXyzSyntax before the ProgramToMcTransform chain composes it into machine coordinates. public interface IProgramXyzDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ProgramXyz Program-coordinate XYZ (and optional ABC) for the current block. JsonObject ProgramXyz { get; set; } Property Value JsonObject"
},
"api/Hi.NcParsers.Keywords.IRadiusCompensationDef.html": {
"href": "api/Hi.NcParsers.Keywords.IRadiusCompensationDef.html",
"title": "Interface IRadiusCompensationDef | HiAPI-C# 2025",
"summary": "Interface IRadiusCompensationDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Radius compensation state written by RadiusCompensationSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G41 (left), G42 (right), G40 (cancel). Heidenhain Klartext maps RL → G41, RR → G42, R0 → G40. When active, the tool path is offset perpendicular to the programmed path by Radius_mm; Side determines left vs right. The root ProgramXyz retains the user-programmed position; MachineCoordinate is overwritten to reflect the compensated path. public interface IRadiusCompensationDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Active (G41 D5, radius 2.5 mm): \"RadiusCompensation\": { \"Side\": \"Left\", \"Term\": \"G41\", \"OffsetId\": 5, \"Radius_mm\": 2.5 } Cancelled (G40, modal D preserved): \"RadiusCompensation\": { \"Side\": \"None\", \"Term\": \"G40\", \"OffsetId\": 5 } Properties OffsetId Offset number (Fanuc D number) selecting the radius in the tool offset table. Modal — preserved across G40 blocks so the next G41/G42 without an explicit D continues to reference the same row, matching real Fanuc/Siemens behaviour. int OffsetId { get; set; } Property Value int Radius_mm Unsigned compensation radius in mm, looked up from the tool offset table. Real controller tool tables hold the radius as a non-negative geometry value (wear/delta sits in a separate column); this property mirrors that convention. Direction is encoded by Side. Omitted from the JSON section when Side is SideNone. double Radius_mm { get; set; } Property Value double Side Compensation direction: SideNone, SideLeft, or SideRight. string Side { get; set; } Property Value string Term CNC term: “G41”, “G42”, or “G40”. string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ISpindleControlDef.html": {
"href": "api/Hi.NcParsers.Keywords.ISpindleControlDef.html",
"title": "Interface ISpindleControlDef | HiAPI-C# 2025",
"summary": "Interface ISpindleControlDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. public interface ISpindleControlDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"SpindleControl\": { \"Direction\": \"STOP\" } } Properties Direction Target spindle direction (STOP, CW, CCW). SpindleDirection Direction { get; set; } Property Value SpindleDirection"
},
"api/Hi.NcParsers.Keywords.ISpindleOrientationDef.html": {
"href": "api/Hi.NcParsers.Keywords.ISpindleOrientationDef.html",
"title": "Interface ISpindleOrientationDef | HiAPI-C# 2025",
"summary": "Interface ISpindleOrientationDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. public interface ISpindleOrientationDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"SpindleOrientation\": { \"Angle_deg\": 0.0 } } Properties Angle_deg Target spindle stop angle in degrees. double Angle_deg { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.ISpindleSpeedDef.html": {
"href": "api/Hi.NcParsers.Keywords.ISpindleSpeedDef.html",
"title": "Interface ISpindleSpeedDef | HiAPI-C# 2025",
"summary": "Interface ISpindleSpeedDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. public interface ISpindleSpeedDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 3000.0, \"Direction\": \"CW\" } Properties Direction Spindle rotation direction. Stored in JSON as the enum name (e.g. “CW”, “CCW”, “STOP”). SpindleDirection Direction { get; set; } Property Value SpindleDirection SpindleSpeed_rpm Spindle speed in RPM. double SpindleSpeed_rpm { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.ITiltTransformDef.html": {
"href": "api/Hi.NcParsers.Keywords.ITiltTransformDef.html",
"title": "Interface ITiltTransformDef | HiAPI-C# 2025",
"summary": "Interface ITiltTransformDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). public interface ITiltTransformDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"TiltTransform\": { \"Term\": \"G68.2\", \"I\": 180, \"J\": 90, \"K\": 180, \"X\": 0, \"Y\": 55, \"Z\": -45.377 } Properties Term CNC term for tilt: “G68”, “G68.2”, “G69”, “PLANE SPATIAL”, “CYCLE800”, etc. string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IToolHeightCompensationDef.html": {
"href": "api/Hi.NcParsers.Keywords.IToolHeightCompensationDef.html",
"title": "Interface IToolHeightCompensationDef | HiAPI-C# 2025",
"summary": "Interface IToolHeightCompensationDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). public interface IToolHeightCompensationDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 } Remarks RTCP-rotary-dynamic state (whether the per-step MC path is non-linear while CL is commanded linearly) is signalled by a KindDynamic entry in the ProgramToMcTransform chain rather than by a flag on this section, so consumers detect it via HasDynamicEntry(JsonObject) without needing brand-specific strings. Properties OffsetId Generic offset selector: Fanuc H number, Heidenhain T number, Mazak/Okuma H number. For Siemens (T+D addressing), see ISiemensToolOffsetConfig. int OffsetId { get; set; } Property Value int Offset_mm Derived effective tool height compensation in mm. Computed from Term and OffsetId: looks up the offset table for OffsetId, obtains the effective height (geometry minus wear), then applies sign from Term (positive for G43/G43.4, negative for G44, zero for G49). double Offset_mm { get; set; } Property Value double Term CNC term for tool height compensation: “G43”, “G43.4”, “G44”, “G49”. Brand-specific syntaxes may write equivalent terms (e.g., “TRAORI” for Siemens, “M128” for Heidenhain). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ITransformationDef.html": {
"href": "api/Hi.NcParsers.Keywords.ITransformationDef.html",
"title": "Interface ITransformationDef | HiAPI-C# 2025",
"summary": "Interface ITransformationDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source”, “Kind”, and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. GetComposedTransform(JsonObject) composes entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. Kind contour-validity classification. Each entry is either: \"Static\" — the Mat4d is valid for any point along the contour. Tilt, coord-offset, and the kinematic pivot in non-RTCP / rotary-stable blocks are all Static. \"Dynamic\" — the Mat4d is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composition still yields a correct endpoint MC, but the matrix is not contour-valid: intermediate CL-point positions cannot be derived by applying it to an interpolated ProgramXyz. The semantic layer (ClLinearMcMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. public interface ITransformationDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"ProgramToMcTransform\": [ {\"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]}, {\"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1]}, {\"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1]}, {\"Source\": \"PivotTransform\", \"Kind\": \"Dynamic\", \"Mat4d\": [cosC,sinC,0,0, -sinC,cosC,0,0, 0,0,1,0, px,py,pz,1]} ] Properties ProgramToMcTransform Ordered chain of named ProgramXyz → MachineCoordinate transformation entries. See the type-level remarks for the entry schema and composition rule. JsonArray ProgramToMcTransform { get; set; } Property Value JsonArray"
},
"api/Hi.NcParsers.Keywords.IUnitDef.html": {
"href": "api/Hi.NcParsers.Keywords.IUnitDef.html",
"title": "Interface IUnitDef | HiAPI-C# 2025",
"summary": "Interface IUnitDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Unit-system state (ISO Group 06: G20 inch / G21 metric). Written by UnitModeSyntax. Modal. HiNC's NC pipeline works exclusively in millimetres. G21 is therefore a no-op confirmation of the default; G20 is reported as an Unsupported Error and callers are expected to pre-convert the NC program to metric before loading. public interface IUnitDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } Properties System Abstract name of the unit system (Metric / Inch). string System { get; set; } Property Value string Term NC term of the unit code on this block (G20 or G21). string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IUnparsedTextDef.html": {
"href": "api/Hi.NcParsers.Keywords.IUnparsedTextDef.html",
"title": "Interface IUnparsedTextDef | HiAPI-C# 2025",
"summary": "Interface IUnparsedTextDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON section schema carrying the residual block text that was not consumed by any registered syntax. Used for diagnostics and round-trip preservation. public interface IUnparsedTextDef Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties UnparsedText Residual NC block text not matched by any syntax. string UnparsedText { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IndexNote.html": {
"href": "api/Hi.NcParsers.Keywords.IndexNote.html",
"title": "Class IndexNote | HiAPI-C# 2025",
"summary": "Class IndexNote Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON-section data shape pairing a single-character address symbol (e.g. O, N) with its numeric index, used to annotate program/sequence numbers on an NC block. public class IndexNote Inheritance object IndexNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Number Numeric value associated with Symbol. public int Number { get; set; } Property Value int Symbol Address symbol (e.g. “O” for program number, “N” for sequence number). public string Symbol { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html": {
"href": "api/Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html",
"title": "Class IsoLocalCoordinateOffset | HiAPI-C# 2025",
"summary": "Class IsoLocalCoordinateOffset Namespace Hi.NcParsers.Keywords Assembly HiMech.dll ISO/Fanuc-family local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. G52 X Y Z installs a local coordinate-system shift that stacks on top of the active G54-G59 work offset. The cancel mechanism is to write G52 X0 Y0 Z0 (or hit M30 / reset) — there is no separate G code for \"cancel\". The offset vector is therefore always modal: zero is a valid modal value, not a \"disabled\" state, so the section is recorded on every block. Brand-specific kin: Siemens TRANS/ATRANS (which can also carry rotation/scale/mirror) and Heidenhain TRANS DATUM are handled by their own syntaxes and write to their own sections — they do not share this key, because their data shapes are richer. public class IsoLocalCoordinateOffset Inheritance object IsoLocalCoordinateOffset Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10.0, \"Offset_Y\": 20.0, \"Offset_Z\": 0.0 } Properties Offset_X X offset in mm. public double Offset_X { get; set; } Property Value double Offset_Y Y offset in mm. public double Offset_Y { get; set; } Property Value double Offset_Z Z offset in mm. public double Offset_Z { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.MachineCoordinateState.html": {
"href": "api/Hi.NcParsers.Keywords.MachineCoordinateState.html",
"title": "Class MachineCoordinateState | HiAPI-C# 2025",
"summary": "Class MachineCoordinateState Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IMachineCoordinateStateDef. public class MachineCoordinateState Inheritance object MachineCoordinateState Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcParsers.Keywords.MacroFrame.html": {
"href": "api/Hi.NcParsers.Keywords.MacroFrame.html",
"title": "Class MacroFrame | HiAPI-C# 2025",
"summary": "Class MacroFrame Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Top-level integer marker stamped onto a SyntaxPiece's JSON to identify which call frame the block belongs to. Brand-agnostic by design — written by FanucMacroCallSyntax today, reusable by any future call-inlining syntax (Fanuc G66 modal expansion, Heidenhain LBL CALL, …) that needs local-variable isolation across call boundaries. Semantics: the value is an opaque id; only equality matters. Two blocks with the same MacroFrame id share a call frame (locals visible across them via single-step carry); two blocks with different ids do not. The id 0 is reserved for the main program frame and is returned by Get(JsonObject) when the field is absent — so a plain caller block needs no stamp and yet compares distinct from any inlined frame. Stored as a top-level JSON int (not an object section) so it stays lightweight on every inlined block. Decoupled from FanucMacroCall: that section is a diagnostic record of the call (what file, what args), while MacroFrame is the purely functional marker the local-variable I/O syntaxes consult. public static class MacroFrame Inheritance object MacroFrame Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Get(JsonObject) Reads the frame id off a block, returning 0 (main frame) when the field is absent or non-integer. public static int Get(JsonObject json) Parameters json JsonObject Returns int Set(JsonObject, int) Stamps the frame id onto a block. Overwrites any previous value. Callers writing the main-frame default (0) should simply leave the field absent rather than calling this with 0. public static void Set(JsonObject json, int frameId) Parameters json JsonObject frameId int"
},
"api/Hi.NcParsers.Keywords.MotionEvent.html": {
"href": "api/Hi.NcParsers.Keywords.MotionEvent.html",
"title": "Class MotionEvent | HiAPI-C# 2025",
"summary": "Class MotionEvent Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IMotionEventDef. public class MotionEvent : IMotionEventDef Inheritance object MotionEvent Implements IMotionEventDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Form Interpolation form. See MotionForm. public string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. public bool IsRapid { get; set; } Property Value bool 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"
},
"api/Hi.NcParsers.Keywords.MotionState.html": {
"href": "api/Hi.NcParsers.Keywords.MotionState.html",
"title": "Class MotionState | HiAPI-C# 2025",
"summary": "Class MotionState Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IMotionStateDef. public class MotionState : IMotionStateDef Inheritance object MotionState Implements IMotionStateDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term CNC term that defines the modal motion mode (e.g., “G00”, “G01”, “G02”, “G03”). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.PathSmoothing.html": {
"href": "api/Hi.NcParsers.Keywords.PathSmoothing.html",
"title": "Class PathSmoothing | HiAPI-C# 2025",
"summary": "Class PathSmoothing Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IPathSmoothingDef. public class PathSmoothing : IPathSmoothingDef Inheritance object PathSmoothing Implements IPathSmoothingDef Derived FanucPathSmoothing SiemensPathSmoothing Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties IsEnabled True when path smoothing is active (Q1), false when cancelled (Q0). public bool IsEnabled { get; set; } Property Value bool Term CNC term that controls this feature (e.g., “G05.1”). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.PlaneSelect.html": {
"href": "api/Hi.NcParsers.Keywords.PlaneSelect.html",
"title": "Class PlaneSelect | HiAPI-C# 2025",
"summary": "Class PlaneSelect Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IPlaneSelectDef. public class PlaneSelect : IPlaneSelectDef Inheritance object PlaneSelect Implements IPlaneSelectDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields XY Plane identifier for the XY plane (Z normal). public const string XY = \"XY\" Field Value string YZ Plane identifier for the YZ plane (X normal). public const string YZ = \"YZ\" Field Value string ZX Plane identifier for the ZX plane (Y normal). public const string ZX = \"ZX\" Field Value string Properties Plane Active plane axis-pair (XY, ZX, or YZ). public string Plane { get; set; } Property Value string Term NC term of the plane-select code on this block (G17/G18/G19). public string Term { get; set; } Property Value string Methods GetNormalAxisIndex(string) Perpendicular (normal) axis index for the plane. XY→2 (Z normal), ZX→1 (Y normal), YZ→0 (X normal). public static int GetNormalAxisIndex(string plane) Parameters plane string Returns int"
},
"api/Hi.NcParsers.Keywords.PolarInterpolation.html": {
"href": "api/Hi.NcParsers.Keywords.PolarInterpolation.html",
"title": "Class PolarInterpolation | HiAPI-C# 2025",
"summary": "Class PolarInterpolation Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Inner-key constants of the PolarInterpolationState section. public static class PolarInterpolation Inheritance object PolarInterpolation Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.NcParsers.Keywords.Positioning.html": {
"href": "api/Hi.NcParsers.Keywords.Positioning.html",
"title": "Class Positioning | HiAPI-C# 2025",
"summary": "Class Positioning Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IPositioningDef. public class Positioning : IPositioningDef Inheritance object Positioning Implements IPositioningDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Absolute Absolute positioning mode name (corresponds to G90). public const string Absolute = \"Absolute\" Field Value string 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 Incremental positioning mode name (corresponds to G91). public const string Incremental = \"Incremental\" Field Value string 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 Mode Conventional positioning mode name (Absolute / Incremental). public string Mode { get; set; } Property Value string Term NC term of the positioning code on this block (G90 or G91). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.PositioningOverride.html": {
"href": "api/Hi.NcParsers.Keywords.PositioningOverride.html",
"title": "Class PositioningOverride | HiAPI-C# 2025",
"summary": "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 object PositioningOverride Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Examples \"PositioningOverride\": { \"C\": \"Shortest\" }"
},
"api/Hi.NcParsers.Keywords.ProgramEnd.html": {
"href": "api/Hi.NcParsers.Keywords.ProgramEnd.html",
"title": "Class ProgramEnd | HiAPI-C# 2025",
"summary": "Class ProgramEnd Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IProgramEndDef. public class ProgramEnd : IProgramEndDef Inheritance object ProgramEnd Implements IProgramEndDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term The M-code that triggered program end (M02 or M30). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ProgramStop.html": {
"href": "api/Hi.NcParsers.Keywords.ProgramStop.html",
"title": "Class ProgramStop | HiAPI-C# 2025",
"summary": "Class ProgramStop Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IProgramStopDef. public class ProgramStop : IProgramStopDef Inheritance object ProgramStop Implements IProgramStopDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term The M-code that triggered the stop (M00 or M01). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.RadiusCompensation.html": {
"href": "api/Hi.NcParsers.Keywords.RadiusCompensation.html",
"title": "Class RadiusCompensation | HiAPI-C# 2025",
"summary": "Class RadiusCompensation Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IRadiusCompensationDef. public class RadiusCompensation : IRadiusCompensationDef Inheritance object RadiusCompensation Implements IRadiusCompensationDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields SideLeft Left of programmed path (G41 / Heidenhain RL). public const string SideLeft = \"Left\" Field Value string SideNone No active compensation (G40 / Heidenhain R0). public const string SideNone = \"None\" Field Value string SideRight Right of programmed path (G42 / Heidenhain RR). public const string SideRight = \"Right\" Field Value string Properties OffsetId Offset number (Fanuc D number) selecting the radius in the tool offset table. Modal — preserved across G40 blocks so the next G41/G42 without an explicit D continues to reference the same row, matching real Fanuc/Siemens behaviour. public int OffsetId { get; set; } Property Value int Radius_mm Unsigned compensation radius in mm, looked up from the tool offset table. Real controller tool tables hold the radius as a non-negative geometry value (wear/delta sits in a separate column); this property mirrors that convention. Direction is encoded by Side. Omitted from the JSON section when Side is SideNone. public double Radius_mm { get; set; } Property Value double Side Compensation direction: SideNone, SideLeft, or SideRight. public string Side { get; set; } Property Value string Term CNC term: “G41”, “G42”, or “G40”. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.ISiemensPathSmoothingDef.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.ISiemensPathSmoothingDef.html",
"title": "Interface ISiemensPathSmoothingDef | HiAPI-C# 2025",
"summary": "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 IPathSmoothingDef.IsEnabled IPathSmoothingDef.Term Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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?"
},
"api/Hi.NcParsers.Keywords.Siemens.Msg.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.Msg.html",
"title": "Class Msg | HiAPI-C# 2025",
"summary": "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 object Msg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Text Verbatim message text between the quotes; absent for the MSG() clear form. public string Text { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensCall.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensCall.html",
"title": "Class SiemensCall | HiAPI-C# 2025",
"summary": "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 object SiemensCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 SiemensCallArgsNotBound. 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensFor.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensFor.html",
"title": "Class SiemensFor | HiAPI-C# 2025",
"summary": "Class SiemensFor Namespace Hi.NcParsers.Keywords.Siemens Assembly HiMech.dll 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 SiemensFor Inheritance object SiemensFor Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields InitKey JSON key of the single-entry init map under Parsing.SiemensFor: Init = { <var>: <start> }. public const string InitKey = \"Init\" Field Value string 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 End 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 End { get; set; } Property Value double Term One of TermFor, TermEndfor. public string Term { get; set; } Property Value string 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensGoto.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensGoto.html",
"title": "Class SiemensGoto | HiAPI-C# 2025",
"summary": "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 object SiemensGoto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 SiemensGotoConditionNotEvaluated 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensIf.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensIf.html",
"title": "Class SiemensIf | HiAPI-C# 2025",
"summary": "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 object SiemensIf Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 One of TermIf, TermElse, TermEndif. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html",
"title": "Class SiemensKeywords | HiAPI-C# 2025",
"summary": "Class SiemensKeywords Namespace Hi.NcParsers.Keywords.Siemens Assembly HiMech.dll Siemens Sinumerik G-code and M-code constants. public static class SiemensKeywords Inheritance object SiemensKeywords Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields 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 G54G57 supported as ISO-compatible. Extended via G505G599. public static readonly string[] ExtendedCoordinateSeries Field Value string[] 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 G500: Cancel all work coordinate offsets (machine coordinate mode). public const string G500 = \"G500\" Field Value string 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensLabel.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensLabel.html",
"title": "Class SiemensLabel | HiAPI-C# 2025",
"summary": "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 object SiemensLabel Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Label identifier without the trailing colon. public string Name { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensLoop.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensLoop.html",
"title": "Class SiemensLoop | HiAPI-C# 2025",
"summary": "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 object SiemensLoop Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 One of TermLoop, TermEndloop. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensLoopFrame.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensLoopFrame.html",
"title": "Class SiemensLoopFrame | HiAPI-C# 2025",
"summary": "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 object SiemensLoopFrame Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensLoopFrames.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensLoopFrames.html",
"title": "Class SiemensLoopFrames | HiAPI-C# 2025",
"summary": "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 object SiemensLoopFrames Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FramesKey JSON key of the frame array (bottom of stack first). public const string FramesKey = \"Frames\" Field Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensPathSmoothing.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensPathSmoothing.html",
"title": "Class SiemensPathSmoothing | HiAPI-C# 2025",
"summary": "Class SiemensPathSmoothing Namespace Hi.NcParsers.Keywords.Siemens Assembly HiMech.dll Section data holder for ISiemensPathSmoothingDef. public class SiemensPathSmoothing : PathSmoothing, ISiemensPathSmoothingDef, IPathSmoothingDef Inheritance object PathSmoothing SiemensPathSmoothing Implements ISiemensPathSmoothingDef IPathSmoothingDef Inherited Members PathSmoothing.IsEnabled PathSmoothing.Term object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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?"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensProc.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensProc.html",
"title": "Class SiemensProc | HiAPI-C# 2025",
"summary": "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 object SiemensProc Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensRepeat.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensRepeat.html",
"title": "Class SiemensRepeat | HiAPI-C# 2025",
"summary": "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 object SiemensRepeat Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensRepeatUntil.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensRepeatUntil.html",
"title": "Class SiemensRepeatUntil | HiAPI-C# 2025",
"summary": "Class SiemensRepeatUntil Namespace Hi.NcParsers.Keywords.Siemens Assembly HiMech.dll 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 class SiemensRepeatUntil Inheritance object SiemensRepeatUntil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields TermRepeat Post-test loop entry term (bare REPEAT). public const string TermRepeat = \"REPEAT\" Field Value string TermUntil Post-test loop condition term. public const string TermUntil = \"UNTIL\" Field Value string Properties Condition 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 string Condition { get; set; } Property Value string ConditionEvaluated 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 bool? ConditionEvaluated { get; set; } Property Value bool? Term One of TermRepeat, TermUntil. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.SiemensWhile.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.SiemensWhile.html",
"title": "Class SiemensWhile | HiAPI-C# 2025",
"summary": "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 object SiemensWhile Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 One of TermWhile, TermEndwhile. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.Stopre.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.Stopre.html",
"title": "Class Stopre | HiAPI-C# 2025",
"summary": "Class Stopre Namespace Hi.NcParsers.Keywords.Siemens Assembly HiMech.dll 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 Stopre Inheritance object Stopre Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term Source token, always STOPRE. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Siemens.html": {
"href": "api/Hi.NcParsers.Keywords.Siemens.html",
"title": "Namespace Hi.NcParsers.Keywords.Siemens | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Keywords.Siemens 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)."
},
"api/Hi.NcParsers.Keywords.SpindleControl.html": {
"href": "api/Hi.NcParsers.Keywords.SpindleControl.html",
"title": "Class SpindleControl | HiAPI-C# 2025",
"summary": "Class SpindleControl Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleControlDef. public class SpindleControl : ISpindleControlDef Inheritance object SpindleControl Implements ISpindleControlDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Direction Target spindle direction (STOP, CW, CCW). public SpindleDirection Direction { get; set; } Property Value SpindleDirection"
},
"api/Hi.NcParsers.Keywords.SpindleOrientation.html": {
"href": "api/Hi.NcParsers.Keywords.SpindleOrientation.html",
"title": "Class SpindleOrientation | HiAPI-C# 2025",
"summary": "Class SpindleOrientation Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleOrientationDef. public class SpindleOrientation : ISpindleOrientationDef Inheritance object SpindleOrientation Implements ISpindleOrientationDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Angle_deg Target spindle stop angle in degrees. public double Angle_deg { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.SpindleSpeed.html": {
"href": "api/Hi.NcParsers.Keywords.SpindleSpeed.html",
"title": "Class SpindleSpeed | HiAPI-C# 2025",
"summary": "Class SpindleSpeed Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleSpeedDef. public class SpindleSpeed : ISpindleSpeedDef Inheritance object SpindleSpeed Implements ISpindleSpeedDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Direction Spindle rotation direction. Stored in JSON as the enum name (e.g. “CW”, “CCW”, “STOP”). public SpindleDirection Direction { get; set; } Property Value SpindleDirection SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double"
},
"api/Hi.NcParsers.Keywords.SubProgramCall.html": {
"href": "api/Hi.NcParsers.Keywords.SubProgramCall.html",
"title": "Class SubProgramCall | HiAPI-C# 2025",
"summary": "Class SubProgramCall Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram call record left by SubProgramCallSyntax on the M98 / M198 host block and on every inlined body block. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered (or sits inside) an inline of program P\". M98 and M198 share the exact same section shape. The difference between them is purely environmental — which folder the resolver looks in (SubProgramFolderConfig.InternalFolder vs ExternalFolder) — and that lives on the dependency, not in this JSON record. public class SubProgramCall Inheritance object SubProgramCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FileName Bare matched file name (e.g. “O1234.NC”). The resolver tries several fallback patterns (FilenamePatterns); this records which one hit. JSON-portable across environments — the folder context (internal vs external storage) is captured by the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. public int L { get; set; } Property Value int P Subprogram number from the P parameter (e.g., 1234 for O1234). public int P { get; set; } Property Value int Term Triggering keyword: “M98” (internal) or “M198” (external storage). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.SubProgramReturn.html": {
"href": "api/Hi.NcParsers.Keywords.SubProgramReturn.html",
"title": "Class SubProgramReturn | HiAPI-C# 2025",
"summary": "Class SubProgramReturn Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and surfaces the M99 P{seq} jump decision. public class SubProgramReturn Inheritance object SubProgramReturn Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties JumpedToN Set to P when the M99 actually redirected control flow to the caller's N{seq} block via ReplaceSource(IEnumerable<T>). Null on plain M99 (no P), and on M99 P{seq} that fell through because the jump could not be carried out. public int? JumpedToN { get; set; } Property Value int? P Optional caller sequence number from the P parameter (M99 P{seq}). Null on a plain M99. When non-null and the jump fires, JumpedToN is set to the same value; when the jump is suppressed (no caller frame, label not found, iteration limit reached) JumpedToN stays null and a warning is emitted. public int? P { get; set; } Property Value int? Term Triggering keyword (always “M99” for now). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.TapeBoundary.html": {
"href": "api/Hi.NcParsers.Keywords.TapeBoundary.html",
"title": "Class TapeBoundary | HiAPI-C# 2025",
"summary": "Class TapeBoundary Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Tape leader / trailer line — the literal % that historically marked the start and end of a punched paper-tape program. ISO-style controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a file-level boundary marker. Distinct from a comment: the controller uses it as a tape/file delimiter, not as embedded operator text. public class TapeBoundary Inheritance object TapeBoundary Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Text Free-form content after the % on the same line, typically empty. public string Text { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.TiltTransform.html": {
"href": "api/Hi.NcParsers.Keywords.TiltTransform.html",
"title": "Class TiltTransform | HiAPI-C# 2025",
"summary": "Class TiltTransform Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Concrete class for ITiltTransformDef section serialization. public class TiltTransform : ITiltTransformDef Inheritance object TiltTransform Implements ITiltTransformDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Term CNC term for tilt: “G68”, “G68.2”, “G69”, “PLANE SPATIAL”, “CYCLE800”, etc. public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.ToolHeightCompensation.html": {
"href": "api/Hi.NcParsers.Keywords.ToolHeightCompensation.html",
"title": "Class ToolHeightCompensation | HiAPI-C# 2025",
"summary": "Class ToolHeightCompensation Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IToolHeightCompensationDef. public class ToolHeightCompensation : IToolHeightCompensationDef Inheritance object ToolHeightCompensation Implements IToolHeightCompensationDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties OffsetId Generic offset selector: Fanuc H number, Heidenhain T number, Mazak/Okuma H number. For Siemens (T+D addressing), see ISiemensToolOffsetConfig. public int OffsetId { get; set; } Property Value int Offset_mm Derived effective tool height compensation in mm. Computed from Term and OffsetId: looks up the offset table for OffsetId, obtains the effective height (geometry minus wear), then applies sign from Term (positive for G43/G43.4, negative for G44, zero for G49). public double Offset_mm { get; set; } Property Value double Term CNC term for tool height compensation: “G43”, “G43.4”, “G44”, “G49”. Brand-specific syntaxes may write equivalent terms (e.g., “TRAORI” for Siemens, “M128” for Heidenhain). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Unit.html": {
"href": "api/Hi.NcParsers.Keywords.Unit.html",
"title": "Class Unit | HiAPI-C# 2025",
"summary": "Class Unit Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IUnitDef. public class Unit : IUnitDef Inheritance object Unit Implements IUnitDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Inch Inch unit-system name (corresponds to G20). public const string Inch = \"Inch\" Field Value string Metric Metric unit-system name (corresponds to G21). public const string Metric = \"Metric\" Field Value string Properties System Abstract name of the unit system (Metric / Inch). public string System { get; set; } Property Value string Term NC term of the unit code on this block (G20 or G21). public string Term { get; set; } Property Value string"
},
"api/Hi.NcParsers.Keywords.Vars.html": {
"href": "api/Hi.NcParsers.Keywords.Vars.html",
"title": "Class Vars | HiAPI-C# 2025",
"summary": "Class Vars Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON section schema for per-block variable storage. Each sub-property names a sub-section that holds a { “#nnn”: value } dictionary keyed by Fanuc-style variable id. The sub-sections partition the variable space by lifetime: Local — #1-#33, scope: macro call frame (pushed/popped by G65 / G66 / M99). Volatile — #100-#499, non-retained common; carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. SystemControl — #3000-#3999, controller-side system variables; offline-only round-trip record (real controller effects such as clock reset / alarm trigger / message pause are not simulated). The property types are JsonObject rather than strongly-typed dictionaries because each sub-section's keys are dynamic Fanuc variable ids (#100, #5001, …) discovered at parse time, not a fixed schema. This class exists solely to give the section name and sub-keys stable nameof() targets — instances are never constructed at runtime. public class Vars Inheritance object Vars Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Local Macro-local sub-section (#1-#33). public JsonObject Local { get; set; } Property Value JsonObject 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 SystemControl System-control sub-section (#3000-#3999). public JsonObject SystemControl { get; set; } Property Value JsonObject 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 Volatile Non-retained common sub-section (#100-#499). public JsonObject Volatile { get; set; } Property Value JsonObject"
},
"api/Hi.NcParsers.Keywords.html": {
"href": "api/Hi.NcParsers.Keywords.html",
"title": "Namespace Hi.NcParsers.Keywords | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Keywords Classes BlockSkip Optional block skip marker extracted from the head of an NC block. ISO 6983 / Fanuc calls this feature Block Delete (BDT switch); Siemens / Syntec / Mazak use the same / prefix with matching behaviour. The section is only present on blocks that carry a / prefix. Whether the block's NC commands are actually skipped at runtime depends on IBlockSkipConfig: Config absent or the Layer bit OFF → the / prefix is consumed, Body is left null, and the rest of the line parses as a regular NC block (comments still take effect). Config present and the Layer bit ON → the rest of the line is moved into Body and cleared from UnparsedText, so downstream parsing syntaxes see nothing and no NC action is emitted. Comment syntaxes run before this one so comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. CallFrame One entry in Frames. Holds the caller-side information consumers need to “unwind” or “look back” — currently only the relative file path of the caller, used by SubProgramReturnSyntax on M99 P{seq} to locate the caller's N{seq} block. CallStack JSON-section data shape representing the active call-frame stack on a block — pushed by call-and-inline syntaxes (SubProgramCallSyntax for M98/M198, FanucMacroCallSyntax for G65, and FanucModalMacroSyntax's expansion phase for G66 implicit triggers) and popped by SubProgramReturnSyntax on M99. Every block between push and pop carries the section forward via ModalCarrySyntax; the caller's blocks before push and after pop carry the surrounding stack state (typically empty when running from the main file). The section is wrapped in a JsonObject rather than exposed as a bare JsonArray so it fits ModalCarry's \"deep-clone JsonObject\" carry pattern — the array of frames lives inside Frames. CannedCycle Section key holder + concrete implementation for ICannedCycleDef. Comment Comment extracted from an NC block. Symbol identifies the comment style; Text holds the content without the symbol. Downstream syntaxes (e.g., CsScript) may further trim Text after extracting embedded markers. CompoundMotion Section key holder + concrete implementation for ICompoundMotionDef. Coolant Section key holder + concrete implementation for ICoolantDef. CoordinateOffset Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1G59.9. Siemens: G54G57 + G505G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). CsScript Section-key holder for inline C# scripts attached to an NC block. Carries BeginScript (run before the block's acts) and EndScript (run after). Resolved by CsScriptBeginSemantic and CsScriptEndSemantic. Dwell Section key holder + concrete implementation for IDwellDef. FanucGoto Fanuc Custom Macro B GOTO record. Stamped on the host block by FanucGotoSyntax after the control-flow decision has been made; produced earlier by FanucGotoParsingSyntax as a parsing-stage sub-section (Parsing.FanucGoto) carrying the raw captured fields. Two source forms map to the same shape: GOTO <n> — unconditional jump. Condition is null. IF [<bool-expr>] GOTO <n> — conditional jump. Condition holds the expression text from inside the brackets. At parsing time N is a raw token from the source — it may be a literal (\"100\"), a variable reference (\"#1\"), or a bracketed expression (\"#[#2+5]\"). VariableEvaluatorSyntax substitutes a resolved literal back into the same field in the Evaluation bundle; FanucGotoSyntax then int.TryParses the final string to produce an int target. Lifecycle of the condition fields. Condition is written at Parsing time as the raw expression text and substituted in place by VariableEvaluatorSyntax pass-2 — the original text is preserved at Formula.FanucGoto.Condition when substitution succeeds. ConditionEvaluated is the host-level stamp written by FanucGotoSyntax carrying the tri-state truthy outcome. FanucIfThen Fanuc Custom Macro B IF [<cond>] THEN <body> single-block conditional record. Stamped on the host block by FanucIfThenSyntax after the gate decision; produced earlier by FanucIfThenParsingSyntax as a parsing-stage sub-section (Parsing.FanucIfThen) carrying the raw captured fields plus an internal PendingAssignments sub-object harvested from the body text. Spec: IF [bool-expr] THEN <stmt> executes <stmt> only when the condition is truthy. Unlike FanucGoto's conditional form there is no jump — the body affects the current block only, no source splice, no label scan, no iteration watchdog. The most common body shape is a single Custom Macro B assignment (#nnn = <expr>); multiple assignments in one body are also accepted and lifted together. Condition is held as a string at parsing time so VariableEvaluatorSyntax's pass-2 tree walk can substitute it to a numeric JsonValue in place; the FanucIfThenSyntax tail then reads the resolved node polymorphically via the same ReadCondition shape used by FanucGotoSyntax. FanucMacroCall One-shot custom-macro-call record written by FanucMacroCallSyntax. Lives on both the G65 host block (the caller) and every inlined block of the macro body — so a cache-dump reader can land on any block inside the macro and immediately see “this block belongs to a G65 call of FileName with these argument bindings” without back-walking to find the host. Each inlined block additionally carries the resolved Vars.Local #1-#26 bindings derived from Args (see FanucMacroArgumentMap), so LocalVariableLookup resolves macro args in a single-block lookup. Frame isolation is structural: caller blocks never have Vars.Local written, so after the macro body ends, the next caller block reads null for any #1-#26 without any explicit frame marker. FanucModalMacro Modal-macro-call record left by FanucModalMacroSyntax. Carries Fanuc G66 setup state forward block-to-block until cancelled by G67. The section is also written on the G67 block itself (with Term = “G67”) so cache dumps show the cancel edge; subsequent blocks then carry no section at all. Per-block expansion of the modal call into an actual macro inline at every positioning move is not yet implemented — a FanucModalMacro--NotExpanded warning is emitted on the setup block to flag the simulation gap. The setup state itself is captured faithfully so external tooling can detect \"this block sits inside a G66 modal\" via the carried section. FanucPathSmoothing Section data holder for IFanucPathSmoothingDef. FanucProgramNumber Fanuc-family program identifier header that follows a TapeBoundary line — e.g. O1234 or <O1234>. Wrapper records the surface form so a parsed block can be emitted back to the original notation. FanucWhileDo Fanuc Custom Macro B WHILE/END bounded-loop record. Stamped on the host block by FanucWhileDoSyntax after the control-flow decision has been made; produced earlier by FanucWhileDoParsingSyntax as a parsing-stage sub-section (Parsing.FanucWhileDo) carrying the raw captured fields. Two phrases map to the same shape, distinguished by Term: WHILE [<bool-expr>] DO <m> — loop entry. Condition holds the expression text from inside the brackets at parsing time; substituted to a numeric JsonValue by VariableEvaluatorSyntax in place. ConditionEvaluated carries the host-level truthy outcome at stamp time. END <m> — loop terminator. Carries no condition; unconditionally reverse-jumps to the matching WHILE block on every execution (re-evaluation of the entry condition is the WHILE block's responsibility). LoopId is the spec-named \"identification number for nesting\" (the m in DO m / END m). Nested loops must use distinct LoopIds; matching is by exact value. Same-LoopId nesting is spec-undefined and not given special handling here. Active loop frames are carried block-to-block via the top-level WhileFrames JSON section (a JsonObject keyed by LoopId-as-string, each entry recording the BeginLineNo of the WHILE block that opened that frame). Carried by ModalCarrySyntax as part of its Logic tracked keys (mutated in Evaluation, must reach Logic-stage consumers and downstream blocks unchanged). Feedrate Section key holder + concrete implementation for IFeedrateDef. IndexNote JSON-section data shape pairing a single-character address symbol (e.g. O, N) with its numeric index, used to annotate program/sequence numbers on an NC block. IsoLocalCoordinateOffset ISO/Fanuc-family local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. G52 X Y Z installs a local coordinate-system shift that stacks on top of the active G54-G59 work offset. The cancel mechanism is to write G52 X0 Y0 Z0 (or hit M30 / reset) — there is no separate G code for \"cancel\". The offset vector is therefore always modal: zero is a valid modal value, not a \"disabled\" state, so the section is recorded on every block. Brand-specific kin: Siemens TRANS/ATRANS (which can also carry rotation/scale/mirror) and Heidenhain TRANS DATUM are handled by their own syntaxes and write to their own sections — they do not share this key, because their data shapes are richer. MachineCoordinateState Section key holder for IMachineCoordinateStateDef. MacroFrame Top-level integer marker stamped onto a SyntaxPiece's JSON to identify which call frame the block belongs to. Brand-agnostic by design — written by FanucMacroCallSyntax today, reusable by any future call-inlining syntax (Fanuc G66 modal expansion, Heidenhain LBL CALL, …) that needs local-variable isolation across call boundaries. Semantics: the value is an opaque id; only equality matters. Two blocks with the same MacroFrame id share a call frame (locals visible across them via single-step carry); two blocks with different ids do not. The id 0 is reserved for the main program frame and is returned by Get(JsonObject) when the field is absent — so a plain caller block needs no stamp and yet compares distinct from any inlined frame. Stored as a top-level JSON int (not an object section) so it stays lightweight on every inlined block. Decoupled from FanucMacroCall: that section is a diagnostic record of the call (what file, what args), while MacroFrame is the purely functional marker the local-variable I/O syntaxes consult. MotionEvent Section key holder + concrete implementation for IMotionEventDef. MotionState Section key holder + concrete implementation for IMotionStateDef. PathSmoothing Section key holder for IPathSmoothingDef. PlaneSelect Section key holder for IPlaneSelectDef. 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. ProgramEnd Section key holder for IProgramEndDef. ProgramStop Section key holder + concrete implementation for IProgramStopDef. RadiusCompensation Section key holder + concrete implementation for IRadiusCompensationDef. SpindleControl Section key holder + concrete implementation for ISpindleControlDef. SpindleOrientation Section key holder + concrete implementation for ISpindleOrientationDef. SpindleSpeed Section key holder + concrete implementation for ISpindleSpeedDef. SubProgramCall Subprogram call record left by SubProgramCallSyntax on the M98 / M198 host block and on every inlined body block. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered (or sits inside) an inline of program P\". M98 and M198 share the exact same section shape. The difference between them is purely environmental — which folder the resolver looks in (SubProgramFolderConfig.InternalFolder vs ExternalFolder) — and that lives on the dependency, not in this JSON record. SubProgramReturn Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and surfaces the M99 P{seq} jump decision. TapeBoundary Tape leader / trailer line — the literal % that historically marked the start and end of a punched paper-tape program. ISO-style controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a file-level boundary marker. Distinct from a comment: the controller uses it as a tape/file delimiter, not as embedded operator text. TiltTransform Concrete class for ITiltTransformDef section serialization. ToolHeightCompensation Section key holder for IToolHeightCompensationDef. Unit Section key holder + concrete implementation for IUnitDef. Vars JSON section schema for per-block variable storage. Each sub-property names a sub-section that holds a { “#nnn”: value } dictionary keyed by Fanuc-style variable id. The sub-sections partition the variable space by lifetime: Local — #1-#33, scope: macro call frame (pushed/popped by G65 / G66 / M99). Volatile — #100-#499, non-retained common; carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. SystemControl — #3000-#3999, controller-side system variables; offline-only round-trip record (real controller effects such as clock reset / alarm trigger / message pause are not simulated). The property types are JsonObject rather than strongly-typed dictionaries because each sub-section's keys are dynamic Fanuc variable ids (#100, #5001, …) discovered at parse time, not a fixed schema. This class exists solely to give the section name and sub-keys stable nameof() targets — instances are never constructed at runtime. Interfaces IArcMotionDef Arc motion data written by CircularMotionSyntax. Stored under the MotionEvent JSON section alongside IMotionEventDef properties. The arc plane is read from the modal PlaneSelect section via GetPlaneNormalDir(JsonObject) rather than cached on the event — same source of truth as IsoG68RotationSyntax. ICannedCycleDef Canned cycle modal state (Group 09). Captures which cycle is currently active, its return mode (G98/G99), and the resolved absolute parameter set used for modal lookback. Written by CannedCycleResolveSyntax on every block that belongs to the canned-cycle group: cycle code present (G81/G82/G83/G73/G84/G74/G85/G86/G89/G76/G87), modal repeat (cycle still active, only coordinates given), or explicit cancel (G80). Term = \"G80\" is the explicit-cancel sentinel used by FindPreviousActiveCycle(LazyLinkedListNode<SyntaxPiece>, string[]) to terminate modal lookback without ambiguity; regular blocks (e.g. G00 X.. Y..) simply omit the section entirely. ICompoundMotionDef Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Hi.Motion — rapid/feed linear motion (IMotionEventDef + IMachineCoordinateStateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (Angle_deg) ICoolantDef Coolant state (M07 mist / M08 flood / M09 off). Written by CoolantSyntax. Modal — persists until changed. IsOn is the on/off convenience flag (true for M07 and M08, false for M09). Mode carries the abstract kind (Flood / Mist / Off) for consumers that need to distinguish flood vs mist. IDwellDef Dwell/pause section definition for use inside Sequence items. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActDelay. IFanucPathSmoothingDef Fanuc-specific path smoothing state written by FanucPathSmoothingSyntax. Extends IPathSmoothingDef with the Fanuc G05.1 R argument (precision / smoothness level number, R1..R10 mapping to controller-internal tuning macro variables). Q is binary in current Fanuc firmware (Q0 disable / Q1 enable), so IsEnabled covers it directly — no raw Q field is stored. JSON section key remains nameof(PathSmoothing) so generic readers (cache dumps, modal carry, UI) can cast to IPathSmoothingDef across all controller brands; brand-specific readers cast to IFanucPathSmoothingDef for the extra fields. IFeedrateDef Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. IFlagsDef JSON section schema describing the modal/non-modal flags that take effect on an NC block. Each entry in Flags is a brand-specific keyword recognized by the soft-NC runtime. IMachineCoordinateStateDef Modal machine-coordinate state — absolute six-axis machine position after the block has executed. Written on every block by motion-related LogicSyntaxs (McAbcSyntax, McAbcXyzFallbackSyntax, McXyzSyntax, MachineCoordSelectSyntax, G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across non-motion blocks — 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. IMotionEventDef One-shot motion event — present on every block whose source programmed a motion command, regardless of whether the resulting displacement is non-zero. A redundant G01 X10 on a block already at X10 still gets a MotionEvent; the motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMcMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks. Reason for the \"programmed, not displaced\" definition: Fanuc G66 modal macro fires once per programmed motion command (per Fanuc spec — no distance gate), so FanucModalMacroSyntax.Expansion uses MotionEvent presence as its trigger. Suppressing the section on zero-distance moves would silently change G66 behaviour. The modal sibling MotionState separately latches the Group-01 mode for readers that only need to know \"what G-code is active\". Property names are used as JSON keys via nameof. IMotionStateDef Modal motion state — Group 01 G-code mode (G00 / G01 / G02 / G03 ...). Written on every block by LinearMotionSyntax / CircularMotionSyntax; carried across non-motion blocks by ModalCarrySyntax. Property names are used as JSON keys via nameof. Unlike sibling modal sections (Unit, PlaneSelect, Positioning) which carry both a brand-specific Term and a brand-neutral conventional field, MotionState intentionally keeps only Term: the brand-neutral semantic (\"what kind of motion happened\") lives on the sibling one-shot MotionEvent (Form = McLinear / McArc / ClLinear / ClArc). State here is purely the modal latch of the last Group-01 G-code so downstream FindPrevious* can resume motion-mode bookkeeping. IParsingDef JSON section schema carrying the raw, brand-specific parsing trace for an NC block. The Parsing node holds intermediate parser output used by downstream syntaxes and diagnostics. IPathSmoothingDef Path smoothing state. The base interface is brand-agnostic; controller brands extend it with their own argument fields (e.g. IFanucPathSmoothingDef for Fanuc G05.1 R precision-level). Fanuc-flavour writes are produced by FanucPathSmoothingSyntax. ISO/Fanuc G05.1 Q1 (enable) / G05.1 Q0 (disable): high-precision contour control / AICC / Nano Smoothing. Controller-internal interpolation black box — simulation records the state but does not alter the tool path. IPlaneSelectDef Active plane selection state written by PlaneSelectSyntax. Property names are used as JSON keys via nameof. ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax. Term carries the brand-specific G-code; Plane stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ). 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. IPositioningDef Modal positioning state — ISO Group 03 (G90 absolute / G91 incremental). Written by PositioningSyntax, consumed by IncrementalResolveSyntax, canned cycle syntaxes, and MachineCoordSelectSyntax. Property names are used as JSON keys via nameof. Term is the brand-specific G-code (Fanuc/ISO G90/G91); Mode is the conventional, brand-neutral name (Absolute / Incremental). IProgramEndDef Program end marker (M02/M30). Written by ProgramEndSyntax. Other syntaxes (e.g. IsoLocalCoordinateOffsetSyntax) read this section to reset modal state instead of detecting M30 directly. IProgramStopDef Program-stop marker (M00 unconditional / M01 optional). Written by ProgramStopSyntax on each block that carries an M00/M01 flag. Non-modal: the section appears only on the exact block where the stop code is present. Distinct from IProgramEndDef (M02/M30, end of program). M00 halts execution unconditionally; the operator must press Cycle Start to resume. M01 is an optional stop gated by the operator's \"Optional Stop\" panel switch — ignored when the switch is off. This parsing-layer section records the NC intent; runtime / semantic layers decide whether to actually pause. IProgramXyzDef JSON section schema carrying the program-coordinate position commanded on the current block. Written by ProgramXyzSyntax before the ProgramToMcTransform chain composes it into machine coordinates. IRadiusCompensationDef Radius compensation state written by RadiusCompensationSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G41 (left), G42 (right), G40 (cancel). Heidenhain Klartext maps RL → G41, RR → G42, R0 → G40. When active, the tool path is offset perpendicular to the programmed path by Radius_mm; Side determines left vs right. The root ProgramXyz retains the user-programmed position; MachineCoordinate is overwritten to reflect the compensated path. ISpindleControlDef Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. ISpindleOrientationDef Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. ISpindleSpeedDef Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. ITiltTransformDef Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). IToolHeightCompensationDef Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). ITransformationDef Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source”, “Kind”, and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. GetComposedTransform(JsonObject) composes entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. Kind contour-validity classification. Each entry is either: \"Static\" — the Mat4d is valid for any point along the contour. Tilt, coord-offset, and the kinematic pivot in non-RTCP / rotary-stable blocks are all Static. \"Dynamic\" — the Mat4d is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composition still yields a correct endpoint MC, but the matrix is not contour-valid: intermediate CL-point positions cannot be derived by applying it to an interpolated ProgramXyz. The semantic layer (ClLinearMcMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. IUnitDef Unit-system state (ISO Group 06: G20 inch / G21 metric). Written by UnitModeSyntax. Modal. HiNC's NC pipeline works exclusively in millimetres. G21 is therefore a no-op confirmation of the default; G20 is reported as an Unsupported Error and callers are expected to pre-convert the NC program to metric before loading. IUnparsedTextDef JSON section schema carrying the residual block text that was not consumed by any registered syntax. Used for diagnostics and round-trip preservation."
},
"api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html",
"title": "Class BackBoringSyntax | HiAPI-C# 2025",
"summary": "Class BackBoringSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. public class BackBoringSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BackBoringSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G87 G98 — pre-populated CannedCycle, no #Previous: so initZ = 0, F=600 → 10 mm/s, shift Q=1. Eleven items — the longest canned-cycle item list — split into three phases: enter shifted (OSS, shifted-init, shifted-bottom, back-to- center, spindle-CW); cut upward (feed bottom → R); retract shifted (OSS again, shifted-at-R, shifted-final, back-to-center, spindle- restart). Note that the feed step goes UP (Z=-10 → Z=2), not down, which is the defining feature of back boring: #BeforeBuild: { \"Parsing\": { \"G87\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G87\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G87\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G87\", \"Items\": [ { \"SpindleOrientation\": { \"Angle_deg\": 0 } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"SpindleControl\": { \"Direction\": \"CW\" } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleOrientation\": { \"Angle_deg\": 0 } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"SpindleControl\": { \"Direction\": \"CW\" } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Constructors BackBoringSyntax() Initializes a new instance with default settings. public BackBoringSyntax() BackBoringSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BackBoringSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html",
"title": "Enum BareG28Behavior | HiAPI-C# 2025",
"summary": "Enum BareG28Behavior Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Configurable handling for a G28 block with no axis specifiers (“bare G28”) — value of BareG28. Real Fanuc-class controllers vary: older 0i-M alarms (PS010), some 30i variants send every configured axis to home. Default to Alarm so silent NC bugs surface; opt into AllAxesHome per syntax instance. public enum BareG28Behavior Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Alarm = 0 Emit Coord-RefReturn003 validation error and consume the bare G28 without emitting motion. AllAxesHome = 1 Interpret bare G28 as if every configured axis were listed at its current modal value, so item 0 (intermediate) is a no-op and item 1 sends each configured axis to its home. Requires an IMachineAxisConfig dep; without one the syntax falls back to Alarm."
},
"api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html",
"title": "Class BoringCycleSyntax | HiAPI-C# 2025",
"summary": "Class BoringCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class BoringCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BoringCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below pre-populate CannedCycle as CannedCycleResolveSyntax would have written it. There is no #Previous:, so GetLastProgramXyz returns Vec3d.Zero → initZ = 0. F is supplied inside the cycle section so ResolveFeedrate(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress) writes block-level Feedrate (G94 default, 600 mm/min → 10 mm/s) before items are emitted. All cases use G98 return mode so finalZ = initZ = 0. G85 — feed to bottom, feed retract (smooth bore finish). The retract item carries the same Feedrate_mmds as the down-stroke. Four items: #BeforeBuild: { \"Parsing\": { \"G85\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G85\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G85\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G85\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } G86 — feed to bottom, spindle stop, rapid retract, spindle restart CW. First marker to spell out { \"SpindleControl\": { \"Direction\": ... } } items. The retract item carries IsRapid: true rather than a feedrate. Six items: #BeforeBuild: { \"Parsing\": { \"G86\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G86\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G86\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G86\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleControl\": { \"Direction\": \"STOP\" } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"SpindleControl\": { \"Direction\": \"CW\" } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } G89 with P=0.3s dwell — like G85 but inserts a { Dwell: { Time: 0.3 } } item at the bottom before the feed retract. Five items: #BeforeBuild: { \"Parsing\": { \"G89\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600, \"P\": 0.3 } }, \"CannedCycle\": { \"Term\": \"G89\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G89\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G89\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"Dwell\": { \"Time\": 0.3 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Remarks G86 emits SpindleControl items for spindle stop (before retract) and spindle restart CW (after retract). The restart assumes the previous direction was CW (M03), which is the typical boring setup. Constructors BoringCycleSyntax() Initializes a new instance with default settings. public BoringCycleSyntax() BoringCycleSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BoringCycleSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html",
"title": "Class CannedCycleResolveSyntax | HiAPI-C# 2025",
"summary": "Class CannedCycleResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves the canned-cycle Group-09 state for the current block and writes the result to the CannedCycle section. Active cycle (direct G81..G89 or modal repeat): merges Parsing overrides with previous-cycle stored params, applies G91 incremental-to-absolute conversion and missing-axis fallback, writes CannedCycle with Term, ReturnMode, and Params. The resolved cycle sub-section is left in Parsing under the cycle code for downstream cycle syntaxes (DrillingCycleSyntax, etc.) to read. Explicit cancel (G80 flag present on a non-cycle block): consumes the G80 flag and writes CannedCycle = { Term: \"G80\" }, acting as a hard sentinel for Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil modal lookback. No Group-09 activity: leaves the block untouched. Must be placed after PositioningSyntax and before the individual cycle syntaxes in the chain. public class CannedCycleResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CannedCycleResolveSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Direct G81 active cycle, no #Previous: (so lastProgramXyz = Vec3d.Zero) and no Positioning mode (so the absolute-coordinate path runs, not G91 incremental). The resolved cycle sub-section is left in Parsing under the cycle code for downstream cycle syntaxes to consume; the CannedCycle section carries the snapshot used for modal lookback. ReturnMode defaults to G98 when neither the current block nor a previous block declares G98/G99: #BeforeBuild: { \"Parsing\": { \"G81\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"Parsing\": { \"G81\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } Modal repeat: the current block carries only an X override and no cycle code, but #Previous: has an active G81 with stored params. MergeModalCycleSection(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress) merges X=60 (override) with Y/Z/R from stored params, removes the consumed X from Parsing root, and writes the merged section back to Parsing.G81. ReturnMode inherits “G98” from the previous block's ReturnMode: #Previous: { \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } #BeforeBuild: { \"Parsing\": { \"X\": 60 } } #AfterBuild: { \"Parsing\": { \"G81\": { \"X\": 60, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 60, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } Explicit G80 cancel: standalone G80 flag with no cycle data. The G80 flag is consumed and CannedCycle = { Term: G80 } is written as a hard sentinel that FindPreviousActiveCycle(LazyLinkedListNode<SyntaxPiece>, string[]) reads to terminate modal lookback. No ReturnMode hint here (no G98/G99 flag on the same block): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G80\"] } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G80\" } } Properties Default Default instance with standard settings. public static CannedCycleResolveSyntax Default { get; } Property Value CannedCycleResolveSyntax 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"
},
"api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html",
"title": "Class CircularMotionSyntax | HiAPI-C# 2025",
"summary": "Class CircularMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. 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. public class CircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CircularMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below have the current block's ProgramXyz already set (as a prior ProgramXyzSyntax would have produced) and run with no #Previous:, so GetLastProgramXyz returns Vec3d.Zero. The G17 XY plane is implicit (no PlaneSelect section means GetPlaneNormalDir(JsonObject) returns 2 — the XY-plane default — so arc math runs with Z as the perpendicular axis). G02 with I/J — quarter arc from (0,0,0) to (10,0,0) around (5,0,0); I=5 J=0 are incremental offsets from start to center. The G02 flag is consumed (Parsing removed once empty); MotionState + MotionEvent are written: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } Modal carry of G02: no motion flag on the current block but a #Previous: MotionState.Term = \"G02\" tells us we are still in circular mode. I/J on the current block describe the arc the same way: #Previous: { \"MotionState\": { \"Term\": \"G02\" } } #BeforeBuild: { \"Parsing\": { \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } No I/J/K/R on the block — the per-block arc data is missing, so the syntax bails out early; the G02 flag stays in Parsing.Flags for some other syntax to act on (or to surface as residue if no one does): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"] }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G02\"] }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } R-format degenerate (chord = 2R, semicircle): start (0,0,0) → end (10,0,0), R=5. perpDistSq resolves to 0 so the computed center collapses to the chord midpoint (5,0,0); no sqrt drift on this branch: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"R\": 5 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } R-format non-trivial: G02 90° arc from (0,0,0) to (10,10,0) with R=10. The center comes from the cross-product + sqrt + normalize path inside ResolveCenterFromSignedRadius(Vec3d, Vec3d, int, bool, double), but for this particular axis-aligned chord the rounding errors cancel and the center lands at exactly (10, 0, 0) — i.e. no ULP drift here, in contrast to e.g. McAbcCyclicPathSyntax's rad/deg round-trip: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"R\": 10 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 10, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 10, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } G03 CCW with I/J — same geometry as case 0 (start (0,0,0), end (10,0,0), I=5 J=0 → center (5,0,0)) but the G03 flag flips IsCcw to true. Direction is the only differentiating output; arc-center math is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G03\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G03\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": true, \"AdditionalCircleNum\": 0 } } Full circle G02 — start == end (both (0,0,0)), I=5 J=0 places center off-start at (5,0,0). Plane-restricted closure (IsClosedOnPlane(Vec3d, Vec3d, int, double)) flips AdditionalCircleNum to 1 so a downstream motion semantic knows to draw the closed loop: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"AdditionalCircleNum\": 1 } } 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 the legacy HardNc reading; the L parameter is consumed alongside I/J/K/R: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0, \"L\": 3 }, \"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\": 2 } } K-as-pitch helix on G17 (XY plane) — when the plane-normal axis letter (K for G17, J for G18, I for G19) is present on an IJK-format 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 the legacy HardNc reading: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0, \"K\": -3 }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": -9 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": -9 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"IsCcw\": false, \"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 } } Constructors CircularMotionSyntax() Initializes a new instance with default settings. public CircularMotionSyntax() CircularMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CircularMotionSyntax(XElement src) Parameters src XElement Source XML element. 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 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"
},
"api/Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html",
"title": "Class CodedPositionUtil | HiAPI-C# 2025",
"summary": "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 object CodedPositionUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html",
"title": "Class CoolantSyntax | HiAPI-C# 2025",
"summary": "Class CoolantSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. public class CoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CoolantSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M08\"] } } #AfterBuild: { \"Coolant\": { \"IsOn\": true, \"Mode\": \"Flood\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M09\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Coolant\": { \"IsOn\": false, \"Mode\": \"Off\" } } #Previous: { \"Coolant\": { \"IsOn\": true, \"Mode\": \"Mist\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Coolant\": { \"IsOn\": true, \"Mode\": \"Mist\" } } Constructors CoolantSyntax() Initializes a new instance with default settings. public CoolantSyntax() CoolantSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CoolantSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html",
"title": "Class CoordinateOffsetUtil | HiAPI-C# 2025",
"summary": "Class CoordinateOffsetUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. public static class CoordinateOffsetUtil Inheritance object CoordinateOffsetUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields TransformSource Identifier used as the transform source key when composing the coordinate offset translation into ProgramToMcTransform. public const string TransformSource = \"CoordinateOffset\" Field Value string Methods ComposeTranslation(JsonObject, Vec3d) Composes a translation matrix from the given offset and registers it under TransformSource in the block's transform stack. public static void ComposeTranslation(JsonObject json, Vec3d offset) Parameters json JsonObject Block JSON object to update. offset Vec3d Translation offset to apply. FindPreviousCoordinateId(LazyLinkedListNode<SyntaxPiece>) Walks the previous node and returns its CoordinateId if any; used for modal lookback when the current block does not specify one. public static string FindPreviousCoordinateId(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Current node to look back from. Returns string GetCurrentCoordinateId(JsonObject) Gets CoordinateId from the current node's existing CoordinateOffset section (e.g., set by StaticInitializer). public static string GetCurrentCoordinateId(JsonObject json) Parameters json JsonObject Returns string ResolveOffset(IEnumerable<INcDependency>, string) Resolves the offset for coordId by scanning every IIsoCoordinateConfig in ncDependencyList and returning the first non-null result. Returns null when no provider has data for this id (callers should fall back to Zero). Multi-provider iteration lets a brand parameter table cover the hardware-mapped subset (e.g. Fanuc G54G59, G54.1 P1P48 backed by real parameter numbers) while a standalone IsoCoordinateTable covers HiNC-extension ids the brand table does not handle (e.g. G59.1G59.9). public static Vec3d ResolveOffset(IEnumerable<INcDependency> ncDependencyList, string coordId) Parameters ncDependencyList IEnumerable<INcDependency> coordId string Returns Vec3d WriteSection(JsonObject, string, Vec3d) Writes the CoordinateOffset section with the given coordinate id and XYZ offset components. public static void WriteSection(JsonObject json, string coordId, Vec3d offset) Parameters json JsonObject Block JSON object to update. coordId string Coordinate system identifier (e.g., G54). offset Vec3d Offset translation in machine coordinates."
},
"api/Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html",
"title": "Class DrillingCycleSyntax | HiAPI-C# 2025",
"summary": "Class DrillingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class DrillingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object DrillingCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below pre-populate CannedCycle as CannedCycleResolveSyntax would have written it (term, return mode, snapshot params) and leave the resolved cycle sub-section in Parsing for this syntax to consume. There is no #Previous:, so GetLastProgramXyz returns Vec3d.Zero → initZ = 0. F is supplied inside the cycle section so ResolveFeedrate(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress) writes the block-level Feedrate (G94 default, mm/min → mm/s) before the items are emitted. G81 G98 — rapid to init (z=0), rapid to R, feed to bottom Z=-10 at F=600 mm/min → 10 mm/s, rapid back to init Z=0. Four items. The resolved cycle sub-section is removed by CleanupParsing(JsonObject, JsonObject, string); the empty Parsing drops off through CleanupParsing(JsonObject): #BeforeBuild: { \"Parsing\": { \"G81\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G81\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G81\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } G82 with dwell P=0.5s — inserts a Dwell item between the feed-to-bottom rapid and the final retract, otherwise identical to G81. Five items total: #BeforeBuild: { \"Parsing\": { \"G82\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600, \"P\": 0.5 } }, \"CannedCycle\": { \"Term\": \"G82\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G82\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G82\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"Dwell\": { \"Time\": 0.5 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Remarks G85 (feed retract) and G86 (spindle-stop retract) have different retract behaviors and require separate syntax classes. Constructors DrillingCycleSyntax() Initializes a new instance with default settings. public DrillingCycleSyntax() DrillingCycleSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public DrillingCycleSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.DwellSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.DwellSyntax.html",
"title": "Class DwellSyntax | HiAPI-C# 2025",
"summary": "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: Fanuc-family default — SecondsPrefixes = X/U (seconds), MillisecondsPrefixes = P (milliseconds), SpindleRevPrefixes = S (spindle revolutions). Siemens — G4 F<seconds> / G4 S<revolutions>: the preset sets SecondsPrefixes = F, clears the milliseconds list, keeps S revolutions. 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 object DwellSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 DwellSpindleRevUnresolved, 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"
},
"api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html",
"title": "Class FanucPathSmoothingSyntax | HiAPI-C# 2025",
"summary": "Class FanucPathSmoothingSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. public class FanucPathSmoothingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucPathSmoothingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples First block of the stream (no #Previous:) — stamps the default disabled section so downstream modal lookback always sees a concrete PathSmoothing: #BeforeBuild: { } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } G05.1 Q1 with no R — enables, no Level emitted: #Previous: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 1 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\" } } G05.1 Q1 R3 — enables and preserves the precision level: #Previous: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 1, \"R\": 3 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\", \"Level\": 3 } } G05.1 Q0 — disables; any prior Level is dropped (R only meaningful when enabling): #Previous: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\", \"Level\": 3 } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 0 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } Constructors FanucPathSmoothingSyntax() Initializes a new instance with default settings. public FanucPathSmoothingSyntax() FanucPathSmoothingSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FanucPathSmoothingSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html",
"title": "Class FeedrateSyntax | HiAPI-C# 2025",
"summary": "Class FeedrateSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. public class FeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FeedrateSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples New F value with explicit G94 mode — both consumed, Unit derived as mm/min (G94 default): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G94\"], \"F\": 100 } } #AfterBuild: { \"Feedrate\": { \"FeedrateValue\": 100, \"Term\": \"G94\", \"Unit\": \"mm/min\" } } G95 mode flag only — feedrate value inherited from #Previous:; unit recomputed (mm/rev) from the new term: #Previous: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G94\", \"Unit\": \"mm/min\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G95\"] } } #AfterBuild: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } F value only (no G94/G95 on this block) alongside an unrelated M03 flag — mode inherits from #Previous:; M03 stays in Parsing.Flags because CleanupParsing is only invoked on the mode-flag branch: #Previous: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"F\": 200 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Feedrate\": { \"FeedrateValue\": 200, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } Constructors FeedrateSyntax() Initializes a new instance with default settings. public FeedrateSyntax() FeedrateSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FeedrateSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html",
"title": "Class FineBoringSyntax | HiAPI-C# 2025",
"summary": "Class FineBoringSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. public class FineBoringSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FineBoringSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G76 G98 — pre-populated CannedCycle (as CannedCycleResolveSyntax would have written), no #Previous: so initZ = 0, F=600 → 10 mm/s, shift Q=1 (lateral +X clearance for retract). First marker to spell out { “SpindleOrientation”: { “Angle_deg”: 0 } } — the OSS item produced by CreateSpindleOrientationItem(double). Eight items: init, R, feed-down, OSS, shifted-at-bottom (X=51), shifted-retract (X=51, Z=0), back-to-center (X=50, Z=0), spindle-restart CW: #BeforeBuild: { \"Parsing\": { \"G76\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G76\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G76\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"Q\": 1 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G76\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleOrientation\": { \"Angle_deg\": 0 } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 51, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"SpindleControl\": { \"Direction\": \"CW\" } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Constructors FineBoringSyntax() Initializes a new instance with default settings. public FineBoringSyntax() FineBoringSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FineBoringSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html",
"title": "Class G43p4RtcpSyntax | HiAPI-C# 2025",
"summary": "Class G43p4RtcpSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Handles G43.4 RTCP (Rotary Tool Center Point) activation. Writes the IToolHeightCompensationDef section and the ToolHeightCompensationSource entry in ProgramToMcTransform — a tool-normal · offset_mm translation at the block endpoint ABC. The chain entry is tagged KindDynamic when RTCP is active and ABC changes across the block, and KindStatic otherwise. The RTCP kinematic rotary part (Pn→MC rigid transform) is orthogonal to this syntax and is written by PivotTransformationSyntax on every block, because rotary state remains in effect beyond the RTCP modal (e.g. a non-RTCP G01 after G49 still inherits the last ABC from the program). The \"rotary dynamic\" distinction lives on the chain entry's KindKey alone and is read via HasDynamicEntry(JsonObject) by LinearMotionSyntax to pick ClLinear vs McLinear. G43.4 is used by Fanuc, Mazak, Syntec, and Okuma. Siemens (TRAORI) and Heidenhain (M128) are handled by separate syntaxes. Must be placed after ToolHeightOffsetSyntax (to override the ToolHeightCompensation entry when RTCP is active) and before PivotTransformationSyntax (which runs last in the chain). public class G43p4RtcpSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object G43p4RtcpSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. 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 → rawHeight = 0); the height-mat falls back to the 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: { \"Parsing\": { \"G43.4\": { \"H\": \"1\" } } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": 0, \"Term\": \"G43.4\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } 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: #BeforeBuild: { \"Parsing\": { \"G43.4\": { \"H\": \"1\" } }, \"MachineCoordinateState\": { \"A\": 0, \"B\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"A\": 0, \"B\": 30 }, \"ToolHeightCompensation\": { \"Offset_mm\": 10, \"Term\": \"G43.4\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.999999999999999, 0, 8.660254037844387, 1 ] } ] } Same setup plus a #Previous: block with MachineCoordinateState.B = 0 + XYZ origin — 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: { \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 0, \"A\": 0, \"B\": 0 } } #BeforeBuild: { \"Parsing\": { \"G43.4\": { \"H\": \"1\" } }, \"MachineCoordinateState\": { \"A\": 0, \"B\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"A\": 0, \"B\": 30 }, \"ToolHeightCompensation\": { \"Offset_mm\": 10, \"Term\": \"G43.4\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Dynamic\", \"Mat4d\": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.999999999999999, 0, 8.660254037844387, 1 ] } ] } 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] } ] } Constructors G43p4RtcpSyntax() Initializes a new instance with default settings. public G43p4RtcpSyntax() G43p4RtcpSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public G43p4RtcpSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html",
"title": "Class G53p1RotaryPositionSyntax | HiAPI-C# 2025",
"summary": "Class G53p1RotaryPositionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. public class G53p1RotaryPositionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object G53p1RotaryPositionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. 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 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: {} 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 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. 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\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [ 1, 0, 0, 0, 0, 0.8660254037844388, 0.5, 0, 0, -0.5, 0.8660254037844388, 0, 0, 0, 0, 1 ] } ] } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53.1\"] } } #AfterBuild: { \"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 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: { \"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.8660254037844388, 0.5, 0, 0, -0.5, 0.8660254037844388, 0, 0, 0, 0, 1 ] } ] } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53.1\"], \"A\": 0, \"B\": 45 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 0, \"A\": 0, \"B\": 45 }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true, \"Term\": \"G53.1\" } } Remarks When IMachineKinematics is not available (3-axis config), G53.1 is silently consumed with no positional effect. When G68.2 is not active, a validation error is reported. Optional explicit A/B/C on the G53.1 line (post-processor hints) override the IK result. These are read from Parsing via ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) and consumed to prevent McAbcSyntax from double-processing. Constructors G53p1RotaryPositionSyntax() Initializes a new instance with default settings. public G53p1RotaryPositionSyntax() G53p1RotaryPositionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public G53p1RotaryPositionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html",
"title": "Class HeidenhainCannedCycleSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCannedCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html",
"title": "Class HeidenhainCircleCenterSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCircleCenterSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html",
"title": "Class HeidenhainCircularMotionSyntax | HiAPI-C# 2025",
"summary": "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-DRMissing) and degrades to the modal linear move to the endpoint (chord). public class HeidenhainCircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCircularMotionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html",
"title": "Class HeidenhainCoordinateOffsetSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N — 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 (G54G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source so both syntaxes coexist without double-composing. public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. The 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 row 1 = (50, 50, 0) — the syntax looks up the row and writes a synthetic CoordinateId = \"DATUM_PRESET_1\" reflecting the resolved preset index: #BeforeBuild: { \"Parsing\": { \"CYCL DEF\": 247, \"Q339\": \"+1\" } } #AfterBuild: { \"CoordinateOffset\": { \"CoordinateId\": \"DATUM_PRESET_1\", \"Offset_X\": 50, \"Offset_Y\": 50, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 50,50,0,1] } ] } CYCL DEF 7 #5 — datum shift table lookup via the # index (here mapped to (100, 200, 0)); 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: { \"DatumShift\": { \"ShiftId\": \"DATUM_SHIFT_5\", \"Offset_X\": 100, \"Offset_Y\": 200, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"DatumShift\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,200,0,1] } ] } 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. ShiftId is the literal \"DATUM_SHIFT_DIRECT\" sentinel: #BeforeBuild: { \"Parsing\": { \"CYCL DEF\": 7, \"DATUM SHIFT\": { \"X\": 10, \"Y\": 20, \"Z\": 5 } } } #AfterBuild: { \"DatumShift\": { \"ShiftId\": \"DATUM_SHIFT_DIRECT\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"DatumShift\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } Constructors HeidenhainCoordinateOffsetSyntax() Initializes a new instance with default settings. public HeidenhainCoordinateOffsetSyntax() HeidenhainCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. 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 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCyclePrePositionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCyclePrePositionSyntax.html",
"title": "Class HeidenhainCyclePrePositionSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCyclePrePositionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html",
"title": "Class HeidenhainCycleRetractSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCycleRetractSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMFunctionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMFunctionSyntax.html",
"title": "Class HeidenhainMFunctionSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMFunctionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMirrorTransformSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMirrorTransformSyntax.html",
"title": "Class HeidenhainMirrorTransformSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMirrorTransformSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 HeidenhainMirrorRotaryUnsupported 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 (HeidenhainMirrorValuedUnsupported); 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html",
"title": "Class HeidenhainMotionModeSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMotionModeSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPathSmoothingSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPathSmoothingSyntax.html",
"title": "Class HeidenhainPathSmoothingSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainPathSmoothingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPivotTransformationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPivotTransformationSyntax.html",
"title": "Class HeidenhainPivotTransformationSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainPivotTransformationSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPlaneTiltSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPlaneTiltSyntax.html",
"title": "Class HeidenhainPlaneTiltSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainPlaneTiltSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainProgramHeaderSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainProgramHeaderSyntax.html",
"title": "Class HeidenhainProgramHeaderSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainProgramHeaderSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html",
"title": "Class HeidenhainRadiusCompSyntax | HiAPI-C# 2025",
"summary": "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 RadiusCompToolUnresolved 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 object HeidenhainRadiusCompSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html",
"title": "Class HeidenhainRtcpSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainRtcpSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainStockDeclarationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainStockDeclarationSyntax.html",
"title": "Class HeidenhainStockDeclarationSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainStockDeclarationSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolChangeSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolChangeSyntax.html",
"title": "Class HeidenhainToolChangeSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainToolChangeSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolOffsetSyntax.html",
"title": "Class HeidenhainToolOffsetSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainToolOffsetSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html",
"title": "Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain 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-DRMissing) 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 — 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 (G54G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. 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 RadiusCompToolUnresolved 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."
},
"api/Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html",
"title": "Class HighSpeedPeckCycleSyntax | HiAPI-C# 2025",
"summary": "Class HighSpeedPeckCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class HighSpeedPeckCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HighSpeedPeckCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G73 G98 two-stroke chip-break — pre-populated CannedCycle (as CannedCycleResolveSyntax would have written), no #Previous: so initZ = 0, F=600 in the cycle section translated to 10 mm/s. Geometry: R=2, Z=-18, Q=10 → totalFeedLength = 20 → strokeCount = 2, no remainder. FallbackConfig default PeckRetractionDistance_mm = 5 sets the partial retract amount d. Per stroke, the chip-break rapid retracts to strokeZ + d (a small jump, in contrast to PeckDrillingCycleSyntax which rapids fully back to R). G98 final rapid is always emitted (no finalZ != rPoint guard here, unlike the G83 path). Seven items: init, R, feed-stroke1 (z=-8), rapid-to-strokeZ+d (z=-3), feed-stroke2 (z=-18), rapid-to-strokeZ+d (z=-13), final-init (z=0): #BeforeBuild: { \"Parsing\": { \"G73\": { \"X\": 50, \"Y\": 30, \"Z\": -18, \"R\": 2, \"Q\": 10, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G73\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -18, \"R\": 2, \"Q\": 10 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G73\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -18, \"R\": 2, \"Q\": 10 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G73\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -8 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -3 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -18 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -13 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Constructors HighSpeedPeckCycleSyntax() Initializes a new instance with default settings. public HighSpeedPeckCycleSyntax() HighSpeedPeckCycleSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HighSpeedPeckCycleSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html",
"title": "Class IncrementalResolveSyntax | HiAPI-C# 2025",
"summary": "Class IncrementalResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. 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\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. public class IncrementalResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IncrementalResolveSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G90 (absolute) on the block — the syntax early-returns without touching Parsing.X/Y/Z, even though the values look like incremental deltas: #BeforeBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } G91 (incremental) with a #Previous: block carrying MachineCoordinateState=(100,200,300). Under the identity ProgramToMcTransform chain, GetLastProgramXyz recovers program XYZ equal to MC, so each axis in Parsing is rewritten to lastAbs + incremental: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #BeforeBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"X\": 110, \"Y\": 220, \"Z\": 330 } } G91 + Parsing.G28 sub-section — exercises the second entry of the default WorkingPathList; the root Parsing has no X/Y/Z so the first path no-ops, but the [“Parsing”,“G28”] path picks up the G28 intermediate axes and resolves them against the same lastProgramXyz: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #BeforeBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"G28\": { \"X\": 5, \"Y\": 10, \"Z\": 15 } } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"G28\": { \"X\": 105, \"Y\": 210, \"Z\": 315 } } } 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 } } Constructors IncrementalResolveSyntax(List<List<string>>) Initializes a new instance with the given working path list. public IncrementalResolveSyntax(List<List<string>> workingPathList) Parameters workingPathList List<List<string>> JSON paths to scan for incremental axis values; see WorkingPathList. IncrementalResolveSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public IncrementalResolveSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with working paths covering the Parsing root and the Parsing.G28 intermediate XYZ subsection. public static IncrementalResolveSyntax Default { get; } Property Value IncrementalResolveSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z) to convert from incremental to absolute when G91 is active. Each path is a list of segments navigating nested JSON objects. All matching paths are converted. public List<List<string>> WorkingPathList { get; } Property Value List<List<string>> Examples [[\"Parsing\"]] → Parsing root (normal XYZ) [[\"Parsing\", \"G28\"]] → Parsing.G28 (G28 intermediate XYZ) XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html",
"title": "Class IsoCoordinateOffsetSyntax | HiAPI-C# 2025",
"summary": "Class IsoCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. public class IsoCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples The Mat4d arrays below are written as 16 plain doubles in column-major order; the first 12 are the identity 3×3 rotation, the last 4 are the translation column (tx, ty, tz, 1). So a pure translation by (tx, ty, tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. G54 flag on the block but no IIsoCoordinateConfig on the dep list — the resolved offset falls back to Vec3d.Zero and the composed translation is the identity matrix: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G54\"] } } #AfterBuild: { \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } G55 flag with an IsoCoordinateTable providing G55 → (100, 50, -200) — the offset is written to the CoordinateOffset section and the same translation is composed into the transform chain: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G55\"] } } #AfterBuild: { \"CoordinateOffset\": { \"CoordinateId\": \"G55\", \"Offset_X\": 100, \"Offset_Y\": 50, \"Offset_Z\": -200 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1] } ] } No coordinate flag on the current block (e.g. an unrelated M03) but #Previous: carried G54 — modal lookback inherits G54, the dep is re-queried (so Offset_X/Y/Z are taken from the table, not from the previous block), and the transform chain is rebuilt. The unrelated M03 flag survives in Parsing.Flags because CleanupParsing only fires on the new-coord-flag branch: #Previous: { \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1] } ] } Constructors IsoCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoCoordinateOffsetSyntax() IsoCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html",
"title": "Class IsoG68RotationSyntax | HiAPI-C# 2025",
"summary": "Class IsoG68RotationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). public class IsoG68RotationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68RotationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below avoid the cos/sin rotation math by using either G69 cancel (identity), the first-block default (no transform composed), or modal carry of an identity Mat4d. Mat4d arrays are 16 plain doubles in column-major order — see IsoCoordinateOffsetSyntax for the template. A future round can add a non-trivial G68 case by dumping the actual output and pasting the 16 doubles back into the marker. First block of the stream (no #Previous:, no G68/G69 on the block) — CarryForwardFromPrevious stamps a default TiltTransform.Term = \"G69\" so downstream lookback always sees a concrete state; no transform chain entry is composed: #BeforeBuild: { } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G69\" } } G69 flag on the block — TryHandleG69 consumes it, writes the G69 section, and composes the identity Mat4d into the chain so any previously composed tilt rotation is overridden: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G69\"] } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G69\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Modal carry: no G68/G69 on the current block, but #Previous: carries an active G68 with identity tilt Mat4d in its chain. The current block inherits TiltTransform.Term = \"G68\" and re-composes the same Mat4d into its own chain; unrelated M03 flag survives because this syntax does not touch Parsing during the carry path: #Previous: { \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Non-trivial G68 rotation: 90° around the Z axis (no I/J/K → plane normal of the default G17 plane) at the origin (no X/Y/Z → all 0). The Mat4d column-major layout is rotation 90° about Z (no translation since pivot is the origin); cos(π/2) is not exactly 0 in IEEE-754 so the diagonal carries the 6.123233995736766E-17 drift produced by Math.Cos(Math.PI / 2) — preserved verbatim per the no-shorthand marker convention: #BeforeBuild: { \"Parsing\": { \"G68\": { \"R\": 90 } } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [6.123233995736766E-17, 1, 0, 0, -1, 6.123233995736766E-17, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] } ] } Remarks Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. If I/J/K not specified, rotation axis is determined by active plane: G17→Z, G18→Y, G19→X. Constructors IsoG68RotationSyntax() Initializes a new instance with default settings. public IsoG68RotationSyntax() IsoG68RotationSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoG68RotationSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html",
"title": "Class IsoG68p2TiltSyntax | HiAPI-C# 2025",
"summary": "Class IsoG68p2TiltSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). public class IsoG68p2TiltSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68p2TiltSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. 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\", and an identity Mat4d entry is added to ProgramToMcTransform so any previously composed tilt rotation is reset: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G69\"] } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G69\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } G68.2 with IJK = (0, 30, 0) and no kinematics dep — exercises the pure ZXZ Fanuc euler math (Rz(K=0) * Rx(J=30°) * Rz(I=0) * Translate(0) = Rx(30°)) without any IK refinement. The TiltTransform section retains the G68.2 ctor params for debug; the chain entry's Mat4d is the rotation matrix: #BeforeBuild: { \"Parsing\": { \"G68.2\": { \"X\": 0, \"Y\": 0, \"Z\": 0, \"I\": 0, \"J\": 30, \"K\": 0 } } } #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 ] } ] } Same G68.2 IJK with a real XyzabcSolver (table-A / head-B 5-axis layout) — hasPostAbc is false but the kinematics solves OrientationToMcAbc(tiltByIjk) successfully, so the refinement path ijkAbcOrientation * orientationDelta * Translate(origin) runs. The resulting Mat4d preserves the IJK orientation but aligns it with the kinematic ABC solution: #BeforeBuild: { \"Parsing\": { \"G68.2\": { \"X\": 0, \"Y\": 0, \"Z\": 0, \"I\": 0, \"J\": 30, \"K\": 0 } } } #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.8660254037844388, 0.49999999999999994, 0, 0, -0.49999999999999994, 0.8660254037844388, 0, 0, 0, 0, 1 ] } ] } G68.2 IJK with explicit post-processor rotary hints A=0, B=30 — hasPostAbc is true, kinematics first solves tiltByIjk → ijkMcAbc, then overrides A/B with the explicit values to form postMcAbc; the final Mat4d combines postAbcOrient * orientationDeltaIjkToPost * Translate(origin). The TiltTransform section gains the consumed A and B entries: #BeforeBuild: { \"Parsing\": { \"G68.2\": { \"X\": 0, \"Y\": 0, \"Z\": 0, \"I\": 0, \"J\": 30, \"K\": 0 }, \"A\": 0, \"B\": 30 } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G68.2\", \"X\": 0, \"Y\": 0, \"Z\": 0, \"I\": 0, \"J\": 30, \"K\": 0, \"A\": 0, \"B\": 30 }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [ 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 ] } ] } Remarks G68.2 optionally uses IMachineKinematics dependency for IK refinement. The ZXZ euler convention is Fanuc-specific: Rz(K) * Rx(J) * Rz(I) * Translate(origin). Optional A/B/C parameters are post-processor rotary axis hints. When present and IMachineKinematics is available, the tilt is computed as: kinematicRotation(postAbc) * orientationDelta * Translate(origin) 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. Constructors IsoG68p2TiltSyntax() Initializes a new instance with default settings. public IsoG68p2TiltSyntax() IsoG68p2TiltSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoG68p2TiltSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html",
"title": "Class IsoLocalCoordinateOffsetSyntax | HiAPI-C# 2025",
"summary": "Class IsoLocalCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. public class IsoLocalCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoLocalCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1] — see IsoCoordinateOffsetSyntax for the column-major template. First block of the stream (no #Previous:) — the syntax stamps a zero-offset section and an identity translation in the chain so downstream lookback always sees a concrete state: #BeforeBuild: { } #AfterBuild: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } G52 X10 Y20 Z5 on a non-first block alongside an unrelated M03 flag — the G52 sub-section is consumed (removed from Parsing) and the translation is composed into the chain; the unrelated flag stays because this syntax does not call CleanupParsing: #Previous: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"G52\": { \"X\": 10, \"Y\": 20, \"Z\": 5 } } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } No G52 on the current block but #Previous: had a non-zero offset — modal lookback inherits it (with the translation re-composed into this block's chain): #Previous: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } Constructors IsoLocalCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoLocalCoordinateOffsetSyntax() IsoLocalCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoLocalCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields TransformSource Identifier used as the transform source key when composing the local coordinate offset translation into the transform chain. public const string TransformSource = \"IsoLocalCoordinateOffset\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html",
"title": "Class LinearMotionSyntax | HiAPI-C# 2025",
"summary": "Class LinearMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. public class LinearMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object LinearMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G00 explicit + MachineCoordinateState on the block — both the modal MotionState and the one-shot MotionEvent are written; IsRapid is set only on rapid (G00); the parsing flag is consumed and Parsing is cleaned up: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G00\"] }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G00\" }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } G01 explicit + MC — same shape but IsRapid is omitted on the event section (only written when true): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G01\"] }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G01\" }, \"MotionEvent\": { \"Form\": \"McLinear\" } } No motion flag on the current block but MachineCoordinateState is present (e.g. a downstream syntax already wrote the endpoint) — the previous block's MotionState.Term is the only way to know G00 vs G01, so the modal carry path fires: #Previous: { \"MotionState\": { \"Term\": \"G01\" } } #BeforeBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G01\" }, \"MotionEvent\": { \"Form\": \"McLinear\" } } Constructors LinearMotionSyntax() Initializes a new instance with default settings. public LinearMotionSyntax() LinearMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public LinearMotionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html",
"title": "Class MCodeExpansionSyntax | HiAPI-C# 2025",
"summary": "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 object MCodeExpansionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html",
"title": "Class MachineCoordSelectSyntax | HiAPI-C# 2025",
"summary": "Class MachineCoordSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Handles 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, 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 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. public class MachineCoordSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object MachineCoordSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G53 with full XYZ on a first block (no #Previous:) — FindPreviousMc falls back to Vec3d.Zero, transform defaults to identity, so ProgramXyz equals MachineCoordinateState. 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 }, \"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; MotionEvent stamped as above: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 50, \"Z\": -200 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53\"], \"Z\": 0 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 50, \"Z\": 0 }, \"ProgramXyz\": { \"X\": 100, \"Y\": 50, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true, \"Term\": \"G53\" } } G91 active on the same block — G53 incompatible with G91 incremental positioning per ISO standard. Syntax emits validation error Coord-MachCoord006, 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-MachCoord007 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\": { \"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\" } } Constructors MachineCoordSelectSyntax() Initializes a new instance with default settings. public MachineCoordSelectSyntax() MachineCoordSelectSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public MachineCoordSelectSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string 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> 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"
},
"api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html",
"title": "Class McAbcCyclicPathSyntax | HiAPI-C# 2025",
"summary": "Class McAbcCyclicPathSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. Two stages, mirroring McXyzSyntax: Root MachineCoordinateState — anchored at the previous block's modal rotary state. CompoundMotion.ItemsKey[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i > 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion IAct segments rather than a single root-MC stamp. 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. public class McAbcCyclicPathSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcCyclicPathSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Cases below run with no IMachineAxisConfig on the dep list, so the syntax uses the A/B/C fallback (a configuration warning is emitted but does not affect the JSON). The syntax is the tail-pass rotary-wrap centraliser — upstream rotary writers (McAbcSyntax, G28, G53.1, ...) store raw degrees and let this pass resolve to the shortest cyclic path. Current B is within ±180° of the previous B — no wrap needed; the value is rewritten in place but equals the input: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 10 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 10 } } Current B is 270° but previous B is 0° — the shortest path is the other way around, so the value is rewritten as -90° (mathematically equivalent, geometrically the same orientation, but signalling the shorter rotation to a downstream motion consumer). 270/0 round-trips through ToRad→Cycle→ToDeg with no rounding noise (1.5π → -0.5π → -90 exactly); other angle pairs (e.g. 350° → -10°) emit a trailing ULP-scale drift instead: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 270 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": -90 } } First block of the stream (no #Previous:) — no anchor to resolve against, so the syntax early-returns and the raw value is preserved verbatim: #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 350 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 350 } } CompoundMotion.Items walk — two items chain: item 0 cycles against the previous block's modal B = 0° (270° → -90°), and item 1 cycles against item 0's post-cycle -90° (170° → -190°, since the shorter path from -90° to 170° wraps backward through -180°). If item 1 had used the previous-block anchor instead of the chained anchor, 170° would have stayed at 170° (already in the ±180° window around 0°), so the test discriminates between chain and no-chain: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"CompoundMotion\": { \"Items\": [ { \"MachineCoordinateState\": { \"B\": 270 } }, { \"MachineCoordinateState\": { \"B\": 170 } } ] } } #AfterBuild: { \"CompoundMotion\": { \"Items\": [ { \"MachineCoordinateState\": { \"B\": -90 } }, { \"MachineCoordinateState\": { \"B\": -190 } } ] } } 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\" } } Constructors McAbcCyclicPathSyntax() Initializes a new instance with default settings. public McAbcCyclicPathSyntax() McAbcCyclicPathSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public McAbcCyclicPathSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html",
"title": "Class McAbcSyntax | HiAPI-C# 2025",
"summary": "Class McAbcSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). 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 McAbcCyclicPathSyntax and LinearMotionSyntax. public class McAbcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Cases 1 and 2 inject a TestDeps.AxisConfig declaring B and C as Rotary. Values are stored as raw degrees; shortest-cyclic resolution is a downstream pass via McAbcCyclicPathSyntax. No IMachineAxisConfig dep on the list — early-return no-op (the syntax only fires when rotary axes are declared): #BeforeBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } AxisConfig declares B+C rotary; Parsing.B/C are consumed into a freshly created MachineCoordinateState section (X/Y/Z are deliberately left out so McXyzSyntax can still derive XYZ later — see class summary): #BeforeBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90 } } Only Parsing.B on the current block; #Previous: carries a full MC including C=0. The missing C is filled from the per-axis backward lookback (FindPreviousMcAxis(LazyLinkedListNode<SyntaxPiece>, string)): #Previous: { \"MachineCoordinateState\": { \"B\": 0, \"C\": 0 } } #BeforeBuild: { \"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 } } 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"
},
"api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html",
"title": "Class McAbcXyzFallbackSyntax | HiAPI-C# 2025",
"summary": "Class McAbcXyzFallbackSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. public class McAbcXyzFallbackSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcXyzFallbackSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below stay on the non-dynamic branch (no PivotTransformSource entry in the chain) so the RTCP re-derivation path is skipped. Block has no MachineCoordinateState section at all (pure parse-only) — the syntax early-returns and the block is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G00\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G00\"] } } MC already complete (all three of X/Y/Z present) — the second guard fires and the section is preserved verbatim (no overwrite even if a #Previous: MC differed): #BeforeBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Rotary-only MC on a rotary-only block (e.g. a 5-axis B+C trunnion machine running G00 B45. C90.) — missing X/Y/Z are copied from the #Previous: block's MC; the rotary keys keep their existing positions (insertion order) and X/Y/Z are appended. The previous block's MC carries the modal rotary state alongside X/Y/Z, but the fallback only reads X/Y/Z from it: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300, \"B\": 0, \"C\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90, \"X\": 100, \"Y\": 200, \"Z\": 300 } } Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html",
"title": "Class McXyzSyntax | HiAPI-C# 2025",
"summary": "Class McXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). public class McXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Root ProgramXyz only, no ProgramToMcTransform chain — composed transform is identity, so MC equals ProgramXyz: #BeforeBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Root MachineCoordinateState already present — guarded by the non-null check, so an upstream syntax's explicit MC is preserved verbatim (the derivation from ProgramXyz is skipped): #BeforeBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } CompoundMotion.Items[*] with ProgramXyz but no MachineCoordinateState — each item receives its own derived MC; items that already had MC (or had no ProgramXyz) are left alone: #BeforeBuild: { \"CompoundMotion\": { \"Items\": [ { \"ProgramXyz\": { \"X\": 1, \"Y\": 2, \"Z\": 3 } }, { \"MachineCoordinateState\": { \"X\": 9, \"Y\": 9, \"Z\": 9 } } ] } } #AfterBuild: { \"CompoundMotion\": { \"Items\": [ { \"ProgramXyz\": { \"X\": 1, \"Y\": 2, \"Z\": 3 }, \"MachineCoordinateState\": { \"X\": 1, \"Y\": 2, \"Z\": 3 } }, { \"MachineCoordinateState\": { \"X\": 9, \"Y\": 9, \"Z\": 9 } } ] } } Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html",
"title": "Class PeckDrillingCycleSyntax | HiAPI-C# 2025",
"summary": "Class PeckDrillingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class PeckDrillingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PeckDrillingCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Both cases below pre-populate CannedCycle as CannedCycleResolveSyntax would have written it. There is no #Previous:, so GetLastProgramXyz returns Vec3d.Zero → initZ = 0. A FallbackConfig dep with the default PeckRetractionDistance_mm = 5 is injected via BuildAndDump(..., deps:). Cycle parameters are chosen so totalFeedLength = R bottomZ = 10 and Q = 10 → exactly one stroke, no remainder; the items list stays minimal. G83 G98 — rapid to init (z=0), rapid to R=2, feed to bottom Z=-8 at F=600 mm/min → 10 mm/s, rapid back to R=2, then a final rapid to init Z=0 (G98). Five items: #BeforeBuild: { \"Parsing\": { \"G83\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G83\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G83\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G83\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -8 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } G83 G99 — same cycle but the return mode is R-point. Since the retract-to-R rapid already lands at z = R, the finalZ != rPoint guard skips the extra final-rapid item. Four items, and the block's ProgramXyz lookback anchor lands at R-point: #BeforeBuild: { \"Parsing\": { \"G83\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G83\", \"ReturnMode\": \"G99\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G83\", \"ReturnMode\": \"G99\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -8, \"R\": 2, \"Q\": 10 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G83\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -8 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 } } Remarks G73 (high-speed peck) retracts only a small distance instead of fully back to R — see HighSpeedPeckCycleSyntax. Constructors PeckDrillingCycleSyntax() Initializes a new instance with default settings. public PeckDrillingCycleSyntax() PeckDrillingCycleSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public PeckDrillingCycleSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html",
"title": "Class PivotTransformUtil | HiAPI-C# 2025",
"summary": "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 object PivotTransformUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html",
"title": "Class PivotTransformationSyntax | HiAPI-C# 2025",
"summary": "Class PivotTransformationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll 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. 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 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 (3-axis configurations without rotary kinematics). public class PivotTransformationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PivotTransformationSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. 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: {} 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 } } 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\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Dynamic\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } #AfterBuild: { \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Dynamic\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] }, { \"Source\": \"PivotTransform\", \"Kind\": \"Dynamic\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } 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 } } Constructors PivotTransformationSyntax() Initializes a new instance with default settings. public PivotTransformationSyntax() PivotTransformationSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public PivotTransformationSyntax(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"
},
"api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html",
"title": "Class PlaneSelectSyntax | HiAPI-C# 2025",
"summary": "Class PlaneSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. public class PlaneSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PlaneSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G17\"] } } #AfterBuild: { \"PlaneSelect\": { \"Term\": \"G17\", \"Plane\": \"XY\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G18\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"PlaneSelect\": { \"Term\": \"G18\", \"Plane\": \"ZX\" } } #Previous: { \"PlaneSelect\": { \"Term\": \"G19\", \"Plane\": \"YZ\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"PlaneSelect\": { \"Term\": \"G19\", \"Plane\": \"YZ\" } } Properties Default Default instance with standard settings. public static PlaneSelectSyntax Default { get; } Property Value PlaneSelectSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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 GetPlaneNormalDir(JsonObject) Reads the PlaneSelect section and returns the perpendicular (normal) axis index: XY→2(Z), ZX→1(Y), YZ→0(X). public static int GetPlaneNormalDir(JsonObject json) Parameters json JsonObject Returns int MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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.LogicSyntaxs.PolarGCodeCheckSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PolarGCodeCheckSyntax.html",
"title": "Class PolarGCodeCheckSyntax | HiAPI-C# 2025",
"summary": "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 object PolarGCodeCheckSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html",
"title": "Class PolarInterpolationSyntax | HiAPI-C# 2025",
"summary": "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 object PolarInterpolationSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html",
"title": "Class PositioningSyntax | HiAPI-C# 2025",
"summary": "Class PositioningSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: 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 IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. public class PositioningSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PositioningSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G90 explicit — flag consumed, Positioning written with Mode=“Absolute”: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G90\"] } } #AfterBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" } } G91 explicit — flag consumed, Mode=“Incremental”: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G91\"] } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } No positioning flag on the block but #Previous: carried G91 — modal lookback inherits G91; the unrelated M03 flag is left alone: #Previous: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } 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\" } } Properties Default Default instance with standard settings. public static PositioningSyntax Default { get; } Property Value PositioningSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html",
"title": "Class ProgramEndCleanSyntax | HiAPI-C# 2025",
"summary": "Class ProgramEndCleanSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. Also clears any active FanucModalMacro on the same edge: a G66 modal that was still active when M02/M30 hit is implicitly cancelled, matching real Fanuc reset behaviour. The section is overwritten with a G67-shaped cancel marker so the carry mechanism in FanucModalMacroSyntax sees the boundary and does not propagate the modal past the program-end edge. public class ProgramEndCleanSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndCleanSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples M30 with a populated Vars.Volatile — the dictionary is wiped to an empty JsonObject in place (assignment, not removal, so downstream snapshots can distinguish “cleared on program end” from “block never had volatile data”): #BeforeBuild: { \"ProgramEnd\": { \"Term\": \"M30\" }, \"Vars\": { \"Volatile\": { \"#100\": 1.5, \"#101\": 2.5 } } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M30\" }, \"Vars\": { \"Volatile\": {} } } M02 with an active G66 FanucModalMacro and no pre-existing Vars — the modal is overwritten with a G67-shaped cancel marker (P/L dropped), and a fresh Vars.Volatile dictionary is created: #BeforeBuild: { \"ProgramEnd\": { \"Term\": \"M02\" }, \"FanucModalMacro\": { \"Term\": \"G66\", \"P\": 1234, \"L\": 1 } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M02\" }, \"FanucModalMacro\": { \"Term\": \"G67\" }, \"Vars\": { \"Volatile\": {} } } No ProgramEnd on the block (regular machining line) — the guard rejects the block; Vars.Volatile is left intact for downstream blocks to inherit via carry: #BeforeBuild: { \"Vars\": { \"Volatile\": { \"#100\": 1.5 } } } #AfterBuild: { \"Vars\": { \"Volatile\": { \"#100\": 1.5 } } } Constructors ProgramEndCleanSyntax() Default constructor. public ProgramEndCleanSyntax() ProgramEndCleanSyntax(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); no state. public ProgramEndCleanSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html",
"title": "Class ProgramEndSyntax | HiAPI-C# 2025",
"summary": "Class ProgramEndSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. public class ProgramEndSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M30\"] } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M30\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M02\"] } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M02\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } Constructors ProgramEndSyntax() Initializes a new instance with default settings. public ProgramEndSyntax() ProgramEndSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramEndSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html",
"title": "Class ProgramRxczSyntax | HiAPI-C# 2025",
"summary": "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: ProgramPolarRxcz — the anchor-relative polar position (G90/G91 resolved against the previous block's position, mirroring HardNc NcGroup03.GetNcFromSyntax); 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; 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; 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 object ProgramRxczSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 GetActSpiralMcXyzContourCircleCenterNotFound. 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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html",
"title": "Class ProgramStopSyntax | HiAPI-C# 2025",
"summary": "Class ProgramStopSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes 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. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). public class ProgramStopSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramStopSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M00\"] } } #AfterBuild: { \"ProgramStop\": { \"Term\": \"M00\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M01\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ProgramStop\": { \"Term\": \"M01\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M01\", \"M00\"] } } #AfterBuild: { \"ProgramStop\": { \"Term\": \"M00\" } } Constructors ProgramStopSyntax() Initializes a new instance with default settings. public ProgramStopSyntax() ProgramStopSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramStopSyntax(XElement src) Parameters src XElement Source XML element. 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). Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string 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> 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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html",
"title": "Class ProgramXyzSyntax | HiAPI-C# 2025",
"summary": "Class ProgramXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. public class ProgramXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples SUT uses Default so the default WorkingPathList points at the Parsing root. All cases stay on the identity-transform path so GetLastProgramXyz simply returns the previous block's MC. Full X/Y/Z in Parsing — values are read directly (no lookback), Parsing.X/Y/Z are consumed, ProgramXyz section is written; CleanupParsing removes the now-empty Parsing: #BeforeBuild: { \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Only Z in Parsing with a #Previous: block carrying MachineCoordinateState=(50,60,70) — under the identity transform GetLastProgramXyz equals previous MC, so X/Y are inherited from prev and Z is taken from the parsed literal: #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 0 } } Parsing present but with no X/Y/Z (e.g. an unrelated M03 flag) — ResolveProgramXyz returns null and the syntax early-returns; the block is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Constructors ProgramXyzSyntax(List<List<string>>) Initializes a new instance with the given working path list. public ProgramXyzSyntax(List<List<string>> workingPathList) Parameters workingPathList List<List<string>> JSON paths to scan for axis values; see WorkingPathList. ProgramXyzSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public ProgramXyzSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with the working path resolving to the Parsing root. public static ProgramXyzSyntax Default { get; } Property Value ProgramXyzSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z). Each path is a list of segments navigating nested JSON objects. First match is used. Empty list means root level. public List<List<string>> WorkingPathList { get; } Property Value List<List<string>> Examples [[\"L\"]] → fullJsonSrc[\"L\"] [[]] → fullJsonSrc (root) [[\"L\"], []] → try fullJsonSrc[\"L\"], fallback to root XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html",
"title": "Class ProgramXyzUtil | HiAPI-C# 2025",
"summary": "Class ProgramXyzUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode<SyntaxPiece>, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece>)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence found on a five-axis sample program.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode<SyntaxPiece>, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>) (pure predecessor lookback). public static class ProgramXyzUtil Inheritance object ProgramXyzUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece>) Strategy: by corresponding-state transform. Recovers the ProgramXyz that nodeCarryingMc was originally commanded at, by inverting that same node's ProgramToMcTransform on its own MachineCoordinateState. Modal invariant: ProgramXyz carries forward (RTCP rotary modal) — the workpiece-frame anchor survives downstream rotary motion regardless of how the next block's PivotTransform differs, so the next rotary-dynamic block can adopt this Vec3d unchanged as its modal ProgramXyz. Returns null when nodeCarryingMc has no usable MC. Called from the RTCP branch of GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>) and from ResolveBlockProgramXyz(LazyLinkedListNode<SyntaxPiece>, Vec3d) when the dispatched node has its own MC. public static Vec3d ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece> nodeCarryingMc) Parameters nodeCarryingMc LazyLinkedListNode<SyntaxPiece> Returns Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode<SyntaxPiece>, Vec3d) Strategy: by current-state transform. Re-expresses mc into currentNode's program frame by inverting currentNode's own ProgramToMcTransform chain. Modal invariant: MachineCoordinateState carries forward — between the source of mc and currentNode, the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame. Result is the program coordinate that, when transformed by currentNode's chain, yields mc back. Mirrors legacy HardNcLine.RebuildProgramXyzByMc; called from the non-RTCP branch of GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>). public static Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode<SyntaxPiece> currentNode, Vec3d mc) Parameters currentNode LazyLinkedListNode<SyntaxPiece> mc Vec3d Returns Vec3d 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 FindPreviousMc(LazyLinkedListNode<SyntaxPiece>) Finds the most recent MachineCoordinateState from previous SyntaxPiece nodes. Returns null if no previous position found. public static Vec3d FindPreviousMc(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Returns Vec3d FindPreviousMcXyzabc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig) Finds the most recent MachineCoordinateState XYZABC from previous nodes as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). XYZ is taken from the first previous block whose MC has any of X/Y/Z set (typical motion-emitting block). ABC is then backfilled per axis for axes the machine actually has: if the XYZ-carrying block lacks a particular rotary value, we continue walking back to find the last block that wrote that axis (modal rotary state). This matches NC semantics — unchanged rotary axes carry forward silently — and prevents NaN rotary deltas from stopping 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 NaN and skip backward walking entirely. When axisConfig is null (callers without the dependency — e.g. legacy tests), all three A/B/C are attempted, matching the pre-axisConfig behaviour. Returns null if no previous MC with XYZ is found at all. Axes that have never been set stay NaN. public static DVec3d FindPreviousMcXyzabc(LazyLinkedListNode<SyntaxPiece> node, IMachineAxisConfig axisConfig = null) Parameters node LazyLinkedListNode<SyntaxPiece> axisConfig IMachineAxisConfig Returns DVec3d FindPreviousStoredProgramXyz(LazyLinkedListNode<SyntaxPiece>) Finds the most recent stored ProgramXyz from previous SyntaxPiece nodes — a raw-value lookback that returns whatever was written on disk, without MC-inversion or frame-change reconstruction. Contrast with GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>), which reconstructs the inherited program position as prev.MC × inverse(transform) and is sensitive to RTCP / chain-change boundaries. This helper is the simple parallel of FindPreviousMc(LazyLinkedListNode<SyntaxPiece>) — use it when a caller specifically needs \"what ProgramXyz did the last block write\" (e.g. the ProgramXyzBackfillSyntax change check). Returns null if no predecessor has ProgramXyz. public static Vec3d FindPreviousStoredProgramXyz(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Returns Vec3d GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>) Gets the modal ProgramXyz inherited by node from the most recent predecessor with an MachineCoordinateState. Dispatches between the two strategies documented on the class summary based on whether node's ProgramToMcTransform chain carries any KindDynamic entry (queried via HasDynamicEntry(JsonObject)): Has a Dynamic entry (RTCP rotary modal) → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece>) on the predecessor (recover prev's commanded ProgramXyz; carries forward unchanged because workpiece-frame tool tip is the modal anchor). All entries Static (chain-change / non-RTCP) → ComputeProgramXyzByCurrentTransform(LazyLinkedListNode<SyntaxPiece>, Vec3d) with node's own transform on the predecessor's MC (re-express prev MC in current program frame; MC is the modal anchor while the chain re-frames around it). When prev and current share the same chain modal state both strategies agree, so the discriminator only matters at chain boundaries / rotary motion. Returns Zero only when no predecessor has a usable MC (i.e. the start of the program with no motion emitted). public static Vec3d GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Returns Vec3d ReadMcXyzabc(JsonObject) Reads XYZABC from a MachineCoordinateState section as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). Missing axes are NaN. Returns null if the section doesn't exist or has no XYZ. public static DVec3d ReadMcXyzabc(JsonObject ncBlock) Parameters ncBlock JsonObject Returns DVec3d ResolveBlockProgramXyz(LazyLinkedListNode<SyntaxPiece>, Vec3d) Resolves the ProgramXyz at node's endpoint — i.e. what ProgramXyzBackfillSyntax would write on node. Dispatcher; the actual inversion math runs inside one of the two strategy helpers documented on the class summary: node has its own MachineCoordinateState XYZ → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece>) on node itself (its own MC and own transform; the \"current\" / \"corresponding\" distinction collapses since both come from the same node). node has no own MC and prevStored is non-null → GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>) walks back to the most recent predecessor with MC and dispatches strategy from node's HasDynamicEntry(JsonObject) result. Both empty → return null; callers must not fabricate a spurious origin on the very first block. Shared by ProgramXyzBackfillSyntax (computing the snapshot value to write on node) and McAbcXyzFallbackSyntax (computing Previous's would-be snapshot to inherit on the current rotary-dynamic block — the Logic-stage caller cannot read prev's stored ProgramXyz because PostSyntaxs run after the whole Logic chain finishes). prevStored for the second use is taken from FindPreviousStoredProgramXyz(LazyLinkedListNode<SyntaxPiece>) on node's predecessor — the predecessor-of-predecessor's stored ProgramXyz — only as a guard against the spurious-origin case. public static Vec3d ResolveBlockProgramXyz(LazyLinkedListNode<SyntaxPiece> node, Vec3d prevStored) Parameters node LazyLinkedListNode<SyntaxPiece> prevStored Vec3d Returns Vec3d ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress) Resolves X/Y/Z from a JSON section into absolute program coordinates. Fills missing axes from last program position via lookback. public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters xyzSource JsonNode JSON node containing X/Y/Z keys (e.g., Parsing root, Parsing.G28, Parsing.L). syntaxPieceNode LazyLinkedListNode<SyntaxPiece> Current node for lookback. sentenceCarrier ISentenceCarrier Carrier used to attach diagnostics to the offending text span. diag NcDiagnosticProgress Diagnostic sink that receives parse errors for malformed X/Y/Z values. Returns Vec3d Absolute program coordinates, or null if no X/Y/Z found in xyzSource."
},
"api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html",
"title": "Class ReferenceReturnSyntax | HiAPI-C# 2025",
"summary": "Class ReferenceReturnSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback. public class ReferenceReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ReferenceReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases hardcode a TestDeps.HomeMc with X/Y home at 0 and Z home at 100 (typical mill where Z-home is above the table) and leave the ProgramToMcTransform chain at identity so the final ProgramXyz equals MachineCoordinateState. The G28 pattern emits a 2-item CompoundMotion: item 0 is the intermediate point in ProgramXyz, item 1 is the final position in MachineCoordinateState. Axes not present in the G28 block keep the previous-block MC value rather than going home. G91 G28 X0 Y0 Z0 with a #Previous: block carrying MachineCoordinateState=(50,60,70) — all three axes go home, so the final MC is the configured home (0,0,100): #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } #AfterBuild: { \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } } G91 G28 Z0 — only Z goes to its home; X/Y inherit from the previous block's MC. Item 0's intermediate ProgramXyz takes X/Y from the inherited program XYZ (= previous MC under identity transform) and Z from the literal 0 in the G28 block: #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"Z\": 0 } } } #AfterBuild: { \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 0 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 100 } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 100 } } No IHomeMcConfig dep on the dependency list — the syntax early-returns and the G28 sub-section stays in Parsing for an upstream consumer or downstream syntax to handle: #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } #AfterBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } Rotary cases below add TestDeps.AxisConfig declaring B as rotary and extend HomeMc with the conventional B home at 0°. Each rotary block uses literal B = 45° so item 0's intermediate (45°), item 1's home (0°), and #Previous: modal B (30°) are pairwise distinct — a test that swaps any two values for any other is caught by the assertion. The wrap pass (McAbcCyclicPathSyntax) is a different syntax, so these per-SUT conformance assertions show only the raw literal / canonical-home values written by this syntax, before any cyclic normalization runs. G91 G28 B45. — pure rotary G28. Emits a 2-item CompoundMotion whose items carry only ABC keys in MC; no XYZ ProgramXyz and no XYZ MC because the block doesn't reference X/Y/Z (and the conformance harness doesn't run McXyzSyntax downstream — in the full pipeline that syntax fills root MachineCoordinateState's XYZ from root ProgramXyz, but with no XYZ in the block there's nothing to fill anyway). Root MC.B holds the canonical home for modal carry-forward; root ProgramXyz is not written: #BeforeBuild: { \"Parsing\": { \"G28\": { \"B\": 45 } } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"B\": 0 } } ] } } G28 X0. B45. mixed XYZ + rotary. Both axis kinds occupy the same two items: item 0 carries the XYZ intermediate ProgramXyz alongside the rotary literal in MC; item 1 carries the final XYZ MC alongside the rotary home in MC. Root MachineCoordinateState here holds only the rotary modal value (B = 0, the home); the XYZ portion of root MC would be filled by the downstream McXyzSyntax in the full pipeline (out of scope for this per-SUT conformance). Root MachineCoordinateState appears first because the rotary-home write happens before CompoundMotion / ProgramXyz are inserted. #Previous: carries B = 30 so the prev rotary modal is distinct from both the literal (45) and the home (0): #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70, \"B\": 30 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"B\": 45 } } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 0, \"Y\": 60, \"Z\": 70 }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 60, \"Z\": 70, \"B\": 0 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 60, \"Z\": 70 } } Bare G28 — no axis specifiers — exercises the configurable BareG28 policy. Default Alarm emits Coord-RefReturn--003 and consumes the G28 without motion (the diagnostic surfaces through the NcDiagnosticProgress sink, not the block JSON, so the canonical #AfterBuild is just an empty object): #BeforeBuild: { \"Parsing\": { \"G28\": {} } } #AfterBuild: {} Bare G28 with BareG28 set to AllAxesHome: the syntax synthesises a literal at the inherited program position for every configured linear axis and the previous modal angle for every configured rotary axis (here X/Y/Z taken from the #Previous: MC under the identity ProgramToMcTransform, B taken from the prev modal). Item 0's intermediate therefore equals current (no motion in stage 1) and item 1 sends each axis to its home: #Previous: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30, \"B\": 45 } } #BeforeBuild: { \"Parsing\": { \"G28\": {} } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 100, \"B\": 0 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } } Constructors ReferenceReturnSyntax() Initializes a new instance with default settings (BareG28 = Alarm). public ReferenceReturnSyntax() ReferenceReturnSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ReferenceReturnSyntax(XElement src) Parameters src XElement Source XML element. Properties BareG28 Behaviour for a G28 block with no axis specifiers. Defaults to Alarm. public BareG28Behavior BareG28 { get; set; } Property Value BareG28Behavior Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html",
"title": "Class RotaryAxisUtil | HiAPI-C# 2025",
"summary": "Class RotaryAxisUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. public static class RotaryAxisUtil Inheritance object RotaryAxisUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Consumes an optional axis value (degrees) from Parsing. Post-processor hints (e.g., A/B/C on G68.2 or G53.1 lines) are parsed by FloatTagSetupSyntax into Parsing as doubles. Returns the value and removes the key, or null if not present. A non-numeric value (e.g. \"#124\" left by the parser stage) raises VariableExpression--Unevaluated via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead of silently dropping the post-processor hint. The key is consumed regardless so downstream syntaxes do not re-process it. public static double? ConsumeAxis(JsonObject parsing, string axisName, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters parsing JsonObject axisName string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns double? GetRotaryAxes(IMachineAxisConfig) Gets the rotary axis names from the given IMachineAxisConfig. Returns an empty array if no rotary axes exist. public static string[] GetRotaryAxes(IMachineAxisConfig axisConfig) Parameters axisConfig IMachineAxisConfig Returns string[]"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html",
"title": "Class SiemensCircularMotionSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensCircularMotionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html",
"title": "Class SiemensCoordinateOffsetSyntax | HiAPI-C# 2025",
"summary": "Class SiemensCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Siemens Assembly HiMech.dll Siemens Sinumerik: resolves work coordinate offset from G54G57 (ISO-compatible), G505G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform. public class SiemensCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Unlike IsoCoordinateOffsetSyntax (Fanuc/ISO), this Siemens variant does not consume the coordinate flag from Parsing.Flags — the flag stays for downstream syntaxes / reconstruction. Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. G54 with an IsoCoordinateTable providing G54 → (10, 20, -100) — same shape as IsoCoordinateOffsetSyntax but the G54 flag survives: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G54\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G54\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1] } ] } Siemens-extended G505 with a table entry for the same id — proves the syntax recognises the extended series, not only the ISO-compat G54G57 subset: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G505\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G505\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G505\", \"Offset_X\": 100, \"Offset_Y\": 50, \"Offset_Z\": -200 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1] } ] } G500 cancel with no IIsoCoordinateConfig on the dep list — falls back to Vec3d.Zero; the resolved offset is zero and the composed translation is identity (matching the special case inside GetCoordinateOffset(string) for G500): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G500\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G500\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G500\", \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Constructors SiemensCoordinateOffsetSyntax() Initializes a new instance with default settings. public SiemensCoordinateOffsetSyntax() SiemensCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SiemensCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCutCompModeSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCutCompModeSyntax.html",
"title": "Class SiemensCutCompModeSyntax | HiAPI-C# 2025",
"summary": "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 SiemensCutCompUnsupported 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 object SiemensCutCompModeSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCycle800TiltSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCycle800TiltSyntax.html",
"title": "Class SiemensCycle800TiltSyntax | HiAPI-C# 2025",
"summary": "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 (19 with a live TC) is treated as a truncated/unmodeled capture, not a cancel — warning + visible residue, so a mis-parsed call can never silently drop an active swivel. The rotary axes are not re-positioned on cancel: the retract/re-orient behavior depends on the machine'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 object SiemensCycle800TiltSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensFixedPointReturnSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensFixedPointReturnSyntax.html",
"title": "Class SiemensFixedPointReturnSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensFixedPointReturnSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensModalCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensModalCycleSyntax.html",
"title": "Class SiemensModalCycleSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensModalCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPathSmoothingSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPathSmoothingSyntax.html",
"title": "Class SiemensPathSmoothingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensPathSmoothingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPivotTransformationSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPivotTransformationSyntax.html",
"title": "Class SiemensPivotTransformationSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensPivotTransformationSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensProgrammableFrameSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensProgrammableFrameSyntax.html",
"title": "Class SiemensProgrammableFrameSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensProgrammableFrameSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 SiemensFrameUnsupported 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 SiemensFrameSolidAngleInvalid warning and the residue stays visible for the ParsingUnconsumed 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html",
"title": "Class SiemensStopreSyntax | HiAPI-C# 2025",
"summary": "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 StopreNoOp 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 object SiemensStopreSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensToolOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensToolOffsetSyntax.html",
"title": "Class SiemensToolOffsetSyntax | HiAPI-C# 2025",
"summary": "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 SiemensToolOffsetTcdpRowMissing 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 object SiemensToolOffsetSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 SiemensToolOffsetTcdpRowMissing: #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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html",
"title": "Class SiemensTraoriSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensTraoriSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.Siemens.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.html",
"title": "Namespace Hi.NcParsers.LogicSyntaxs.Siemens | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.LogicSyntaxs.Siemens 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 G54G57 (ISO-compatible), G505G599 (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 SiemensCutCompUnsupported 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 (19 with a live TC) is treated as a truncated/unmodeled capture, not a cancel — warning + visible residue, so a mis-parsed call can never silently drop an active swivel. The rotary axes are not re-positioned on cancel: the retract/re-orient behavior depends on the machine'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 StopreNoOp 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 SiemensToolOffsetTcdpRowMissing 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."
},
"api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html",
"title": "Class SpindleSpeedSyntax | HiAPI-C# 2025",
"summary": "Class SpindleSpeedSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes S (spindle speed) and 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 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. public class SpindleSpeedSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SpindleSpeedSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples New S + M03 (CW) — both consumed; SpindleSpeed section written with the converted direction enum string: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"S\": 2000 } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 2000, \"Direction\": \"CW\" } } M04 (CCW) only — RPM inherited from #Previous:; direction updated to the new CCW state: #Previous: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CW\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M04\"] } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CCW\" } } M05 (STOP) only — RPM still carried from #Previous: for bidirectional round-tripping; downstream consumers gate on Direction == STOP rather than RPM == 0: #Previous: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CW\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M05\"] } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"STOP\" } } 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 SpindleDirectionAssumedCw 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\" } } Constructors SpindleSpeedSyntax() Initializes a new instance with default settings. public SpindleSpeedSyntax() SpindleSpeedSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SpindleSpeedSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html",
"title": "Class TappingCycleSyntax | HiAPI-C# 2025",
"summary": "Class TappingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class TappingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TappingCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Both cases G98 — pre-populated CannedCycle, no #Previous: so initZ = 0, F=600 → 10 mm/s. Six items each: init, R, feed-down, spindle reverse, feed retract, spindle restore. The retract is a feed (not a rapid) because the tap is physically threaded into the workpiece and a rapid would strip the threads. G84 right-hand — forward CW (M03), reverse CCW (M04) at the bottom to back out, then restore CW after retract: #BeforeBuild: { \"Parsing\": { \"G84\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G84\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G84\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G84\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleControl\": { \"Direction\": \"CCW\" } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleControl\": { \"Direction\": \"CW\" } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } G74 left-hand — same shape but the two spindle items are flipped: forward CCW (M04), reverse CW (M03) at the bottom, restore CCW after retract. Tests that the syntax dispatches on cycleCode == G84 to pick the right pair: #BeforeBuild: { \"Parsing\": { \"G74\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2, \"F\": 600 } }, \"CannedCycle\": { \"Term\": \"G74\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } } } #AfterBuild: { \"CannedCycle\": { \"Term\": \"G74\", \"ReturnMode\": \"G98\", \"Params\": { \"X\": 50, \"Y\": 30, \"Z\": -10, \"R\": 2 } }, \"Feedrate\": { \"FeedrateValue\": 600, \"Term\": \"G94\", \"Unit\": \"mm/min\" }, \"CompoundMotion\": { \"Term\": \"G74\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 2 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": -10 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleControl\": { \"Direction\": \"CW\" } }, { \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 }, \"MotionEvent\": { \"Form\": \"McLinear\", \"Feedrate_mmds\": 10 } }, { \"SpindleControl\": { \"Direction\": \"CCW\" } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 30, \"Z\": 0 } } Constructors TappingCycleSyntax() Initializes a new instance with default settings. public TappingCycleSyntax() TappingCycleSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public TappingCycleSyntax(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 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> 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"
},
"api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html",
"title": "Class TiltTransformUtil | HiAPI-C# 2025",
"summary": "Class TiltTransformUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. public static class TiltTransformUtil Inheritance object TiltTransformUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields TransformSource Identifier used as the transform source key when composing the tilt rotation into ProgramToMcTransform. public const string TransformSource = \"TiltTransform\" Field Value string Methods CarryForwardFromPrevious(LazyLinkedListNode<SyntaxPiece>, JsonObject) Carries forward the tilt transform from a previous node when the current block has no new tilt command. Shared by all tilt syntaxes (G68, G68.2, CYCLE800, PLANE SPATIAL). public static void CarryForwardFromPrevious(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, JsonObject json) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> json JsonObject ComposeRotation(JsonObject, Mat4d) Composes the tilt rotation into ProgramToMcTransform. Tilt is a fixed geometric rotation per block, so the entry is always KindStatic. public static void ComposeRotation(JsonObject json, Mat4d tiltMat) Parameters json JsonObject tiltMat Mat4d FindPreviousMode(LazyLinkedListNode<SyntaxPiece>) Returns the tilt mode written on the immediately previous block, or null when none. Each prior block is guaranteed to carry a TiltTransform section (LogicSyntax-stage authored, or PostSyntax-stage carried by ModalCarrySyntax), so a single-step lookup replaces the legacy EnumerateBack() walk. public static string FindPreviousMode(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Returns string FindPreviousTiltMat(LazyLinkedListNode<SyntaxPiece>) Returns the tilt Mat4d stored on the immediately previous block's transform list, or Idt when none. public static Mat4d FindPreviousTiltMat(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> Returns Mat4d GetCurrentMode(JsonObject) Gets the current node's existing tilt mode (e.g., from initializer). public static string GetCurrentMode(JsonObject json) Parameters json JsonObject Returns string 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 TryHandleG69(JsonObject, JsonObject) Handles G69 cancellation: writes identity tilt and consumes G69 from Flags. Idempotent — safe to call from multiple tilt syntaxes. Returns true if G69 was found and handled. public static bool TryHandleG69(JsonObject json, JsonObject parsing) Parameters json JsonObject parsing JsonObject Returns bool WriteSection(JsonObject, string, JsonObject) Writes the TiltTransform debug section to the JsonObject. public static void WriteSection(JsonObject json, string mode, JsonObject additionalParams = null) Parameters json JsonObject The target JsonObject. mode string Active tilt mode string (e.g., “G68.2”, “G69”). additionalParams JsonObject Optional G-code parameters (I,J,K,X,Y,Z etc.) for debug output."
},
"api/Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html",
"title": "Class ToolChangeMotionSyntax | HiAPI-C# 2025",
"summary": "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 object ToolChangeMotionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html",
"title": "Class ToolChangeSyntax | HiAPI-C# 2025",
"summary": "Class ToolChangeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. 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. public class ToolChangeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolChangeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples T5 + M06 — full tool change on one block; both T and M06 flag consumed, Term written: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M06\"], \"T\": 5 } } #AfterBuild: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": true, \"Term\": \"M06\" } } T5 alone alongside an unrelated flag — modal arming only, no actual change; IsChange=false and Term omitted. M03 is left in place because CleanupParsing only runs on the M06 branch: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"T\": 7 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ToolChange\": { \"ToolId\": 7, \"IsChange\": false } } M06 alone — T comes from #Previous: modal lookback; IsChange=true, Term=“M06”: #Previous: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": false } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M06\"] } } #AfterBuild: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": true, \"Term\": \"M06\" } } 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\" } } Fields IsChangeKey Section key indicating whether the current block actually triggers a tool change. public const string IsChangeKey = \"IsChange\" Field Value string SectionName JSON section name where the resolved tool-change state is written. public const string SectionName = \"ToolChange\" Field Value string TermKey Section key recording the trigger command (e.g., M06) when IsChangeKey is true. public const string TermKey = \"Term\" Field Value string ToolIdKey Section key holding the active tool number (modal). public const string ToolIdKey = \"ToolId\" Field Value string ToolWordTerm TermKey value recorded when the T word itself triggered the change (ToolWordTriggersChange). public const string ToolWordTerm = \"T\" 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"
},
"api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html",
"title": "Class ToolHeightOffsetSyntax | HiAPI-C# 2025",
"summary": "Class ToolHeightOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). public class ToolHeightOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolHeightOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below have no ToolOrientation section and no TiltTransform entry in the chain — the composed translation therefore lies along UnitZ (the identity tilt's AxialNormal), so Mat4d.Trans = (0, 0, height_mm). G43 H1 with a TestDeps.ToolOffset mapping offset 1 to 99.98 mm — full consume from Parsing.G43, positive sign on G43: #BeforeBuild: { \"Parsing\": { \"G43\": { \"H\": \"1\" } } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1] } ] } G49 cancel flag — writes a sentinel G49 section with Offset_mm = 0, OffsetId = 0, and composes an identity Mat4d so any previously composed tool-height translation is reset: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G49\"] } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": 0, \"Term\": \"G49\", \"OffsetId\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } No G43/G44/G49 on the current block but #Previous: carries an active G43 H1 — modal lookback inherits the term + offset id, re-queries the tool table, and re-composes the translation. The unrelated M03 flag survives because the consume path only triggers when an ISO term is on the current block: #Previous: { \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1] } ] } G44 H1 with the same TestDeps.ToolOffset offset-1 → 99.98 mm — G44 negates the table value, so Offset_mm = -99.98 and the composed translation lies along -UnitZ. The X/Y components of toolOrientation * -99.98 land on IEEE-754 negative zero (0 * -99.98 = -0.0), which System.Text.Json emits literally as -0: #BeforeBuild: { \"Parsing\": { \"G44\": { \"H\": \"1\" } } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": -99.98, \"Term\": \"G44\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, -0,-0,-99.98,1] } ] } Remarks Input data locations in JsonObject: Parsing.G43 / Parsing.G44 → from ParameterizedFlagSyntax, {\"H\": \"5\"} Parsing.H → from IntegerTagSetupSyntax, standalone modal H (int) Parsing.Flags → from NumberedFlagSyntax, \"G49\" for cancellation ToolOrientation → from a prior syntax (optional, default = Transformation.AxialNormal or UnitZ) Modal state is persisted in the IToolHeightCompensationDef section (not syntax fields) and recovered from backward node traversal. Constructors ToolHeightOffsetSyntax() Initializes a new instance with default settings. public ToolHeightOffsetSyntax() ToolHeightOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ToolHeightOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields ToolOrientationKey JSON key under which the upstream tool orientation vector is read. public const string ToolOrientationKey = \"ToolOrientation\" Field Value string TransformSource Identifier used as the transform source key when composing the tool-height translation into ProgramToMcTransform. public const string TransformSource = \"ToolHeightCompensation\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html",
"title": "Class UnitModeSyntax | HiAPI-C# 2025",
"summary": "Class UnitModeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The 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. public class UnitModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnitModeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G21\"] } } #AfterBuild: { \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G20\"] } } #AfterBuild: { \"Unit\": { \"Term\": \"G20\", \"System\": \"Inch\" } } #Previous: { \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } 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 UnitInchNotSupported 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\" } } Constructors UnitModeSyntax() Initializes a new instance with default settings. public UnitModeSyntax() UnitModeSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public UnitModeSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with standard settings. public static UnitModeSyntax Default { get; } Property Value UnitModeSyntax InchCodes Codes that select the inch input system; each detection emits UnitInchNotSupported. 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> 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"
},
"api/Hi.NcParsers.LogicSyntaxs.html": {
"href": "api/Hi.NcParsers.LogicSyntaxs.html",
"title": "Namespace Hi.NcParsers.LogicSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.LogicSyntaxs Classes BackBoringSyntax G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. BoringCycleSyntax G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. CannedCycleResolveSyntax Resolves the canned-cycle Group-09 state for the current block and writes the result to the CannedCycle section. Active cycle (direct G81..G89 or modal repeat): merges Parsing overrides with previous-cycle stored params, applies G91 incremental-to-absolute conversion and missing-axis fallback, writes CannedCycle with Term, ReturnMode, and Params. The resolved cycle sub-section is left in Parsing under the cycle code for downstream cycle syntaxes (DrillingCycleSyntax, etc.) to read. Explicit cancel (G80 flag present on a non-cycle block): consumes the G80 flag and writes CannedCycle = { Term: \"G80\" }, acting as a hard sentinel for Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil modal lookback. No Group-09 activity: leaves the block untouched. Must be placed after PositioningSyntax and before the individual cycle syntaxes in the chain. CircularMotionSyntax Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. 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). CoolantSyntax Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. CoordinateOffsetUtil Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. DrillingCycleSyntax G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. 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: Fanuc-family default — SecondsPrefixes = X/U (seconds), MillisecondsPrefixes = P (milliseconds), SpindleRevPrefixes = S (spindle revolutions). Siemens — G4 F<seconds> / G4 S<revolutions>: the preset sets SecondsPrefixes = F, clears the milliseconds list, keeps S revolutions. 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. FanucPathSmoothingSyntax Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. FeedrateSyntax Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. FineBoringSyntax G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. G43p4RtcpSyntax Handles G43.4 RTCP (Rotary Tool Center Point) activation. Writes the IToolHeightCompensationDef section and the ToolHeightCompensationSource entry in ProgramToMcTransform — a tool-normal · offset_mm translation at the block endpoint ABC. The chain entry is tagged KindDynamic when RTCP is active and ABC changes across the block, and KindStatic otherwise. The RTCP kinematic rotary part (Pn→MC rigid transform) is orthogonal to this syntax and is written by PivotTransformationSyntax on every block, because rotary state remains in effect beyond the RTCP modal (e.g. a non-RTCP G01 after G49 still inherits the last ABC from the program). The \"rotary dynamic\" distinction lives on the chain entry's KindKey alone and is read via HasDynamicEntry(JsonObject) by LinearMotionSyntax to pick ClLinear vs McLinear. G43.4 is used by Fanuc, Mazak, Syntec, and Okuma. Siemens (TRAORI) and Heidenhain (M128) are handled by separate syntaxes. Must be placed after ToolHeightOffsetSyntax (to override the ToolHeightCompensation entry when RTCP is active) and before PivotTransformationSyntax (which runs last in the chain). G53p1RotaryPositionSyntax G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. HighSpeedPeckCycleSyntax G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. IncrementalResolveSyntax Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. 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\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. IsoCoordinateOffsetSyntax ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. IsoG68RotationSyntax ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). IsoG68p2TiltSyntax ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). IsoLocalCoordinateOffsetSyntax ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. LinearMotionSyntax Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. 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 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, 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 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. McAbcCyclicPathSyntax Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. Two stages, mirroring McXyzSyntax: Root MachineCoordinateState — anchored at the previous block's modal rotary state. CompoundMotion.ItemsKey[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i > 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion IAct segments rather than a single root-MC stamp. 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. McAbcSyntax Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). 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 McAbcCyclicPathSyntax and LinearMotionSyntax. McAbcXyzFallbackSyntax Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. McXyzSyntax Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). PeckDrillingCycleSyntax G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. 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 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. 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 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 (3-axis configurations without rotary kinematics). PlaneSelectSyntax Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. 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. PositioningSyntax Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: 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 IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. ProgramEndCleanSyntax Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. Also clears any active FanucModalMacro on the same edge: a G66 modal that was still active when M02/M30 hit is implicitly cancelled, matching real Fanuc reset behaviour. The section is overwritten with a G67-shaped cancel marker so the carry mechanism in FanucModalMacroSyntax sees the boundary and does not propagate the modal past the program-end edge. ProgramEndSyntax Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. 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: ProgramPolarRxcz — the anchor-relative polar position (G90/G91 resolved against the previous block's position, mirroring HardNc NcGroup03.GetNcFromSyntax); 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; 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; 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 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. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). ProgramXyzSyntax Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. ProgramXyzUtil Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode<SyntaxPiece>, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode<SyntaxPiece>)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence found on a five-axis sample program.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode<SyntaxPiece>, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>) (pure predecessor lookback). ReferenceReturnSyntax Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback. RotaryAxisUtil Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. SpindleSpeedSyntax Consumes S (spindle speed) and 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 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. TappingCycleSyntax G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. TiltTransformUtil Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. 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. ToolChangeSyntax Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. 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. ToolHeightOffsetSyntax Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). UnitModeSyntax Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The 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. Enums BareG28Behavior Configurable handling for a G28 block with no axis specifiers (“bare G28”) — value of BareG28. Real Fanuc-class controllers vary: older 0i-M alarms (PS010), some 30i variants send every configured axis to home. Default to Alarm so silent NC bugs surface; opt into AllAxesHome per syntax instance."
},
"api/Hi.NcParsers.NcCompositionGate.html": {
"href": "api/Hi.NcParsers.NcCompositionGate.html",
"title": "Class NcCompositionGate | HiAPI-C# 2025",
"summary": "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 object NcCompositionGate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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."
},
"api/Hi.NcParsers.NcDiagnostic.html": {
"href": "api/Hi.NcParsers.NcDiagnostic.html",
"title": "Class NcDiagnostic | HiAPI-C# 2025",
"summary": "Class NcDiagnostic Namespace Hi.NcParsers Assembly HiMech.dll A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress<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). For irregular cases that don't fit the pattern, use a custom string. public class NcDiagnostic : IMessage, ISentenceCarrier, IGetSentence, ISentenceIndexed Inheritance object NcDiagnostic Implements IMessage ISentenceCarrier IGetSentence ISentenceIndexed Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors 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) Creates a fully-populated NcDiagnostic. public NcDiagnostic(Severity severity, Category category, string id, string 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 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. sentenceCarrier ISentenceCarrier Carrier for the NC source block that triggered this diagnostic; null for pipeline-level messages. Properties Args Values interpolated into Format; null when untemplated. public object[] Args { get; } Property Value object[] Category Diagnostic category. public Category Category { get; } Property Value Category Detail Optional detail data or exception. Null if not applicable. public object Detail { get; } Property Value object Format Composite-format template behind Notification; null when the diagnostic was built from a plain string (untemplated). public string Format { get; } Property Value string Id Structured diagnostic ID for filtering and suppression. Normally {Primary}-{Secondary}{Abbrev}. public string Id { get; } Property Value string Notification End-user friendly notification text. public string Notification { get; } Property Value string SentenceCarrier Carrier of the NC source block that triggered this diagnostic, exposing both the source Sentence (via GetSentence()) and the execution-order SentenceIndex. Null for pipeline-level messages (e.g., lifecycle start/done) that have no source block. public ISentenceCarrier SentenceCarrier { get; } Property Value ISentenceCarrier 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 Severity 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. 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. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.NcParsers.NcDiagnosticProgress.html": {
"href": "api/Hi.NcParsers.NcDiagnosticProgress.html",
"title": "Class NcDiagnosticProgress | HiAPI-C# 2025",
"summary": "Class NcDiagnosticProgress Namespace Hi.NcParsers Assembly HiMech.dll Helper that emits NcDiagnostic records — 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. public class NcDiagnosticProgress : IProgress<NcDiagnostic> Inheritance object NcDiagnosticProgress Implements IProgress<NcDiagnostic> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnosticProgress(IProgress<IMessage>) Creates a NcDiagnosticProgress that retains every reported NcDiagnostic in Diagnostics and also forwards it to shippingProgress for live consumption. public NcDiagnosticProgress(IProgress<IMessage> shippingProgress) Parameters 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. 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() ConfigurationError(ISentenceCarrier, string, string, object) Emits Configuration + Error located at sentenceCarrier. public void ConfigurationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ConfigurationError(string, string, object) Emits Configuration + Error (dependency/config missing, cannot proceed). public void ConfigurationError(string id, string text, object detail = null) Parameters id string text string detail object 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 ConfigurationMessage(ISentenceCarrier, string, string) Emits Configuration + Message located at sentenceCarrier. public void ConfigurationMessage(ISentenceCarrier sentenceCarrier, string id, string text) Parameters sentenceCarrier ISentenceCarrier id string text string ConfigurationMessage(string, string) Emits Configuration + Message (dependency/config applied, informational event). public void ConfigurationMessage(string id, string text) Parameters id string text string 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 ConfigurationWarning(ISentenceCarrier, string, string, object) Emits Configuration + Warning located at sentenceCarrier. public void ConfigurationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ConfigurationWarning(string, string, object) Emits Configuration + Warning (dependency/config missing, using fallback). public void ConfigurationWarning(string id, string text, object detail = null) Parameters id string text string detail object 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 Report(NcDiagnostic) Reports a progress update. public void Report(NcDiagnostic value) Parameters value NcDiagnostic The value of the updated progress. SystemError(ISentenceCarrier, string, string, object) Emits System + Error located at sentenceCarrier. public void SystemError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object SystemError(string, string, object) Emits System + Error (pipeline exception or unconsidered case). public void SystemError(string id, string text, object detail = null) Parameters id string text string detail object 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 SystemMessage(ISentenceCarrier, string, string) Emits System + Message located at sentenceCarrier. public void SystemMessage(ISentenceCarrier sentenceCarrier, string id, string text) Parameters sentenceCarrier ISentenceCarrier id string text string SystemMessage(string, string) Emits System + Message (pipeline lifecycle / informational). public void SystemMessage(string id, string text) Parameters id string text string 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 UnsupportedError(ISentenceCarrier, string, string, object) Emits Unsupported + Error located at sentenceCarrier. public void UnsupportedError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedError(string, string, object) Emits Unsupported + Error (recognized but unimplemented, likely matters). public void UnsupportedError(string id, string text, object detail = null) Parameters id string text string detail object 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 UnsupportedMessage(ISentenceCarrier, string, string, object) Emits Unsupported + Message located at sentenceCarrier. public void UnsupportedMessage(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedMessage(string, string, object) Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline). public void UnsupportedMessage(string id, string text, object detail = null) Parameters id string text string detail object 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 UnsupportedWarning(ISentenceCarrier, string, string, object) Emits Unsupported + Warning located at sentenceCarrier. public void UnsupportedWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedWarning(string, string, object) Emits Unsupported + Warning (recognized but unimplemented, likely harmless). public void UnsupportedWarning(string id, string text, object detail = null) Parameters id string text string detail object 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 ValidationError(ISentenceCarrier, string, string, object) Emits Validation + Error located at sentenceCarrier. public void ValidationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ValidationError(string, string, object) Emits Validation + Error (manufacturing/physics is unfeasible). public void ValidationError(string id, string text, object detail = null) Parameters id string text string detail object 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 ValidationWarning(ISentenceCarrier, string, string, object) Emits Validation + Warning located at sentenceCarrier. public void ValidationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ValidationWarning(string, string, object) Emits Validation + Warning (manufacturing/physics may be unfeasible). public void ValidationWarning(string id, string text, object detail = null) Parameters id string text string detail object 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>"
},
"api/Hi.NcParsers.NcRunnerSuit.html": {
"href": "api/Hi.NcParsers.NcRunnerSuit.html",
"title": "Class NcRunnerSuit | HiAPI-C# 2025",
"summary": "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 object NcRunnerSuit Implements IMakeXmlSource INcDependencyListHost Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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()"
},
"api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html",
"title": "Class BlockSkipSyntax | HiAPI-C# 2025",
"summary": "Class BlockSkipSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. public class BlockSkipSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BlockSkipSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: /X100 Y200 #AfterBuild: { \"UnparsedText\": \"X100 Y200\", \"BlockSkip\": { \"Symbol\": \"/\", \"Layer\": 1 } } #BeforeBuild.UnparsedText: /3 G01 X0 #AfterBuild: { \"UnparsedText\": \"G01 X0\", \"BlockSkip\": { \"Symbol\": \"/\", \"Layer\": 3 } } Constructors BlockSkipSyntax() Initializes a new instance with default settings. public BlockSkipSyntax() BlockSkipSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BlockSkipSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html",
"title": "Class QuoteCommentSyntax | HiAPI-C# 2025",
"summary": "Class QuoteCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll Parses parenthesized comments such as (comment text) from the remaining unparsed text and emits a Comment section with the () symbol. public class QuoteCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object QuoteCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: (only a comment) #AfterBuild: { \"Comment\": { \"Symbol\": \"()\", \"Text\": \"only a comment\" } } #BeforeBuild.UnparsedText: G01 X100 (mid-line comment) #AfterBuild: { \"UnparsedText\": \"G01 X100\", \"Comment\": { \"Symbol\": \"()\", \"Text\": \"mid-line comment\" } } Constructors QuoteCommentSyntax() Initializes a new instance with default settings. public QuoteCommentSyntax() QuoteCommentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public QuoteCommentSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html",
"title": "Class TailCommentSyntax | HiAPI-C# 2025",
"summary": "Class TailCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll In-situ syntax that strips a trailing comment from the NC line: text from a configured TailSymbol to end-of-line is moved into Comment on the block JSON. 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. public class TailCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TailCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: ;header comment (with TailSymbol=\";\") #AfterBuild: { \"Comment\": { \"Symbol\": \";\", \"Text\": \"header comment\" } } #BeforeBuild.UnparsedText: G01 X100 ;mid comment (with TailSymbol=\";\") #AfterBuild: { \"UnparsedText\": \"G01 X100\", \"Comment\": { \"Symbol\": \";\", \"Text\": \"mid comment\" } } #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\" } } Constructors TailCommentSyntax(string) Creates syntax with the given tail marker; used from code or tests without XML. public TailCommentSyntax(string tailSymbol) Parameters tailSymbol string Marker that starts the tail comment segment. TailCommentSyntax(XElement) Loads TailSymbol from persisted XML. public TailCommentSyntax(XElement src) Parameters src XElement Serialized syntax element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TailSymbol First character(s) of the tail comment marker (e.g. ; or //). public string TailSymbol { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Classes QuoteCommentSyntax Parses parenthesized comments such as (comment text) from the remaining unparsed text and emits a Comment section with 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."
},
"api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html",
"title": "Class CsScriptSyntax | HiAPI-C# 2025",
"summary": "Class CsScriptSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. public class CsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsScriptSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsScriptSyntax() Creates syntax with DefaultPreMarker and DefaultPostMarker. public CsScriptSyntax() CsScriptSyntax(XElement) Loads pre/post script markers from persisted XML. public CsScriptSyntax(XElement src) Parameters src XElement Root element named XName. Fields DefaultPostMarker Default end-of-block script delimiter when none is configured in XML. public const string DefaultPostMarker = \"@@^\" Field Value string DefaultPreMarker Default begin-of-block script delimiter when none is configured in XML. public const string DefaultPreMarker = \"@@\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostMarker Marker prefix for end-of-block script (runs after the NC block). public string PostMarker { get; set; } Property Value string PreMarker Marker prefix for begin-of-block script (runs before the NC block). public string PreMarker { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html",
"title": "Class FanucGotoParsingSyntax | HiAPI-C# 2025",
"summary": "Class FanucGotoParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Parses Fanuc Custom Macro B GOTO phrases out of the remaining UnparsedText into a Parsing.FanucGoto sub-object. Two forms are recognised: GOTO <n> — unconditional jump. IF [<bool-expr>] GOTO <n> — conditional jump. IF [...] GOTO is matched as a single phrase, not as an IF syntax composed with a GOTO syntax — Fanuc only permits the two fixed forms (the other being IF [...] THEN <assignment>, out of scope here), so a phrase-level parser is more faithful and avoids parsing-ambiguity rabbit holes. <n> is captured as a raw token (literal like \"100\", variable like \"#1\", or bracketed expression like \"#[#2+5]\"). VariableEvaluatorSyntax substitutes the resolved literal back into the same field downstream; FanucGotoSyntax then parses the final string as an int. Storing as a string at parsing time mirrors how axis tags and canned-cycle params accept #N references and the evaluator rewrites them in place. Pipeline placement: after HeadIndexSyntax (so the leading N{seq} on a block like N50 GOTO 100 has already been consumed) and after QuoteCommentSyntax (so a parenthesised (GOTO 100) inside a comment never matches). The phrase consumes the entire remaining text on the block — Fanuc allows only the GOTO / IF-GOTO phrase after any preceding head index, no other instructions on the same block. public class FanucGotoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucGotoParsingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: GOTO 100 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"GOTO\", \"N\": \"100\" } } } #BeforeBuild.UnparsedText: GOTO #1 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"GOTO\", \"N\": \"#1\" } } } #BeforeBuild.UnparsedText: IF [#1 GT 0] GOTO 100 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"IF...GOTO\", \"N\": \"100\", \"Condition\": \"#1 GT 0\" } } } Constructors FanucGotoParsingSyntax() Parameterless instance for bundle composition (no XML state). public FanucGotoParsingSyntax() FanucGotoParsingSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucGotoParsingSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html",
"title": "Class FanucIfThenParsingSyntax | HiAPI-C# 2025",
"summary": "Class FanucIfThenParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Parses the Fanuc Custom Macro B IF [<bool-expr>] THEN <body> single-block conditional phrase out of UnparsedText into a Parsing.FanucIfThen sub-object. Sibling to FanucGotoParsingSyntax — Fanuc spec only permits two IF-led control phrases (IF [...] GOTO <n> handled there, IF [...] THEN <stmt> handled here) so each form is matched phrase-level rather than composed from a generic IF combinator. Body shape. The body after THEN is conceptually a single statement that affects the current block only — no jump, no label scan. Almost always a Custom Macro B assignment (#nnn = <expr>); multiple assignments in the same body (#100 = 5. #101 = #100 + 1) are also accepted. The parsing syntax pre-extracts these via GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, 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 FanucIfThenSyntax lift the resolved entries into Parsing.Assignments only when the gate condition fires (so unfired bodies leave no trace in the readers). Pipeline placement. This syntax must run before FanucGotoParsingSyntax — the bare IF-GOTO regex over there (^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first keeps the two phrases textually disjoint and avoids any future regression if either regex is loosened. Also placed before TagAssignmentSyntax so a bare IF [...] THEN #100 = 5. is not first half-eaten as a plain assignment. Raw BodyText is retained verbatim on the parsing section regardless of whether the body parsed as assignments — it carries the round-trip view and lets the evaluation syntax warn (FanucIfThen--UnsupportedBody) if no PendingAssignments were produced on a truthy condition. public class FanucIfThenParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucIfThenParsingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #Input: IF [#1 GT 0] THEN #100 = #500 + 1 #Output: { \"Parsing\": { \"FanucIfThen\": { \"Condition\": \"#1 GT 0\", \"BodyText\": \"#100 = #500 + 1\", \"PendingAssignments\": { \"#100\": \"#500 + 1\" } } } } Constructors FanucIfThenParsingSyntax() Parameterless instance for bundle composition (no XML state). public FanucIfThenParsingSyntax() FanucIfThenParsingSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucIfThenParsingSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html",
"title": "Class FanucProgramNumberSyntax | HiAPI-C# 2025",
"summary": "Class FanucProgramNumberSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Detects a Fanuc-family program identifier header — O1234 or <O1234> — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation. public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucProgramNumberSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Bare O1234 on the first block of the stream (no #Previous:) — start-of-stream is itself a tape boundary per IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>), so the syntax fires; the consumed text leaves nothing behind: #BeforeBuild.UnparsedText: O1234 #AfterBuild: { \"FanucProgramNumber\": { \"Number\": \"1234\", \"Wrapper\": \"None\" } } Angle-bracketed <O5678> after an explicit TapeBoundary block (% on the prior line) — Wrapper records the surface form: #Previous: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: <O5678> #AfterBuild: { \"FanucProgramNumber\": { \"Number\": \"5678\", \"Wrapper\": \"Angle\" } } O1234 followed by trailing text (e.g. an inline comment) — only the program-number header is consumed; the rest stays on UnparsedText for downstream syntaxes to handle: #Previous: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: O1234 (PART-A) #AfterBuild: { \"UnparsedText\": \"(PART-A)\", \"FanucProgramNumber\": { \"Number\": \"1234\", \"Wrapper\": \"None\" } } Previous block is not a tape boundary (e.g. ordinary FanucProgramNumber already in the stream) — the guard rejects the block, leaving UnparsedText intact: #Previous: { \"FanucProgramNumber\": { \"Number\": \"1000\", \"Wrapper\": \"None\" } } #BeforeBuild.UnparsedText: O9999 #AfterBuild: { \"UnparsedText\": \"O9999\" } Constructors FanucProgramNumberSyntax() Parameterless instance for bundle composition (no XML state). public FanucProgramNumberSyntax() FanucProgramNumberSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucProgramNumberSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucWhileDoParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucWhileDoParsingSyntax.html",
"title": "Class FanucWhileDoParsingSyntax | HiAPI-C# 2025",
"summary": "Class FanucWhileDoParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Parses the two Fanuc Custom Macro B WHILE/END phrases out of UnparsedText into a Parsing.FanucWhileDo sub-object: WHILE [<bool-expr>] DO <m> — loop entry, writes { Term: \"WHILE...DO\", LoopId, Condition }. END <m> — loop terminator, writes { Term: \"END\", LoopId }. Pipeline placement. This syntax must run before TagAssignmentSyntax in the Parsing bundle — same lesson as FanucIfThenParsingSyntax: although the WHILE / END phrases per Fanuc spec do not coexist with assignments on the same block, the defensive ordering prevents a body fragment from being half-eaten as a stand-alone assignment if a non-spec NC file appears. LoopId is captured as an int directly (Fanuc spec restricts the m identifier to small literal integers 13 typical, no expression form). The WHILE's Condition is captured as a string and substituted in place by VariableEvaluatorSyntax's pass-2 tree walk; FanucWhileDoSyntax then reads it via the shared FanucConditionReader. public class FanucWhileDoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucWhileDoParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #Input: WHILE [#100 LT 3] DO 1 #Output: { \"Parsing\": { \"FanucWhileDo\": { \"Term\": \"WHILE...DO\", \"LoopId\": 1, \"Condition\": \"#100 LT 3\" } } } #Input: END 1 #Output: { \"Parsing\": { \"FanucWhileDo\": { \"Term\": \"END\", \"LoopId\": 1 } } } Constructors FanucWhileDoParsingSyntax() Parameterless instance for bundle composition (no XML state). public FanucWhileDoParsingSyntax() FanucWhileDoParsingSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucWhileDoParsingSyntax(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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Classes FanucGotoParsingSyntax Parses Fanuc Custom Macro B GOTO phrases out of the remaining UnparsedText into a Parsing.FanucGoto sub-object. Two forms are recognised: GOTO <n> — unconditional jump. IF [<bool-expr>] GOTO <n> — conditional jump. IF [...] GOTO is matched as a single phrase, not as an IF syntax composed with a GOTO syntax — Fanuc only permits the two fixed forms (the other being IF [...] THEN <assignment>, out of scope here), so a phrase-level parser is more faithful and avoids parsing-ambiguity rabbit holes. <n> is captured as a raw token (literal like \"100\", variable like \"#1\", or bracketed expression like \"#[#2+5]\"). VariableEvaluatorSyntax substitutes the resolved literal back into the same field downstream; FanucGotoSyntax then parses the final string as an int. Storing as a string at parsing time mirrors how axis tags and canned-cycle params accept #N references and the evaluator rewrites them in place. Pipeline placement: after HeadIndexSyntax (so the leading N{seq} on a block like N50 GOTO 100 has already been consumed) and after QuoteCommentSyntax (so a parenthesised (GOTO 100) inside a comment never matches). The phrase consumes the entire remaining text on the block — Fanuc allows only the GOTO / IF-GOTO phrase after any preceding head index, no other instructions on the same block. FanucIfThenParsingSyntax Parses the Fanuc Custom Macro B IF [<bool-expr>] THEN <body> single-block conditional phrase out of UnparsedText into a Parsing.FanucIfThen sub-object. Sibling to FanucGotoParsingSyntax — Fanuc spec only permits two IF-led control phrases (IF [...] GOTO <n> handled there, IF [...] THEN <stmt> handled here) so each form is matched phrase-level rather than composed from a generic IF combinator. Body shape. The body after THEN is conceptually a single statement that affects the current block only — no jump, no label scan. Almost always a Custom Macro B assignment (#nnn = <expr>); multiple assignments in the same body (#100 = 5. #101 = #100 + 1) are also accepted. The parsing syntax pre-extracts these via GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, 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 FanucIfThenSyntax lift the resolved entries into Parsing.Assignments only when the gate condition fires (so unfired bodies leave no trace in the readers). Pipeline placement. This syntax must run before FanucGotoParsingSyntax — the bare IF-GOTO regex over there (^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first keeps the two phrases textually disjoint and avoids any future regression if either regex is loosened. Also placed before TagAssignmentSyntax so a bare IF [...] THEN #100 = 5. is not first half-eaten as a plain assignment. Raw BodyText is retained verbatim on the parsing section regardless of whether the body parsed as assignments — it carries the round-trip view and lets the evaluation syntax warn (FanucIfThen--UnsupportedBody) if no PendingAssignments were produced on a truthy condition. FanucProgramNumberSyntax Detects a Fanuc-family program identifier header — O1234 or <O1234> — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation. FanucWhileDoParsingSyntax Parses the two Fanuc Custom Macro B WHILE/END phrases out of UnparsedText into a Parsing.FanucWhileDo sub-object: WHILE [<bool-expr>] DO <m> — loop entry, writes { Term: \"WHILE...DO\", LoopId, Condition }. END <m> — loop terminator, writes { Term: \"END\", LoopId }. Pipeline placement. This syntax must run before TagAssignmentSyntax in the Parsing bundle — same lesson as FanucIfThenParsingSyntax: although the WHILE / END phrases per Fanuc spec do not coexist with assignments on the same block, the defensive ordering prevents a body fragment from being half-eaten as a stand-alone assignment if a non-spec NC file appears. LoopId is captured as an int directly (Fanuc spec restricts the m identifier to small literal integers 13 typical, no expression form). The WHILE's Condition is captured as a string and substituted in place by VariableEvaluatorSyntax's pass-2 tree walk; FanucWhileDoSyntax then reads it via the shared FanucConditionReader."
},
"api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html",
"title": "Class FlagSyntax | HiAPI-C# 2025",
"summary": "Class FlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax of fully Match flag. public class FlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Flag generally not accomanys with variable value. The term Tag generally accomanys with variable value. Constructors FlagSyntax(IEnumerable<string>, IEnumerable<string>) Creates syntax from in-memory path and flag lists (tests or programmatic setup). public FlagSyntax(IEnumerable<string> categoryPath, IEnumerable<string> flags) Parameters categoryPath IEnumerable<string> flags IEnumerable<string> FlagSyntax(XElement) Loads category path and flag list items from XML. public FlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties 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 CategoryPath JSON path segments (each Item) under which matched flags are stored. public List<string> CategoryPath { get; set; } Property Value List<string> FlagList NC tokens to detect and record as flags (exact match). public List<string> FlagList { 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 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html",
"title": "Class FloatTagValueSyntax | HiAPI-C# 2025",
"summary": "Class FloatTagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class FloatTagValueSyntax : TagValueSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax FloatTagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagValueSyntax.MakeXmlSource(string, string, bool) TagValueSyntax.VariableTag TagValueSyntax.CategoryPath TagValueSyntax.TagList TagValueSyntax.AllowEqualsForm TagValueSyntax.AllowSpacedValue TagValueSyntax.RhsDialect TagValueSyntax.Name TagValueSyntax.Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FloatTagValueSyntax(IEnumerable<string>, IEnumerable<string>, string) Initializes a new instance with the given category path, tag list, and variable-tag pattern. public FloatTagValueSyntax(IEnumerable<string> categoryPath, IEnumerable<string> tags, string variableTag) Parameters categoryPath IEnumerable<string> JSON path under Parsing where matches are written. tags IEnumerable<string> Single-letter tag names whose values are grabbed. variableTag string Regex/literal recognizing a variable reference as a value. FloatTagValueSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FloatTagValueSyntax(XElement src) Parameters src XElement Source XML element. Properties XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToFloat(string) Parses a numeric literal to double; returns the original string for variable text. public static JsonNode ToFloat(string setup) Parameters setup string Returns JsonNode ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode"
},
"api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html",
"title": "Class HeadIndexSyntax | HiAPI-C# 2025",
"summary": "Class HeadIndexSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. public class HeadIndexSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadIndexSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: N100 X0 (with HeadSymbol=“N”) #AfterBuild: { \"UnparsedText\": \"X0\", \"IndexNote\": { \"Symbol\": \"N\", \"Number\": 100 } } #BeforeBuild.UnparsedText: N42 (lone head index, no trailing tokens; with HeadSymbol=“N”) #AfterBuild: { \"IndexNote\": { \"Symbol\": \"N\", \"Number\": 42 } } Constructors HeadIndexSyntax(string) Creates syntax with the given head symbol prefix (may be empty). public HeadIndexSyntax(string headSymbol) Parameters headSymbol string HeadIndexSyntax(XElement) Loads HeadSymbol from persisted XML. public HeadIndexSyntax(XElement src) Parameters src XElement Root element named XName. Properties HeadSymbol public string HeadSymbol { get; set; } Property Value string Remarks The Head Symbol can be not null empty string. NC Index from Heidenhain may have no head symbol. Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html",
"title": "Class HeidenhainDatumSettingSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainDatumSettingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll 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). public class HeidenhainDatumSettingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumSettingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumSettingSyntax() Initializes a new instance with default settings. public HeidenhainDatumSettingSyntax() HeidenhainDatumSettingSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainDatumSettingSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TagList Tags to grab as float-valued coordinates within the cycle body. public List<string> TagList { 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html",
"title": "Class HeidenhainDatumShiftSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainDatumShiftSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll 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). public class HeidenhainDatumShiftSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumShiftSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumShiftSyntax() Initializes a new instance with default settings. public HeidenhainDatumShiftSyntax() HeidenhainDatumShiftSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainDatumShiftSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TagList Tags to grab as float-valued coordinates within the cycle body. public List<string> TagList { 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMachiningCycleSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMachiningCycleSyntax.html",
"title": "Class HeidenhainMachiningCycleSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMachiningCycleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMirrorCyclSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMirrorCyclSyntax.html",
"title": "Class HeidenhainMirrorCyclSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMirrorCyclSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainToleranceCyclSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainToleranceCyclSyntax.html",
"title": "Class HeidenhainToleranceCyclSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainToleranceCyclSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Classes HeidenhainDatumSettingSyntax 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 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."
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html",
"title": "Class HeidenhainBlkFormSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainBlkFormSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BLK FORM command (workpiece blank definition). public class HeidenhainBlkFormSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainBlkFormSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: BLK FORM 0.1 Z X+0 Y+0 Z-40 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"0.1\", \"Axis\": \"Z\", \"X\": 0, \"Y\": 0, \"Z\": -40 } } } #BeforeBuild.UnparsedText: BLK FORM 0.2 X+100 Y+100 Z+0 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"0.2\", \"X\": 100, \"Y\": 100, \"Z\": 0 } } } #BeforeBuild.UnparsedText: BLK FORM CYLINDER Z R50 L105 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"CYLINDER\", \"Axis\": \"Z\", \"R\": 50, \"L\": 105 } } } Constructors HeidenhainBlkFormSyntax() Initializes a new instance with default settings. public HeidenhainBlkFormSyntax() HeidenhainBlkFormSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainBlkFormSyntax(XElement src) Parameters src XElement Source XML element. Fields BlkFormTagList Tags for BLK FORM coordinate/dimension values. public static readonly string[] BlkFormTagList Field Value string[] Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCSyntax.html",
"title": "Class HeidenhainCSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html",
"title": "Class HeidenhainCallSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). public class HeidenhainCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: CALL PGM SubProg #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"PGM\", \"Name\": \"SubProg\" } } } #BeforeBuild.UnparsedText: CALL LBL 5 #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"5\" } } } #BeforeBuild.UnparsedText: CALL LBL MyLabel REP 3 #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"MyLabel\", \"REP\": \"3\" } } } #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\" } } } Constructors HeidenhainCallSyntax() Initializes a new instance with default settings. public HeidenhainCallSyntax() HeidenhainCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html",
"title": "Class HeidenhainCcSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCcSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclCallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclCallSyntax.html",
"title": "Class HeidenhainCyclCallSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainCyclCallSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html",
"title": "Class HeidenhainCyclDefSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainCyclDefSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Initialization Syntax of Heidenhain fixed head block for CYCL DEF . public class HeidenhainCyclDefSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCyclDefSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCyclDefSyntax() Initializes a new instance with default settings. public HeidenhainCyclDefSyntax() HeidenhainCyclDefSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCyclDefSyntax(XElement src) Parameters src XElement Source XML element. Fields CyclDefConst JSON key under Parsing that holds the parsed cycle number (e.g. 247 for CYCL DEF 247). public const string CyclDefConst = \"CYCL DEF\" 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html",
"title": "Class HeidenhainFnAssignmentSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainFnAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. public class HeidenhainFnAssignmentSyntax : TagAssignmentSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax HeidenhainFnAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagAssignmentSyntax.AssignmentsKey TagAssignmentSyntax.DefaultCategoryPath TagAssignmentSyntax.MakeXmlSource(string, string, bool) TagAssignmentSyntax.CategoryPath TagAssignmentSyntax.TagList TagAssignmentSyntax.VarPrefix TagAssignmentSyntax.TerminateWords TagAssignmentSyntax.RhsDialect TagAssignmentSyntax.Name TagAssignmentSyntax.ToAssignmentJsonNode(string) TagAssignmentSyntax.Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks FN 0: Q5 = +60 (assignment) FN 1: Q1 = -Q2 + -5 (addition) FN 2: Q1 = Q2 - Q3 (subtraction) FN 3: Q1 = Q2 * Q3 (multiplication) FN 4: Q1 = Q2 / Q3 (division) Constructors HeidenhainFnAssignmentSyntax() Initializes a new instance with default settings. The RHS is parser-delimited by the Heidenhain expression grammar (P2) so spaced arithmetic (FN 2: Q1 = Q1 - 1) and the FN 4/5 spellings (DIV, prefix SQRT) capture as one expression; XML from the pre-P2 era rehydrates with None and keeps its legacy lexical boundary. public HeidenhainFnAssignmentSyntax() HeidenhainFnAssignmentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainFnAssignmentSyntax(XElement src) Parameters src XElement Source XML element. Properties XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected override bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnFeatureSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnFeatureSyntax.html",
"title": "Class HeidenhainFnFeatureSyntax | HiAPI-C# 2025",
"summary": "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 HeidenhainFnUnsupported 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 object HeidenhainFnFeatureSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html",
"title": "Class HeidenhainGotoParsingSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainGotoParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Captures the Heidenhain FN 912 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 (EQU→EQ), 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 912 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 object HeidenhainGotoParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html",
"title": "Class HeidenhainLSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainLSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain linear movement (the leading L) syntax. Strips the leading 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. public class HeidenhainLSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: L X+10 Y+20 Z-5 #AfterBuild: { \"Parsing\": { \"L\": true, \"X\": 10, \"Y\": 20, \"Z\": -5 } } #BeforeBuild.UnparsedText: L A+45 B-15 #AfterBuild: { \"Parsing\": { \"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 } } Constructors HeidenhainLSyntax() Initializes a new instance with default settings. public HeidenhainLSyntax() HeidenhainLSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLSyntax(XElement src) Parameters src XElement Source XML element. 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 Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TagList Axis tags grabbed as float-valued coordinates after the leading L. public List<string> TagList { 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html",
"title": "Class HeidenhainLblSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainLblSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. Only a DEFINITION is captured: CALL LBL (any spacing) and the FN 912 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. public class HeidenhainLblSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLblSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: LBL 1 #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"1\" } } } #BeforeBuild.UnparsedText: LBL MyLabel #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"MyLabel\" } } } #BeforeBuild.UnparsedText: LBL 0 (LBL 0 is the end-of-subprogram sentinel) #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"0\" } } } #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\" } } } Constructors HeidenhainLblSyntax() Initializes a new instance with default settings. public HeidenhainLblSyntax() HeidenhainLblSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLblSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM128Syntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM128Syntax.html",
"title": "Class HeidenhainM128Syntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainM128Syntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM140Syntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM140Syntax.html",
"title": "Class HeidenhainM140Syntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainM140Syntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainMirrorImageSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainMirrorImageSyntax.html",
"title": "Class HeidenhainMirrorImageSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainMirrorImageSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html",
"title": "Class HeidenhainPlaneSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainPlaneSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for 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). public class HeidenhainPlaneSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainPlaneSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN #AfterBuild: { \"Parsing\": { \"PLANE\": { \"Mode\": \"SPATIAL\", \"SPA\": 30, \"SPB\": 0, \"SPC\": -10, \"SEQ\": \"+\", \"Rot\": \"COORD\", \"Positioning\": \"TURN\" } } } #BeforeBuild.UnparsedText: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE #AfterBuild: { \"Parsing\": { \"PLANE\": { \"Mode\": \"PROJECTED\", \"PROPR\": 30, \"PROMIN\": 0, \"ROT\": 45, \"SEQ\": \"-\", \"Rot\": \"TABLE\", \"Positioning\": \"MOVE\" } } } #BeforeBuild.UnparsedText: PLANE RESET STAY #AfterBuild: { \"Parsing\": { \"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\" } } } Constructors HeidenhainPlaneSyntax() Initializes a new instance with default settings. public HeidenhainPlaneSyntax() HeidenhainPlaneSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainPlaneSyntax(XElement src) Parameters src XElement Source XML element. Fields 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 Projected tags for PLANE PROJECTED command. PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. public static readonly string[] ProjectedTagList Field Value string[] 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 Spatial axis tags for PLANE SPATIAL command. public static readonly string[] SpatialTagList Field Value string[] 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 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html",
"title": "Class HeidenhainProgramSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainProgramSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BEGIN PGM and END PGM commands. public class HeidenhainProgramSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainProgramSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: BEGIN PGM DEMO MM #AfterBuild: { \"Parsing\": { \"PGM\": { \"Command\": \"BEGIN\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } } #BeforeBuild.UnparsedText: END PGM DEMO MM #AfterBuild: { \"Parsing\": { \"PGM\": { \"Command\": \"END\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } } Constructors HeidenhainProgramSyntax() Initializes a new instance with default settings. public HeidenhainProgramSyntax() HeidenhainProgramSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainProgramSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTcpmSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTcpmSyntax.html",
"title": "Class HeidenhainTcpmSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainTcpmSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTildeTrimSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTildeTrimSyntax.html",
"title": "Class HeidenhainTildeTrimSyntax | HiAPI-C# 2025",
"summary": "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 object HeidenhainTildeTrimSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html",
"title": "Class HeidenhainToolCallSyntax | HiAPI-C# 2025",
"summary": "Class HeidenhainToolCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…] public class HeidenhainToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainToolCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: TOOL CALL 1 Z S5000 #AfterBuild: { \"Parsing\": { \"TOOL CALL\": { \"Axis\": \"Z\", \"S\": \"5000\", \"T\": \"1\" } } } #BeforeBuild.UnparsedText: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 #AfterBuild: { \"Parsing\": { \"TOOL CALL\": { \"Axis\": \"Z\", \"S\": \"3000\", \"DL\": \"+0.5\", \"DR\": \"-0.1\", \"T\": \"MyTool\" } } } Constructors HeidenhainToolCallSyntax() Initializes a new instance with default settings. public HeidenhainToolCallSyntax() HeidenhainToolCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainToolCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Classes HeidenhainBlkFormSyntax Syntax for Heidenhain BLK FORM command (workpiece blank definition). 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. HeidenhainCyclDefSyntax Initialization Syntax of Heidenhain fixed head block for CYCL DEF . 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 HeidenhainFnUnsupported 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 912 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 (EQU→EQ), 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 912 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 — 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. 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 912 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. 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 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. HeidenhainToolCallSyntax Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…]"
},
"api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html",
"title": "Class IntegerTagValueSyntax | HiAPI-C# 2025",
"summary": "Class IntegerTagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class IntegerTagValueSyntax : TagValueSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax IntegerTagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagValueSyntax.MakeXmlSource(string, string, bool) TagValueSyntax.VariableTag TagValueSyntax.CategoryPath TagValueSyntax.TagList TagValueSyntax.AllowEqualsForm TagValueSyntax.AllowSpacedValue TagValueSyntax.RhsDialect TagValueSyntax.Name TagValueSyntax.Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IntegerTagValueSyntax(IEnumerable<string>, IEnumerable<string>, string) Initializes a new instance with the given category path, tag list, and variable-tag pattern. public IntegerTagValueSyntax(IEnumerable<string> categoryPath, IEnumerable<string> tags, string variableTag) Parameters categoryPath IEnumerable<string> JSON path under Parsing where matches are written. tags IEnumerable<string> Single-letter tag names whose values are grabbed. variableTag string Regex/literal recognizing a variable reference as a value. IntegerTagValueSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IntegerTagValueSyntax(XElement src) Parameters src XElement Source XML element. Properties XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToInteger(string) Parses a numeric literal to int; returns the original string for variable text. public static JsonNode ToInteger(string setup) Parameters setup string Returns JsonNode ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode"
},
"api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html",
"title": "Class NamedVarAssignmentSyntax | HiAPI-C# 2025",
"summary": "Class NamedVarAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. public class NamedVarAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NamedVarAssignmentSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 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. Constructors NamedVarAssignmentSyntax(IEnumerable<string>, IEnumerable<string>, string) Initializes a new instance with the given category path, optional terminator keywords, and an identifier regex pattern. public NamedVarAssignmentSyntax(IEnumerable<string> categoryPath, IEnumerable<string> terminateWords = null, string identPattern = \"[A-Za-z_]\\\\w+\") Parameters categoryPath IEnumerable<string> 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. identPattern string Regex matching the variable identifier; defaults to DefaultIdentPattern. NamedVarAssignmentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public NamedVarAssignmentSyntax(XElement src) Parameters src XElement Source XML element. Fields DefaultIdentPattern 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. public const string DefaultIdentPattern = \"[A-Za-z_]\\\\w+\" Field Value string Properties CategoryPath JSON path under Parsing where matched assignments are written. public List<string> CategoryPath { get; set; } Property Value List<string> 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> IdentPattern Regex pattern for matching variable identifiers. Default: [A-Za-z_]\\w+ (at least 2 characters). public string IdentPattern { get; set; } Property Value string Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string 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 TerminateWords Optional words (e.g. block-end keywords) that terminate the right-hand expression so the remainder is left in UnparsedText. public List<string> TerminateWords { 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 ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode"
},
"api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html",
"title": "Class NumberedFlagSyntax | HiAPI-C# 2025",
"summary": "Class NumberedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. public class NumberedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NumberedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Examples of stored canonical flags: Single-digit integer codes, padded: G0 → G00, M3 → M03 Two-digit or longer integer codes, unchanged: G54, M30 Decimal codes, unchanged: G54.1 (Fanuc extended work coordinates) Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separately. Constructors NumberedFlagSyntax(IEnumerable<string>, IEnumerable<string>, bool) Creates a new NumberedFlagSyntax instance. public NumberedFlagSyntax(IEnumerable<string> categoryPath, IEnumerable<string> codePrefixes, bool allowDecimal = true) Parameters categoryPath IEnumerable<string> JSON path for storing matched codes. codePrefixes IEnumerable<string> Code prefixes to match (e.g., [“G”, “M”]). allowDecimal bool Whether to allow decimal numbers. NumberedFlagSyntax(XElement) Loads category path, code prefixes, and decimal policy from XML. public NumberedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties AllowDecimal Whether to allow decimal numbers (e.g., G54.1). public bool AllowDecimal { get; set; } Property Value bool CategoryPath Category path for storing matched codes in JSON. public List<string> CategoryPath { get; set; } Property Value List<string> CodePrefixes Code prefixes to match (e.g., [“G”, “M”]). public List<string> CodePrefixes { 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 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html",
"title": "Class ParameterizedFlagSyntax | HiAPI-C# 2025",
"summary": "Class ParameterizedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. public class ParameterizedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ParameterizedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Parameters can be stored as typed values via FloatParamPrefixes and IntParamPrefixes (set via property initializer): ParamPrefixes — stored as string (text, for variables like #1, Q2) FloatParamPrefixes — stored as double when parseable, string otherwise IntParamPrefixes — stored as int when parseable, string otherwise Examples: G54.1P1 → {\"G54.1\": {\"P\": \"1\"}} (text) G68.2 X0 I180 → {\"G68.2\": {\"X\": 0.0, \"I\": 180.0}} (float via property initializer) G54.1P#1 → {\"G54.1\": {\"P\": \"#1\"}} (Fanuc variable, kept as string) G54.1PQ1 → {\"G54.1\": {\"P\": \"Q1\"}} (Heidenhain variable) Constructors ParameterizedFlagSyntax(IEnumerable<string>, IEnumerable<string>, IEnumerable<string>, string, IEnumerable<string>) Creates a new ParameterizedFlagSyntax instance. Use property initializers for FloatParamPrefixes and IntParamPrefixes to enable typed parameter storage. public ParameterizedFlagSyntax(IEnumerable<string> categoryPath, IEnumerable<string> codePrefixes, IEnumerable<string> paramPrefixes, string varPrefix, IEnumerable<string> terminateWords = null) Parameters categoryPath IEnumerable<string> JSON path for storing matched codes. codePrefixes IEnumerable<string> Full code prefixes to match (e.g., [“G54.1”, “G10”]). paramPrefixes IEnumerable<string> Parameter prefixes to extract (e.g., [“P”, “L”]). varPrefix string Variable prefix (e.g., “#” for Fanuc, “Q” for Heidenhain). terminateWords IEnumerable<string> Words that stop parameter extraction. ParameterizedFlagSyntax(XElement) Loads all prefix lists, variable prefix, and terminator words from XML. public ParameterizedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties CategoryPath Category path for storing matched codes in JSON. public List<string> CategoryPath { get; set; } Property Value List<string> CodePrefixes Full code prefixes to match (e.g., [“G54.1”, “G10”]). public List<string> CodePrefixes { get; set; } Property Value List<string> FloatParamPrefixes Parameter prefixes stored as double when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List<string> FloatParamPrefixes { get; set; } Property Value List<string> IntParamPrefixes Parameter prefixes stored as int when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List<string> IntParamPrefixes { get; set; } Property Value List<string> Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string ParamPrefixes Parameter prefixes to extract as text string (e.g., [“P”, “L”, “H”]). Multiple parameters can be attached to one code. public List<string> ParamPrefixes { get; set; } Property Value List<string> TerminateWords Words that terminate parameter extraction (e.g., [“G”, “M”, “X”, “Y”, “Z”]). Extraction stops when encountering these prefixes followed by a number. public List<string> TerminateWords { get; set; } Property Value List<string> VarPrefix Variable prefix for macro variables (e.g., “#” for Fanuc, “Q” for Heidenhain). public string VarPrefix { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html",
"title": "Class ShrinkIfNoDecimalPointSyntax | HiAPI-C# 2025",
"summary": "Class ShrinkIfNoDecimalPointSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. public class ShrinkIfNoDecimalPointSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ShrinkIfNoDecimalPointSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Modern CNC controllers default to “calculator type” where Y20 = Y20.0. This syntax is only needed for legacy “conventional type” configurations where Y20 = Y0.020 (Fanuc DPI=0, etc.). Properties ImpliedDecimalPlaces Number of implied decimal places when no decimal point is present. 3 → 0.001 (mm), 4 → 0.0001 (inch). public int ImpliedDecimalPlaces { get; set; } Property Value int Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string Tags Tags to check for missing decimal points. Default: X, Y, Z. public List<string> Tags { get; set; } Property Value List<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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCallStatementSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCallStatementSyntax.html",
"title": "Class SiemensCallStatementSyntax | HiAPI-C# 2025",
"summary": "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 call — L9810, 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 object SiemensCallStatementSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCycleCallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCycleCallSyntax.html",
"title": "Class SiemensCycleCallSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensCycleCallSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensDefStatementSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensDefStatementSyntax.html",
"title": "Class SiemensDefStatementSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensDefStatementSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.html",
"title": "Class SiemensFrameStatementSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensFrameStatementSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensGotoParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensGotoParsingSyntax.html",
"title": "Class SiemensGotoParsingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensGotoParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensIfParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensIfParsingSyntax.html",
"title": "Class SiemensIfParsingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensIfParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLabelSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLabelSyntax.html",
"title": "Class SiemensLabelSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensLabelSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLoopParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLoopParsingSyntax.html",
"title": "Class SiemensLoopParsingSyntax | HiAPI-C# 2025",
"summary": "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> / ENDFOR → Parsing.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 / ENDLOOP → Parsing.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 object SiemensLoopParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMcallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMcallSyntax.html",
"title": "Class SiemensMcallSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensMcallSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMsgSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMsgSyntax.html",
"title": "Class SiemensMsgSyntax | HiAPI-C# 2025",
"summary": "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 MsgDisplay 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 object SiemensMsgSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensProcSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensProcSyntax.html",
"title": "Class SiemensProcSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensProcSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensQuotedStatementSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensQuotedStatementSyntax.html",
"title": "Class SiemensQuotedStatementSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensQuotedStatementSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensRepeatParsingSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensRepeatParsingSyntax.html",
"title": "Class SiemensRepeatParsingSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensRepeatParsingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html",
"title": "Class SiemensToolCallSyntax | HiAPI-C# 2025",
"summary": "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 object SiemensToolCallSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.Siemens.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.Siemens.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs.Siemens | HiAPI-C# 2025",
"summary": "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 call — L9810, 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> / ENDFOR → Parsing.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 / ENDLOOP → Parsing.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 MsgDisplay 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."
},
"api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html",
"title": "Class TagAssignmentSyntax | HiAPI-C# 2025",
"summary": "Class TagAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. public class TagAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived HeidenhainFnAssignmentSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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>, 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. Constructors TagAssignmentSyntax(IEnumerable<string>, IEnumerable<string>, string, IEnumerable<string>) Creates an assignment syntax. Pass null for categoryPath to use DefaultCategoryPath (Parsing.Assignments). Pass an empty collection only if assignments should land at the Parsing root. public TagAssignmentSyntax(IEnumerable<string> categoryPath, IEnumerable<string> tags, string varPrefix, IEnumerable<string> terminateWords = null) Parameters categoryPath IEnumerable<string> tags IEnumerable<string> varPrefix string terminateWords IEnumerable<string> TagAssignmentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public TagAssignmentSyntax(XElement src) Parameters src XElement Source XML element. 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 CategoryPath JSON path under Parsing where matched assignments are written. public List<string> CategoryPath { get; set; } Property Value List<string> DefaultCategoryPath Default CategoryPath assigned when the caller passes null (or omits the <CategoryPath> element in saved XML). Routes assignment outputs into Parsing.Assignments so that variable-reading syntaxes can target a single well-defined subtree. public static IReadOnlyList<string> DefaultCategoryPath { get; } Property Value IReadOnlyList<string> Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string 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 TagList Numeric tag suffixes accepted (e.g. 1, 100) when paired with VarPrefix. public List<string> TagList { get; set; } Property Value List<string> TerminateWords Optional keywords that terminate the right-hand expression so the remainder is left in UnparsedText. public List<string> TerminateWords { get; set; } Property Value List<string> VarPrefix Variable prefix (e.g. #, R, Q) preceding the numeric tag. public string VarPrefix { 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 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 ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected virtual bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool"
},
"api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html",
"title": "Class TagValueSyntax | HiAPI-C# 2025",
"summary": "Class TagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Concatenated tag-value syntax (no = sign), glued by default. ex. 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 public class TagValueSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived FloatTagValueSyntax IntegerTagValueSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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\" } } Constructors TagValueSyntax(IEnumerable<string>, IEnumerable<string>, string) Initializes a new instance with the given category path, tag list, and variable-tag pattern. public TagValueSyntax(IEnumerable<string> categoryPath, IEnumerable<string> tags, string variableTag) Parameters categoryPath IEnumerable<string> JSON path under Parsing where matches are written. tags IEnumerable<string> Single-letter tag names whose values are grabbed. variableTag string Regex/literal recognizing a variable reference as a value. TagValueSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public TagValueSyntax(XElement src) Parameters src XElement Source XML element. Properties 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 CategoryPath JSON path under Parsing where matched tag-values are written. public List<string> CategoryPath { get; set; } Property Value List<string> Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string 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 TagList Single-letter tag names whose values are grabbed (e.g. X, Y, Z, F). public List<string> TagList { get; set; } Property Value List<string> VariableTag Regex (or literal) that recognizes a variable reference token (e.g. Q2, #1, [#1+#2]) as the value of a tag. public string VariableTag { 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 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 ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected virtual JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode"
},
"api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html",
"title": "Class TapeBoundarySyntax | HiAPI-C# 2025",
"summary": "Class TapeBoundarySyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax. public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TapeBoundarySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: % #AfterBuild: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: %foo #AfterBuild: { \"TapeBoundary\": { \"Text\": \"foo\" } } #BeforeBuild.UnparsedText: % header text #AfterBuild: { \"TapeBoundary\": { \"Text\": \"header text\" } } Constructors TapeBoundarySyntax() Parameterless instance for bundle composition (no XML state). public TapeBoundarySyntax() TapeBoundarySyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public TapeBoundarySyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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 IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>) Returns true if the previous block carries a TapeBoundary section, or if there is no previous block at all (start-of-stream is itself a tape boundary). Brand-specific program-identifier syntaxes use this to decide whether the current block can host a program-number header. public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node) Parameters node LazyLinkedListNode<SyntaxPiece> 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"
},
"api/Hi.NcParsers.ParsingSyntaxs.html": {
"href": "api/Hi.NcParsers.ParsingSyntaxs.html",
"title": "Namespace Hi.NcParsers.ParsingSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.ParsingSyntaxs Classes BlockSkipSyntax Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. CsScriptSyntax Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. FlagSyntax Syntax of fully Match flag. FloatTagValueSyntax TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. HeadIndexSyntax Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. IntegerTagValueSyntax TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. NamedVarAssignmentSyntax Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. NumberedFlagSyntax Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. ParameterizedFlagSyntax Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. ShrinkIfNoDecimalPointSyntax Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. TagAssignmentSyntax Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. TagValueSyntax Concatenated tag-value syntax (no = sign), glued by default. ex. 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 TapeBoundarySyntax Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax."
},
"api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html": {
"href": "api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html",
"title": "Class ModalCarrySyntax | HiAPI-C# 2025",
"summary": "Class ModalCarrySyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. 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. A JSON section is a candidate for TrackedKeys when ALL four criteria hold: Writers concentrated — one or two syntaxes own the section (e.g. LinearMotionSyntax / CircularMotionSyntax own MotionState; the call/return pair own SubProgramCall-derived state). Readers distributed — multiple downstream consumers each need the value, and none of them should walk back to find it. Single-reader sections do not benefit from blanket carry. Every block must see the section — cache-dump readers landing randomly, single-block UI views, and look-ahead syntaxes all require the section to be present on every block. Carry is unconditional — no frame-gating or other per-block veto. Sections that need conditional carry (e.g. FanucLocalVariableReadingSyntax's frame-aware Vars.Local dict-merge — carry only when MacroFrame matches) belong in the owning syntax's own carry logic, not here. A section failing any criterion should be carried through its owning syntax's own logic (single-step node.Previous read, or no carry at all if absence is meaningful — e.g. MacroFrame absent = main frame). This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. public class ModalCarrySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ModalCarrySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ModalCarrySyntax() Creates an empty ModalCarrySyntax; populate TrackedKeys before use. public ModalCarrySyntax() ModalCarrySyntax(XElement) Reconstructs a ModalCarrySyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public ModalCarrySyntax(XElement src) Parameters src XElement XML element carrying a TrackedKeys child with one Key per entry; null is treated as defaults. Fields AddedByValue Value written under AddedByKey on each section this syntax deep-clones from the previous block. Mirrors AddedByValue's role for its own synthesis — both let cache-file readers distinguish post-Logic / Inspection stage injections from LogicSyntaxs-stage authored values (the latter have no AddedByKey). public const string AddedByValue = \"ModalCarry\" Field Value string Properties Default Full-set carrier (Logic PostLogic) — retained for the legacy backstop in SoftNcRunner that appends a single ModalCarry to pre-3.1.168 project syntax lists. New brand syntax kits should split into Logic + PostLogic instead. public static ModalCarrySyntax Default { get; } Property Value ModalCarrySyntax Logic Logic-stage carrier — modal sections that are written in the Logic bundle and never mutated by PostLogic. Carrying these at the end of each block's Logic bundle keeps single-step node.Previous modal lookups from Logic syntaxes correct, even when a PostLogic syntax (e.g. RadiusCompensationSyntax) does node.Next look-forward and drags subsequent blocks' Logic builds forward before the intermediate block's PostLogic ModalCarry has run. public static ModalCarrySyntax Logic { get; } Property Value ModalCarrySyntax 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> Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostLogic PostLogic-stage carrier — modal sections that may still be mutated by PostLogic syntaxes after Logic completes. Today only MachineCoordinateState qualifies (overwritten by RadiusCompensationSyntax with the radius-compensated position). Carrying these at the end of PostLogic ensures the modal value reflects the final, post-compensation state. public static ModalCarrySyntax PostLogic { get; } Property Value ModalCarrySyntax TrackedKeys Section keys to carry. Order-insensitive; duplicates ignored. public List<string> TrackedKeys { get; set; } Property Value List<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> node, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters node 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"
},
"api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html": {
"href": "api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html",
"title": "Class RadiusCompensationSyntax | HiAPI-C# 2025",
"summary": "Class RadiusCompensationSyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items. public class RadiusCompensationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RadiusCompensationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 } } Constructors RadiusCompensationSyntax() Creates a default RadiusCompensationSyntax. public RadiusCompensationSyntax() RadiusCompensationSyntax(XElement) Reconstructs a RadiusCompensationSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). The element carries no fields, so src is used only for factory dispatch. public RadiusCompensationSyntax(XElement src) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). Fields ArcBeginProgramXyzKey JSON key for the arc begin program position inside CompoundMotion arc items. public const string ArcBeginProgramXyzKey = \"ArcBeginProgramXyz\" Field Value string MotionProgramXyzKey JSON key for the compensated program position inside Motion sections and CompoundMotion arc items. public const string MotionProgramXyzKey = \"MotionProgramXyz\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.NcParsers.PostLogicSyntaxs.html": {
"href": "api/Hi.NcParsers.PostLogicSyntaxs.html",
"title": "Namespace Hi.NcParsers.PostLogicSyntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.PostLogicSyntaxs Classes ModalCarrySyntax Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. 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. A JSON section is a candidate for TrackedKeys when ALL four criteria hold: Writers concentrated — one or two syntaxes own the section (e.g. LinearMotionSyntax / CircularMotionSyntax own MotionState; the call/return pair own SubProgramCall-derived state). Readers distributed — multiple downstream consumers each need the value, and none of them should walk back to find it. Single-reader sections do not benefit from blanket carry. Every block must see the section — cache-dump readers landing randomly, single-block UI views, and look-ahead syntaxes all require the section to be present on every block. Carry is unconditional — no frame-gating or other per-block veto. Sections that need conditional carry (e.g. FanucLocalVariableReadingSyntax's frame-aware Vars.Local dict-merge — carry only when MacroFrame matches) belong in the owning syntax's own carry logic, not here. A section failing any criterion should be carried through its owning syntax's own logic (single-step node.Previous read, or no carry at all if absence is meaningful — e.g. MacroFrame absent = main frame). This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. RadiusCompensationSyntax Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items."
},
"api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html": {
"href": "api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html",
"title": "Class HeidenhainSegmenter | HiAPI-C# 2025",
"summary": "Class HeidenhainSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll 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. public class HeidenhainSegmenter : ISegmenter, IToXElement Inheritance object HeidenhainSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainSegmenter() Creates a HeidenhainSegmenter with the default block-keyword list. public HeidenhainSegmenter() Properties 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 Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name used to register and serialize this segmenter. 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."
},
"api/Hi.NcParsers.Segmenters.ISegmenter.html": {
"href": "api/Hi.NcParsers.Segmenters.ISegmenter.html",
"title": "Interface ISegmenter | HiAPI-C# 2025",
"summary": "Interface ISegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Interface to segment IndexedFileLines into Sentences. public interface ISegmenter : IToXElement Inherited Members IToXElement.ToXElement() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. string Name { get; } Property Value string Methods GetSentences(LazyLinkedList<IndexedFileLine>, List<INcDependency>, NcDiagnosticProgress) Segments the indexed file lines into Sentences. 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."
},
"api/Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html": {
"href": "api/Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html",
"title": "Class InlineDelimiterSegmenter | HiAPI-C# 2025",
"summary": "Class InlineDelimiterSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Segments NC lines by an inline delimiter (e.g. ';'). A line containing the delimiter produces multiple Sentences, each with a precise FileLineCharIndexSegment. Lines without the delimiter produce a single Sentence. public class InlineDelimiterSegmenter : ISegmenter, IToXElement Inheritance object InlineDelimiterSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InlineDelimiterSegmenter() Creates an InlineDelimiterSegmenter using DefaultDelimiter. public InlineDelimiterSegmenter() InlineDelimiterSegmenter(char) Creates an InlineDelimiterSegmenter with a custom delimiter character. public InlineDelimiterSegmenter(char delimiter) Parameters delimiter char Fields DefaultDelimiter Default delimiter: ';'. public static readonly char DefaultDelimiter Field Value char Properties Delimiter The inline delimiter character. public char Delimiter { get; } Property Value char Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name used to register and serialize this segmenter. 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."
},
"api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html": {
"href": "api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html",
"title": "Class SingleLineSegmenter | HiAPI-C# 2025",
"summary": "Class SingleLineSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Maps each physical source line to one Sentence (no multi-line merging). public class SingleLineSegmenter : ISegmenter, IToXElement Inheritance object SingleLineSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods GetSentences(LazyLinkedList<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."
},
"api/Hi.NcParsers.Segmenters.html": {
"href": "api/Hi.NcParsers.Segmenters.html",
"title": "Namespace Hi.NcParsers.Segmenters | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Segmenters 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. InlineDelimiterSegmenter Segments NC lines by an inline delimiter (e.g. ';'). A line containing the delimiter produces multiple Sentences, each with a precise FileLineCharIndexSegment. Lines without the delimiter produce a single Sentence. SingleLineSegmenter Maps each physical source line to one Sentence (no multi-line merging). Interfaces ISegmenter Interface to segment IndexedFileLines into Sentences."
},
"api/Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html",
"title": "Class ClLinearMcMotionSemantic | HiAPI-C# 2025",
"summary": "Class ClLinearMcMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll 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 ActClLinearMcXyzabcContour. The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is non-linear because the tool orientation changes during the move. public class ClLinearMcMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object ClLinearMcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html",
"title": "Class CompoundMotionSemantic | HiAPI-C# 2025",
"summary": "Class CompoundMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode<SyntaxPiece>, DVec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig, IMachineKinematics). public class CompoundMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object CompoundMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.CoolantSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.CoolantSemantic.html",
"title": "Class CoolantSemantic | HiAPI-C# 2025",
"summary": "Class CoolantSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves the ICoolantDef JSON section (written by CoolantSyntax from M07/M08/M09) into an ActCooling act. Only emits when the coolant mode changes from the previous block — modal state is suppressed so downstream consumers (e.g. StateActRunner) see one act per real transition rather than one per block. public class CoolantSemantic : INcSemantic, IMakeXmlSource Inheritance object CoolantSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.CsScriptBeginSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.CsScriptBeginSemantic.html",
"title": "Class CsScriptBeginSemantic | HiAPI-C# 2025",
"summary": "Class CsScriptBeginSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves BeginScript into ActLineCsScript. Must be placed at the beginning of NcSemanticList so that the script runs before motion and other acts. public class CsScriptBeginSemantic : CsScriptSemantic, INcSemantic, IMakeXmlSource Inheritance object CsScriptSemantic CsScriptBeginSemantic Implements INcSemantic IMakeXmlSource Inherited Members CsScriptSemantic.ExternalScripts CsScriptSemantic.Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public override string DisplayName { get; } Property Value string ScriptKey JSON property key on the CsScript section to read for this semantic (typically BeginScript or EndScript). protected override string ScriptKey { 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 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.Semantics.CsScriptEndSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.CsScriptEndSemantic.html",
"title": "Class CsScriptEndSemantic | HiAPI-C# 2025",
"summary": "Class CsScriptEndSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves EndScript into ActLineCsScript. Must be placed at the end of NcSemanticList so that the script runs after motion and other acts. public class CsScriptEndSemantic : CsScriptSemantic, INcSemantic, IMakeXmlSource Inheritance object CsScriptSemantic CsScriptEndSemantic Implements INcSemantic IMakeXmlSource Inherited Members CsScriptSemantic.ExternalScripts CsScriptSemantic.Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public override string DisplayName { get; } Property Value string ScriptKey JSON property key on the CsScript section to read for this semantic (typically BeginScript or EndScript). protected override string ScriptKey { 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 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.Semantics.CsScriptSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.CsScriptSemantic.html",
"title": "Class CsScriptSemantic | HiAPI-C# 2025",
"summary": "Class CsScriptSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Base class for resolving CsScript JSON entries into ActLineCsScript. Subclasses specify which script key to read (BeginScript or EndScript). Also supports an external script dictionary via ExternalScripts. When set, each NC block's FileLineIndex is looked up in the dictionary and the matched script is emitted as an additional ActLineCsScript. This allows runtime injection of per-line scripts without modifying the NC file. public abstract class CsScriptSemantic : INcSemantic, IMakeXmlSource Inheritance object CsScriptSemantic Implements INcSemantic IMakeXmlSource Derived CsScriptBeginSemantic CsScriptEndSemantic Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public abstract string DisplayName { get; } Property Value string ExternalScripts Optional external script source keyed by FileLineIndex. Set at session start to inject per-line scripts without editing NC files. The Func is evaluated each resolve call so the dictionary can be modified at runtime. public Func<Dictionary<FileLineIndex, string>> ExternalScripts { get; set; } Property Value Func<Dictionary<FileLineIndex, string>> ScriptKey JSON property key on the CsScript section to read for this semantic (typically BeginScript or EndScript). protected abstract string ScriptKey { 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 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. 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>"
},
"api/Hi.NcParsers.Semantics.INcSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.INcSemantic.html",
"title": "Interface INcSemantic | HiAPI-C# 2025",
"summary": "Interface INcSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data. public interface INcSemantic : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. string DisplayName { get; } Property Value string Methods Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> dependencyList List<INcDependency> ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable<IAct>"
},
"api/Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html",
"title": "Class MachineCoordinateStepSemantic | HiAPI-C# 2025",
"summary": "Class MachineCoordinateStepSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Read MachineCoordinate from MachineCoordinateState in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. public class MachineCoordinateStepSemantic : INcSemantic, IMakeXmlSource Inheritance object MachineCoordinateStepSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.McArcMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.McArcMotionSemantic.html",
"title": "Class McArcMotionSemantic | HiAPI-C# 2025",
"summary": "Class McArcMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. public class McArcMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object McArcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html",
"title": "Class McLinearMotionSemantic | HiAPI-C# 2025",
"summary": "Class McLinearMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by whether the block's rotary state actually CHANGED from the previous modal state (HasRotaryMotion(DVec3d, DVec3d, LazyLinkedListNode<SyntaxPiece>) — value comparison, not key presence: MergeKeys completes every motion block's MachineCoordinateState with carried modal rotary values, so key presence no longer means the block moved a rotary axis): rotary unchanged → ActMcXyzLinearContour rotary moved → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) public class McLinearMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object McLinearMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html",
"title": "Class McPolarArcMotionSemantic | HiAPI-C# 2025",
"summary": "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 object McPolarArcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html",
"title": "Class McPolarLinearMotionSemantic | HiAPI-C# 2025",
"summary": "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 object McPolarLinearMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.SpindleSpeedSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.SpindleSpeedSemantic.html",
"title": "Class SpindleSpeedSemantic | HiAPI-C# 2025",
"summary": "Class SpindleSpeedSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. public class SpindleSpeedSemantic : INcSemantic, IMakeXmlSource Inheritance object SpindleSpeedSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html",
"title": "Class StrokeLimitCheckSemantic | HiAPI-C# 2025",
"summary": "Class StrokeLimitCheckSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Reports a diagnostic error when MachineCoordinateState exceeds the stroke limits defined in IStrokeLimitConfig. Does not emit any IAct; only produces diagnostics. public class StrokeLimitCheckSemantic : INcSemantic, IMakeXmlSource Inheritance object StrokeLimitCheckSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.ToolChangeSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.ToolChangeSemantic.html",
"title": "Class ToolChangeSemantic | HiAPI-C# 2025",
"summary": "Class ToolChangeSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves SectionName section into 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. public class ToolChangeSemantic : INcSemantic, IMakeXmlSource Inheritance object ToolChangeSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.ToolingTeleportSemantic.html": {
"href": "api/Hi.NcParsers.Semantics.ToolingTeleportSemantic.html",
"title": "Class ToolingTeleportSemantic | HiAPI-C# 2025",
"summary": "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 object ToolingTeleportSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.NcParsers.Semantics.html": {
"href": "api/Hi.NcParsers.Semantics.html",
"title": "Namespace Hi.NcParsers.Semantics | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Semantics Classes 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 ActClLinearMcXyzabcContour. The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is non-linear because the tool orientation changes during the move. CompoundMotionSemantic Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode<SyntaxPiece>, DVec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig, IMachineKinematics). CoolantSemantic Resolves the ICoolantDef JSON section (written by CoolantSyntax from M07/M08/M09) into an ActCooling act. Only emits when the coolant mode changes from the previous block — modal state is suppressed so downstream consumers (e.g. StateActRunner) see one act per real transition rather than one per block. CsScriptBeginSemantic Resolves BeginScript into ActLineCsScript. Must be placed at the beginning of NcSemanticList so that the script runs before motion and other acts. CsScriptEndSemantic Resolves EndScript into ActLineCsScript. Must be placed at the end of NcSemanticList so that the script runs after motion and other acts. CsScriptSemantic Base class for resolving CsScript JSON entries into ActLineCsScript. Subclasses specify which script key to read (BeginScript or EndScript). Also supports an external script dictionary via ExternalScripts. When set, each NC block's FileLineIndex is looked up in the dictionary and the matched script is emitted as an additional ActLineCsScript. This allows runtime injection of per-line scripts without modifying the NC file. MachineCoordinateStepSemantic Read MachineCoordinate from MachineCoordinateState in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. McArcMotionSemantic Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. McLinearMotionSemantic Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by whether the block's rotary state actually CHANGED from the previous modal state (HasRotaryMotion(DVec3d, DVec3d, LazyLinkedListNode<SyntaxPiece>) — value comparison, not key presence: MergeKeys completes every motion block's MachineCoordinateState with carried modal rotary values, so key presence no longer means the block moved a rotary axis): rotary unchanged → ActMcXyzLinearContour rotary moved → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) 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. SpindleSpeedSemantic Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. StrokeLimitCheckSemantic Reports a diagnostic error when MachineCoordinateState exceeds the stroke limits defined in IStrokeLimitConfig. Does not emit any IAct; only produces diagnostics. ToolChangeSemantic Resolves SectionName section into ActToolingStep when 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. Interfaces INcSemantic Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data."
},
"api/Hi.NcParsers.Sentence.html": {
"href": "api/Hi.NcParsers.Sentence.html",
"title": "Class Sentence | HiAPI-C# 2025",
"summary": "Class Sentence Namespace Hi.NcParsers Assembly HiMech.dll A small NC block for one or several lines. public class Sentence : IGetSentence Inheritance object Sentence Implements IGetSentence Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Sentence(IndexedFileLine) Creates a Sentence from a single IndexedFileLine. public Sentence(IndexedFileLine indexedFileLine) Parameters indexedFileLine IndexedFileLine Sentence(List<IndexedFileLine>) Creates a Sentence from multiple IndexedFileLines. [Obsolete(\"Use the (blockText, charSegment, filePath) constructor.\")] public Sentence(List<IndexedFileLine> indexedFileLineList) Parameters indexedFileLineList List<IndexedFileLine> Sentence(string, FileLineCharIndexSegment, string) Initializes a new instance of the Sentence class. public Sentence(string blockText, FileLineCharIndexSegment charIndexSegment, string filePath = null) Parameters blockText string The source text of this block. charIndexSegment FileLineCharIndexSegment The character-level segment [Begin, End). filePath string The file path of the source file. Properties BlockText The source text of this block. May contain line breaks for multi-line blocks. public string BlockText { get; } Property Value string CharIndexSegment Character-level segment within the source file(s). [Begin, End). public FileLineCharIndexSegment CharIndexSegment { get; set; } Property Value FileLineCharIndexSegment FilePath File path of the source file. public string FilePath { get; set; } Property Value string FirstIndexedFileLine Derives a IndexedFileLine from CharIndexSegment, FilePath, and BlockText. public IndexedFileLine FirstIndexedFileLine { get; } Property Value IndexedFileLine Methods GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence"
},
"api/Hi.NcParsers.SoftNcRunner.html": {
"href": "api/Hi.NcParsers.SoftNcRunner.html",
"title": "Class SoftNcRunner | HiAPI-C# 2025",
"summary": "Class SoftNcRunner Namespace Hi.NcParsers Assembly HiMech.dll Configurable NC Runner. public class SoftNcRunner : INcRunner, IMakeXmlSource Inheritance object SoftNcRunner Implements INcRunner 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcRunner() Creates an empty runner; populate the pipeline lists before use. public SoftNcRunner() SoftNcRunner(XElement, string, string, IProgress<IMessage>, object[]) Reconstructs a SoftNcRunner from a project XML element. Each pipeline list (PipelineNcDependencyList, Segmenter, NcInitializationList, NcSyntaxList, NcSemanticList) is rehydrated via XFactory. public SoftNcRunner(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res = null) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). baseDirectory string Project base directory for resolving relative paths. relFile string Project file path relative to baseDirectory. progress IProgress<IMessage> Diagnostic sink propagated to nested factories. res object[] Optional ambient resources (e.g. ProjectApiVersion for legacy patches). Properties FanucNcRunner Brand preset for Fanuc — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner FanucNcRunner { get; } Property Value SoftNcRunner HeidenhainNcRunner Brand preset for Heidenhain — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner HeidenhainNcRunner { get; } Property Value SoftNcRunner MazakNcRunner Brand preset for Mazak — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner MazakNcRunner { get; } Property Value SoftNcRunner NcInitializationList Seeds the initial SyntaxPiece JSON state (e.g. home position, defaults). public List<INcInitializer> NcInitializationList { get; set; } Property Value List<INcInitializer> NcSemanticList Final-stage semantics that turn the last syntax layer into SourcedActEntry records consumed by the runtime. public List<INcSemantic> NcSemanticList { get; set; } Property Value List<INcSemantic> NcSyntaxList Ordered syntax pipeline. Each entry consumes the previous layer's SyntaxPiece stream and emits the next layer. public List<INcSyntax> NcSyntaxList { get; set; } Property Value List<INcSyntax> 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> Segmenter Splits raw NC text into Sentence blocks. public ISegmenter Segmenter { get; set; } Property Value ISegmenter SiemensNcRunner Brand preset for Siemens — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SiemensNcRunner { get; } Property Value SoftNcRunner SyntecNcRunner Brand preset for Syntec — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SyntecNcRunner { get; } Property Value SoftNcRunner XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods ConfigureByMachiningChain(IMachiningChain) Configures this SoftNcRunner to match the kinematic chain of a machine tool. Registers every axis present on the chain into the IMachineAxisConfig in 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 downstream syntaxes / semantics (e.g. G53.1, G68.2, McLinearMotionSemantic) can resolve orientation; its KinematicsProvider is intentionally left null — the owning project service wires it up after the solver instance is available (see LocalProjectService.BuildCoordinateConverter). The axis / home machine config is read from 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. public void ConfigureByMachiningChain(IMachiningChain chain) Parameters chain IMachiningChain The machining chain whose axes and kinematics the runner should match. No-op when null. EnumerateSnapshotSyntaxs() Enumerates every SnapshotSyntax reachable from NcSyntaxList, including those nested inside any top-level BundleSyntax's inner list. Yields in pipeline-execution order: each top-level slot in turn, and within a bundle slot the bundle's SyntaxList order. public IEnumerable<SnapshotSyntax> EnumerateSnapshotSyntaxs() Returns IEnumerable<SnapshotSyntax> FromLegacyNcEnvXml(XElement) 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) Parameters ncEnvXml XElement The inner XML element of the legacy HardNcEnv. Returns SoftNcRunner An unconfigured brand-preset SoftNcRunner. 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, List<INcDependency>, CancellationToken) Drives the NcSemanticList over the post-syntax SyntaxPiece stream starting at startNode, yielding a SourcedActEntry for each emitted IAct (or a single null-act entry when a semantic produces no acts but still updates the source SyntaxPiece). public IEnumerable<SourcedActEntry> GetSourcedActEntrysFromNode(LazyLinkedListNode<SyntaxPiece> startNode, NcDiagnosticProgress ncDiagnosticProgress, List<INcDependency> ncDependencyList, CancellationToken cancellationToken) Parameters startNode LazyLinkedListNode<SyntaxPiece> First node to evaluate; iteration walks Next. 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). Returns IEnumerable<SourcedActEntry> MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. 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. Reg(XFactory) Registers SoftNcRunner and chains Reg() on every pipeline component the runner may deserialize from XML — dependencies, initializers, segmenters, parsing/logic/evaluation/post-logic/inspection syntaxes, and semantics. Idempotent; safe to call from any number of boot paths. public static void Reg(XFactory factory = null) Parameters factory XFactory RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) Runs raw NC program lines and yields source sentence and Act pairs. 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 NC program file lines IEnumerable<string> The enumerable collection of NC program lines machiningSession MachiningSession Session-scoped state shared across multiple RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). 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 Returns IEnumerable<SourcedActEntry> Enumerable of source sentence and Act pairs SetAllSnapshotSyntaxEnabled(bool) Sets IsEnabled on every SnapshotSyntax reachable from NcSyntaxList (including those nested inside top-level BundleSyntax) to isEnabled. Callers that need finer control (per-section toggling, instance inspection) should iterate EnumerateSnapshotSyntaxs() directly. public void SetAllSnapshotSyntaxEnabled(bool isEnabled) Parameters isEnabled bool"
},
"api/Hi.NcParsers.SoftNcUtil.html": {
"href": "api/Hi.NcParsers.SoftNcUtil.html",
"title": "Class SoftNcUtil | HiAPI-C# 2025",
"summary": "Class SoftNcUtil Namespace Hi.NcParsers Assembly HiMech.dll JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. public static class SoftNcUtil Inheritance object SoftNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties RegexFlagPrefix Regex prefix pattern that matches word boundary, after digit, after whitespace, or at start of string. The whitespace/start-of-string alternatives are needed for non-word-character prefixes (e.g. Fanuc '#', Siemens '$'). public static string RegexFlagPrefix { get; } Property Value string Methods GetMachineStateDouble(JsonObject, string) Reads a numeric tag from a machine-state section (one written by a LogicSyntax / Semantic with explicit numeric values, not from the parser stage). Used by backward-walk lookback paths (ProgramXyzUtil FindPrevious*, FindPreviousState on Feedrate/SpindleSpeed/IsoLocalCoordinateOffset, modal arc-/linear-feedrate prev-block reads, etc.) where the data is supposed to be guaranteed numeric and any non-numeric is a HiAPIs codegen bug rather than an unevaluated user expression. Tag missing → returns null silently (the section may not have been written on a previous block; caller's ?? default chain handles it). Tag present and numeric → returns the value. Tag present but non-numeric → throws InvalidOperationException immediately. The stack trace anchors the bug at the read site (which is the right place to investigate — the originating block has already passed). Continuing with NaN/0 would silently propagate corrupt coordinates downstream and is more dangerous than crashing the run. Use GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead when reading from a parser- stage section (variable expressions on the current block deserve a soft diagnostic, not a hard crash). public static double? GetMachineStateDouble(this JsonObject section, string key) Parameters section JsonObject key string Returns double? GetMachineStateVec3d(JsonObject, string) Vec3d reader for machine-state sections (written by upstream LogicSyntaxes / Semantics with explicit numeric values). Section missing → returns null; individual missing X/Y/Z components fall through to NaN; a non-numeric value at any of X/Y/Z throws via GetMachineStateDouble(JsonObject, string) — non-numeric here is a HiAPIs codegen bug, not a user-facing unevaluated expression, and silently degrading to NaN/0 would propagate corrupt coordinates downstream. public static Vec3d GetMachineStateVec3d(JsonObject json, string sectionKey) Parameters json JsonObject sectionKey string Returns Vec3d GetOccupiedMotionEventForm(JsonObject) Reads the form on the current block's MotionEvent section, indicating that a motion event has already been authored on this block by an earlier-stage motion syntax. Returns null when no motion event is present on this block. Used by motion syntaxes to enforce mutual exclusion (only one motion event per block). Reads MotionEvent rather than MotionState because state is modally carried onto every block via ModalCarrySyntax and would always appear \"occupied\"; only the event section is sparse and meaningfully indicates an authored claim on this block. public static string GetOccupiedMotionEventForm(this JsonObject json) Parameters json JsonObject Returns string GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Reads a numeric tag from a JSON object held on a SyntaxPiece (the Parsing tree, a previously-written modal section, or any sub-object thereof), with strict separation between “tag absent” and “tag present but not a number”. Tag missing → returns null silently. The caller's existing ?? default chain handles the \"axis not written\" / \"section absent\" case as before. Tag present and numeric → returns the value. Tag present but non-numeric → emits UnsupportedError(ISentenceCarrier, string, string, object) (id VariableExpression--Unevaluated) and returns null. Two sources land here: Parser-stage residue — a Fanuc \"#124\", Heidenhain \"Q1\", Siemens \"R5\", or bracket expression \"[#100+5]\" stored as a string by ToFloat(string) / ToInteger(string) when the literal parse failed. Remediation: wire up the variable evaluator. Codegen residue — a previously-written modal section that somehow ended up with a non-numeric JsonValue. Remediation: file a HiAPIs bug. Severity is intentionally the same; reconfigurable diagnostic routing handles operator-vs-developer triage and a second error id would be cosmetic. Replaces the legacy idiom section[key]?.GetDouble() at every call site that consumes a numeric tag held on a SyntaxPiece. public static double? GetParsedDouble(this JsonObject section, string key, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters section JsonObject key string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns double? GetVec3d(JsonObject, string, Vec3d, ISentenceCarrier, NcDiagnosticProgress) Reads Vec3d from a sub-object with X/Y/Z keys, substituting each missing component (or a missing section) with the matching component of fallback. When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress); when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor. public static Vec3d GetVec3d(JsonObject json, string sectionKey, Vec3d fallback, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string fallback Vec3d sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns Vec3d GetVec3d(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Read Vec3d from a sub-object with X/Y/Z keys. Returns null if the section or all three keys are missing; individual missing keys are filled with NaN. When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) (id VariableExpression--Unevaluated); when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor (used by backward-walk / dump-reading callers that cannot tie the read to the current sentence). public static Vec3d GetVec3d(JsonObject json, string sectionKey, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns Vec3d GrabDouble(ref string, string, bool) Grab double value with decimal point judgement: The text is changed by replacing tag and value to empty string. If enableIntegerShrink is true and no decimal point, the value should be scale by 0.001. public static double GrabDouble(ref string text, string tag, bool enableIntegerShrink) Parameters text string text tag string tag enableIntegerShrink bool If true and no decimal point exists, the value will be scaled by 0.001. Returns double double value GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string regexTag) Parameters text string The NC text to search and modify. regexTag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabFlags(ref string, IEnumerable<string>) Removes the first occurrence of any flag in tags from text (alternation regex). public static bool GrabFlags(ref string text, IEnumerable<string> tags) Parameters text string tags IEnumerable<string> Returns bool true if a match was removed. HasAnyFlag(string, IEnumerable<string>) True if text contains any flag in flags as whole tokens. public static bool HasAnyFlag(string text, IEnumerable<string> flags) Parameters text string flags IEnumerable<string> Returns bool HasAnyFlag(string, string) True if text contains flag as a whole token (see RegexFlagPrefix). public static bool HasAnyFlag(string text, string flag) Parameters text string flag string Returns bool HasFlagInArray(JsonObject, string) Checks if a specific flag string exists in the Parsing.Flags JsonArray. public static bool HasFlagInArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string Returns bool ParseDouble(JsonNode) Parses a double from a JsonNode that may be a number or a string. Extends GetDouble(JsonNode) with string parsing support (needed for values from ParameterizedFlagSyntax which stores values as strings like “180”). Returns 0 if null or unparseable. public static double ParseDouble(this JsonNode node) Parameters node JsonNode Returns double RemoveFlagFromArray(JsonObject, string) Removes a specific flag string from the Parsing.Flags JsonArray. public static void RemoveFlagFromArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string SetAndTrimUnparsedText(JsonObject, string) Normalises UnparsedText (trim, drop blank-only lines) and removes the property when empty. public static void SetAndTrimUnparsedText(this JsonObject root, string unparsedText) Parameters root JsonObject Block JSON object. unparsedText string Raw tail text after structured fields were consumed. SetVec3d(JsonObject, string, Vec3d) Writes Vec3d to a sub-object under sectionKey, setting only the X/Y/Z keys. If the section already exists, other keys (e.g. A/B/C on a shared MachineCoordinate) are preserved; if it does not exist, a new sub-object is created. Upsert rather than replace so callers that write XYZ and ABC in separate stages (McXyzSyntax and McAbcSyntax) can cooperate on the same MachineCoordinateState section without clobbering each other. public static void SetVec3d(JsonObject json, string sectionKey, Vec3d v) Parameters json JsonObject sectionKey string v Vec3d"
},
"api/Hi.NcParsers.Syntaxs.BundleSyntax.html": {
"href": "api/Hi.NcParsers.Syntaxs.BundleSyntax.html",
"title": "Class BundleSyntax | HiAPI-C# 2025",
"summary": "Class BundleSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. public class BundleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BundleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BundleSyntax() Creates an empty bundle (name defaults to the type name BundleSyntax). public BundleSyntax() BundleSyntax(IEnumerable<ISituNcSyntax>) Creates a bundle with default Name from an ordered syntax list. public BundleSyntax(IEnumerable<ISituNcSyntax> syntaxes) Parameters syntaxes IEnumerable<ISituNcSyntax> BundleSyntax(string, IEnumerable<ISituNcSyntax>) Creates a named bundle wrapping the given syntax list. public BundleSyntax(string name, IEnumerable<ISituNcSyntax> syntaxes) Parameters name string syntaxes IEnumerable<ISituNcSyntax> BundleSyntax(XElement, string, string, IProgress<IMessage>) Loads nested in-situ syntax elements from XML under Name. public BundleSyntax(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement baseDirectory string relFile string progress IProgress<IMessage> Properties Name Syntax kind name (typically the concrete type name). public string Name { get; set; } Property Value string SyntaxList Child syntaxes executed in registration order within this bundle. public List<ISituNcSyntax> SyntaxList { get; } Property Value List<ISituNcSyntax> 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"
},
"api/Hi.NcParsers.Syntaxs.ExpressionPrefixParser.html": {
"href": "api/Hi.NcParsers.Syntaxs.ExpressionPrefixParser.html",
"title": "Delegate ExpressionPrefixParser | HiAPI-C# 2025",
"summary": "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 DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html",
"title": "Class FanucSyntaxUtil | HiAPI-C# 2025",
"summary": "Class FanucSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Pre-built ParameterizedFlagSyntax / flag patterns for Fanuc-style NC text. public static class FanucSyntaxUtil Inheritance object FanucSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable token prefix for Fanuc macro addresses (#). public const string VarTag = \"#\" Field Value string Properties DefaultSyntaxList Syntax list for general kind of Fanuc Controller. public static List<INcSyntax> DefaultSyntaxList { get; } Property Value List<INcSyntax> G05p1Syntax G05.1 High-precision contour control (Fanuc AICC / Nano Smoothing). Q1 enables, Q0 disables. Optional R{n} selects the precision / smoothness level number (R1..R10) — captured here so the parameter does not leak into the standalone Parsing.R tag and so FanucPathSmoothingSyntax can record it in the PathSmoothing modal section for bidirectional NC-text reconstruction. public static ParameterizedFlagSyntax G05p1Syntax { get; } Property Value ParameterizedFlagSyntax G43p4Syntax G43.4: Fanuc TCPM (Tool Center Point Management / RTCP). Fanuc-specific — not in GenericSyntaxKit. Siemens equivalent: TRAORI. Heidenhain equivalent: M128. TerminateWords intentionally only M: H (offset id) commonly appears after move axes or other G modifiers in the same block (e.g., G43.4 Z5. H1, G43.4 G54 H1). Using G/X/Y/Z would truncate scope before H and lose the offset id. public static ParameterizedFlagSyntax G43p4Syntax { get; } Property Value ParameterizedFlagSyntax G54p1Syntax G54.1 P… additional work offset family syntax. public static ParameterizedFlagSyntax G54p1Syntax { get; } Property Value ParameterizedFlagSyntax G65Syntax G65: Fanuc one-shot custom macro call. G65 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G65Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Macro argument letters: A-E, F, H-K, M, Q-Z map to local variables #1-#26. G, L, N, O, P are reserved (G-code prefix, repeat count, line number, program number, program to call). G66Syntax G66: Fanuc modal custom macro call. G66 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G66Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Same argument letters as G65. Modal: executes at every positioning block until cancelled by G67. M198Syntax M198: Fanuc subprogram call from external storage (memory card, USB, DNC drive). Same parameter shape as M98Syntax; only the lookup root differs (see ExternalFolder). M198 P{program} [L{repeat}] public static ParameterizedFlagSyntax M198Syntax { get; } Property Value ParameterizedFlagSyntax M98Syntax M98: Fanuc subprogram call. M98 P{program} [L{repeat}] public static ParameterizedFlagSyntax M98Syntax { get; } Property Value ParameterizedFlagSyntax M99Syntax M99: Fanuc subprogram end / return. M99 [P{sequence}] public static ParameterizedFlagSyntax M99Syntax { get; } Property Value ParameterizedFlagSyntax"
},
"api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html": {
"href": "api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html",
"title": "Class GenericSyntaxKit | HiAPI-C# 2025",
"summary": "Class GenericSyntaxKit Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Generic/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. public class GenericSyntaxKit Inheritance object GenericSyntaxKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GenericSyntaxKit(string) Creates a kit with the given variable-address prefix. public GenericSyntaxKit(string varPrefix) Parameters varPrefix string Single-character or short prefix used by parameterized syntaxes. Properties 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> CannedCycleSyntax Canned drilling/boring/tapping cycle syntax (G73/G74/G81/G82/G83/G84/G85/G86/G89). Captures all cycle parameters (X, Y, Z, R, Q, F) into the cycle sub-section (e.g., Parsing.G83) so that cycle syntaxes can read them as a unit and store them for modal lookback. Terminates at G/M only. public ParameterizedFlagSyntax CannedCycleSyntax { get; } Property Value ParameterizedFlagSyntax 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> G28Syntax G28 Reference point return syntax. public ParameterizedFlagSyntax G28Syntax { get; } Property Value ParameterizedFlagSyntax G41G42Syntax G41/G42 Cutter radius compensation syntax. TerminateWords intentionally only M: D (offset id) commonly appears after move axes or other G modifiers in the same block (e.g., G41 X10. D1, G54 G41 D1). Using G/X/Y/Z would truncate scope before D and lose the offset id. public ParameterizedFlagSyntax G41G42Syntax { get; } Property Value ParameterizedFlagSyntax G43G44Syntax G43/G44 Tool length compensation syntax (ISO standard). G43.4 (TCPM) is Fanuc-specific — see G43p4Syntax. TerminateWords intentionally only M: H (offset id) commonly appears after move axes or other G modifiers in the same block (e.g., G43Z5.H01, G43 G54 H1). Using G/X/Y/Z would truncate scope before H and lose the offset id. public ParameterizedFlagSyntax G43G44Syntax { get; } Property Value ParameterizedFlagSyntax G4Syntax G4 Dwell/Pause syntax. Captures DwellCodes plus their DwellParamPrefixes arguments into a Parsing.G4/Parsing.G04 sub-section, consumed by DwellSyntax. public ParameterizedFlagSyntax G4Syntax { get; } Property Value ParameterizedFlagSyntax G52Syntax G52 Local coordinate system syntax. public ParameterizedFlagSyntax G52Syntax { get; } Property Value ParameterizedFlagSyntax G68Syntax G68 Coordinate rotation syntax. X/Y/Z (center), I/J/K (axis), R (angle) stored as doubles. public ParameterizedFlagSyntax G68Syntax { get; } Property Value ParameterizedFlagSyntax G68p2Syntax G68.2 Tilted work plane syntax. X/Y/Z (origin), I/J/K (euler angles) stored as doubles. A/B/C post-processor hints are parsed by FloatTagValueSyntax and consumed by IsoG68p2TiltSyntax from Parsing. public ParameterizedFlagSyntax G68p2Syntax { get; } Property Value ParameterizedFlagSyntax ParameterizedFlagSyntaxList Common ISO-style G-code parameterized syntaxes using VarPrefix. public List<ParameterizedFlagSyntax> ParameterizedFlagSyntaxList { get; } Property Value List<ParameterizedFlagSyntax> VarPrefix Variable index prefix for this kit (e.g. Fanuc #, Heidenhain Q). public string VarPrefix { get; set; } Property Value string"
},
"api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html",
"title": "Class HeidenhainSyntaxUtil | HiAPI-C# 2025",
"summary": "Class HeidenhainSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Pre-built parsing syntax fragments for Heidenhain-style programs (Q variables, FMAX/FAUTO, etc.). public static class HeidenhainSyntaxUtil Inheritance object HeidenhainSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable token prefix for Heidenhain Q parameters. public const string VarTag = \"Q\" Field Value string Properties DefaultSyntaxList Syntax list for general kind of Heidenhain Controller. public static List<INcSyntax> DefaultSyntaxList { get; } Property Value List<INcSyntax> FTagValueSyntax 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). public static FloatTagValueSyntax FTagValueSyntax { get; } Property Value FloatTagValueSyntax FlagSyntax 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. public static FlagSyntax FlagSyntax { get; } Property Value FlagSyntax"
},
"api/Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html": {
"href": "api/Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html",
"title": "Interface IExpandingNcSyntax | HiAPI-C# 2025",
"summary": "Interface IExpandingNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). public interface IExpandingNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Expand(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) Expand the syntaxPieceNode into a sequence of SyntaxPiece results. IEnumerable<SyntaxPiece> Expand(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> ncDependencyList List<INcDependency> ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable<SyntaxPiece>"
},
"api/Hi.NcParsers.Syntaxs.INcSyntax.html": {
"href": "api/Hi.NcParsers.Syntaxs.INcSyntax.html",
"title": "Interface INcSyntax | HiAPI-C# 2025",
"summary": "Interface INcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Base interface for syntax-level data transformation on SyntaxPiece.JsonObject. Unlike INcSemantic which produces IAct, INcSyntax only restructures or enriches parsed data without producing actions. public interface INcSyntax : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Do not implement this interface directly. Use one of the two derived interfaces: ISituNcSyntax — in-situ (in-place) mutation of a single SyntaxPiece. IExpandingNcSyntax — expands one SyntaxPiece into multiple pieces. Properties Name Syntax kind name (typically the concrete type name). string Name { get; } Property Value string"
},
"api/Hi.NcParsers.Syntaxs.ISituNcSyntax.html": {
"href": "api/Hi.NcParsers.Syntaxs.ISituNcSyntax.html",
"title": "Interface ISituNcSyntax | HiAPI-C# 2025",
"summary": "Interface ISituNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll 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. public interface ISituNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode<SyntaxPiece> ncDependencyList List<INcDependency> ncDiagnosticProgress NcDiagnosticProgress"
},
"api/Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html",
"title": "Class MazakSyntaxUtil | HiAPI-C# 2025",
"summary": "Class MazakSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Mazak-specific NC syntax utilities. public static class MazakSyntaxUtil Inheritance object MazakSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable prefix for Mazak (same as Fanuc). public const string VarTag = \"#\" Field Value string Properties DefaultSyntaxList Syntax list for general kind of Mazak Controller. public static List<INcSyntax> DefaultSyntaxList { get; } Property Value List<INcSyntax> G10p9Syntax G10.9 Center path mode syntax. public static ParameterizedFlagSyntax G10p9Syntax { get; } Property Value ParameterizedFlagSyntax Remarks G10.9X0 → center path G10.9X1 → compensation path by CAM (generally for G41 and G42)"
},
"api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html",
"title": "Class NcSyntaxUtil | HiAPI-C# 2025",
"summary": "Class NcSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll JSON serialization settings and grab/set helpers for NC block JsonObject trees. public static class NcSyntaxUtil Inheritance object NcSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties AxisTagList tag list for the motion axis tags. public static List<string> AxisTagList { get; set; } Property Value List<string> Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. FloatTagList tag list for the float number tags. public static List<string> FloatTagList { get; set; } Property Value List<string> Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. Methods GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser) Get Tag Assignments with = sign. ex. Siemens: R1=100.5, Z=V1+V2, Z=V1 - V3 * V2 F200 Heidenhain: Q1 = Q2 + 100 Fanuc: #1=#2+#3 public static List<TagValue> GrabTagAssignment(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, IEnumerable<string> terminateWords = null, ExpressionPrefixParser rhsPrefixParser = null) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable<string> candidate target tags to extract values for varPrefix string variable index code prefix. 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. Returns List<TagValue> List of extracted tag assignments. 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, bool) Get tag values. 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+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, bool allowSpacedValue = false) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable<string> candidate target tags to extract values for 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. Returns List<TagValue> List of extracted tag values."
},
"api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html",
"title": "Class SiemensSyntaxUtil | HiAPI-C# 2025",
"summary": "Class SiemensSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Pre-built parsing syntax fragments for Siemens-style programs (R parameters, TRAORI, etc.). public static class SiemensSyntaxUtil Inheritance object SiemensSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields 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 Variable token prefix for Siemens R parameters. public const string VarTag = \"R\" Field Value string Properties DefaultSyntaxList Syntax list for general kind of Siemens Controller. public static List<INcSyntax> DefaultSyntaxList { get; } Property Value List<INcSyntax> FlagSyntax 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. public static FlagSyntax FlagSyntax { get; } Property Value FlagSyntax"
},
"api/Hi.NcParsers.Syntaxs.SyntaxPiece.html": {
"href": "api/Hi.NcParsers.Syntaxs.SyntaxPiece.html",
"title": "Class SyntaxPiece | HiAPI-C# 2025",
"summary": "Class SyntaxPiece Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll One NC block's source line paired with its parsed JSON payload during soft-NC processing. public class SyntaxPiece : ISentenceCarrier, IGetSentence, ISentenceIndexed Inheritance object SyntaxPiece Implements ISentenceCarrier IGetSentence ISentenceIndexed Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence and JsonObject are one-one mapping. JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like \"#1\", \"Q2\", coordinate IDs like \"G54\") or when the value cannot be parsed to a number. Use FloatTagValueSyntax, IntegerTagValueSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time. Constructors SyntaxPiece(Sentence, JsonObject, int) Creates a piece binding sentence to jsonObject with its execution-order sentenceIndex. public SyntaxPiece(Sentence sentence, JsonObject jsonObject, int sentenceIndex) Parameters sentence Sentence jsonObject JsonObject sentenceIndex int Properties 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 JsonObject 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. public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence Indexed source line and block text for this piece. public Sentence Sentence { get; set; } Property Value Sentence SentenceIndex 0-based, 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 piece at the wrapping chokepoint. public int SentenceIndex { get; } Property Value int Methods 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() GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence ToString() Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity. public override string ToString() Returns string"
},
"api/Hi.NcParsers.Syntaxs.SyntaxStageKeys.html": {
"href": "api/Hi.NcParsers.Syntaxs.SyntaxStageKeys.html",
"title": "Class SyntaxStageKeys | HiAPI-C# 2025",
"summary": "Class SyntaxStageKeys Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Shared JSON key constants written by post-Logic and Inspection stage syntaxes. Central registry so the string literals do not drift across syntax files; readers of cache dumps can reference these constants directly rather than hard-coding the raw strings. public static class SyntaxStageKeys Inheritance object SyntaxStageKeys Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields AddedByKey Sub-object key that names the syntax which synthesized or copied the containing data. Values are short stage names: AddedByValue (\"Backfill\") — ProgramXyzBackfillSyntax computed the value via modal lookback (MC × inverse(transform) or GetLastProgramXyz(LazyLinkedListNode<SyntaxPiece>)). AddedByValue (\"ModalCarry\") — ModalCarrySyntax deep-cloned the section from the previous block so the current block carries its full modal context. Absent on sub-objects written by LogicSyntaxs-stage syntaxes — readers can filter by this key's presence to distinguish originally-authored data from pipeline-synthesized markers. public const string AddedByKey = \"AddedBy\" Field Value string"
},
"api/Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html",
"title": "Class SyntecSyntaxUtil | HiAPI-C# 2025",
"summary": "Class SyntecSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Syntec-specific NC syntax utilities. public static class SyntecSyntaxUtil Inheritance object SyntecSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable prefix for Syntec (same as Fanuc). public const string VarTag = \"#\" Field Value string Properties DefaultSyntaxList Syntax list for general kind of Syntec Controller. public static List<INcSyntax> DefaultSyntaxList { get; } Property Value List<INcSyntax> G05p1Syntax G05.1 with Syntec-specific R parameter (smoothing level). Placed before GenericSyntaxKit spread so it captures R before FloatTagValueSyntax does. public static ParameterizedFlagSyntax G05p1Syntax { get; } Property Value ParameterizedFlagSyntax"
},
"api/Hi.NcParsers.Syntaxs.TagValue.html": {
"href": "api/Hi.NcParsers.Syntaxs.TagValue.html",
"title": "Class TagValue | HiAPI-C# 2025",
"summary": "Class TagValue Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public record TagValue : IEquatable<TagValue> Inheritance object TagValue Implements IEquatable<TagValue> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Tag generally accompanies with variable value. The term Flag generally not accompanies with variable value. Constructors TagValue(string, string, string) public TagValue(string Tag, string Value, string OriginalText) Parameters Tag string Value string OriginalText string Remarks The term Tag generally accompanies with variable value. The term Flag generally not accompanies with variable value. Properties OriginalText public string OriginalText { get; init; } Property Value string Tag public string Tag { get; init; } Property Value string Value public string Value { get; init; } Property Value string"
},
"api/Hi.NcParsers.Syntaxs.TransformationUtil.html": {
"href": "api/Hi.NcParsers.Syntaxs.TransformationUtil.html",
"title": "Class TransformationUtil | HiAPI-C# 2025",
"summary": "Class TransformationUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Utilities for the ProgramToMcTransform chain. Each entry is {Source, Kind, Mat4d}; entries are composed in order with pure matrix multiplication (GetComposedTransform(JsonObject)). KindKey partitions the entries by contour validity: KindStatic — the matrix is valid across the whole block, applicable to any interpolated point along the contour. KindDynamic — the matrix is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composing it produces a correct endpoint MC, but interpolated points along the contour must be derived per-step by motion semantics (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 the dynamic-rotary state without consulting a sibling section flag. public static class TransformationUtil Inheritance object TransformationUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields KindDynamic The entry's Mat4d is a block-endpoint snapshot only; intermediate contour points must be resolved by per-step IK in motion semantics. public const string KindDynamic = \"Dynamic\" Field Value string KindKey JSON key for the entry's contour-validity classification. Value must be KindStatic or KindDynamic. public const string KindKey = \"Kind\" Field Value string KindStatic The entry's Mat4d is valid for any point along the contour. public const string KindStatic = \"Static\" Field Value string Mat4dKey JSON key for the Mat4d snapshot inside each chain entry. public const string Mat4dKey = \"Mat4d\" Field Value string PivotTransformSource Canonical source name for the RTCP pivot transform — the kinematic transform from Pn (post-G54, post-G68.2) to MC at the block's endpoint ABC. Contributed by PivotTransformationSyntax. Must be the last entry written into the chain so that all Pn-frame operations (tilt, tool-height, coord-offset) are accumulated before the final kinematic IK; this ordering is enforced by the syntax- chain registration order, not by the writer API. public const string PivotTransformSource = \"PivotTransform\" Field Value string SourceKey JSON key for the transform origin label inside each chain entry. public const string SourceKey = \"Source\" Field Value string ToolHeightCompensationSource Canonical source name for the tool-height-compensation entry (tool-normal · offset_mm along the current tool axis). Matches the ToolHeightCompensation section key read for Offset_mm. public const string ToolHeightCompensationSource = \"ToolHeightCompensation\" Field Value string Methods AddOrReplaceTransform(JsonObject, string, string, Mat4d) Adds or replaces a named transformation entry in the chain. If an entry with the same source already exists, it is replaced in-place. Otherwise the new entry is appended. kind must be KindStatic or KindDynamic. public static void AddOrReplaceTransform(JsonObject json, string source, string kind, Mat4d mat) Parameters json JsonObject source string kind string mat Mat4d GetComposedTransform(JsonObject) Composes all entries in the chain into a single block-endpoint Mat4d (left-to-right multiplication). Pure multiplication — no special cases, no kinematic lookup. The returned matrix is valid only for the block's endpoint state; see ProgramToMcTransform for the endpoint-semantic contract. public static Mat4d GetComposedTransform(JsonObject json) Parameters json JsonObject Returns Mat4d 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: ToolHeightCompensationSource — rebuilt with MakeToolHeightMat(IMachineKinematics, Vec3d, double) at stepAbc_rad and toolHeightOffset_mm: the same construction every writer uses (G43p4RtcpSyntax, SiemensTraoriSyntax), so at stepAbc_rad equal to the block-endpoint ABC the rebuilt matrix is bit-identical to the stored snapshot. PivotTransformSource — rebuilt anchor-agnostically as stored · K(endpointAbc) · K(stepAbc)⁻¹, recovering the writer's pre-pivot anchor (preFrameToPn = stored · K(endpointAbc), see MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d)) from the snapshot itself instead of assuming the NC pipeline's machine-zero anchor — the CLSF pivot (ClToMcTransformSyntax) folds a fixture-topology anchor into the same entry and stays correct here. Any other Dynamic source — kept as stored (no rebuild recipe; no shipped writer produces one). 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). GetTransformBySource(JsonObject, string) Gets a specific entry's Mat4d by source name. Returns identity if not found. public static Mat4d GetTransformBySource(JsonObject json, string source) Parameters json JsonObject source string Returns Mat4d HasDynamicEntry(JsonObject) Returns true if any entry in the chain carries KindDynamic. Used by motion-form selection (LinearMotionSyntax) and ProgramXyz strategy dispatch (ProgramXyzUtil) to detect RTCP-rotary-dynamic state without consulting a flag on a sibling section. Throws if any entry lacks KindKey. public static bool HasDynamicEntry(JsonObject json) Parameters json JsonObject Returns bool MakePivotTransformMat(IMachineKinematics, Vec3d) Builds the PivotTransformSource Mat4d — an empirically-constructed Pn→MC rigid-affine transform at the block's endpoint ABC. Equivalent to kinematics.PnToMc(pn_input, normal).Point when applied to 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); 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. public static Mat4d MakePivotTransformMat(IMachineKinematics kinematics, Vec3d abc_rad) Parameters kinematics IMachineKinematics abc_rad Vec3d Returns Mat4d 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 MakeToolHeightMat(IMachineKinematics, Vec3d, double) Builds the tool-height-compensation Mat4d for a given rotary state: translate by (tool-normal at abc_rad) · height_mm. Pure translation (no rotation component); combines with the downstream PivotTransformSource to form the full Pn→MC IK. public static Mat4d MakeToolHeightMat(IMachineKinematics kinematics, Vec3d abc_rad, double height_mm) Parameters kinematics IMachineKinematics abc_rad Vec3d height_mm double Returns Mat4d"
},
"api/Hi.NcParsers.Syntaxs.html": {
"href": "api/Hi.NcParsers.Syntaxs.html",
"title": "Namespace Hi.NcParsers.Syntaxs | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers.Syntaxs Classes BundleSyntax Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. FanucSyntaxUtil Pre-built ParameterizedFlagSyntax / flag patterns for Fanuc-style NC text. GenericSyntaxKit Generic/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. HeidenhainSyntaxUtil Pre-built parsing syntax fragments for Heidenhain-style programs (Q variables, FMAX/FAUTO, etc.). MazakSyntaxUtil Mazak-specific NC syntax utilities. NcSyntaxUtil JSON serialization settings and grab/set helpers for NC block JsonObject trees. SiemensSyntaxUtil Pre-built parsing syntax fragments for Siemens-style programs (R parameters, TRAORI, etc.). SyntaxPiece One NC block's source line paired with its parsed JSON payload during soft-NC processing. SyntaxStageKeys Shared JSON key constants written by post-Logic and Inspection stage syntaxes. Central registry so the string literals do not drift across syntax files; readers of cache dumps can reference these constants directly rather than hard-coding the raw strings. SyntecSyntaxUtil Syntec-specific NC syntax utilities. TagValue TransformationUtil Utilities for the ProgramToMcTransform chain. Each entry is {Source, Kind, Mat4d}; entries are composed in order with pure matrix multiplication (GetComposedTransform(JsonObject)). KindKey partitions the entries by contour validity: KindStatic — the matrix is valid across the whole block, applicable to any interpolated point along the contour. KindDynamic — the matrix is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composing it produces a correct endpoint MC, but interpolated points along the contour must be derived per-step by motion semantics (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 the dynamic-rotary state without consulting a sibling section flag. Interfaces IExpandingNcSyntax Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). INcSyntax Base interface for syntax-level data transformation on SyntaxPiece.JsonObject. Unlike INcSemantic which produces IAct, INcSyntax only restructures or enriches parsed data without producing actions. ISituNcSyntax 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)."
},
"api/Hi.NcParsers.html": {
"href": "api/Hi.NcParsers.html",
"title": "Namespace Hi.NcParsers | HiAPI-C# 2025",
"summary": "Namespace Hi.NcParsers Classes 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. 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). For irregular cases that don't fit the pattern, use a custom string. NcDiagnosticProgress 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. Sentence A small NC block for one or several lines. SoftNcRunner Configurable NC Runner. SoftNcUtil JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. Interfaces IGetSentence Abstraction for a source that carries a Sentence. ISentenceCarrier Carries a reference to a source Sentence together with its execution-order SentenceIndex. Used as the cross-process alignment carrier for diagnostics, messages, ClStripPos, MachiningStep, etc. — both the source content (via GetSentence()) and the execution-order position (via SentenceIndex) are available without needing two separate references. ISentenceIndexed Abstraction for an object that carries a SentenceIndex — a 0-based ordinal of its source Sentence in NC execution order. Use as a cross-process alignment key (messages, ClStripPos, MachiningStep, etc.) when the (FileIndex, LineIndex) source order is not enough because SubProgram inline reorders blocks relative to source order. ISessionResettable Marker for objects that hold session-scoped runtime state which must be 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 PipelineNcDependencyList and NcSyntaxList on the session-init edge and calls OnSessionReset() on every match. Distinct from IPowerResettable: power-reset clears retained-but-volatile state on a controller power cycle (e.g., Fanuc #100-#499), an edge that survives ordinary session boundaries. Session-reset clears state whose lifetime is one pipeline pass (iteration counters, file-index allocators, etc.)."
},
"api/Hi.Numerical.Acts.ActActualDateTime.html": {
"href": "api/Hi.Numerical.Acts.ActActualDateTime.html",
"title": "Class ActActualDateTime | HiAPI-C# 2025",
"summary": "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 object ActActualDateTime Implements IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.Numerical.Acts.ActActualTimecode.html": {
"href": "api/Hi.Numerical.Acts.ActActualTimecode.html",
"title": "Class ActActualTimecode | HiAPI-C# 2025",
"summary": "Class ActActualTimecode Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that sets the actual time for a machine step. public class ActActualTimecode : IActMachineStep, IAct Inheritance object ActActualTimecode Implements IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActActualTimecode(TimeSpan) Initializes a new instance of the ActActualTimecode class. public ActActualTimecode(TimeSpan actualTime) Parameters actualTime TimeSpan The actual time for the machine step. Properties ActualTimecode Gets or sets the actual time for the machine step. public TimeSpan ActualTimecode { get; set; } Property Value TimeSpan 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.Numerical.Acts.ActClArc.html": {
"href": "api/Hi.Numerical.Acts.ActClArc.html",
"title": "Class ActClArc | HiAPI-C# 2025",
"summary": "Class ActClArc Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an arc movement action for cutter location. public class ActClArc : IActClMove, IActDuration, IAct Inheritance object ActClArc Implements IActClMove IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ActUtil.GetClSteps(IActClMove, int, IMachiningMotionResolution) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActClArc(ClCircleArc, TimeSpan) Initializes a new instance of the ActClArc class. public ActClArc(ClCircleArc path, TimeSpan duration) Parameters path ClCircleArc The circle arc path. duration TimeSpan The total duration of the arc action. 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 ClCircleArc Gets or sets the cutter location circle arc. public ClCircleArc ClCircleArc { get; set; } Property Value ClCircleArc Methods GetClPath() Gets the cutter location path. public IClPath GetClPath() Returns IClPath The cutter location path. GetClSteps(IMachiningMotionResolution) Gets a sequence of steps split from this movement under the specified NC resolution. public IEnumerable<ActClStep> GetClSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution. Returns IEnumerable<ActClStep> A sequence of ActClStep. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.Acts.ActClArcMcXyzabcContour.html": {
"href": "api/Hi.Numerical.Acts.ActClArcMcXyzabcContour.html",
"title": "Class ActClArcMcXyzabcContour | HiAPI-C# 2025",
"summary": "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 object ActClArcMcXyzabcContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.Numerical.Acts.ActClLinear.html": {
"href": "api/Hi.Numerical.Acts.ActClLinear.html",
"title": "Class ActClLinear | HiAPI-C# 2025",
"summary": "Class ActClLinear Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a linear cutter location movement action. public class ActClLinear : IActClMove, IActDuration, IAct Inheritance object ActClLinear Implements IActClMove IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ActUtil.GetClSteps(IActClMove, int, IMachiningMotionResolution) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActClLinear(ClLinear, TimeSpan?) Initializes a new instance of the ActClLinear class with the specified path. public ActClLinear(ClLinear path, TimeSpan? duration = null) Parameters path ClLinear The linear cutter location path. duration TimeSpan? Optional total duration of the linear action. ActClLinear(DVec3d, DVec3d, TimeSpan?) Initializes a new instance of the ActClLinear class with begin and end cutter locations. public ActClLinear(DVec3d beginCl, DVec3d endCl, TimeSpan? duration = null) Parameters beginCl DVec3d The begin cutter location. endCl DVec3d The end cutter location. duration TimeSpan? Optional total duration of the linear action. 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 ClLinear Gets or sets the linear cutter location path. public ClLinear ClLinear { get; set; } Property Value ClLinear Methods GetClPath() Retrieves the cutter location path. public IClPath GetClPath() Returns IClPath The cutter location path. GetClSteps(IMachiningMotionResolution) Gets a sequence of steps split from this movement under the specified NC resolution. public IEnumerable<ActClStep> GetClSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution. Returns IEnumerable<ActClStep> A sequence of ActClStep. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html": {
"href": "api/Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html",
"title": "Class ActClLinearMcXyzabcContour | HiAPI-C# 2025",
"summary": "Class ActClLinearMcXyzabcContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a combined linear movement in both cutter location and machine coordinates. This class handles synchronized linear interpolation of tool position and orientation. public class ActClLinearMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActClLinearMcXyzabcContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: Complex 5-axis machining movements Synchronized tool path and orientation control Linear interpolation in multiple coordinate systems Precise tool position and orientation control The movement combines: Linear cutter location interpolation Linear machine coordinate ABC interpolation Synchronized motion control Constructors ActClLinearMcXyzabcContour(SeqPair<DVec3d>, SeqPair<Vec3d>, double, TimeSpan, IMachineKinematics) Initializes a new instance of the ActClLinearMcXyzabcContour class. public ActClLinearMcXyzabcContour(SeqPair<DVec3d> mcSeq, SeqPair<Vec3d> controllerClPointSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair<DVec3d> Machine coordinate sequence pair controllerClPointSeq SeqPair<Vec3d> Controller CL point sequence pair controllerToolOffset double Controller's tool height compensation value 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 ControllerClPointSeq Controller CL (cutter location) point sequence pair. Computed from controller's compensation height (offset table). Represents where the controller believes the tool tip is. Linearly interpolated during motion resolution. public SeqPair<Vec3d> ControllerClPointSeq { get; set; } Property Value SeqPair<Vec3d> ControllerToolOffset Controller's tool height compensation value from the offset table. Used to reconstruct attacher position from controller CL. public double ControllerToolOffset { get; set; } Property Value double CoordinateConverter Coordinate Converter. public IMachineKinematics CoordinateConverter { get; set; } Property Value IMachineKinematics McSeq Gets or sets the machine coordinate sequence pair. The Normal property represents ABC angles in radians. public SeqPair<DVec3d> McSeq { get; set; } Property Value SeqPair<DVec3d> Remarks Contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for orientation interpolation 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."
},
"api/Hi.Numerical.Acts.ActClStep.html": {
"href": "api/Hi.Numerical.Acts.ActClStep.html",
"title": "Class ActClStep | HiAPI-C# 2025",
"summary": "Class ActClStep Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a single cutter-location step with optional duration. public class ActClStep : IActMachineStep, IActDuration, IAct Inheritance object ActClStep Implements IActMachineStep IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActClStep(DVec3d, TimeSpan?) Initializes a new instance with the specified cutter location. public ActClStep(DVec3d cl, TimeSpan? timeSpan = null) Parameters cl DVec3d The cutter location vector. timeSpan TimeSpan? Optional duration of this step. 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 Cl Gets or sets the cutter location vector. public DVec3d Cl { get; set; } Property Value DVec3d 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.Numerical.Acts.ActClTeleport.html": {
"href": "api/Hi.Numerical.Acts.ActClTeleport.html",
"title": "Class ActClTeleport | HiAPI-C# 2025",
"summary": "Class ActClTeleport Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a teleport action for cutter location, allowing instant position change without movement. public class ActClTeleport : IActDuration, IAct Inheritance object ActClTeleport Implements IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActClTeleport(DVec3d, TimeSpan?) Initializes a new instance of the ActClTeleport class with the specified cutter location. public ActClTeleport(DVec3d cl, TimeSpan? timeSpan = null) Parameters cl DVec3d The cutter location vector. timeSpan TimeSpan? Optional duration of this action. 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 Cl Gets or sets the cutter location vector. public DVec3d Cl { get; set; } Property Value DVec3d 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.Numerical.Acts.ActCooling.html": {
"href": "api/Hi.Numerical.Acts.ActCooling.html",
"title": "Class ActCooling | HiAPI-C# 2025",
"summary": "Class ActCooling Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a coolant state transition — the cutting-fluid delivery mode changes on the machine (from e.g. Off to Flood). Emitted by CoolantSemantic when the NC program executes M07/M08/M09. public class ActCooling : IAct Inheritance object ActCooling Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActCooling(CoolantMode) Initializes a new instance with an explicit coolant mode. public ActCooling(CoolantMode mode) Parameters mode CoolantMode ActCooling(bool) Initializes a new instance from a legacy on/off bool. true maps to Flood (the pre-mist default); false maps to Off. public ActCooling(bool isOn) Parameters isOn bool Properties IsOn Whether any coolant stream is active (Flood or Mist). Kept for callers that only care about on/off and predate the CoolantMode distinction. public bool IsOn { get; } Property Value bool Mode The coolant delivery mode after this act has taken effect. public CoolantMode Mode { get; set; } Property Value CoolantMode 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.Numerical.Acts.ActData.html": {
"href": "api/Hi.Numerical.Acts.ActData.html",
"title": "Class ActData | HiAPI-C# 2025",
"summary": "Class ActData Namespace Hi.Numerical.Acts Assembly HiMech.dll Action that add data to the step. The data is maybe from the sensor or computed, etc.. public class ActData : IAct Inheritance object ActData Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActData() Initializes a new instance of the ActData class. public ActData() ActData(Dictionary<string, object>) Initializes a new instance of the ActData class with the specified data. public ActData(Dictionary<string, object> data) Parameters data Dictionary<string, object> The data dictionary containing key-value pairs. Properties Data Gets or sets the data dictionary containing key-value pairs. public Dictionary<string, object> Data { get; set; } Property Value Dictionary<string, object> 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.Numerical.Acts.ActDelay.html": {
"href": "api/Hi.Numerical.Acts.ActDelay.html",
"title": "Class ActDelay | HiAPI-C# 2025",
"summary": "Class ActDelay Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a delay action in machining operations. This class implements a simple time delay in the machining process. public class ActDelay : IActDuration, IAct Inheritance object ActDelay Implements IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Use this class when you need to: Insert a pause in the machining process Implement dwell operations Synchronize timing between operations Allow for cooldown or settling time The delay is implemented as a passive wait without active control. Constructors ActDelay() Initializes a new instance of the ActDelay class with default duration. The default duration is set to TimeSpan.Zero. public ActDelay() ActDelay(TimeSpan) Initializes a new instance of the ActDelay class with the specified delay duration. public ActDelay(TimeSpan delay) Parameters delay TimeSpan The duration of the delay. This value represents: The time to pause the operation Should be non-negative Typically used for dwells or synchronization 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 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.Numerical.Acts.ActFeedrate.html": {
"href": "api/Hi.Numerical.Acts.ActFeedrate.html",
"title": "Class ActFeedrate | HiAPI-C# 2025",
"summary": "Class ActFeedrate Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a feedrate action for controlling the speed of machining operations. public class ActFeedrate : IAct Inheritance object ActFeedrate Implements IAct Derived ActRapid Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActFeedrate() Initializes a new instance of the ActFeedrate class with default feedrate. public ActFeedrate() ActFeedrate(double) Initializes a new instance of the ActFeedrate class with the specified feedrate. public ActFeedrate(double feedrate_mmds) Parameters feedrate_mmds double The feedrate in millimeters per second. Properties Feedrate_mmdmin Gets or sets the feedrate in millimeters per minute. public double Feedrate_mmdmin { get; set; } Property Value double Feedrate_mmds Gets or sets the feedrate in millimeters per second. public double Feedrate_mmds { get; set; } Property Value double 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.Numerical.Acts.ActHiddenStateChanged.html": {
"href": "api/Hi.Numerical.Acts.ActHiddenStateChanged.html",
"title": "Class ActHiddenStateChanged | HiAPI-C# 2025",
"summary": "Class ActHiddenStateChanged Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that indicates a change in the hidden state of an object. This action is typically skipped during normal processing. public class ActHiddenStateChanged : IActSkip, IAct Inheritance object ActHiddenStateChanged Implements IActSkip IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActHiddenStateChanged() Initializes a new instance of the ActHiddenStateChanged class. public ActHiddenStateChanged() 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.Numerical.Acts.ActIntentionalSkip.html": {
"href": "api/Hi.Numerical.Acts.ActIntentionalSkip.html",
"title": "Class ActIntentionalSkip | HiAPI-C# 2025",
"summary": "Class ActIntentionalSkip Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that is intentionally skipped during processing. Used to explicitly mark operations that should be bypassed. public class ActIntentionalSkip : IActSkip, IAct Inheritance object ActIntentionalSkip Implements IActSkip IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActIntentionalSkip() Initializes a new instance of the ActIntentionalSkip class. public ActIntentionalSkip() 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.Numerical.Acts.ActLineBegin.html": {
"href": "api/Hi.Numerical.Acts.ActLineBegin.html",
"title": "Class ActLineBegin | HiAPI-C# 2025",
"summary": "Class ActLineBegin Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the beginning of a line act in numerical control operations. public class ActLineBegin : IAct Inheritance object ActLineBegin Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineBegin() Initializes a new instance of the ActLineBegin class. public ActLineBegin() ActLineBegin(IGetSentence) Initializes a new instance of the ActLineBegin class with a source command. public ActLineBegin(IGetSentence sourceCommand) Parameters sourceCommand IGetSentence The source command associated with this line beginning. Properties SourceCommand Gets or sets the source command associated with this line beginning. public IGetSentence SourceCommand { get; set; } Property Value IGetSentence 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.Numerical.Acts.ActLineCsScript.html": {
"href": "api/Hi.Numerical.Acts.ActLineCsScript.html",
"title": "Class ActLineCsScript | HiAPI-C# 2025",
"summary": "Class ActLineCsScript Namespace Hi.Numerical.Acts Assembly HiMech.dll Cs Script on one Line. public class ActLineCsScript : IAct Inheritance object ActLineCsScript Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineCsScript() Initializes a new instance of the ActLineCsScript class. public ActLineCsScript() ActLineCsScript(string) Initializes a new instance of the ActLineCsScript class with the specified script text. public ActLineCsScript(string scriptText) Parameters scriptText string The C# script text to be executed. Properties ScriptText Gets or sets the C# script text to be executed. public string ScriptText { get; set; } Property Value string Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.Acts.ActLineEnd.html": {
"href": "api/Hi.Numerical.Acts.ActLineEnd.html",
"title": "Class ActLineEnd | HiAPI-C# 2025",
"summary": "Class ActLineEnd Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the end of a line act in numerical control operations. public class ActLineEnd : IAct Inheritance object ActLineEnd Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineEnd() Initializes a new instance of the ActLineEnd class. public ActLineEnd() ActLineEnd(ActLineBegin) Initializes a new instance of the ActLineEnd class with a specified line beginning act. public ActLineEnd(ActLineBegin actLineBegin) Parameters actLineBegin ActLineBegin The line beginning act associated with this line end. Properties ActLineBegin Gets or sets the associated line beginning act. public ActLineBegin ActLineBegin { get; set; } Property Value ActLineBegin SourceCommand Gets the source command from the associated line beginning act. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine 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.Numerical.Acts.ActMcPolarLinearContour.html": {
"href": "api/Hi.Numerical.Acts.ActMcPolarLinearContour.html",
"title": "Class ActMcPolarLinearContour | HiAPI-C# 2025",
"summary": "Class ActMcPolarLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Polar MCZ linear contour. public class ActMcPolarLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcPolarLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcPolarLinearContour(DVec3d, SeqPair<Vec3d>, TimeSpan, double, PolarModeDirEnum) Initializes a new instance of the ActMcPolarLinearContour class. public ActMcPolarLinearContour(DVec3d preMcXyzabc_rad, SeqPair<Vec3d> programPolarXczSeq, TimeSpan duration, double zCoordinateOffset, PolarModeDirEnum polarDir = PolarModeDirEnum.XC) Parameters preMcXyzabc_rad DVec3d Previous machine XYZ-ABC coordinates in radians programPolarXczSeq SeqPair<Vec3d> Program polar XCZ sequence pair 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 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 ProgramPolarXczSeq Gets or sets the program polar XCZ sequence pair. public SeqPair<Vec3d> ProgramPolarXczSeq { get; set; } Property Value SeqPair<Vec3d> Remarks Contains the start and end points in polar XCZ coordinates for interpolation in polar coordinate system. 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."
},
"api/Hi.Numerical.Acts.ActMcPolarSpiralContour.html": {
"href": "api/Hi.Numerical.Acts.ActMcPolarSpiralContour.html",
"title": "Class ActMcPolarSpiralContour | HiAPI-C# 2025",
"summary": "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 object ActMcPolarSpiralContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.Numerical.Acts.ActMcXyzLinearContour.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzLinearContour.html",
"title": "Class ActMcXyzLinearContour | HiAPI-C# 2025",
"summary": "Class ActMcXyzLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZ contour by Machine Coordinate linear interpolation. public class ActMcXyzLinearContour : IActDuration, IActMcXyzContour, IAct Inheritance object ActMcXyzLinearContour Implements IActDuration IActMcXyzContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzLinearContour(SeqPair<Vec3d>, TimeSpan) Initializes a new instance of the ActMcXyzLinearContour class with the specified machine coordinate sequence and duration. public ActMcXyzLinearContour(SeqPair<Vec3d> mcSeq, TimeSpan duration) Parameters mcSeq SeqPair<Vec3d> The machine coordinate sequence pair containing the start and end points. duration TimeSpan The duration of the contour movement. 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 McSeq Gets or sets the machine coordinate sequence pair containing the start and end points. public SeqPair<Vec3d> McSeq { get; set; } Property Value SeqPair<Vec3d> Methods GetActMcXyzSteps(IMachiningMotionResolution) Gets the machine XYZ steps for this contour. public IEnumerable<ActMcXyzStep> GetActMcXyzSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. Returns IEnumerable<ActMcXyzStep> A collection of machine XYZ steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.Acts.ActMcXyzSpiralContour.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzSpiralContour.html",
"title": "Class ActMcXyzSpiralContour | HiAPI-C# 2025",
"summary": "Class ActMcXyzSpiralContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a spiral contour movement in machine XYZ coordinates. public class ActMcXyzSpiralContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcXyzSpiralContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzSpiralContour(Vec3d, Vec3d, Vec3d, Vec3d, int, TimeSpan, Func<Vec3d, DVec3d>) Initializes a new instance of the ActMcXyzSpiralContour class with the specified parameters. public ActMcXyzSpiralContour(Vec3d programPosBegin, Vec3d programPosEnd, Vec3d programPosCenterOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, TimeSpan actDuration, Func<Vec3d, DVec3d> programPosToMcFunc) Parameters programPosBegin Vec3d The beginning position in program coordinates. programPosEnd Vec3d The ending position in program coordinates. programPosCenterOnBeginPlane Vec3d The center position of the spiral in program coordinates. centerNormal Vec3d The normal vector of the center plane. additionalCircleNum int The number of additional circles in the spiral movement. actDuration TimeSpan The duration of the contour movement. programPosToMcFunc Func<Vec3d, DVec3d> The function to convert program position to machine coordinates. 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 Gets or sets the number of additional circles in the spiral movement. public int AdditionalCircleNum { get; set; } Property Value int CenterNormal Gets or sets the normal vector of the center plane. public Vec3d CenterNormal { get; set; } Property Value Vec3d ProgramPosBegin Gets or sets the beginning position in program coordinates. public Vec3d ProgramPosBegin { get; set; } Property Value Vec3d ProgramPosCenterOnBeginPlane Gets or sets the center position of the spiral in program coordinates. public Vec3d ProgramPosCenterOnBeginPlane { get; set; } Property Value Vec3d ProgramPosEnd Gets or sets the ending position in program coordinates. public Vec3d ProgramPosEnd { get; set; } Property Value Vec3d ProgramPosToMcFunc Gets or sets the function to convert program position to machine coordinates. public Func<Vec3d, DVec3d> ProgramPosToMcFunc { get; set; } Property Value Func<Vec3d, 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. GetDerivative(Vec3d, Vec3d, Vec3d, Vec3d, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Get derivatives. public static void GetDerivative(Vec3d begin, Vec3d end, Vec3d centerOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters begin Vec3d end Vec3d centerOnBeginPlane Vec3d centerNormal Vec3d additionalCircleNum int arrowBeginOnProj Vec3d r0 double r1 double axialMove Vec3d synchronized move along the axis angleOnProj double approxCurveLength double GetNcDerivative(Vec3d, Vec3d, Vec2d, int, bool, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Calculates the derivative parameters for numerical control spiral movement. public static void GetNcDerivative(Vec3d ncBegin, Vec3d ncEnd, Vec2d ncCenterVec2d, int planeNormalDir, bool isCcw, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters ncBegin Vec3d The beginning position in NC coordinates. ncEnd Vec3d The ending position in NC coordinates. ncCenterVec2d Vec2d The center position vector in 2D NC coordinates. planeNormalDir int The direction of the plane normal (0=X, 1=Y, 2=Z). isCcw bool Indicates whether the movement is counter-clockwise. additionalCircleNum int The number of additional circles in the spiral movement. arrowBeginOnProj Vec3d The output arrow begin position on projection. r0 double The output starting radius. r1 double The output ending radius. axialMove Vec3d The output axial movement vector. angleOnProj double The output angle on projection. approxCurveLength double The output approximate curve length. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.Acts.ActMcXyzStep.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzStep.html",
"title": "Class ActMcXyzStep | HiAPI-C# 2025",
"summary": "Class ActMcXyzStep Namespace Hi.Numerical.Acts Assembly HiMech.dll Action representing a machine coordinate XYZ step movement. This class handles linear positioning in machine coordinates. public class ActMcXyzStep : IActDuration, IActMachineStep, IAct Inheritance object ActMcXyzStep Implements IActDuration IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: Direct machine coordinate movements Linear positioning operations Point-to-point movements Simple trajectory segments The movement is defined by: Target XYZ position in machine coordinates Movement duration Linear interpolation between points Constructors ActMcXyzStep() Initializes a new instance of the ActMcXyzStep class. Creates an empty step with default values. public ActMcXyzStep() ActMcXyzStep(Vec3d, TimeSpan) Initializes a new instance of the ActMcXyzStep class with the specified machine coordinate and duration. public ActMcXyzStep(Vec3d mcXyz, TimeSpan actDuration) Parameters mcXyz Vec3d The machine coordinate XYZ position. This vector: Specifies the target position Uses machine coordinate system Values are in machine units actDuration TimeSpan The duration of the step action. This represents: Time to complete the movement Should account for machine capabilities Must be non-negative 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 McXyz Gets or sets the machine coordinate XYZ position. public Vec3d McXyz { get; set; } Property Value Vec3d Remarks The position vector represents: X: Machine coordinate X-axis position Y: Machine coordinate Y-axis position Z: Machine coordinate Z-axis position All values are in the machine's native units (typically millimeters). 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.Numerical.Acts.ActMcXyzabcLinearContour.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzabcLinearContour.html",
"title": "Class ActMcXyzabcLinearContour | HiAPI-C# 2025",
"summary": "Class ActMcXyzabcLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. public class ActMcXyzabcLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcXyzabcLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: 5-axis machining movements Tool orientation control Linear interpolation with orientation Complex contour following The movement combines: Linear position interpolation (XYZ) Rotational orientation interpolation (ABC) Synchronized motion control Constructors ActMcXyzabcLinearContour(SeqPair<DVec3d>, TimeSpan, IMachineKinematics) Initializes a new instance. public ActMcXyzabcLinearContour(SeqPair<DVec3d> mcSeq, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair<DVec3d> Machine coordinate sequence pair duration TimeSpan Duration of the contour movement coordinateConverter IMachineKinematics Coordinate converter for transformation. Null is acceptable if no cutter location distance is needed. 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 MachineKinematics Gets or sets the coordinate converter. Can be null if no cutter location distance is needed for interpolation. public IMachineKinematics MachineKinematics { get; set; } Property Value IMachineKinematics Remarks The converter is used for: Coordinate system transformations Distance calculations Path optimization Optional for simple movements McSeq Gets or sets the machine coordinate sequence pair. The Normal property of DVec3d represents ABC angles in radians. public SeqPair<DVec3d> McSeq { get; set; } Property Value SeqPair<DVec3d> Remarks The sequence pair contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for interpolation calculations 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."
},
"api/Hi.Numerical.Acts.ActMcXyzabcStep.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzabcStep.html",
"title": "Class ActMcXyzabcStep | HiAPI-C# 2025",
"summary": "Class ActMcXyzabcStep Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine coordinate XYCABC Step. public class ActMcXyzabcStep : IActDuration, IActMachineStep, IAct Inheritance object ActMcXyzabcStep Implements IActDuration IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzabcStep() Ctor. public ActMcXyzabcStep() ActMcXyzabcStep(DVec3d, TimeSpan) Ctor. public ActMcXyzabcStep(DVec3d mcXyzabc, TimeSpan actDuration) Parameters mcXyzabc DVec3d actDuration TimeSpan 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 McXyzabc Normal is abc in radian. public DVec3d McXyzabc { get; set; } Property Value DVec3d 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.Numerical.Acts.ActMcXyzabcTeleport.html": {
"href": "api/Hi.Numerical.Acts.ActMcXyzabcTeleport.html",
"title": "Class ActMcXyzabcTeleport | HiAPI-C# 2025",
"summary": "Class ActMcXyzabcTeleport Namespace Hi.Numerical.Acts Assembly HiMech.dll 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. public class ActMcXyzabcTeleport : IAct Inheritance object ActMcXyzabcTeleport Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzabcTeleport() Ctor. public ActMcXyzabcTeleport() ActMcXyzabcTeleport(DVec3d) Ctor. public ActMcXyzabcTeleport(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d Properties McXyzabc Target machine coordinate; Normal is ABC in radians (NaN for axes the chain does not have). public DVec3d McXyzabc { get; set; } Property Value DVec3d 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.Numerical.Acts.ActRapid.html": {
"href": "api/Hi.Numerical.Acts.ActRapid.html",
"title": "Class ActRapid | HiAPI-C# 2025",
"summary": "Class ActRapid Namespace Hi.Numerical.Acts Assembly HiMech.dll Rapid feedrate. public class ActRapid : ActFeedrate, IAct Inheritance object ActFeedrate ActRapid Implements IAct Inherited Members ActFeedrate.Feedrate_mmds ActFeedrate.Feedrate_mmdmin object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActRapid(double) Ctor. public ActRapid(double rapidFeedrate_mmds) Parameters rapidFeedrate_mmds double 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.Numerical.Acts.ActSpindleDirection.html": {
"href": "api/Hi.Numerical.Acts.ActSpindleDirection.html",
"title": "Class ActSpindleDirection | HiAPI-C# 2025",
"summary": "Class ActSpindleDirection Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that sets the spindle rotation direction. public class ActSpindleDirection : IAct Inheritance object ActSpindleDirection Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleDirection() Initializes a new instance. public ActSpindleDirection() ActSpindleDirection(SpindleDirection) Initializes a new instance with the specified spindle direction. public ActSpindleDirection(SpindleDirection spindleDirection) Parameters spindleDirection SpindleDirection The spindle rotation direction. Properties SpindleDirection Gets or sets the spindle rotation direction. public SpindleDirection SpindleDirection { get; set; } Property Value SpindleDirection 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.Numerical.Acts.ActSpindleOrientation.html": {
"href": "api/Hi.Numerical.Acts.ActSpindleOrientation.html",
"title": "Class ActSpindleOrientation | HiAPI-C# 2025",
"summary": "Class ActSpindleOrientation Namespace Hi.Numerical.Acts Assembly HiMech.dll Oriented spindle stop — commands the spindle to stop at a specific angular position. Used by G76 (fine boring) and G87 (back boring) to orient the tool before lateral shift. public class ActSpindleOrientation : IAct Inheritance object ActSpindleOrientation Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleOrientation() Creates an orientation act with zero target angle. public ActSpindleOrientation() ActSpindleOrientation(double) Creates an orientation act with the given spindle angle. public ActSpindleOrientation(double angle_rad) Parameters angle_rad double Target orientation about the spindle axis, radians. Properties Angle_deg Target spindle angle in degrees. public double Angle_deg { get; set; } Property Value double Angle_rad Target spindle angle in radians. public double Angle_rad { get; set; } Property Value double 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.Numerical.Acts.ActSpindleSpeed.html": {
"href": "api/Hi.Numerical.Acts.ActSpindleSpeed.html",
"title": "Class ActSpindleSpeed | HiAPI-C# 2025",
"summary": "Class ActSpindleSpeed Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an act that controls the spindle speed in numerical control operations. public class ActSpindleSpeed : IAct Inheritance object ActSpindleSpeed Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleSpeed() Initializes a new instance of the ActSpindleSpeed class. public ActSpindleSpeed() Properties SpindleSpeed_radds Gets or sets the spindle speed in radians per second. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Gets or sets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; set; } Property Value double 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.Numerical.Acts.ActToolingStep.html": {
"href": "api/Hi.Numerical.Acts.ActToolingStep.html",
"title": "Class ActToolingStep | HiAPI-C# 2025",
"summary": "Class ActToolingStep Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of equiping the tool with machining step operation such as collision detection and volume removal. public class ActToolingStep : IActDuration, IActMachineStep, IActTooling, IAct Inheritance object ActToolingStep Implements IActDuration IActMachineStep IActTooling IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActToolingStep(int, TimeSpan?) Initializes a new instance of the ActToolingStep class with the specified tool ID and duration. public ActToolingStep(int toolId, TimeSpan? actDuration = null) Parameters toolId int The identifier of the tool to use. This value: Must be a valid tool magazine position Should correspond to an existing tool Is used for tool selection and validation actDuration TimeSpan? The duration of the tooling operation. This represents: Time needed for tool change Should include safety margins Must be non-negative 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 ToolId Gets or sets the tool identifier. public int ToolId { get; set; } Property Value int Remarks The tool ID: Uniquely identifies a specific tool Used for tool selection and validation Corresponds to the machine's tool magazine positions Should be positive and valid for the machine configuration 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.Numerical.Acts.ActToolingTeleport.html": {
"href": "api/Hi.Numerical.Acts.ActToolingTeleport.html",
"title": "Class ActToolingTeleport | HiAPI-C# 2025",
"summary": "Class ActToolingTeleport Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Equiping the tool without machining step operation such as collision detection and volume removal. public class ActToolingTeleport : IActTooling, IAct Inheritance object ActToolingTeleport Implements IActTooling IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActToolingTeleport(int) Initializes a new instance of the ActToolingTeleport class with the specified tool ID and duration. public ActToolingTeleport(int toolId) Parameters toolId int The identifier of the tool to use. This value: Must be a valid tool magazine position Should correspond to an existing tool Is used for tool selection and validation Properties ToolId Gets or sets the tool identifier. public int ToolId { get; set; } Property Value int Remarks The tool ID: Uniquely identifies a specific tool Used for tool selection and validation Corresponds to the machine's tool magazine positions Should be positive and valid for the machine configuration 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.Numerical.Acts.ActUnknownSkip.html": {
"href": "api/Hi.Numerical.Acts.ActUnknownSkip.html",
"title": "Class ActUnknownSkip | HiAPI-C# 2025",
"summary": "Class ActUnknownSkip Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an act that skips unknown operations in numerical control. public class ActUnknownSkip : IActSkip, IAct Inheritance object ActUnknownSkip Implements IActSkip IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActUnknownSkip() Initializes a new instance of the ActUnknownSkip class. public ActUnknownSkip() 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.Numerical.Acts.ActUtil.html": {
"href": "api/Hi.Numerical.Acts.ActUtil.html",
"title": "Class ActUtil | HiAPI-C# 2025",
"summary": "Class ActUtil Namespace Hi.Numerical.Acts Assembly HiMech.dll Provides utility methods for numerical control actions. public static class ActUtil Inheritance object ActUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetClSteps(IActClMove, int, IMachiningMotionResolution) Splits a cutter location movement into a sequence of steps according to the NC resolution and desired step count. public static IEnumerable<ActClStep> GetClSteps(this IActClMove actClMove, int stepNum, IMachiningMotionResolution ncResolution) Parameters actClMove IActClMove The cutter location movement action. stepNum int The number of steps to split into. ncResolution IMachiningMotionResolution The machining motion resolution. Returns IEnumerable<ActClStep> An enumerable sequence of ActClStep. GetStepNum(SeqPair<DVec3d>, IMachineKinematics, double, IMachiningMotionResolution) Gets the step number for a machine coordinate sequence. public static int GetStepNum(SeqPair<DVec3d> mcSeq, IMachineKinematics coordinateConverter, double toolHeightForComputingStepNum, IMachiningMotionResolution ncResolution) Parameters mcSeq SeqPair<DVec3d> The machine coordinate sequence. coordinateConverter IMachineKinematics The coordinate converter to use. toolHeightForComputingStepNum double The tool height for computing step number. ncResolution IMachiningMotionResolution The machining motion resolution. Returns int The calculated step number. GetStepNumOnPolarInterpolationMode(SeqPair<Vec3d>, IMachiningMotionResolution) Gets the step number for a polar interpolation mode. public static int GetStepNumOnPolarInterpolationMode(SeqPair<Vec3d> programPolarXczSeq, IMachiningMotionResolution ncResolution) Parameters programPolarXczSeq SeqPair<Vec3d> The program polar XCZ sequence. ncResolution IMachiningMotionResolution The machining motion resolution. Returns int The calculated step number. UpdateStepNumByCl(DVec3d, DVec3d, IMachineKinematics, double, double, ref int) Updates the step number based on cutter location points. public static void UpdateStepNumByCl(DVec3d mcXyzabc0, DVec3d mcXyzabc1, IMachineKinematics coordinateConverter, double compensationHeight, double linearResolution_mm, ref int stepNum) Parameters mcXyzabc0 DVec3d The starting machine coordinate. mcXyzabc1 DVec3d The ending machine coordinate. coordinateConverter IMachineKinematics The coordinate converter to use. compensationHeight double The compensation height value. linearResolution_mm double The linear resolution in millimeters. stepNum int The step number to update."
},
"api/Hi.Numerical.Acts.ArcRadialClosure.html": {
"href": "api/Hi.Numerical.Acts.ArcRadialClosure.html",
"title": "Class ArcRadialClosure | HiAPI-C# 2025",
"summary": "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 object ArcRadialClosure Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.Numerical.Acts.IAct.html": {
"href": "api/Hi.Numerical.Acts.IAct.html",
"title": "Interface IAct | HiAPI-C# 2025",
"summary": "Interface IAct Namespace Hi.Numerical.Acts Assembly HiMech.dll Action parsing from NC, CL, NC Steps and etc., for controlling the mechanism and the mechanism simulation process. public interface IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Numerical.Acts.IActClMove.html": {
"href": "api/Hi.Numerical.Acts.IActClMove.html",
"title": "Interface IActClMove | HiAPI-C# 2025",
"summary": "Interface IActClMove Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for actions that involve cutter location movement. This interface defines the contract for tool path movements in machining operations. public interface IActClMove : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ActUtil.GetClSteps(IActClMove, int, IMachiningMotionResolution) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is used for: Tool path planning Cutter location trajectory definition Movement coordination Path interpolation Implementations should handle: Path geometry and kinematics Movement constraints Coordinate transformations Tool orientation Methods GetClPath() Retrieves the cutter location path associated with this movement action. IClPath GetClPath() Returns IClPath The cutter location path defining: Movement trajectory Tool positions and orientations Path geometry Movement constraints Remarks The returned path should: Be properly initialized and valid Include all necessary movement parameters Consider machine kinematics constraints Support interpolation if needed GetClSteps(IMachiningMotionResolution) Gets a sequence of steps split from this movement under the specified NC resolution. IEnumerable<ActClStep> GetClSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution. Returns IEnumerable<ActClStep> A sequence of ActClStep."
},
"api/Hi.Numerical.Acts.IActDuration.html": {
"href": "api/Hi.Numerical.Acts.IActDuration.html",
"title": "Interface IActDuration | HiAPI-C# 2025",
"summary": "Interface IActDuration Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for actions that have a specific duration. This interface is used to define actions that take a measurable amount of time to complete. public interface IActDuration : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is used for: Machining operations with defined durations Time-based process steps Actions that need to track their execution time Common implementations include: Tool changes Cutting operations Positioning movements Delay operations Properties ActDuration Gets or sets the duration of the action. 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"
},
"api/Hi.Numerical.Acts.IActMachineStep.html": {
"href": "api/Hi.Numerical.Acts.IActMachineStep.html",
"title": "Interface IActMachineStep | HiAPI-C# 2025",
"summary": "Interface IActMachineStep Namespace Hi.Numerical.Acts Assembly HiMech.dll public interface IActMachineStep : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Numerical.Acts.IActMcXyzContour.html": {
"href": "api/Hi.Numerical.Acts.IActMcXyzContour.html",
"title": "Interface IActMcXyzContour | HiAPI-C# 2025",
"summary": "Interface IActMcXyzContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for actions that represent machine XYZ contours. public interface IActMcXyzContour : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetActMcXyzSteps(IMachiningMotionResolution) Gets the machine XYZ steps for this contour. IEnumerable<ActMcXyzStep> GetActMcXyzSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. Returns IEnumerable<ActMcXyzStep> A collection of machine XYZ steps."
},
"api/Hi.Numerical.Acts.IActMcXyzabcContour.html": {
"href": "api/Hi.Numerical.Acts.IActMcXyzabcContour.html",
"title": "Interface IActMcXyzabcContour | HiAPI-C# 2025",
"summary": "Interface IActMcXyzabcContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for actions that represent machine XYZABC contours. public interface IActMcXyzabcContour : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action<object>) Gets the machine XYZABC steps for this contour. 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."
},
"api/Hi.Numerical.Acts.IActSkip.html": {
"href": "api/Hi.Numerical.Acts.IActSkip.html",
"title": "Interface IActSkip | HiAPI-C# 2025",
"summary": "Interface IActSkip Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for actions that should be skipped during normal processing. Acts as a marker interface to identify actions that should not be executed. public interface IActSkip : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Numerical.Acts.IActTooling.html": {
"href": "api/Hi.Numerical.Acts.IActTooling.html",
"title": "Interface IActTooling | HiAPI-C# 2025",
"summary": "Interface IActTooling Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a tooling action that changes or selects a tool. public interface IActTooling : IAct Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ToolId Gets or sets the target tool identifier. int ToolId { get; set; } Property Value int"
},
"api/Hi.Numerical.Acts.IWorkTimeAttrib.html": {
"href": "api/Hi.Numerical.Acts.IWorkTimeAttrib.html",
"title": "Interface IWorkTimeAttrib | HiAPI-C# 2025",
"summary": "Interface IWorkTimeAttrib Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for objects that provide both read and write access to work time. Combines the functionality of IWorkTimeGetter and IWorkTimeSetter. public interface IWorkTimeAttrib Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is used when: Both reading and writing work time is needed Full time tracking functionality is required The object needs to both monitor and control time Common implementations include: Machining operation controllers Time tracking components Process monitoring systems Properties WorkTime_s Gets or sets the work time in seconds. double WorkTime_s { get; set; } Property Value double Remarks This property provides: Read access to current work time Write access to update work time Time values are in seconds Should maintain time continuity when updated"
},
"api/Hi.Numerical.Acts.IWorkTimeGetter.html": {
"href": "api/Hi.Numerical.Acts.IWorkTimeGetter.html",
"title": "Interface IWorkTimeGetter | HiAPI-C# 2025",
"summary": "Interface IWorkTimeGetter Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for objects that provide read-only access to work time. This interface is part of the work time tracking system for machining operations. public interface IWorkTimeGetter Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is used when: Only reading work time is required The object should not be able to modify work time Time values are needed for monitoring or reporting purposes Properties WorkTime_s Gets the work time in seconds. double WorkTime_s { get; } Property Value double Remarks The work time represents: The total elapsed time of the operation Time is measured in seconds from the start Returns the current accumulated work time"
},
"api/Hi.Numerical.Acts.IWorkTimeSetter.html": {
"href": "api/Hi.Numerical.Acts.IWorkTimeSetter.html",
"title": "Interface IWorkTimeSetter | HiAPI-C# 2025",
"summary": "Interface IWorkTimeSetter Namespace Hi.Numerical.Acts Assembly HiMech.dll Interface for objects that provide write-only access to work time. This interface is used for components that need to update work time without reading it. public interface IWorkTimeSetter Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This interface is used when: Only setting work time is required The object should not be able to read work time Time values need to be updated during operation Properties WorkTime_s Sets the work time in seconds. double WorkTime_s { set; } Property Value double Remarks When setting work time: The value should be in seconds Negative values should be handled appropriately Updates should maintain time continuity"
},
"api/Hi.Numerical.Acts.StateActRunner.html": {
"href": "api/Hi.Numerical.Acts.StateActRunner.html",
"title": "Class StateActRunner | HiAPI-C# 2025",
"summary": "Class StateActRunner Namespace Hi.Numerical.Acts Assembly HiMech.dll Manages the state of numerical control operations during runtime. public class StateActRunner Inheritance object StateActRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties 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? ActualTimecode { get; set; } Property Value TimeSpan? CoolantMode Current coolant delivery mode as last-seen ActCooling. Updated by ProcAct(IAct). public CoolantMode CoolantMode { get; set; } Property Value CoolantMode Data State external data. public Dictionary<string, object> Data { get; set; } Property Value Dictionary<string, object> EndTimecode Ideal accumulated worked time by simulation. Ideal Program time. The value includes last action duration. public TimeSpan EndTimecode { get; set; } Property Value TimeSpan Feedrate_mmdmin Last processing Feedrate in mm/min. public double Feedrate_mmdmin { get; set; } Property Value double Feedrate_mmds Last processing Feedrate in mm/sec. public double Feedrate_mmds { get; set; } Property Value double IsCoolantOn Legacy convenience flag. True for Flood / Mist; false for Off / UnDefined. public bool IsCoolantOn { get; set; } Property Value bool SpindleAngle_deg Spindle rotation angle in degrees. public double SpindleAngle_deg { get; set; } Property Value double SpindleAngle_rad Spindle rotation angle in radians. public double SpindleAngle_rad { get; set; } Property Value double SpindleDirection Gets or sets the spindle rotation direction. public SpindleDirection SpindleDirection { get; set; } Property Value SpindleDirection SpindleSpeed_radds Gets or sets the spindle speed in radians per second. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Gets or sets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; set; } Property Value double ToolId Gets or sets the current tool identifier. public int ToolId { get; set; } Property Value int Methods ProcAct(IAct) filter the same effect action and run the effective action. public IAct ProcAct(IAct act) Parameters act IAct Returns IAct null if the input act is the same effect action. otherwise, return act. ResetState() Resets all state values to their defaults. public void ResetState()"
},
"api/Hi.Numerical.Acts.html": {
"href": "api/Hi.Numerical.Acts.html",
"title": "Namespace Hi.Numerical.Acts | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.Acts Classes 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. ActClArc Represents an arc movement action for cutter location. 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. ActClStep Represents a single cutter-location step with optional duration. ActClTeleport Represents a teleport action for cutter location, allowing instant position change without movement. ActCooling Represents a coolant state transition — the cutting-fluid delivery mode changes on the machine (from e.g. Off to Flood). Emitted by CoolantSemantic when the NC program executes M07/M08/M09. ActData Action that add data to the step. The data is maybe from the sensor or computed, etc.. ActDelay Represents a delay action in machining operations. This class implements a simple time delay in the machining process. ActFeedrate Represents a feedrate action for controlling the speed of machining operations. ActHiddenStateChanged Represents an action that indicates a change in the hidden state of an object. This action is typically skipped during normal processing. ActIntentionalSkip Represents an action that is intentionally skipped during processing. Used to explicitly mark operations that should be bypassed. ActLineBegin Represents the beginning of a line act in numerical control operations. ActLineCsScript Cs Script on one Line. ActLineEnd Represents the end of a line act in numerical control operations. 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. ActMcXyzLinearContour Action of Machine Coordinate XYZ contour by Machine Coordinate linear interpolation. ActMcXyzSpiralContour Represents a spiral contour movement in machine XYZ coordinates. ActMcXyzStep Action representing a machine coordinate XYZ step movement. This class handles linear positioning in machine coordinates. ActMcXyzabcLinearContour Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. 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. ActRapid Rapid feedrate. ActSpindleDirection Represents an action that sets the spindle rotation direction. ActSpindleOrientation Oriented spindle stop — commands the spindle to stop at a specific angular position. Used by G76 (fine boring) and G87 (back boring) to orient the tool before lateral shift. ActSpindleSpeed Represents an act that controls the spindle speed in numerical control operations. ActToolingStep Action of equiping the tool with machining step operation such as collision detection and volume removal. ActToolingTeleport Action of Equiping the tool without machining step operation such as collision detection and volume removal. ActUnknownSkip Represents an act that skips unknown operations in numerical control. 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. StateActRunner Manages the state of numerical control operations during runtime. Interfaces IAct Action parsing from NC, CL, NC Steps and etc., for controlling the mechanism and the mechanism simulation process. IActClMove Interface for actions that involve cutter location movement. This interface defines the contract for tool path movements in machining operations. IActDuration Interface for actions that have a specific duration. This interface is used to define actions that take a measurable amount of time to complete. IActMachineStep IActMcXyzContour Interface for actions that represent machine XYZ contours. IActMcXyzabcContour Interface for actions that represent machine XYZABC contours. IActSkip Interface for actions that should be skipped during normal processing. Acts as a marker interface to identify actions that should not be executed. IActTooling Represents a tooling action that changes or selects a tool. IWorkTimeAttrib Interface for objects that provide both read and write access to work time. Combines the functionality of IWorkTimeGetter and IWorkTimeSetter. IWorkTimeGetter Interface for objects that provide read-only access to work time. This interface is part of the work time tracking system for machining operations. IWorkTimeSetter Interface for objects that provide write-only access to work time. This interface is used for components that need to update work time without reading it."
},
"api/Hi.Numerical.Args.OrthogonalPlaneFlag.html": {
"href": "api/Hi.Numerical.Args.OrthogonalPlaneFlag.html",
"title": "Enum OrthogonalPlaneFlag | HiAPI-C# 2025",
"summary": "Enum OrthogonalPlaneFlag Namespace Hi.Numerical.Args Assembly HiMech.dll Plane Selection Flag. Fanuc Group02 flags. the int value is the plane dir number. public enum OrthogonalPlaneFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G17 = 2 XY plane selection. Fanuc Group02. G18 = 1 ZX plane selection. Fanuc Group02. G19 = 0 YZ plane selection. Fanuc Group02."
},
"api/Hi.Numerical.Args.PolarModeDirEnum.html": {
"href": "api/Hi.Numerical.Args.PolarModeDirEnum.html",
"title": "Enum PolarModeDirEnum | HiAPI-C# 2025",
"summary": "Enum PolarModeDirEnum Namespace Hi.Numerical.Args Assembly HiMech.dll Polar coordinate interpolation mode direction. YA,ZB has not implemented yet. public enum PolarModeDirEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields XC = 0 XC polar coordinate mode YA = 1 YA polar coordinate mode ZB = 2 ZB polar coordinate mode"
},
"api/Hi.Numerical.Args.PolarPairDef.html": {
"href": "api/Hi.Numerical.Args.PolarPairDef.html",
"title": "Class PolarPairDef | HiAPI-C# 2025",
"summary": "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 object PolarPairDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.Args.html": {
"href": "api/Hi.Numerical.Args.html",
"title": "Namespace Hi.Numerical.Args | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.Args 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 OrthogonalPlaneFlag Plane Selection Flag. Fanuc Group02 flags. the int value is the plane dir number. PolarModeDirEnum Polar coordinate interpolation mode direction. YA,ZB has not implemented yet."
},
"api/Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html",
"title": "Class ClArcMcMotionSemantic | HiAPI-C# 2025",
"summary": "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 object ClArcMcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.ClsfParsers.ClMotionSemantic.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClMotionSemantic.html",
"title": "Class ClMotionSemantic | HiAPI-C# 2025",
"summary": "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: ClTeleport → ActClTeleport, ClLinear → ActClLinear, ClArc → ActClArc. 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 object ClMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html",
"title": "Class ClMotionValveSemantic | HiAPI-C# 2025",
"summary": "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: Block carries a MachineCoordinateState section (written by ClToMcTransformSyntax + McXyzSyntax when the chain is an MC machine) → McSemanticList (default: McLinearMotionSemantic for downgraded constant-posture moves, ClLinearMcMotionSemantic for RTCP-style orientation-changing lines, ClArcMcMotionSemantic, ClTeleportMcMotionSemantic). Otherwise (pure-CL ClMillingDevice project) → ClSemanticList (default ClMotionSemantic). The semantic-side counterpart of BundleSyntax composition: children are serialized nested under group elements and reconstructed via XFactory. public class ClMotionValveSemantic : INcSemantic, IMakeXmlSource Inheritance object ClMotionValveSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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>"
},
"api/Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html",
"title": "Class ClTeleportMcMotionSemantic | HiAPI-C# 2025",
"summary": "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 object ClTeleportMcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html",
"title": "Class ClToMcTransformSyntax | HiAPI-C# 2025",
"summary": "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 a ToolHeightCompensation section (the active tool's attacher→tip length) plus its chain entry — a translation along the workpiece-frame tool axis, mirroring the RTCP entry of G43p4RtcpSyntax; a PivotTransformSource chain entry — MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d) anchored to the workpiece frame, absorbing the fixture topology (workpiece→Pn, wired on ProgramZeroToPnProvider) together with the Pn→MC kinematics at the solved endpoint rotary state; the solved rotary axes in raw degrees on MachineCoordinateState (wrapped afterwards by McAbcCyclicPathSyntax) — machine XYZ is not written here; the shared McXyzSyntax composes it from ProgramXyz × chain exactly like the NC pipeline. 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 object ClToMcTransformSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.ClsfKeys.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfKeys.html",
"title": "Class ClsfKeys | HiAPI-C# 2025",
"summary": "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 object ClsfKeys Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html",
"title": "Class ClsfRecordCleanupSyntax | HiAPI-C# 2025",
"summary": "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; UNITS — MM 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 object ClsfRecordCleanupSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html",
"title": "Class ClsfRecordSyntax | HiAPI-C# 2025",
"summary": "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 object ClsfRecordSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html",
"title": "Class ClsfRunnerConfig | HiAPI-C# 2025",
"summary": "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 object ClsfRunnerConfig Implements IRapidFeedrateConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.ClsfParsers.ClsfSegmenter.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfSegmenter.html",
"title": "Class ClsfSegmenter | HiAPI-C# 2025",
"summary": "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 object ClsfSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods GetSentences(LazyLinkedList<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."
},
"api/Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html": {
"href": "api/Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html",
"title": "Class ClsfToolBuildSemantic | HiAPI-C# 2025",
"summary": "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 object ClsfToolBuildSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html",
"title": "Class MsysCoordinateOffsetSyntax | HiAPI-C# 2025",
"summary": "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 object MsysCoordinateOffsetSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.ClsfParsers.NxClRunner.html": {
"href": "api/Hi.Numerical.ClsfParsers.NxClRunner.html",
"title": "Class NxClRunner | HiAPI-C# 2025",
"summary": "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 object NxClRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html",
"title": "Class RecordToClMotionSyntax | HiAPI-C# 2025",
"summary": "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 object RecordToClMotionSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html",
"title": "Class RecordToCoolantSyntax | HiAPI-C# 2025",
"summary": "Class RecordToCoolantSyntax Namespace Hi.Numerical.ClsfParsers Assembly HiMech.dll Translates a COOLNT record into the standardized ICoolantDef section consumed by the general CoolantSemantic: ON/FLOOD → Flood, MIST → Mist, OFF → Off; other CLSF coolant modes fall back to flood with a configuration warning. public class RecordToCoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RecordToCoolantSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html",
"title": "Class RecordToFeedrateSyntax | HiAPI-C# 2025",
"summary": "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 object RecordToFeedrateSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html",
"title": "Class RecordToMsysSyntax | HiAPI-C# 2025",
"summary": "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 object RecordToMsysSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html",
"title": "Class RecordToSpindleSyntax | HiAPI-C# 2025",
"summary": "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 object RecordToSpindleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode<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"
},
"api/Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html": {
"href": "api/Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html",
"title": "Class RecordToToolingSyntax | HiAPI-C# 2025",
"summary": "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 object RecordToToolingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.ClsfParsers.html": {
"href": "api/Hi.Numerical.ClsfParsers.html",
"title": "Namespace Hi.Numerical.ClsfParsers | HiAPI-C# 2025",
"summary": "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: ClTeleport → ActClTeleport, ClLinear → ActClLinear, ClArc → ActClArc. 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: Block carries a MachineCoordinateState section (written by ClToMcTransformSyntax + McXyzSyntax when the chain is an MC machine) → McSemanticList (default: McLinearMotionSemantic for downgraded constant-posture moves, ClLinearMcMotionSemantic for RTCP-style orientation-changing lines, ClArcMcMotionSemantic, ClTeleportMcMotionSemantic). Otherwise (pure-CL ClMillingDevice project) → ClSemanticList (default ClMotionSemantic). 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 a ToolHeightCompensation section (the active tool's attacher→tip length) plus its chain entry — a translation along the workpiece-frame tool axis, mirroring the RTCP entry of G43p4RtcpSyntax; a PivotTransformSource chain entry — MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d) anchored to the workpiece frame, absorbing the fixture topology (workpiece→Pn, wired on ProgramZeroToPnProvider) together with the Pn→MC kinematics at the solved endpoint rotary state; the solved rotary axes in raw degrees on MachineCoordinateState (wrapped afterwards by McAbcCyclicPathSyntax) — machine XYZ is not written here; the shared McXyzSyntax composes it from ProgramXyz × chain exactly like the NC pipeline. 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; UNITS — MM 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/FLOOD → Flood, MIST → Mist, 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)."
},
"api/Hi.Numerical.CncBrand.html": {
"href": "api/Hi.Numerical.CncBrand.html",
"title": "Enum CncBrand | HiAPI-C# 2025",
"summary": "Enum CncBrand Namespace Hi.Numerical Assembly HiUniNc.dll Represents different CNC controller brands supported by the system. public enum CncBrand Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Fanuc = 0 Fanuc CNC controller. Heidenhain = 1 Heidenhain CNC controller. Mazak = 2 Mazak CNC controller. Siemens = 3 Siemens CNC controller. Syntec = 4 Syntec CNC controller."
},
"api/Hi.Numerical.CommentMark.html": {
"href": "api/Hi.Numerical.CommentMark.html",
"title": "Enum CommentMark | HiAPI-C# 2025",
"summary": "Enum CommentMark Namespace Hi.Numerical Assembly HiUniNc.dll Enumeration of different comment mark types used in NC code. public enum CommentMark Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields DoubleSlash = 3 Double slash style comments, e.g. //This is a comment. HeadPercent = 4 Percent sign at the beginning style comments, e.g. %This is a comment. Quote = 1 Parenthesis style comments, e.g. (This is a comment). Semicolon = 2 Semicolon style comments, e.g. ;This is a comment."
},
"api/Hi.Numerical.CoolantMode.html": {
"href": "api/Hi.Numerical.CoolantMode.html",
"title": "Enum CoolantMode | HiAPI-C# 2025",
"summary": "Enum CoolantMode Namespace Hi.Numerical Assembly HiGeom.dll Cutting-fluid delivery mode parsed from typical NC coolant machine functions (e.g. M07 / M08 / M09). Values are consumed by higher-level machining simulation and thermal models that map each mode to convection and temperature assumptions. public enum CoolantMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Flood = 3 Flood coolant (M08). High-volume liquid stream (typically 0.510 L/min of water-based emulsion); used as the reference mode for full liquid-jet convection in downstream thermal calculations. Mist = 2 Mist coolant / Minimum Quantity Lubrication, MQL (M07). Fine oil aerosol; relies primarily on evaporation for heat removal. Empirically about half the convective heat-transfer of flood coolant; thermal solvers typically apply a configurable mist-to-flood convection ratio when this mode is active. Off = 1 Coolant off (M09). No active coolant stream. UnDefined = 0 Undefined / uninitialised. State before the first coolant act has been processed. Treated as Off by physics consumers."
},
"api/Hi.Numerical.CoordinateInterpolationMode.html": {
"href": "api/Hi.Numerical.CoordinateInterpolationMode.html",
"title": "Enum CoordinateInterpolationMode | HiAPI-C# 2025",
"summary": "Enum CoordinateInterpolationMode Namespace Hi.Numerical Assembly HiUniNc.dll Defines the coordinate interpolation mode for NC operations. public enum CoordinateInterpolationMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Cartesian = 1 Standard Cartesian coordinate system interpolation. Polar = 2 Polar coordinate system interpolation."
},
"api/Hi.Numerical.CsvParsers.CsvActDataSemantic.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvActDataSemantic.html",
"title": "Class CsvActDataSemantic | HiAPI-C# 2025",
"summary": "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 object CsvActDataSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.CsvParsers.CsvActualTimeSemantic.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvActualTimeSemantic.html",
"title": "Class CsvActualTimeSemantic | HiAPI-C# 2025",
"summary": "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 object CsvActualTimeSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.CsvParsers.CsvMotionSemantic.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvMotionSemantic.html",
"title": "Class CsvMotionSemantic | HiAPI-C# 2025",
"summary": "Class CsvMotionSemantic Namespace Hi.Numerical.CsvParsers Assembly HiMech.dll 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. 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 CsvMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object CsvMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reg(XFactory) Registers this 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>"
},
"api/Hi.Numerical.CsvParsers.CsvRowSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvRowSyntax.html",
"title": "Class CsvRowSyntax | HiAPI-C# 2025",
"summary": "Class CsvRowSyntax Namespace Hi.Numerical.CsvParsers Assembly HiMech.dll Per-row CSV parsing syntax for the soft NC runner. Reads the active TitleList via SegmenterDependency, splits the row text using GetCsvDictionary(IList<string>, string), and stamps the resulting column→value map into JsonObject under the CsvRowKey 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 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). public class CsvRowSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsvRowSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CsvRowKey JSON property name under which the parsed row dictionary is stored. public const string CsvRowKey = \"CsvRow\" 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"
},
"api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html",
"title": "Class CsvRunnerConfig | HiAPI-C# 2025",
"summary": "Class CsvRunnerConfig Namespace Hi.Numerical.CsvParsers Assembly HiMech.dll Configuration class for CSV Runner. Lives in PipelineNcDependencyList when wired with GeneralCsvRunner; consumed by CsvRowSyntax and the CSV row syntaxes/semantics for tag-name lookup and custom-field parsing. public class CsvRunnerConfig : INcDependency, IMakeXmlSource Inheritance object CsvRunnerConfig 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunnerConfig() Default constructor. public CsvRunnerConfig() CsvRunnerConfig(XElement) Constructor from XML. public CsvRunnerConfig(XElement src) Parameters src XElement XML element Properties ActualTimeTag Actual time tag for CSV parsing. public string ActualTimeTag { get; set; } Property Value string 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 CutterLocationPrefix Cutter Location Prefix Tag for CSV Parsing. public string CutterLocationPrefix { get; set; } Property Value string DurationTag Duration tag for CSV parsing. public string DurationTag { get; set; } Property Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public string FeedrateTag_mmdmin { get; set; } Property Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public string LineBeginCsScriptTag { get; set; } Property Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public string LineEndCsScriptTag { get; set; } Property Value string MachineCoordinatePrefix Machine Coordinate Prefix Tag for CSV Parsing. public string MachineCoordinatePrefix { get; set; } Property Value string ParsingDictionary Parsing dictionary for custom field parsing. Note: This dictionary cannot be serialized to XML as it contains functions. public Dictionary<string, Func<string, object>> ParsingDictionary { get; set; } Property Value Dictionary<string, Func<string, object>> SpindleDirectionTag Spindle direction Tag for CSV Parsing. public string SpindleDirectionTag { get; set; } Property Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public string SpindleSpeedTag_rpm { get; set; } Property Value string ToolIdTag Tool ID Tag for CSV Parsing. public string ToolIdTag { 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.Numerical.CsvParsers.CsvSegmenter.html": {
"href": "api/Hi.Numerical.CsvParsers.CsvSegmenter.html",
"title": "Class CsvSegmenter | HiAPI-C# 2025",
"summary": "Class CsvSegmenter Namespace Hi.Numerical.CsvParsers Assembly HiMech.dll Segments a CSV stream for the SoftNcRunner pipeline. Consumes the first IndexedFileLine as the title row (populating TitleList and registering any new columns as step variables via StepPropertyAccessDictionaryDependency), then yields each subsequent line as a one-line Sentence for CsvRowSyntax to parse. public class CsvSegmenter : ISegmenter, IToXElement Inheritance object CsvSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. public string Name { get; } Property Value string TitleList Column titles parsed from the first row of the most recent GetSentences(LazyLinkedList<IndexedFileLine>, List<INcDependency>, NcDiagnosticProgress) invocation. Quote- and whitespace-trimmed to match the convention established in the legacy CsvRunner. Reset on each new call so per-file headers stay accurate across multi-file sessions. public List<string> TitleList { get; } Property Value List<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."
},
"api/Hi.Numerical.CsvParsers.GeneralCsvRunner.html": {
"href": "api/Hi.Numerical.CsvParsers.GeneralCsvRunner.html",
"title": "Class GeneralCsvRunner | HiAPI-C# 2025",
"summary": "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 object GeneralCsvRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() 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"
},
"api/Hi.Numerical.CsvParsers.RowToCoolantSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToCoolantSyntax.html",
"title": "Class RowToCoolantSyntax | HiAPI-C# 2025",
"summary": "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 object RowToCoolantSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToCsScriptSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToCsScriptSyntax.html",
"title": "Class RowToCsScriptSyntax | HiAPI-C# 2025",
"summary": "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 object RowToCsScriptSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToFeedrateSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToFeedrateSyntax.html",
"title": "Class RowToFeedrateSyntax | HiAPI-C# 2025",
"summary": "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 object RowToFeedrateSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToMachineCoordinateSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToMachineCoordinateSyntax.html",
"title": "Class RowToMachineCoordinateSyntax | HiAPI-C# 2025",
"summary": "Class RowToMachineCoordinateSyntax Namespace Hi.Numerical.CsvParsers Assembly HiMech.dll Translates the machine-coordinate columns of a decoded CsvRow (prefixed by MachineCoordinatePrefix, e.g. MC.X … MC.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 object RowToMachineCoordinateSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToMotionEventSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToMotionEventSyntax.html",
"title": "Class RowToMotionEventSyntax | HiAPI-C# 2025",
"summary": "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 object RowToMotionEventSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToSpindleSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToSpindleSyntax.html",
"title": "Class RowToSpindleSyntax | HiAPI-C# 2025",
"summary": "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 object RowToSpindleSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToTimingSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToTimingSyntax.html",
"title": "Class RowToTimingSyntax | HiAPI-C# 2025",
"summary": "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 object RowToTimingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.RowToToolingSyntax.html": {
"href": "api/Hi.Numerical.CsvParsers.RowToToolingSyntax.html",
"title": "Class RowToToolingSyntax | HiAPI-C# 2025",
"summary": "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 object RowToToolingSyntax 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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"
},
"api/Hi.Numerical.CsvParsers.html": {
"href": "api/Hi.Numerical.CsvParsers.html",
"title": "Namespace Hi.Numerical.CsvParsers | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.CsvParsers Classes 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. 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. CsvRowSyntax Per-row CSV parsing syntax for the soft NC runner. Reads the active TitleList via SegmenterDependency, splits the row text using GetCsvDictionary(IList<string>, string), and stamps the resulting column→value map into JsonObject under the CsvRowKey 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 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). CsvRunnerConfig Configuration class for CSV Runner. Lives in PipelineNcDependencyList when wired with GeneralCsvRunner; consumed by CsvRowSyntax and the CSV row syntaxes/semantics for tag-name lookup and custom-field parsing. CsvSegmenter Segments a CSV stream for the SoftNcRunner pipeline. Consumes the first IndexedFileLine as the title row (populating TitleList and registering any new columns as step variables via StepPropertyAccessDictionaryDependency), then yields each subsequent line as a one-line Sentence for CsvRowSyntax to parse. 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). 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.X … MC.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."
},
"api/Hi.Numerical.FilePlayers.HardNcRunner.html": {
"href": "api/Hi.Numerical.FilePlayers.HardNcRunner.html",
"title": "Class HardNcRunner | HiAPI-C# 2025",
"summary": "Class HardNcRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing NC code lines. public class HardNcRunner : INcRunner Inheritance object HardNcRunner Implements INcRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties NcLines Gets the linked list of NC lines. public LinkedList<HardNcLine> NcLines { get; } Property Value LinkedList<HardNcLine> Methods RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) Runs raw NC lines and yields NcLine and Act pairs. public IEnumerable<SourcedActEntry> RunNcLines(string relNcFilePath, IEnumerable<string> lines, MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters relNcFilePath string The relative path of the NC file lines IEnumerable<string> The enumerable collection of NC code lines machiningSession MachiningSession The machining session that owns runtime state for this run. 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 Returns IEnumerable<SourcedActEntry> Enumerable of NcLine and Act pairs"
},
"api/Hi.Numerical.FilePlayers.html": {
"href": "api/Hi.Numerical.FilePlayers.html",
"title": "Namespace Hi.Numerical.FilePlayers | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.FilePlayers Classes HardNcRunner Provides functionality for running and processing NC code lines."
},
"api/Hi.Numerical.FlexDictionaryUtil.html": {
"href": "api/Hi.Numerical.FlexDictionaryUtil.html",
"title": "Class FlexDictionaryUtil | HiAPI-C# 2025",
"summary": "Class FlexDictionaryUtil Namespace Hi.Numerical Assembly HiMech.dll Utility for flexible dictionary operations. public static class FlexDictionaryUtil Inheritance object FlexDictionaryUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CallFlexDictionary<T>(IFlexDictionaryHost<T>) Calls the flex dictionary of the source, initializing it if null. public static Dictionary<string, T> CallFlexDictionary<T>(this IFlexDictionaryHost<T> src) Parameters src IFlexDictionaryHost<T> The flex dictionary host Returns Dictionary<string, T> The dictionary from the host Type Parameters T The type of values in the dictionary GetFlexDictionaryBytes<T>(IFlexDictionaryHost<T>, IntegerKeyDictionaryConverter<T>) Gets the flex dictionary as a byte array. public static byte[] GetFlexDictionaryBytes<T>(this IFlexDictionaryHost<T> src, IntegerKeyDictionaryConverter<T> converter) Parameters src IFlexDictionaryHost<T> The flex dictionary host converter IntegerKeyDictionaryConverter<T> The converter for integer keys Returns byte[] Byte array representation of the dictionary Type Parameters T The type of values in the dictionary ReadFlexDictionary(BinaryReader, IntegerKeyDictionaryConverter<double>) Reads a flex dictionary from a binary reader. public static Dictionary<string, double> ReadFlexDictionary(BinaryReader reader, IntegerKeyDictionaryConverter<double> converter) Parameters reader BinaryReader The binary reader to read from converter IntegerKeyDictionaryConverter<double> The converter for integer keys Returns Dictionary<string, double> The restored dictionary WriteFlexDictionary<T>(IFlexDictionaryHost<T>, BinaryWriter, IntegerKeyDictionaryConverter<T>) Writes a flex dictionary to a binary writer. public static void WriteFlexDictionary<T>(this IFlexDictionaryHost<T> src, BinaryWriter writer, IntegerKeyDictionaryConverter<T> converter) Parameters src IFlexDictionaryHost<T> The flex dictionary host writer BinaryWriter The binary writer to write to converter IntegerKeyDictionaryConverter<T> The converter for integer keys Type Parameters T The type of values in the dictionary"
},
"api/Hi.Numerical.HardNcComment.html": {
"href": "api/Hi.Numerical.HardNcComment.html",
"title": "Class HardNcComment | HiAPI-C# 2025",
"summary": "Class HardNcComment Namespace Hi.Numerical Assembly HiUniNc.dll Represents a comment in NC code. public class HardNcComment Inheritance object HardNcComment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcComment(string, CommentMark) Initializes a new instance of the HardNcComment class. public HardNcComment(string content, CommentMark commentSignEnum) Parameters content string The content of the comment without comment marks. commentSignEnum CommentMark The type of comment mark to use. Properties CommentMark Gets or sets the type of comment mark used. public CommentMark CommentMark { get; set; } Property Value CommentMark Content Comment Without Comment Mark. public string Content { get; set; } Property Value string FullText Comment With Comment Mark. public string FullText { get; } Property Value string Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.HardNcEnv.html": {
"href": "api/Hi.Numerical.HardNcEnv.html",
"title": "Class HardNcEnv | HiAPI-C# 2025",
"summary": "Class HardNcEnv Namespace Hi.Numerical Assembly HiUniNc.dll Represents the numerical control environment containing configuration for CNC operations. public class HardNcEnv : IMakeXmlSource Inheritance object HardNcEnv 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcEnv(CncBrand) Ctor. public HardNcEnv(CncBrand cncBrand = CncBrand.Fanuc) Parameters cncBrand CncBrand HardNcEnv(XElement, string, string, IProgress<IMessage>) Ctor. public HardNcEnv(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement XML baseDirectory string The base directory for relative paths. relFile string The relative file path. progress IProgress<IMessage> Optional progress reporter for nested XML factory calls. Properties AttacherAtMcZeroOnTableCoordinate Gets the attacher position at machine zero on table coordinate. public Vec3d AttacherAtMcZeroOnTableCoordinate { get; } Property Value Vec3d CncBrand Gets or sets the CNC brand/controller type. public CncBrand CncBrand { get; set; } Property Value CncBrand CommentSymbol Gets the comment symbol used by the current CNC controller. public string CommentSymbol { get; } Property Value string ConfigurationTable Gets a dictionary of CNC configuration parameters used by the system. public Dictionary<string, int> ConfigurationTable { get; } Property Value Dictionary<string, int> EnableArcCornerRadiusCompensation Gets or sets whether arc corner radius compensation is enabled. public bool EnableArcCornerRadiusCompensation { get; set; } Property Value bool EnableIntegerShrinkOnPositionCommand Gets or sets whether integer shrinking is enabled for position commands. e.g., “X1.” is interpreted as X=1.0 when enabled. public bool EnableIntegerShrinkOnPositionCommand { get; set; } Property Value bool EnableShortestRotary Enables shortest rotary path movement. This option does not affect Heidenhain controllers. For Heidenhain controllers, see Hi.UniNc.Heidenhain.IHeidenhainShortestRotaryPathEnabled, Hi.UniNc.Heidenhain.HeidenhainM126 and Hi.UniNc.Heidenhain.HeidenhainM127. public bool EnableShortestRotary { get; set; } Property Value bool FanucPara5003 Fanuc 5003. These bits are used to specify the type of startup/cancellation of tool radius - tool nose radius compensation. 0: type A; 1: type B; 2,3: type C. Assume always zero. Type A: A compensation vector perpendicular to the block next to the startup block or the block preceding the cancellation block is output. Type B: A compensation vector perpendicular to the startup block or cancellation block and an intersection vector are output. Type C: When the startup block or cancellation block specifies no movement operation, the tool is shifted by the cutter compensation amount in a direction perpendicular to the block next to the startup or the block before cancellation block. public byte FanucPara5003 { get; set; } Property Value byte HeidenhainDatumPresetTable For Heidenhain CYCL DEF 247 Datum Preset. public Dictionary<int, Vec3d> HeidenhainDatumPresetTable { get; } Property Value Dictionary<int, Vec3d> Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainDatumShiftTable For Heidenhain CYCL DEF 7 Datum Shift. Also called Datum table in heidenhain manual. public Dictionary<int, Vec3d> HeidenhainDatumShiftTable { get; } Property Value Dictionary<int, Vec3d> Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainMasterAxisChar Gets or sets the Heidenhain master rotary axis as a character (A, B, or C). public char HeidenhainMasterAxisChar { get; set; } Property Value char HeidenhainMasterAxisDir The master axis determines the behaviour of SEQ command. ex. PLANE SPATIAL SPA-77.516 SPB+0 SPC-10.365 STAY SEQ-TABLE ROT The master axis is the 1st rotary axis from the tool, or the last rotary axis from the table(depending on the machine configuration). SEQ+ positions the master axis so that it assumes a positive angle. See: TNC 640 | User's ManualDIN/ISO Programming | 1/2015 p432 public int HeidenhainMasterAxisDir { get; set; } Property Value int HomeMc Home machine coordinate. First reference position. The position may not equal to machine zero in real Fanuc controller. public Vec3d HomeMc { get; set; } Property Value Vec3d IsAxisAExisted Gets whether the A axis exists in the machine configuration. public bool IsAxisAExisted { get; } Property Value bool IsAxisBExisted Gets whether the B axis exists in the machine configuration. public bool IsAxisBExisted { get; } Property Value bool IsAxisCExisted Gets whether the C axis exists in the machine configuration. public bool IsAxisCExisted { get; } Property Value bool IsoCoordinateTable ISO coordinate table. i.e., CoordinateTable For G54 series. public IsoCoordinateTable IsoCoordinateTable { get; set; } Property Value IsoCoordinateTable MaxRotarySpeedABC_degds For safety reason, internal use only. Maximum rotary speed in degds. public Vec3d MaxRotarySpeedABC_degds { get; set; } Property Value Vec3d MaxRotarySpeedABC_radds Maximum rotary speed in rad/s. public Vec3d MaxRotarySpeedABC_radds { get; set; } Property Value Vec3d MaxSpindleSpeed_rpm Gets or sets the maximum spindle speed in revolutions per minute. public double MaxSpindleSpeed_rpm { get; set; } Property Value double MillingToolOffsetTable Gets or sets the milling tool offset table for tool compensation. public MillingToolOffsetTable MillingToolOffsetTable { get; set; } Property Value MillingToolOffsetTable RapidFeedrate_mmdmin Rapid move speed in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid move speed in mm/s. public double RapidFeedrate_mmds { get; set; } Property Value double RefNcLineOnInit Gets or sets the reference NC line used during initialization. public HardNcLine RefNcLineOnInit { get; set; } Property Value HardNcLine StrokeLimitAbc_rad Gets or sets the ABC axis stroke limits in radians. public Box3d StrokeLimitAbc_rad { get; set; } Property Value Box3d StrokeLimitXyz_mm Gets or sets the XYZ axis stroke limits in millimeters. public Box3d StrokeLimitXyz_mm { get; set; } Property Value Box3d ToolingMcAbc_deg 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. Unit is degree. public Vec3d ToolingMcAbc_deg { get; set; } Property Value Vec3d ToolingMcAbc_rad Gets or sets the rotary machine coordinate for tooling operations. 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. public Vec3d ToolingMcAbc_rad { get; set; } Property Value Vec3d ToolingMcXyz Gets or sets the translation machine coordinate for tooling operations. 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.) public Vec3d ToolingMcXyz { get; set; } Property Value Vec3d ToolingTime Tool changing duration in sec. public TimeSpan ToolingTime { get; set; } Property Value TimeSpan XName Name for XML IO. public static string XName { get; } Property Value string XyzabcSolver Gets or sets the coordinate converter used for transformations between different coordinate systems. public XyzabcSolver XyzabcSolver { get; set; } Property Value XyzabcSolver Methods CheckStrokeLimit(DVec3d, IProgress<IMessage>) Check stroke limit. public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IProgress<IMessage> mixedProgress) Parameters mcXyzabc_mm_rad DVec3d Machine coordinates in mm and radians. mixedProgress IProgress<IMessage> Message kit for error reporting. Returns bool Is under stroke limit. IsAxisExisted(int) Determines whether a specific rotary axis exists in the machine configuration. public bool IsAxisExisted(int dir) Parameters dir int The direction index (0=A, 1=B, 2=C). Returns bool True if the specified axis exists; otherwise, false. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.HardNcLine.html": {
"href": "api/Hi.Numerical.HardNcLine.html",
"title": "Class HardNcLine | HiAPI-C# 2025",
"summary": "Class HardNcLine Namespace Hi.Numerical Assembly HiUniNc.dll Represents a line in the NC program with its associated data and operations. public class HardNcLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex, IFlagText, ISentenceCarrier, IGetSentence, ISentenceIndexed Inheritance object HardNcLine Implements IIndexedFileLine IFileLine IFileLineIndex IGetIndexedFileLine IGetFileLineIndex IFlagText ISentenceCarrier IGetSentence ISentenceIndexed Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag, bool) HardNcUtil.IsFlagKeeping(HardNcLine, HardNcLine, NcFlag, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress<IMessage>) Ctor from the reference HardNcLine. public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, int sentenceIndex, out NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv NC environment fileLine IndexedFileLine file line preNcLine HardNcLine reference HardNcLine that this HardNcLine copy from. If previous HardNcLine is not null, apply previous HardNcLine. sentenceIndex int 0-based ordinal in NC execution order; stamped at construction and exposed via SentenceIndex. ncNoteCache NcNoteCache Output NC note cache mixedProgress IProgress<IMessage> Message host for warnings HardNcLine(HardNcEnv, IProgress<IMessage>) Ctor for initial state. The instance is the pre-pipeline seed (RefNcLineOnInit), so SentenceIndex is set to -1 as a “not in pipeline” sentinel. public HardNcLine(HardNcEnv ncEnv, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv mixedProgress IProgress<IMessage> Properties ArcNcArg NC arguments for arc commands. public ArcNcArg ArcNcArg { get; set; } Property Value ArcNcArg CoordinateInterpolationMode Gets the current coordinate interpolation mode (Cartesian or Polar). public CoordinateInterpolationMode CoordinateInterpolationMode { get; } Property Value CoordinateInterpolationMode F F. Feedrate on NC code. Note that this may not be the working feedrate. Some NC codes like G00 and G28 doesnt use F code. public double F { get; set; } Property Value double Remarks According to Fanuc manual, the default F is zero. Feedrate_mmdmin Feedrate on NC code in current mode in mm/min. See F. public double Feedrate_mmdmin { get; set; } Property Value double Feedrate_mmds Feedrate on NC code in current mode in mm/sec. public double Feedrate_mmds { get; set; } Property Value double FileIndex File Index. Start on 0. public int FileIndex { get; } Property Value int FileNo Gets the file number. [Present(\"File Number\", \"FileNo\", PhysicsUnit.None, \"G\")] public int FileNo { get; } Property Value int FilePath File path. [Present(\"File\", \"File\", PhysicsUnit.None, \"G\")] public string FilePath { get; } Property Value string FlagsText Gets a string representation of the active NC flags for this line. public string FlagsText { get; } Property Value string G28Arg Arguments for G28 commands. public G28Arg G28Arg { get; set; } Property Value G28Arg G52_Xyz Local coordinate system translation. public Vec3d G52_Xyz { get; set; } Property Value Vec3d G54SeriesCoordinateNum1000 Faunc Group14 value. Note that Heidenhain Datum shift is set by DatumTableId. public int G54SeriesCoordinateNum1000 { get; set; } Property Value int Group07NcArg Arguments for Group07 NC commands (tool radius compensation). public Group07NcArg Group07NcArg { get; set; } Property Value Group07NcArg Group07_D Radius compensation ID. Note that in Siemens controller, each tool ID has several D entry. public int Group07_D { get; set; } Property Value int Group08_H Height compensation ID. For Siemens Traori, the value is Tool ID. For Heidenhain, the value is Tool ID. public int Group08_H { get; set; } Property Value int Group09NcArg NC Argument of NC Group09. public Group09NcArg Group09NcArg { get; set; } Property Value Group09NcArg HeidenhainBlockCacheArg Heidenhain block cache arguments for various Heidenhain commands. public IHeidenhainBlockCacheArg HeidenhainBlockCacheArg { get; set; } Property Value IHeidenhainBlockCacheArg HeidenhainCycleDef247Q339 DATUM SETTING DATUM Number. public int HeidenhainCycleDef247Q339 { get; set; } Property Value int HeidenhainCycleDef7Arg Arguments for Heidenhain Cycle Definition 7 (datum shift). public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; } Property Value HeidenhainCycleDef7Arg HeidenhainM140MB HeidenhainM140(Retract the tool) MB value. MB is the retraction height. double.positiveInf is [MB MAX]. One shot command. public double HeidenhainM140MB { get; set; } Property Value double HeidenhainQMacroMap Dictionary mapping Q macro numbers to their string values for Heidenhain controllers. public Dictionary<int, string> HeidenhainQMacroMap { get; set; } Property Value Dictionary<int, string> HeidenhainToolAxisDir Direction of the tool axis for Heidenhain controllers. public int HeidenhainToolAxisDir { get; set; } Property Value int IndexedFileLine The file line information associated with this NC line. public IndexedFileLine IndexedFileLine { get; } Property Value IndexedFileLine IsAbsolutePositioning Gets a value indicating whether absolute positioning (G90) is active. public bool IsAbsolutePositioning { get; } Property Value bool IsHeightCompensationEnabled Gets a value indicating whether height compensation is enabled. public bool IsHeightCompensationEnabled { get; } Property Value bool IsOnArcCommand Gets a value indicating whether an arc command (G02 or G03) is active. public bool IsOnArcCommand { get; } Property Value bool IsPathPrepared Gets a value indicating whether the path is prepared (no radius compensation). public bool IsPathPrepared { get; } Property Value bool IsRadiusCompensationEnabled Gets a value indicating whether radius compensation is enabled. public bool IsRadiusCompensationEnabled { get; } Property Value bool IsToolCenterPointManagementEnabled Gets a value indicating whether tool center point management is enabled. public bool IsToolCenterPointManagementEnabled { get; } Property Value bool Line The line. [Present(\"Line\", \"Line\", PhysicsUnit.None, \"G\")] public string Line { get; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; } Property Value int LineNo Gets the line number. [Present(\"Line Number\", \"LineNo\", PhysicsUnit.None, \"G\")] public int LineNo { get; } Property Value int MachiningFeedrate_mmdmin Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/min. public double MachiningFeedrate_mmdmin { get; set; } Property Value double MachiningFeedrate_mmds Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/sec. public double MachiningFeedrate_mmds { get; set; } Property Value double McAbc_deg Gets or sets the machine ABC coordinates in degrees. public Vec3d McAbc_deg { get; set; } Property Value Vec3d McAbc_rad Machine coordinates in ABC format (radians). public Vec3d McAbc_rad { get; } Property Value Vec3d McXyz Gets or sets the machine coordinate XYZ values. public Vec3d McXyz { get; } Property Value Vec3d McXyzabc Machine coordinate ( with side radius compensation if existed). Point is XYZ. the unit is mm. Normal is ABC. the unit is radian. public DVec3d McXyzabc { get; } Property Value DVec3d NcFlagBitArray Internal Used. public BitArray NcFlagBitArray { get; } Property Value BitArray PausingNcArg public PausingNcArg PausingNcArg { get; set; } Property Value PausingNcArg Remarks Since this is base on OneShot Flag, so here has no copy ctor. PolarEntry Data structure for polar coordinates entry. public PolarEntry PolarEntry { get; set; } Property Value PolarEntry PreparationT Tool ID for preparation. public int PreparationT { get; set; } Property Value int ProgramOrthogonalPlaneNormal The orthogonal plane transform after tilting plane transform. Include G17, G18, G19 and plane of called G12p1. public Vec3d ProgramOrthogonalPlaneNormal { get; } Property Value Vec3d ProgramPos ProgramPos can be cartesian XYZ or polar XCZ with radius-based X, depends on CoordinateInterpolationMode. public Vec3d ProgramPos { get; } Property Value Vec3d ProgramXyz XYZ in Feature Coordinate. Cartesian Program Position XYZ, Abs Program Position (as G90 position). NC coordinate position is the position processed by modal flags. NC coordinate position is the position after radius compensation. The NC(Program) coordinate position is comprehensible by User. MC NC conversion may raise floating error. The floating error raise the cutting force issue, especially for bottom cutting force. Hence the NC values have to be memorized. public Vec3d ProgramXyz { get; } Property Value Vec3d Remarks NC is the better source property than MC. Ex. a NC line command: X100. The Y and Z value may vary if using MC converting back to NC. The error of Y and Z will keeps accumulating until the next explicit YZ command assignment. The error maybe up to 3e-5 in current case. the bounding box size of the case is not large (TT.20230815). Also note that if using Arc command for a complete circle, the begin NC XYZ and the end NC XYZ have to be equaled. Otherwise, it will become only a very small arc rather than the circle. So be care that do not change the NC XYZ if not needed. RadiusCompensationBuf Internal use. public RadiusCompensationBuf RadiusCompensationBuf { get; set; } Property Value RadiusCompensationBuf RapidFeedrate_mmdmin Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/sec. public double RapidFeedrate_mmds { get; set; } Property Value double S S. Spindle speed. public int S { get; set; } Property Value int SentenceIndex 0-based ordinal in NC execution order, stamped at construction by HardNcRunner (source-side) or by NcOptProc (optimized-side, a fresh independent count). Init-state lines (RefNcLineOnInit) carry -1 as a “not in pipeline” sentinel. public int SentenceIndex { get; } Property Value int SpindleSpeed_radds Spindle speed in radian/s. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double T Current equiped Tool ID. public int T { get; set; } Property Value int TiltPlaneNcArg Arguments related to tilted plane operations. public ITiltPlaneNcArg TiltPlaneNcArg { get; set; } Property Value ITiltPlaneNcArg Methods GetAttacherMat(HardNcEnv) Gets the attacher transformation matrix for the current machine coordinates. public Mat4d GetAttacherMat(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv The NC environment. Returns Mat4d The attacher transformation matrix. GetCompensationHeight(HardNcEnv, IProgress<IMessage>) Gets the tool height compensation value for this NC line. public double GetCompensationHeight(HardNcEnv ncEnv, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv NC environment mixedProgress IProgress<IMessage> Message host for warnings Returns double Height compensation value GetCompensationRadius(CncBrand, MillingToolOffsetTable, IProgress<IMessage>) Gets the tool radius compensation value for this NC line. public double GetCompensationRadius(CncBrand cncBrand, MillingToolOffsetTable millingToolOffsetTable, IProgress<IMessage> mixedProgress) Parameters cncBrand CncBrand CNC brand millingToolOffsetTable MillingToolOffsetTable Milling tool offset table mixedProgress IProgress<IMessage> Message host for warnings Returns double Radius compensation value GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetG5xCoordinateOffset(HardNcEnv) Gets the G5x coordinate offset for this NC line. public Vec3d GetG5xCoordinateOffset(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns Vec3d The G5x coordinate offset vector GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetMcByProgramPos(Vec3d, HardNcEnv, NcNoteCache, IProgress<IMessage>, out Vec3d) Internal Use. public DVec3d GetMcByProgramPos(Vec3d programPos, HardNcEnv ncEnv, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress, out Vec3d programXyz) Parameters programPos Vec3d ncEnv HardNcEnv ncNoteCache NcNoteCache mixedProgress IProgress<IMessage> programXyz Vec3d Returns DVec3d GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence GetSourceCommand() public IIndexedFileLine GetSourceCommand() Returns IIndexedFileLine GetTiltMat4d(HardNcEnv, out Mat4d) Internal Use Only. public bool? GetTiltMat4d(HardNcEnv ncEnv, out Mat4d tableToFeatureTransform) Parameters ncEnv HardNcEnv NC environment. tableToFeatureTransform Mat4d Transform from NC to Table without tool compensation and linear coordinate offset (such as G55,G56..). Returns bool? True if G68.2 is successfully applied, false if not, and null if not applicable. HasSyntaxXyz(HardNcEnv) Determines whether the line contains syntactic XYZ coordinates. public bool HasSyntaxXyz(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns bool True if syntactic XYZ coordinates are present; otherwise, false. RebuildByMc(HardNcEnv, DVec3d, NcNoteCache, IProgress<IMessage>) Internal Use Only. For NC opt. public void RebuildByMc(HardNcEnv ncEnv, DVec3d mc, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv NC environment. mc DVec3d MC coordinates. ncNoteCache NcNoteCache NC line cache. mixedProgress IProgress<IMessage> Message host for logging and reporting. RebuildByProgramXyz(HardNcEnv, Vec3d, NcNoteCache, IProgress<IMessage>) Internal Use Only. For NC opt. public void RebuildByProgramXyz(HardNcEnv ncEnv, Vec3d programXyz, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv NC environment. programXyz Vec3d Program XYZ coordinates. ncNoteCache NcNoteCache NC note cache. mixedProgress IProgress<IMessage> Message host for logging and reporting. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.HardNcUtil.html": {
"href": "api/Hi.Numerical.HardNcUtil.html",
"title": "Class HardNcUtil | HiAPI-C# 2025",
"summary": "Class HardNcUtil Namespace Hi.Numerical Assembly HiUniNc.dll Utility class for working with NC code. public static class HardNcUtil Inheritance object HardNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields NcNameTemplateReplacingKeyword Keyword for replacing NC name in templates. public const string NcNameTemplateReplacingKeyword = \"[NcName]\" Field Value string RelNcFileTemplateReplacingKeyword Keyword for replacing NC file path in templates. public const string RelNcFileTemplateReplacingKeyword = \"[NcFile]\" Field Value string Properties LineBeginCsScriptRegex Gets the regular expression for matching line-beginning C# script markers. public static Regex LineBeginCsScriptRegex { get; } Property Value Regex LineEndCsScriptRegex Gets the regular expression for matching line-ending C# script markers. public static Regex LineEndCsScriptRegex { get; } Property Value Regex Methods GetSimCsScript(string, CncBrand, out string, out string) Extracts C# scripts from the specified NC line text. public static void GetSimCsScript(string ncLineText, CncBrand cncBrand, out string lineBeginCsScript, out string lineEndCsScript) Parameters ncLineText string The NC line text to process. cncBrand CncBrand The CNC brand to determine the comment style. lineBeginCsScript string When this method returns, contains the line-beginning C# script if found; otherwise, null. lineEndCsScript string When this method returns, contains the line-ending C# script if found; otherwise, null. GrabComment(string, CncBrand, out HardNcComment) Extracts and removes a comment from the given NC line text based on the CNC brand. public static string GrabComment(string srcNcLineText, CncBrand brand, out HardNcComment ncComment) Parameters srcNcLineText string The NC line text to process. brand CncBrand The CNC brand to determine the comment style. ncComment HardNcComment When this method returns, contains the extracted comment, or null if no comment was found. Returns string The NC line text with the comment removed if found; otherwise, the original text. GrabDoubleABC(ref string, bool) Grabs and removes A, B, C rotary axis values from the NC text. public static Vec3d GrabDoubleABC(ref string text, bool enableIntegerShrink) Parameters text string The NC text to search and modify. enableIntegerShrink bool Whether to shrink text's integer values by 0.001. Returns Vec3d A Vec3d containing the A, B, C values. GrabDoubleXYZ(ref string, bool) Grabs and removes X, Y, Z coordinate values from the NC text. public static Vec3d GrabDoubleXYZ(ref string text, bool enableIntegerShrink) Parameters text string The NC text to search and modify. enableIntegerShrink bool Whether to shrink text's integer values by 0.001. Returns Vec3d A Vec3d containing the X, Y, Z values. GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string tag) Parameters text string The NC text to search and modify. tag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabHeadPercentComment(string, out HardNcComment) Extracts and removes a head percent comment from the given NC line text. public static string GrabHeadPercentComment(string ncLineText, out HardNcComment ncComment) Parameters ncLineText string The NC line text to process. ncComment HardNcComment When this method returns, contains the extracted comment, or null if no comment was found. Returns string The NC line text with the comment removed if found; otherwise, the original text. IsFlagChanging(HardNcLine, HardNcLine, NcFlag) Determines if a flag is changing between two NcLines public static bool IsFlagChanging(this HardNcLine curNcLine, HardNcLine preNcLine, NcFlag ncFlag) Parameters curNcLine HardNcLine The current NcLine preNcLine HardNcLine The previous NcLine ncFlag NcFlag The flag to check Returns bool True if the flag is changing, false otherwise IsFlagChanging(HardNcLine, HardNcLine, NcFlag, bool) Checks if the flag is changing with a specific direction (on or off) between two NC lines. public static bool IsFlagChanging(this HardNcLine curNcLine, HardNcLine preNcLine, NcFlag ncFlag, bool changingOn) Parameters curNcLine HardNcLine The current NC line. preNcLine HardNcLine The previous NC line. ncFlag NcFlag The flag to check. changingOn bool true if flag set to on; otherwise, the flag set to off Returns bool True if the flag is changing in the specified direction; otherwise, false. IsFlagChanging(LinkedListNode<HardNcLine>, NcFlag) Determines if a flag is changing in the current NcLine node compared to the previous node public static bool IsFlagChanging(this LinkedListNode<HardNcLine> curNcLineNode, NcFlag ncFlag) Parameters curNcLineNode LinkedListNode<HardNcLine> The current NcLine node ncFlag NcFlag The flag to check Returns bool True if the flag is changing, false otherwise IsFlagChanging(LinkedListNode<HardNcLine>, NcFlag, bool) Checks if the flag is changing with a specific direction (on or off). public static bool IsFlagChanging(this LinkedListNode<HardNcLine> curNcLineNode, NcFlag ncFlag, bool changingOn) Parameters curNcLineNode LinkedListNode<HardNcLine> The current NC line node. ncFlag NcFlag The flag to check. changingOn bool true if flag set to on; otherwise, the flag set to off Returns bool True if the flag is changing in the specified direction; otherwise, false. IsFlagKeeping(HardNcLine, HardNcLine, NcFlag, bool) Checks if the flag is keeping the same state between two NC lines. public static bool IsFlagKeeping(this HardNcLine curNcLine, HardNcLine preNcLine, NcFlag ncFlag, bool keepingOn) Parameters curNcLine HardNcLine The current NC line. preNcLine HardNcLine The previous NC line. ncFlag NcFlag The flag to check. keepingOn bool true if checking for kept on state; otherwise, checking for kept off state Returns bool True if the flag is keeping the specified state; otherwise, false. RemoveAllCsScript(string, CncBrand) Removes all C# script markers and their contents from the specified NC line text. public static string RemoveAllCsScript(string ncLineText, CncBrand cncBrand) Parameters ncLineText string The NC line text to process. cncBrand CncBrand The CNC brand to determine the comment style. Returns string The NC line text with all C# scripts removed. SetTagNumber(ref string, string, double, string) SetTagNumberWithoutDecimalTailZero. public static void SetTagNumber(ref string ncLineTextWithoutComment, string tag, double tagNumber, string tagNumberFormat) Parameters ncLineTextWithoutComment string tag string tagNumber double tagNumberFormat string"
},
"api/Hi.Numerical.IFlexDictionaryHost-1.html": {
"href": "api/Hi.Numerical.IFlexDictionaryHost-1.html",
"title": "Interface IFlexDictionaryHost<T> | HiAPI-C# 2025",
"summary": "Interface IFlexDictionaryHost<T> Namespace Hi.Numerical Assembly HiMech.dll Interface of FlexDictionary. Provider of additional quantity source. public interface IFlexDictionaryHost<T> Type Parameters T Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) FlexDictionaryUtil.CallFlexDictionary<T>(IFlexDictionaryHost<T>) FlexDictionaryUtil.GetFlexDictionaryBytes<T>(IFlexDictionaryHost<T>, IntegerKeyDictionaryConverter<T>) FlexDictionaryUtil.WriteFlexDictionary<T>(IFlexDictionaryHost<T>, BinaryWriter, IntegerKeyDictionaryConverter<T>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FlexDictionary Gets or sets the flexible dictionary. Dictionary<string, T> FlexDictionary { get; set; } Property Value Dictionary<string, T>"
},
"api/Hi.Numerical.IGetFeedrate.html": {
"href": "api/Hi.Numerical.IGetFeedrate.html",
"title": "Interface IGetFeedrate | HiAPI-C# 2025",
"summary": "Interface IGetFeedrate Namespace Hi.Numerical Assembly HiGeom.dll Interface for retrieving feedrate information. public interface IGetFeedrate Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) NumericUtil.GetFeedrate_mmdmin(IGetFeedrate) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetFeedrate_mmds() Gets the program feedrate in millimeters per second. double GetFeedrate_mmds() Returns double Feedrate in mm/s"
},
"api/Hi.Numerical.IGetSpindleSpeed.html": {
"href": "api/Hi.Numerical.IGetSpindleSpeed.html",
"title": "Interface IGetSpindleSpeed | HiAPI-C# 2025",
"summary": "Interface IGetSpindleSpeed Namespace Hi.Numerical Assembly HiGeom.dll Interface for retrieving spindle speed and direction information. public interface IGetSpindleSpeed Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) NumericUtil.GetSpindleCyclePeriod(IGetSpindleSpeed) NumericUtil.GetSpindleCyclePeriod_s(IGetSpindleSpeed) NumericUtil.GetSpindleSpeed_rpm(IGetSpindleSpeed) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSpindleDirection() Gets the spindle rotation direction. SpindleDirection GetSpindleDirection() Returns SpindleDirection The spindle direction (clockwise, counterclockwise, or stopped) GetSpindleSpeed_radds() Gets the spindle speed in radians per second. double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s"
},
"api/Hi.Numerical.INcRunner.html": {
"href": "api/Hi.Numerical.INcRunner.html",
"title": "Interface INcRunner | HiAPI-C# 2025",
"summary": "Interface INcRunner Namespace Hi.Numerical Assembly HiMech.dll 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 INcRunner Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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 RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) Runs raw NC program lines and yields source sentence and Act pairs. IEnumerable<SourcedActEntry> RunNcLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the NC program file lines IEnumerable<string> The enumerable collection of NC program lines machiningSession MachiningSession Session-scoped state shared across multiple RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). 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 Returns IEnumerable<SourcedActEntry> Enumerable of source sentence and Act pairs"
},
"api/Hi.Numerical.ISetFeedrate.html": {
"href": "api/Hi.Numerical.ISetFeedrate.html",
"title": "Interface ISetFeedrate | HiAPI-C# 2025",
"summary": "Interface ISetFeedrate Namespace Hi.Numerical Assembly HiGeom.dll Interface for setting feedrate information. public interface ISetFeedrate Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) NumericUtil.SetFeedrate_mmdmin(ISetFeedrate, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods SetFeedrate_mmds(double) Sets the feedrate in millimeters per second. void SetFeedrate_mmds(double feedrate_mmds) Parameters feedrate_mmds double Feedrate value in mm/s"
},
"api/Hi.Numerical.ISetSpindleSpeed.html": {
"href": "api/Hi.Numerical.ISetSpindleSpeed.html",
"title": "Interface ISetSpindleSpeed | HiAPI-C# 2025",
"summary": "Interface ISetSpindleSpeed Namespace Hi.Numerical Assembly HiGeom.dll Interface for setting spindle speed. public interface ISetSpindleSpeed Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) NumericUtil.SetSpindleSpeed_rpm(ISetSpindleSpeed, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods SetSpindleSpeed_radds(double) Sets the spindle speed in radians per second. void SetSpindleSpeed_radds(double spindleSpeed_radds) Parameters spindleSpeed_radds double Spindle speed value in rad/s"
},
"api/Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html": {
"href": "api/Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html",
"title": "Class FeedPerCycleMachiningMotionResolution | HiAPI-C# 2025",
"summary": "Class FeedPerCycleMachiningMotionResolution Namespace Hi.Numerical.MachiningMotionResolutionUtils Assembly HiMech.dll Automatic resolution by feed per spindle cycle. public class FeedPerCycleMachiningMotionResolution : IMachiningMotionResolution, IMakeXmlSource, IToXElement Inheritance object FeedPerCycleMachiningMotionResolution Implements IMachiningMotionResolution IMakeXmlSource IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FeedPerCycleMachiningMotionResolution() Ctor. public FeedPerCycleMachiningMotionResolution() FeedPerCycleMachiningMotionResolution(XElement) Ctor. public FeedPerCycleMachiningMotionResolution(XElement src) Parameters src XElement XML Properties LinearResolution_mm Linear axis resolution in millimeter. public double LinearResolution_mm { get; } Property Value double Remarks setter is for internal usage MinLinearResolution_mm Optional floor (millimetres) for LinearResolution_mm after feed-per-cycle scaling; zero disables clamping. public double MinLinearResolution_mm { get; set; } Property Value double RotaryResolution_deg Rotary axis resolution in degree. public double RotaryResolution_deg { get; } Property Value double Remarks setter is for internal usage RotaryResolution_rad Rotary axis resolution in radian. public double RotaryResolution_rad { get; } Property Value double Remarks setter is for internal usage Scale Gets or sets the scale factor for resolution calculation. Default value is 1. public double Scale { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods AdjustMotionResolution(double, double) Adjusts the resolution based on feed rate and spindle speed. public void AdjustMotionResolution(double feedrate_mmds, double spindleSpeed_radds) Parameters feedrate_mmds double Feed rate in mm per second spindleSpeed_radds double Spindle speed in radians per second MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html": {
"href": "api/Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html",
"title": "Class FeedPerToothMachiningMotionResolution | HiAPI-C# 2025",
"summary": "Class FeedPerToothMachiningMotionResolution Namespace Hi.Numerical.MachiningMotionResolutionUtils Assembly HiMech.dll Automatic resolution by feed per tooth. public class FeedPerToothMachiningMotionResolution : IMachiningMotionResolution, IMakeXmlSource, IToXElement Inheritance object FeedPerToothMachiningMotionResolution Implements IMachiningMotionResolution IMakeXmlSource IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FeedPerToothMachiningMotionResolution() Ctor. public FeedPerToothMachiningMotionResolution() Properties LinearResolution_mm Linear axis resolution in millimeter. public double LinearResolution_mm { get; } Property Value double Remarks setter is for internal usage RotaryResolution_deg Rotary axis resolution in degree. public double RotaryResolution_deg { get; set; } Property Value double Remarks setter is for internal usage RotaryResolution_rad Rotary axis resolution in radian. public double RotaryResolution_rad { get; } Property Value double Remarks setter is for internal usage XName Name for XML IO. public static string XName { get; } Property Value string Methods AdjustResolution(int, double, double) Adjusts the resolution based on flute number, feed rate and spindle speed. public void AdjustResolution(int fluteNum, double feedrate_mmds, double spindleSpeed_radds) Parameters fluteNum int Number of flutes in the cutting tool feedrate_mmds double Feed rate in mm per second spindleSpeed_radds double Spindle speed in radians per second MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html": {
"href": "api/Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html",
"title": "Class FixedMachiningMotionResolution | HiAPI-C# 2025",
"summary": "Class FixedMachiningMotionResolution Namespace Hi.Numerical.MachiningMotionResolutionUtils Assembly HiMech.dll Represents a fixed machining motion resolution with user-defined values. public class FixedMachiningMotionResolution : IMachiningMotionResolution, IMakeXmlSource, IToXElement Inheritance object FixedMachiningMotionResolution Implements IMachiningMotionResolution IMakeXmlSource IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FixedMachiningMotionResolution() Ctor. public FixedMachiningMotionResolution() FixedMachiningMotionResolution(double, double) Ctor. public FixedMachiningMotionResolution(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double rotaryResolution_deg double FixedMachiningMotionResolution(XElement) Ctor. public FixedMachiningMotionResolution(XElement src) Parameters src XElement XML Properties LinearResolution_mm Linear axis resolution in millimeter. public double LinearResolution_mm { get; set; } Property Value double RotaryResolution_deg Rotary axis resolution in degree. public double RotaryResolution_deg { get; set; } Property Value double RotaryResolution_rad Rotary axis resolution in radian. public double RotaryResolution_rad { get; set; } Property Value double 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 and chains Reg(factory) on dependents. 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.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html": {
"href": "api/Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html",
"title": "Interface IMachiningMotionResolution | HiAPI-C# 2025",
"summary": "Interface IMachiningMotionResolution Namespace Hi.Numerical.MachiningMotionResolutionUtils Assembly HiMech.dll Interface of Machining Cycle Resolution. public interface IMachiningMotionResolution : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties LinearResolution_mm Linear axis resolution in millimeter. double LinearResolution_mm { get; } Property Value double RotaryResolution_deg Rotary axis resolution in degree. double RotaryResolution_deg { get; } Property Value double RotaryResolution_rad Rotary axis resolution in radian. double RotaryResolution_rad { get; } Property Value double"
},
"api/Hi.Numerical.MachiningMotionResolutionUtils.html": {
"href": "api/Hi.Numerical.MachiningMotionResolutionUtils.html",
"title": "Namespace Hi.Numerical.MachiningMotionResolutionUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.MachiningMotionResolutionUtils Classes FeedPerCycleMachiningMotionResolution Automatic resolution by feed per spindle cycle. FeedPerToothMachiningMotionResolution Automatic resolution by feed per tooth. FixedMachiningMotionResolution Represents a fixed machining motion resolution with user-defined values. Interfaces IMachiningMotionResolution Interface of Machining Cycle Resolution."
},
"api/Hi.Numerical.MechNcUtil.html": {
"href": "api/Hi.Numerical.MechNcUtil.html",
"title": "Class MechNcUtil | HiAPI-C# 2025",
"summary": "Class MechNcUtil Namespace Hi.Numerical Assembly HiMech.dll NC Utility. public static class MechNcUtil Inheritance object MechNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetNoInterpolationOrdinaryProgramXcz_rad(Vec3d, double, Vec3d) Internal Use Only. No interpolation may occur angle cycle problem. The function is usable only if ensuring the angle difference is within helf cycle. public static Vec3d GetNoInterpolationOrdinaryProgramXcz_rad(Vec3d curProgramPolarXcz, double preMcC_rad, Vec3d preProgramPolarXcz) Parameters curProgramPolarXcz Vec3d Current program polar XCZ preMcC_rad double Previous machine C angle in radians preProgramPolarXcz Vec3d Previous program polar XCZ Returns Vec3d Ordinary program XCZ coordinates in radians GetOrdinaryProgramXcz_rad(Vec3d, double, Vec3d) In Polar coordinate interpolation mode (G12.1), rotary is assigned by hypothesis value (called C. Some controller accepts Y as equivalent.). While converting the hypothesis value to rotary angle occurs problem of angle cycle. The function get the resolved angle. public static Vec3d GetOrdinaryProgramXcz_rad(Vec3d curCentralProgramPolarPos, double preMcC_rad, Vec3d preCentralProgramPolarPos) Parameters curCentralProgramPolarPos Vec3d Current central program polar position preMcC_rad double Previous machine C angle in radians preCentralProgramPolarPos Vec3d Previous central program polar position Returns Vec3d Ordinary program XCZ coordinates in radians GetProgramPolarRxczByOrdinaryProgramXcz(Vec3d) Converts ordinary program XCZ coordinates to program polar RXCZ coordinates. public static Vec3d GetProgramPolarRxczByOrdinaryProgramXcz(Vec3d ordinaryProgramXcz_rad) Parameters ordinaryProgramXcz_rad Vec3d Ordinary program XCZ coordinates in radians Returns Vec3d Program polar RXCZ coordinates GetUnresolvedAngleOrdinaryProgramXcz_rad(Vec3d) OrdinaryProgramPos: Cartesian X (radius) and Rotation C in ard. the C rotation angle has not been unresolved from angle cycling. central(X=0,C=0) is coordinate origin. public static Vec3d GetUnresolvedAngleOrdinaryProgramXcz_rad(Vec3d centralProgramPolarXcz) Parameters centralProgramPolarXcz Vec3d Returns Vec3d"
},
"api/Hi.Numerical.MillingToolOffsetTable.html": {
"href": "api/Hi.Numerical.MillingToolOffsetTable.html",
"title": "Class MillingToolOffsetTable | HiAPI-C# 2025",
"summary": "Class MillingToolOffsetTable Namespace Hi.Numerical Assembly HiUniNc.dll Offset table for milling tool. The key is Offset ID (H or D in NC code). public class MillingToolOffsetTable : Dictionary<int, MillingToolOffsetTableRow>, IDictionary<int, MillingToolOffsetTableRow>, ICollection<KeyValuePair<int, MillingToolOffsetTableRow>>, IReadOnlyDictionary<int, MillingToolOffsetTableRow>, IReadOnlyCollection<KeyValuePair<int, MillingToolOffsetTableRow>>, IEnumerable<KeyValuePair<int, MillingToolOffsetTableRow>>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, IMakeXmlSource Inheritance object Dictionary<int, MillingToolOffsetTableRow> MillingToolOffsetTable Implements IDictionary<int, MillingToolOffsetTableRow> ICollection<KeyValuePair<int, MillingToolOffsetTableRow>> IReadOnlyDictionary<int, MillingToolOffsetTableRow> IReadOnlyCollection<KeyValuePair<int, MillingToolOffsetTableRow>> IEnumerable<KeyValuePair<int, MillingToolOffsetTableRow>> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable IMakeXmlSource Inherited Members Dictionary<int, MillingToolOffsetTableRow>.Add(int, MillingToolOffsetTableRow) Dictionary<int, MillingToolOffsetTableRow>.Clear() Dictionary<int, MillingToolOffsetTableRow>.ContainsKey(int) Dictionary<int, MillingToolOffsetTableRow>.ContainsValue(MillingToolOffsetTableRow) Dictionary<int, MillingToolOffsetTableRow>.EnsureCapacity(int) Dictionary<int, MillingToolOffsetTableRow>.GetAlternateLookup<TAlternateKey>() Dictionary<int, MillingToolOffsetTableRow>.GetEnumerator() Dictionary<int, MillingToolOffsetTableRow>.OnDeserialization(object) Dictionary<int, MillingToolOffsetTableRow>.Remove(int) Dictionary<int, MillingToolOffsetTableRow>.Remove(int, out MillingToolOffsetTableRow) Dictionary<int, MillingToolOffsetTableRow>.TrimExcess() Dictionary<int, MillingToolOffsetTableRow>.TrimExcess(int) Dictionary<int, MillingToolOffsetTableRow>.TryAdd(int, MillingToolOffsetTableRow) Dictionary<int, MillingToolOffsetTableRow>.TryGetAlternateLookup<TAlternateKey>(out Dictionary<int, MillingToolOffsetTableRow>.AlternateLookup<TAlternateKey>) Dictionary<int, MillingToolOffsetTableRow>.TryGetValue(int, out MillingToolOffsetTableRow) Dictionary<int, MillingToolOffsetTableRow>.Comparer Dictionary<int, MillingToolOffsetTableRow>.Count Dictionary<int, MillingToolOffsetTableRow>.Capacity Dictionary<int, MillingToolOffsetTableRow>.this[int] Dictionary<int, MillingToolOffsetTableRow>.Keys Dictionary<int, MillingToolOffsetTableRow>.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) DictionaryUtil.Retrieve<K, V>(Dictionary<K, V>, K, out V, bool) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, TValue) DictionaryUtil.GetOrCreate<TKey, TValue>(IDictionary<TKey, TValue>, TKey, Func<TValue>) DictionaryUtil.TryGetValueByKeys<TKey, TValue>(IDictionary<TKey, TValue>, IEnumerable<TKey>, out TValue) StringUtil.ToDotSplitedString<T>(IEnumerable<T>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingToolOffsetTable() Initializes a new instance of the MillingToolOffsetTable class. public MillingToolOffsetTable() MillingToolOffsetTable(MillingToolOffsetTable) Initializes a new instance of the MillingToolOffsetTable class by copying an existing table. public MillingToolOffsetTable(MillingToolOffsetTable src) Parameters src MillingToolOffsetTable The source table to copy. MillingToolOffsetTable(XElement) Initializes a new instance of the MillingToolOffsetTable class from XML. public MillingToolOffsetTable(XElement src) Parameters src XElement The XML element containing tool offset data. Fields XName Gets the XML element name for the MillingToolOffsetTable. public static string XName Field Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of this offset table. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for relative paths. relFile string The relative file path. exhibitionOnly bool Returns XElement An XML element representing this offset table. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse) Updates the ideal tool offsets in this table based on a tool house. public void UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse millingToolHouse) Parameters millingToolHouse MachiningToolHouse The machining tool house containing tool information."
},
"api/Hi.Numerical.MillingToolOffsetTableRow.html": {
"href": "api/Hi.Numerical.MillingToolOffsetTableRow.html",
"title": "Class MillingToolOffsetTableRow | HiAPI-C# 2025",
"summary": "Class MillingToolOffsetTableRow Namespace Hi.Numerical Assembly HiUniNc.dll Raw of MillingToolOffsetTable public class MillingToolOffsetTableRow Inheritance object MillingToolOffsetTableRow Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MillingToolOffsetTableRow() Ctor. public MillingToolOffsetTableRow() MillingToolOffsetTableRow(XElement) Initializes a new instance of the MillingToolOffsetTableRow class from XML. public MillingToolOffsetTableRow(XElement src) Parameters src XElement The XML element containing tool offset row data. Properties AxialWear_mm Gets or sets the axial wear of the tool in millimeters. public double AxialWear_mm { get; set; } Property Value double FullHeight_mm Gets the total height of the tool including wear in millimeters. public double FullHeight_mm { get; } Property Value double FullRadius_mm Gets the total radius of the tool including wear in millimeters. public double FullRadius_mm { get; } Property Value double IdealHeight_mm Gets or sets the ideal height of the tool in millimeters. public double IdealHeight_mm { get; set; } Property Value double IdealRadius_mm Gets or sets the ideal radius of the tool in millimeters. public double IdealRadius_mm { get; set; } Property Value double RadialWear_mm Gets or sets the radial wear of the tool in millimeters. public double RadialWear_mm { get; set; } Property Value double XName XML Name. public static string XName { get; } Property Value string Methods Reg(XFactory) Registers this 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() Converts this offset table row to an XML element. public XElement ToXElement() Returns XElement An XML element representing this offset table row."
},
"api/Hi.Numerical.NcArgs.ArcNcArg.html": {
"href": "api/Hi.Numerical.NcArgs.ArcNcArg.html",
"title": "Class ArcNcArg | HiAPI-C# 2025",
"summary": "Class ArcNcArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Arc parameters for HardNcLine. Arc comes from G02,G03. public class ArcNcArg Inheritance object ArcNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ArcNcArg() Initializes a new instance of the ArcNcArg class. public ArcNcArg() ArcNcArg(ArcNcArg) Initializes a new instance of the ArcNcArg class by copying an existing instance. public ArcNcArg(ArcNcArg src) Parameters src ArcNcArg The source instance to copy. Properties Ijk Gets or sets the I, J, K values that define the center of the arc. public Vec3d Ijk { get; set; } Property Value Vec3d 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 L circle number. count as once cycle if not approach one cycle. public int L { get; set; } Property Value int Q Gets or sets the Q parameter value. public double Q { get; set; } Property Value double R Gets or sets the radius value for defining the arc. public double R { get; set; } Property Value double Methods GetCenterOrCenterOnBeginPlane(Vec3d, Vec3d, Vec3d, bool) Calculates the center point of the arc. public Vec3d GetCenterOrCenterOnBeginPlane(Vec3d beginXyz, Vec3d endXyz, Vec3d programOrthogonalPlaneNormal, bool isCcw) Parameters beginXyz Vec3d The start point of the arc. endXyz Vec3d The end point of the arc. programOrthogonalPlaneNormal Vec3d The normal vector of the plane containing the arc. isCcw bool True if the arc is counter-clockwise, false if clockwise. Returns Vec3d The center point of the arc."
},
"api/Hi.Numerical.NcArgs.G28Arg.html": {
"href": "api/Hi.Numerical.NcArgs.G28Arg.html",
"title": "Class G28Arg | HiAPI-C# 2025",
"summary": "Class G28Arg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents arguments for the G28 command (Return to Reference Point). public class G28Arg Inheritance object G28Arg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties IntermediateNcAbc_deg Gets or sets the intermediate NC A, B, C values in degrees. public Vec3d IntermediateNcAbc_deg { set; } Property Value Vec3d IntermediateNcAbc_rad Gets or sets the intermediate NC A, B, C values in radians. public Vec3d IntermediateNcAbc_rad { get; set; } Property Value Vec3d IntermediateNcXyz Nc: the program coordinate without tool height and radius compensation. public Vec3d IntermediateNcXyz { get; set; } Property Value Vec3d IntermediateNcXyzabc abc unit is in radian. public DVec3d IntermediateNcXyzabc { get; set; } Property Value DVec3d"
},
"api/Hi.Numerical.NcArgs.Group07NcArg.html": {
"href": "api/Hi.Numerical.NcArgs.Group07NcArg.html",
"title": "Class Group07NcArg | HiAPI-C# 2025",
"summary": "Class Group07NcArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll parameters of NcGroup07. Radius compensation. public class Group07NcArg Inheritance object Group07NcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PreAbsoluteXyzOnProgramCoordinate For Radius Compensation. Previous Nc XYZ by absolute feature (G90). Program coordinate is the last coordinate in the NC editing stack. public Vec3d PreAbsoluteXyzOnProgramCoordinate { get; set; } Property Value Vec3d"
},
"api/Hi.Numerical.NcArgs.Group09NcArg.html": {
"href": "api/Hi.Numerical.NcArgs.Group09NcArg.html",
"title": "Class Group09NcArg | HiAPI-C# 2025",
"summary": "Class Group09NcArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll NC Argument of NC Group09. public class Group09NcArg Inheritance object Group09NcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Group09NcArg() Ctor. public Group09NcArg() Group09NcArg(Group09NcArg) Copy ctor. public Group09NcArg(Group09NcArg src) Parameters src Group09NcArg Properties K Repeated times. Available for G81,G85,G86,G82,G83. public int K { get; set; } Property Value int P Bottom staying duration. unit is seconds. Available for G82. public double P { get; set; } Property Value double Q Feeding depth per stroke. Available for G83. public double Q { get; set; } Property Value double R Reference height. Available for G81,G85,G86,G82,G83. public double R { get; set; } Property Value double SiemensCycleType Siemens cycle type for MCALL mode. 81 = CYCLE81 (G81), 82 = CYCLE82 (G82), 83 = CYCLE83 (G83). 0 = not set / Fanuc mode. public int SiemensCycleType { get; set; } Property Value int Z Z at pass-through point. The pass-through point is at bottom. Available for G81,G85,G86,G82,G83. public double Z { get; set; } Property Value double"
},
"api/Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html": {
"href": "api/Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html",
"title": "Class HeidenhainCycleDef7Arg | HiAPI-C# 2025",
"summary": "Class HeidenhainCycleDef7Arg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Argument of Heidenhain CYCL DEF 7. Datum Shift. public class HeidenhainCycleDef7Arg : IHeidenhainBlockCacheArg Inheritance object HeidenhainCycleDef7Arg Implements IHeidenhainBlockCacheArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DatumTableId If table Id ==-1, the cycle does not use the table from this property. TableId is exclusive with SyntaxShift. public int DatumTableId { get; set; } Property Value int SyntaxShift If value is null, the cycle does not use the shift from this property. SyntaxShift is exclusive with DatumTableId. public Vec3d SyntaxShift { get; set; } Property Value Vec3d Methods ToString() Returns a string representation of the datum shift value. public override string ToString() Returns string A string representation based on either the datum table ID or the syntax shift value."
},
"api/Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html": {
"href": "api/Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html",
"title": "Class HeidenhainPlaneSpatialArg | HiAPI-C# 2025",
"summary": "Class HeidenhainPlaneSpatialArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents a Heidenhain spatial plane defined by rotation angles. public class HeidenhainPlaneSpatialArg : IHeidenhainPlaneArg, ITiltPlaneNcArg Inheritance object HeidenhainPlaneSpatialArg Implements IHeidenhainPlaneArg ITiltPlaneNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainPlaneSpatialArg(Vec3d, Mat4d) Initializes a new instance of the HeidenhainPlaneSpatialArg class. public HeidenhainPlaneSpatialArg(Vec3d spatialABC_rad, Mat4d tiltingTransformation) Parameters spatialABC_rad Vec3d The spatial rotation angles (A, B, C) in radians. tiltingTransformation Mat4d The transformation matrix representing the tilting operation. Properties SpatialABC_rad Gets the spatial rotation angles (A, B, C) in radians. public Vec3d SpatialABC_rad { get; } Property Value Vec3d TiltingTransformation Gets the transformation matrix representing the tilting operation. public Mat4d TiltingTransformation { get; } Property Value Mat4d 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.Numerical.NcArgs.IHeidenhainBlockCacheArg.html": {
"href": "api/Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html",
"title": "Interface IHeidenhainBlockCacheArg | HiAPI-C# 2025",
"summary": "Interface IHeidenhainBlockCacheArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Interface for Heidenhain block cache arguments. public interface IHeidenhainBlockCacheArg Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html": {
"href": "api/Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html",
"title": "Interface IHeidenhainPlaneArg | HiAPI-C# 2025",
"summary": "Interface IHeidenhainPlaneArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Interface for Heidenhain plane arguments. public interface IHeidenhainPlaneArg : ITiltPlaneNcArg Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SpatialABC_rad Gets the spatial rotation angles (A, B, C) in radians. Vec3d SpatialABC_rad { get; } Property Value Vec3d"
},
"api/Hi.Numerical.NcArgs.ITiltPlaneNcArg.html": {
"href": "api/Hi.Numerical.NcArgs.ITiltPlaneNcArg.html",
"title": "Interface ITiltPlaneNcArg | HiAPI-C# 2025",
"summary": "Interface ITiltPlaneNcArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Interface of Tilt plane NC Arg. i.e. Group16 and Heidenhain Plane argument. public interface ITiltPlaneNcArg Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.Numerical.NcArgs.NcArgCycle800.html": {
"href": "api/Hi.Numerical.NcArgs.NcArgCycle800.html",
"title": "Class NcArgCycle800 | HiAPI-C# 2025",
"summary": "Class NcArgCycle800 Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents parameters for Siemens CYCLE800 (Plane Tilting / Swivel). public class NcArgCycle800 : ITiltPlaneNcArg Inheritance object NcArgCycle800 Implements ITiltPlaneNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks CYCLE800 is used for 5-axis machining to define tilted working planes. The MODE parameter controls how angles A, B, C are interpreted. Properties A First rotation angle in degrees. Interpretation depends on MODE: Solid angle mode: Rotation about Z axis in XY plane Axial mode: Rotation of first rotary axis (typically A) public double A { get; set; } Property Value double AxisForA Gets the rotation axis for parameter A from bits 1-0. 01=X, 10=Y, 11=Z (00 is invalid/not used) public int AxisForA { get; } Property Value int AxisForB Gets the rotation axis for parameter B from bits 3-2. 01=X, 10=Y, 11=Z (00 is invalid/not used) public int AxisForB { get; } Property Value int AxisForC Gets the rotation axis for parameter C from bits 5-4. 01=X, 10=Y, 11=Z (00 is invalid/not used) public int AxisForC { get; } Property Value int B Second rotation angle in degrees. Interpretation depends on MODE: Solid angle mode: Rotation about Y axis in space Axial mode: Rotation of second rotary axis (typically B) public double B { get; set; } Property Value double C Third rotation angle in degrees. Interpretation depends on MODE: Axial mode: Rotation of third rotary axis (typically C) public double C { get; set; } Property Value double DIR Direction of rotation for positioning the rotary axes. public int DIR { get; set; } Property Value int FR Retract mode. Values: 0: No retraction 1: Retract Z axis (default) 2: Retract Z, X, Y axes 4: Maximum retraction in tool direction 5: Incremental retraction in tool direction public int FR { get; set; } Property Value int FR_I Value of incremental retraction in tool direction. public double FR_I { get; set; } Property Value double IsAxisByAxisMode Gets whether this is Axis by Axis mode (bits 7-6 = 00). public bool IsAxisByAxisMode { get; } Property Value bool IsDirectRotaryAxisMode Gets whether this is Direct Rotary Axis mode (bits 7-6 = 11). public bool IsDirectRotaryAxisMode { get; } Property Value bool IsProjectionAngleMode Gets whether this is Projection Angle mode (bits 7-6 = 10). public bool IsProjectionAngleMode { get; } Property Value bool IsSolidAngleMode Gets whether this is Solid Angle mode (bits 7-6 = 01). public bool IsSolidAngleMode { get; } Property Value bool MODE Swivel mode - controls angle interpretation. Binary coded decimal parameter: Bit 0 (1): 0=new, 1=additive Bit 1 (2): Reserved Bit 2 (4): Reserved Bit 3 (8): 0=solid angles (Euler), 1=RPY angles Bit 4 (16): 0=direct, 1=indirect Bit 5 (32): 0=XYZ rotation sequence, 1=ZYX rotation sequence Bit 6 (64): 0=angle refers to rotary axis, 1=angle refers to workpiece public int MODE { get; set; } Property Value int ST Swivel plane mode. UNITS DIGIT: 0: New (absolute) 1: Additive (relative to current) public int ST { get; set; } Property Value int SwivelModeType Gets the swivel mode type from bits 7-6. 00 = Axis by Axis, 01 = Solid Angle, 10 = Projection Angle, 11 = Direct Rotary Axis public int SwivelModeType { get; } Property Value int TC Name of swivel data record. “0” = Deselection of data record (cancels swivel) public string TC { get; set; } Property Value string XYZ0 Reference point prior to rotation (absolute coordinates). public Vec3d XYZ0 { get; set; } Property Value Vec3d XYZ1 Zero point offset after rotation. public Vec3d XYZ1 { get; set; } Property Value Vec3d Methods GetTableToFeatureMat4d() Gets the transformation matrix for this CYCLE800 swivel. public Mat4d GetTableToFeatureMat4d() Returns Mat4d The 4x4 transformation matrix from base to tilted coordinate system. ToString() Returns a string representation of this CYCLE800 argument. public override string ToString() Returns string"
},
"api/Hi.Numerical.NcArgs.NcArgG68.html": {
"href": "api/Hi.Numerical.NcArgs.NcArgG68.html",
"title": "Class NcArgG68 | HiAPI-C# 2025",
"summary": "Class NcArgG68 Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents arguments for G68 coordinate rotation command. public class NcArgG68 : ITiltPlaneNcArg Inheritance object NcArgG68 Implements ITiltPlaneNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcArgG68(Vec3d, Vec3d, double) Ctor. public NcArgG68(Vec3d rotationCenter, Vec3d IJK, double R) Parameters rotationCenter Vec3d IJK Vec3d R double Properties IJK Direction of the axis of rotation. public Vec3d IJK { get; set; } Property Value Vec3d Remarks in most case that cnc engineer made, ijk is zero. the cnc engineer used to use G17,G18,G19. R Angular displacement. public double R { get; set; } Property Value double RotationCenter Center of rotation on the X, Y, and Z axis or parallel axes. On NC coordinate. NC: the absolute program coordinate without tool height and radius compensation. public Vec3d RotationCenter { get; set; } Property Value Vec3d Methods GetTransformation(NcGroup02) Apply IJK first if ijk not all nan. public Mat4d GetTransformation(NcGroup02 group02) Parameters group02 NcGroup02 Returns Mat4d"
},
"api/Hi.Numerical.NcArgs.NcArgG68p2.html": {
"href": "api/Hi.Numerical.NcArgs.NcArgG68p2.html",
"title": "Class NcArgG68p2 | HiAPI-C# 2025",
"summary": "Class NcArgG68p2 Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents arguments for G68.2 three-dimensional coordinate conversion command. public class NcArgG68p2 : ITiltPlaneNcArg Inheritance object NcArgG68p2 Implements ITiltPlaneNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FeatureCoordinateOrigin by FANUC document: When specification is omitted, the X, Y, and Z of the basic three axes are assumed to be 0. On NC coordinate. NC: the absolute program coordinate without tool height and radius compensation. public Vec3d FeatureCoordinateOrigin { get; set; } Property Value Vec3d Ijk IJK follow zxz transformation on default. The IJK is the angle in degree. public Vec3d Ijk { get; set; } Property Value Vec3d PostMcAbc_rad The ABC flags have not been found on controller's document. However, in xxxx20180926, xxxxxxxxxxxxxxxxxN10.EIA contains the code like: G98 G81 X0.0 Y9.652 Z279.075 C20. R295.075 F72. public Vec3d PostMcAbc_rad { get; set; } Property Value Vec3d Methods GetTransformation(IMachineKinematics, out Mat4d) Gets transformation matrix from table to feature. public bool GetTransformation(IMachineKinematics coordinateConverter, out Mat4d tableToFeatureTransform) Parameters coordinateConverter IMachineKinematics The coordinate converter instance. tableToFeatureTransform Mat4d The resulting transformation matrix from table to feature coordinate system. Returns bool True if transformation was successful; otherwise, false."
},
"api/Hi.Numerical.NcArgs.NcArgSiemensFrame.html": {
"href": "api/Hi.Numerical.NcArgs.NcArgSiemensFrame.html",
"title": "Class NcArgSiemensFrame | HiAPI-C# 2025",
"summary": "Class NcArgSiemensFrame Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Represents Siemens frame transformation (AROT/ROT/TRANS/ATRANS). Similar to Heidenhain PLANE SPATIAL or FANUC G68. public class NcArgSiemensFrame : ITiltPlaneNcArg Inheritance object NcArgSiemensFrame Implements ITiltPlaneNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks All transformations (rotation and translation) are composed into a single matrix in the order they appear in NC code. e.g., AROT X-90. then TRANS X10 means: first rotate, then translate in rotated frame. This is different from separating rotation and translation. Properties TableToFeatureCdnTransformMat4d Gets or sets the accumulated transformation matrix. All operations (AROT, ROT, TRANS, ATRANS) are composed in sequence. public Mat4d TableToFeatureCdnTransformMat4d { get; set; } Property Value Mat4d Methods AddRotation(double, double, double) Add rotation (for AROT command - additive). Composes rotation with existing transformation in sequence. public void AddRotation(double rotX_rad, double rotY_rad, double rotZ_rad) Parameters rotX_rad double Rotation around X axis in radians rotY_rad double Rotation around Y axis in radians rotZ_rad double Rotation around Z axis in radians AddTranslation(double, double, double) Add translation (for ATRANS command - additive). Composes translation with existing transformation in sequence. Translation is applied in the current (possibly rotated) coordinate frame. public void AddTranslation(double x, double y, double z) Parameters x double y double z double GetTransformation() Gets the full transformation matrix. public Mat4d GetTransformation() Returns Mat4d Reset() Reset frame to identity (no transformation). public void Reset() SetRotation(double, double, double) Set rotation (for ROT command - resets all transformations and sets rotation). public void SetRotation(double rotX_rad, double rotY_rad, double rotZ_rad) Parameters rotX_rad double Rotation around X axis in radians rotY_rad double Rotation around Y axis in radians rotZ_rad double Rotation around Z axis in radians SetTranslation(double, double, double) Set translation (for TRANS command - resets all transformations and sets translation). public void SetTranslation(double x, double y, double z) Parameters x double y double z double ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.NcArgs.PausingNcArg.html": {
"href": "api/Hi.Numerical.NcArgs.PausingNcArg.html",
"title": "Class PausingNcArg | HiAPI-C# 2025",
"summary": "Class PausingNcArg Namespace Hi.Numerical.NcArgs Assembly HiUniNc.dll Pausing, i.e. G04, parameters for HardNcLine. public class PausingNcArg Inheritance object PausingNcArg Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties P Entered pause time in milli-seconds. Note that in fanuc, the behavior may be altered by configuration. public double P { get; set; } Property Value double S Entered pause time in seconds. public double S { get; set; } Property Value double TotalPauseTime G04 total pausing time. public TimeSpan TotalPauseTime { get; } Property Value TimeSpan X Entered pause time in seconds. Fanuc. Note that in fanuc, the behavior may be altered by configuration. public double X { get; set; } Property Value double"
},
"api/Hi.Numerical.NcArgs.html": {
"href": "api/Hi.Numerical.NcArgs.html",
"title": "Namespace Hi.Numerical.NcArgs | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.NcArgs Classes ArcNcArg Arc parameters for HardNcLine. Arc comes from G02,G03. G28Arg Represents arguments for the G28 command (Return to Reference Point). Group07NcArg parameters of NcGroup07. Radius compensation. Group09NcArg NC Argument of NC Group09. HeidenhainCycleDef7Arg Argument of Heidenhain CYCL DEF 7. Datum Shift. HeidenhainPlaneSpatialArg Represents a Heidenhain spatial plane defined by rotation angles. NcArgCycle800 Represents parameters for Siemens CYCLE800 (Plane Tilting / Swivel). NcArgG68 Represents arguments for G68 coordinate rotation command. NcArgG68p2 Represents arguments for G68.2 three-dimensional coordinate conversion command. NcArgSiemensFrame Represents Siemens frame transformation (AROT/ROT/TRANS/ATRANS). Similar to Heidenhain PLANE SPATIAL or FANUC G68. PausingNcArg Pausing, i.e. G04, parameters for HardNcLine. Interfaces IHeidenhainBlockCacheArg Interface for Heidenhain block cache arguments. IHeidenhainPlaneArg Interface for Heidenhain plane arguments. ITiltPlaneNcArg Interface of Tilt plane NC Arg. i.e. Group16 and Heidenhain Plane argument."
},
"api/Hi.Numerical.NcFlag.html": {
"href": "api/Hi.Numerical.NcFlag.html",
"title": "Enum NcFlag | HiAPI-C# 2025",
"summary": "Enum NcFlag Namespace Hi.Numerical Assembly HiUniNc.dll NC Flag. public enum NcFlag Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NcFlagUtil.GetNcLifeCycleMode(NcFlag) NcFlagUtil.GetNcName(NcFlag) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields [NcLifeCycle(NcLifeCycleMode.Modal)] Cooling = 79 Cooling enabled. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup01))] G00 = 0 Group01. Rapid move. Although fanuc document says that G00 is an one shot command, (I think it may send warning if use G0 as modal.) set it to modal may fit other CNC controller and is much conservative from collision. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup01))] G01 = 1 Group01. Move by feedrate. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup01))] G02 = 2 Group01. Move in CW arc. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup01))] G03 = 3 Group01. Move in CCW arc. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup00))] G04 = 6 Group00. Dwell. [NcLifeCycle(NcLifeCycleMode.OneShot)] G10p9 = 7 Not standard code. For Mazak NC. Generally not supported. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup21))] [NcName(\"G12.1\")] G12p1 = 8 Group21. Polar coordinate interpolation mode ON. Use G13p1 to turn off polar coordinate interpolation mode. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup21))] [NcName(\"G13.1\")] G13p1 = 9 Group21. Polar coordinate interpolation mode OFF. Use G12p1 to turn on polar coordinate interpolation mode. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup02))] G17 = 10 Group02. XY plane selection. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup02))] G18 = 11 Group02. ZX plane selection. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup02))] G19 = 12 Group02. YZ plane selection. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup06))] G20 = 13 Group06. Input in inch. For Fanuc specification A,B. RS274D specification is G70. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup06))] G21 = 14 Group06. Input in mm. For Fanuc specification A,B. RS274D specification is G71. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup01))] G28 = 15 Group01. Automatic reference position return. Positioning to the intermediate or reference positions are performed at the rapid traverse rate of each axis. Therefore, for safety, the compensation functions, such as the tool radius compensation and tool length compensation, should be cancelled before executing this command. The coordinates for the intermediate position are stored in the CNC for the axes for which a value is specified in a G28 block. For the other axes, the previously specified coordinates are used. G28 Fanuc parameters Nos. 1240 to 1243. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup07))] G40 = 16 Group07. Cancel radius compensation. See G41 and G42 for left and right compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup07))] G41 = 17 Group07. Tool radius/tool nose radius compensation. Left compensation: the updated tool tip location is at +y direction compensation from tool running direction. See G40 to cancel compensation and G42 for right compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup07))] G42 = 18 Group07. Tool radius/tool nose radius compensation. Right compensation: the updated tool tip location is at -y direction compensation from tool running direction. See G40 to cancel compensation and G41 for left compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] G43 = 19 Group08 Positive height compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] [NcName(\"G43.4\")] G43p4 = 20 Group08 G43.4: start RTCP (Rotational Tool Center Point). [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] G44 = 21 Group08 Negative height compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] G49 = 22 Group08. Cancel height compensation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup00))] G52 = 27 Group00. Local coordinate system setting. It can be cancelled by G52X0Y0Z0 or M30. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup00))] G53 = 28 Group00. Machine coordinate system setting. When an incremental command is specified, the G53 command is ignored. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"G53P1\")] G53WithP1Flag = 29 Enables the high-speed G53 function. P1 flag accompanies with G53. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup00))] [NcName(\"G53.1\")] G53p1 = 32 Group00. Tool axis direction control. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup14))] G54Series = 34 Group14. Coordinate settings. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup15))] G60 = 35 Group15. Siemens: Exact stop / positioning mode. Machine decelerates to complete stop at each programmed point. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup15))] G61 = 36 Group15. Exact stop mode. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup15))] G62 = 37 Group15. Automatic corner override. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup15))] G63 = 38 Group15. Tapping mode. Not support. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup15))] G64 = 39 Group15. Cutting mode. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup16))] G68 = 44 Group16. 3-dimensional coordinate system conversion. run a pattern of operations in a rotated angle. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup16))] [NcName(\"G68.2\")] G68p2 = 45 Group16. Tilted working plane command. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup16))] G69 = 46 Group16. Coordinate system rotation cancel or 3-dimensional coordinate conversion mode off [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup06))] G70 = 48 Group06. Input in inch. Fanuc system C specification. Syntec specification. For RS274D specification. Fanuc system A,B specification is G20. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup06))] G71 = 49 Group06. Input in mm. Fanuc system C specification. Syntec specification. For RS274D specification. Fanuc system A,B specification is G21. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G80 = 50 Group09. Canned cycle cancel. Electronic gear box : synchronization cancellation. See G81, G82, G83, G85, G86 for available canned cycles. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G81 = 51 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G82 = 52 Group09. Drilling cycle or spot boring cycle with bottom staying time. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G83 = 53 Group09. Drilling cycle or spot boring cycle. drilling cycle in form of pecking. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G85 = 54 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup09))] G86 = 55 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup03))] G90 = 56 Group03. Absolute coordinate system. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup03))] G91 = 57 Group03. Relative coordinate system. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup05))] G94 = 58 Group05. Use F as mm/min. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup13))] G96 = 59 Group13. Constant surface speed control cancel. not support. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup13))] G97 = 60 Group13. Constant surface speed control cancel. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup10))] G98 = 61 Group10. Canned cycle : return to initial level. See G99 for R point level return. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup10))] G99 = 62 Group10. Canned cycle : return to R point level. See G98 for initial level return. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup14))] [NcName(\"DATUM\")] HeidenhainDatum = 43 Group14. Heidenhain flag. Coordinate settings for CYCL DEF 7 and CYCL DEF 247. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcName(\"FMAX\")] HeidenhainFMax = 63 Heidenhain flag. Flag Name FMAX. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup01))] [NcName(\"L\")] HeidenhainL = 4 Group01. Heidenhain flag. Straight linear motion. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup01))] [NcName(\"LN\")] HeidenhainLN = 5 Group01. Heidenhain flag. Nonlinear motion. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainM107M108))] [NcName(\"M107\")] HeidenhainM107 = 86 Heidenhain flag. Enable Suppress error message for replacement tools with oversize. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainM107M108))] [NcName(\"M108\")] HeidenhainM108 = 87 Heidenhain flag. Reset M107. disable Suppress error message for replacement tools with oversize. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainShortestRotaryPath))] [NcName(\"M126\")] HeidenhainM126 = 88 NcGroup.HeidenhainShortestRotaryPath. Heidenhain flag. Shortest rotation for commands of ABC axise. The M126 will be canceled automatically at the end of the program. For Heidenhain. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainShortestRotaryPath))] [NcName(\"M127\")] HeidenhainM127 = 89 NcGroup.HeidenhainShortestRotaryPath. Heidenhain flag. Cancel HeidenhainM126, i.e. disable shortest rotation for ABC axises. For Heidenhain. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] [NcName(\"M128\")] HeidenhainM128 = 25 Group08. Heidenhain flag. M128: start RTCP (Rotational Tool Center Point). [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] [NcName(\"M129\")] HeidenhainM129 = 26 Group08. Heidenhain flag. M129: cancel RTCP (Rotational Tool Center Point). [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"M140\")] HeidenhainM140 = 90 From TNC640 documentation: Retraction from the contour in the tool-axis direction: M140. If you do not enter a feed rate, the TNC moves the tool along the entered path at rapid traverse. M140 is also effective if the tilted-working-plane function is active. On machines with swivel heads, the TNC then moves the tool in the tilted coordinate system. With M140 MB MAX you can only retract in the positive direction. Always define a TOOL CALL with a tool axis before entering M140, otherwise the direction of traverse is not defined. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"M140\")] HeidenhainM140InitiativeF = 91 Feedrate on HeidenhainM140. The TNC640 documentation does not show that the Feedrate on M140 is one shot or modal. HiNC assumes Feedrate on M140 is one shot feedrate with M140 command. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"M91\")] HeidenhainM91 = 85 Heidenhain flag. If you want the coordinates in a positioning block to be referenced to the machine datum, end the block with M91. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"MOVE\")] HeidenhainMove = 84 Heidenhain flag. MOVE indicates to position the rotary axes and simultaneously compensate position. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainPlane))] [NcName(\"PLANE RESET\")] HeidenhainPlaneReset = 80 Heidenhain Plane command is exclusive [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupHeidenhainPlane))] [NcName(\"PLANE SPATIAL\")] HeidenhainPlaneSpatial = 81 Heidenhain Plane command is exclusive [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"STAY\")] HeidenhainStay = 82 Heidenhain flag. STAY indicates to maintain the current rotary axis positioning. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"TOOL CALL\")] HeidenhainToolCall = 68 Heidenhain flag. Tool call. Flag Name TOOL CALL. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"TOOL DEF\")] HeidenhainToolDef = 69 Heidenhain flag. tool definition. Flag Name TOOL DEF. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"TURN\")] HeidenhainTurn = 83 Heidenhain flag. TURN indicates to automatically position the rotary axes. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup14))] [NcName(\"CYCL DEF 247\")] Heidenhain_CYCL_DEF_247 = 41 Group14. Heidenhain flag. With the DATUM SETTING cycle you can activate as the new datum a preset defined in a preset table. After a DATUM SETTING cycle definition, all of the coordinate inputs and datum shifts(absolute and incremental) are referenced to the new preset. When activating a datum from the preset table, the TNC resets the datum shift, mirroring, rotation, scaling factor and axis-specific scaling factor. If you activate preset number 0 (line 0), then you activate the datum that you last set in the Manual Operation or El. Handwheel operating mode. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup14))] [NcName(\"CYCL DEF 7\")] Heidenhain_CYCL_DEF_7 = 40 Group14. Heidenhain flag. For shifting contours directly within the program or from datum tables. [NcLifeCycle(NcLifeCycleMode.Modal)] M02 = 70 Program end. [NcLifeCycle(NcLifeCycleMode.OneShot)] M03 = 64 Activate spindle rotation in CW. [NcLifeCycle(NcLifeCycleMode.OneShot)] M04 = 65 Activate spindle rotation in CCW. [NcLifeCycle(NcLifeCycleMode.OneShot)] M05 = 66 deactivate spindle rotation. [NcLifeCycle(NcLifeCycleMode.OneShot)] M06 = 67 Tool changed. [NcLifeCycle(NcLifeCycleMode.OneShot)] M08 = 71 Start cooling. [NcLifeCycle(NcLifeCycleMode.OneShot)] M09 = 72 Stop cooling. [NcLifeCycle(NcLifeCycleMode.OneShot)] M13 = 73 Spindle CW & Coolant ON. [NcLifeCycle(NcLifeCycleMode.OneShot)] M14 = 74 Spindle CCW & Coolant ON [NcLifeCycle(NcLifeCycleMode.Modal)] M30 = 75 Program end. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup16))] [NcName(\"CYCLE800\")] SiemensCycle800 = 47 Group16. Siemens flag. Tilted working plane command. CYCLE800() cancels the previous transformation. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcGroup(typeof(NcGroup00))] [NcName(\"CYCLE800_SWIVEL\")] SiemensCycle800Swivel = 33 Group00. Siemens CYCLE800 swivel motion - rotary axis positioning with RTCP. Similar to G53.1 but specific to CYCLE800 behavior. Includes: rotary axis motion + tool center point management. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup14))] [NcName(\"G500\")] SiemensG500 = 42 Group14. Siemens command. Deactivation of the current settable zero offset. G500指令在没有赋值的时候为机床坐标系,可以把机床从工件坐标系转换到机床坐标系 [NcLifeCycle(NcLifeCycleMode.Modal)] [NcName(\"MCALL\")] SiemensMcall = 31 Siemens flag. Modal call active - drilling cycle executes on subsequent positioning lines. When MCALL CYCLE81/82/83 is called, the cycle parameters are stored but drilling doesn't execute until the next positioning command. Cancelled by MCALL without parameters. [NcLifeCycle(NcLifeCycleMode.OneShot)] [NcName(\"SUPA\")] SiemensSupa = 30 Group00. Siemens command. G53: G53 suppresses the settable zero offset and the programmable zero offset non-modally. G153: G153 has the same effect as G53 and also suppresses the entire basic frame. SUPA: SUPA has the same effect as G153 and also suppresses: Handwheel offsets (DRF) Overlaid movements External zero offset PRESET offset [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] [NcName(\"TRAFOOF\")] SiemensTrafoof = 23 Group08. Siemens flag. Disable RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM). [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroup08))] [NcName(\"TRAORI\")] SiemensTraori = 24 Group08. Siemens flag. Enable RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM). [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupSpindleRotation))] SpindleCcw = 78 NcGroupSpindleRotation. Rotate spindle counter-clockwise (CCW). See SpindleStop to stop rotation and SpindleCw for clockwise rotation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupSpindleRotation))] SpindleCw = 77 NcGroupSpindleRotation. Rotate spindle clockwise (CW). See SpindleStop to stop rotation and SpindleCcw for counter-clockwise rotation. [NcLifeCycle(NcLifeCycleMode.Modal)] [NcGroup(typeof(NcGroupSpindleRotation))] SpindleStop = 76 NcGroupSpindleRotation. Stop spindle rotation. See SpindleCw and SpindleCcw for clockwise and counter-clockwise rotation."
},
"api/Hi.Numerical.NcFlagUtil.html": {
"href": "api/Hi.Numerical.NcFlagUtil.html",
"title": "Class NcFlagUtil | HiAPI-C# 2025",
"summary": "Class NcFlagUtil Namespace Hi.Numerical Assembly HiUniNc.dll Utility class for working with NC flags and their lifecycle modes. public static class NcFlagUtil Inheritance object NcFlagUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCompensationHeight(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<IMessage>) Gets the tool height compensation value based on the NC flags and CNC brand. public static double GetCompensationHeight(this BitArray ncFlagBitArray, int H, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<IMessage> mixedProgress) Parameters ncFlagBitArray BitArray NC flag bit array H int Height offset index millingToolOffsetTable MillingToolOffsetTable Tool offset table cncBrand CncBrand CNC brand mixedProgress IProgress<IMessage> Message host for warnings Returns double Height compensation value GetCompensationRadius(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<IMessage>) Gets the tool radius compensation value from the flag bit array and tool offset table. public static double GetCompensationRadius(this BitArray ncFlagBitArray, int D, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<IMessage> mixedProgress) Parameters ncFlagBitArray BitArray The bit array of NC flags. D int The tool diameter offset number. millingToolOffsetTable MillingToolOffsetTable The milling tool offset table. cncBrand CncBrand The CNC controller brand. mixedProgress IProgress<IMessage> The message host for reporting warnings or errors. Returns double The compensation radius value. GetCoordinateOffset(bool, string, int, HeidenhainCycleDef7Arg, HardNcEnv) Gets the coordinate offset based on the CNC controller and coordinate settings. public static Vec3d GetCoordinateOffset(bool hasSiemensG500, string isoCoordinateId, int heidenhainCycleDef247Q339, HeidenhainCycleDef7Arg heidenhainCycleDef7Arg, HardNcEnv ncEnv) Parameters hasSiemensG500 bool Whether Siemens G500 is active. isoCoordinateId string The ISO coordinate ID. heidenhainCycleDef247Q339 int The Heidenhain cycle def 247 Q339 value. heidenhainCycleDef7Arg HeidenhainCycleDef7Arg The Heidenhain cycle def 7 arguments. ncEnv HardNcEnv The NC environment. Returns Vec3d The coordinate offset vector. GetFlags(NcLifeCycleMode) Gets all NC flags for a specific lifecycle mode. public static NcFlag[] GetFlags(this NcLifeCycleMode ncLifeCycleMode) Parameters ncLifeCycleMode NcLifeCycleMode The lifecycle mode to get flags for. Returns NcFlag[] An array of NC flags for the specified lifecycle mode. GetHeidenhainCoordinateOffset(int, HeidenhainCycleDef7Arg, HardNcEnv) Gets the coordinate offset for Heidenhain controllers. public static Vec3d GetHeidenhainCoordinateOffset(int heidenhainCycleDef247Q339, HeidenhainCycleDef7Arg heidenhainCycleDef7Arg, HardNcEnv ncEnv) Parameters heidenhainCycleDef247Q339 int The preset number for CYCL DEF 247. heidenhainCycleDef7Arg HeidenhainCycleDef7Arg The argument for CYCL DEF 7. ncEnv HardNcEnv The NC environment. Returns Vec3d The calculated coordinate offset. GetModalNcFlag<T>(BitArray) Gets the modal NC flag of the specified type from the bit array. public static T GetModalNcFlag<T>(this BitArray ncFlagBitArray) where T : Enum Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns T The modal NC flag of the specified type. Type Parameters T The enum type of the modal flag. GetNcFlag<T>(BitArray) Gets the NC flag of the specified type from the bit array. public static T GetNcFlag<T>(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns T The NC flag of the specified type. Type Parameters T The enum type of the NC flag. GetNcFlags(BitArray) Gets all active NC flags from the bit array. public static IEnumerable<NcFlag> GetNcFlags(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns IEnumerable<NcFlag> An enumerable collection of active NC flags. GetNcFromSyntax<TVec>(NcGroup03, TVec, TVec) Converts syntactic coordinates to NC coordinates based on the positioning mode. public static TVec GetNcFromSyntax<TVec>(this NcGroup03 group03Flag, TVec syntexPosition, TVec preProgramPosition) where TVec : IVec<double>, new() Parameters group03Flag NcGroup03 The positioning mode flag syntexPosition TVec Syntactic position from the input preProgramPosition TVec Previous program position Returns TVec Converted NC coordinates Type Parameters TVec Vector type implementing IVec interface GetNcFromSyntax<TVec>(NcGroup03, TVec, TVec, int, Func<int, TVec, double>, Action<int, TVec, double>) Converts syntactic position to NC position based on the positioning mode (absolute or incremental). public static TVec GetNcFromSyntax<TVec>(this NcGroup03 group03Flag, TVec syntexPosition, TVec preProgramPosition, int vecSize, Func<int, TVec, double> getter, Action<int, TVec, double> setter) where TVec : new() Parameters group03Flag NcGroup03 The positioning mode flag syntexPosition TVec Syntactic position from the input preProgramPosition TVec Previous program position vecSize int Size of the vector getter Func<int, TVec, double> Function to get value at specified index setter Action<int, TVec, double> Function to set value at specified index Returns TVec Converted NC coordinates Type Parameters TVec Vector type Exceptions InternalException Thrown when group03Flag is not managed GetNcGroupType(NcFlag) Gets the NC group type for the specified NC flag. public static Type GetNcGroupType(NcFlag ncFlag) Parameters ncFlag NcFlag The NC flag to get the group type for. Returns Type The NC group type or null if not found. GetNcLifeCycleMode(NcFlag) Gets the lifecycle mode of the specified NC flag. public static NcLifeCycleMode GetNcLifeCycleMode(this NcFlag flag) Parameters flag NcFlag The NC flag to check. Returns NcLifeCycleMode The lifecycle mode of the flag. GetNcName(NcFlag) Gets the display name of an NC flag. public static string GetNcName(this NcFlag flag) Parameters flag NcFlag The NC flag to get the name of. Returns string The display name of the NC flag. GetNcXyzFromSyntax(NcGroup03, Vec3d, Vec3d) Converts syntactic XYZ coordinates to NC XYZ coordinates based on the positioning mode. public static Vec3d GetNcXyzFromSyntax(this NcGroup03 group03Flag, Vec3d syntexXyz, Vec3d preNcXyz) Parameters group03Flag NcGroup03 The Group03 flag specifying the positioning mode. syntexXyz Vec3d The syntactic XYZ coordinates to convert. preNcXyz Vec3d The previous NC XYZ coordinates, used for incremental positioning. Returns Vec3d The converted NC XYZ coordinates. GetNcXyzabcFromSyntax(NcGroup03, DVec3d, DVec3d) Gets NC XYZABC coordinates from syntactic coordinates based on the positioning mode. public static DVec3d GetNcXyzabcFromSyntax(this NcGroup03 group03Flag, DVec3d syntexXyzabc, DVec3d preNcXyzabc) Parameters group03Flag NcGroup03 The positioning mode flag (G90 or G91). syntexXyzabc DVec3d The syntactic XYZABC coordinates. preNcXyzabc DVec3d The previous NC XYZABC coordinates. Returns DVec3d The calculated NC XYZABC coordinates. GetPlaneDir(NcGroup02) Gets the direction index of the selected plane. public static int GetPlaneDir(this NcGroup02 ncFlag) Parameters ncFlag NcGroup02 The NC plane selection flag (G17, G18, or G19). Returns int The direction index (0=X, 1=Y, 2=Z). GetPlaneNormal(NcGroup02) Gets the normal vector of the selected plane. public static Vec3d GetPlaneNormal(this NcGroup02 ncFlag) Parameters ncFlag NcGroup02 The NC plane selection flag (G17, G18, or G19). Returns Vec3d The normal vector of the plane. GetTiltMat4d(BitArray, ITiltPlaneNcArg, NcGroup02, IMachineKinematics, out bool?) public static Mat4d GetTiltMat4d(this BitArray ncFlagBitArray, ITiltPlaneNcArg ncArgGroup16, NcGroup02 ncGroup02flagForG68, IMachineKinematics coordinateConverterForG68p2, out bool? isG68p2Successed) Parameters ncFlagBitArray BitArray ncArgGroup16 ITiltPlaneNcArg ncGroup02flagForG68 NcGroup02 coordinateConverterForG68p2 IMachineKinematics isG68p2Successed bool? Returns Mat4d GetValue(NcGroup03, double, double) public static double GetValue(this NcGroup03 group03Flag, double v, double preV) Parameters group03Flag NcGroup03 v double value preV double previous value Returns double HasModalFlag<T>(BitArray, out T) Checks if the bit array has a modal flag of the specified type and retrieves it. public static bool HasModalFlag<T>(this BitArray ncFlagBitArray, out T dst) where T : Enum Parameters ncFlagBitArray BitArray The bit array of NC flags. dst T When this method returns, contains the modal flag if found; otherwise, the default value. Returns bool True if a modal flag was found; otherwise, false. Type Parameters T The enum type of the modal flag. IsAbsolutePositioning(BitArray) Checks if the positioning mode is absolute (G90) rather than incremental (G91). public static bool IsAbsolutePositioning(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if absolute positioning is active; otherwise, false. IsFlagActivated(BitArray, NcFlag) Determines whether a specific NC flag is activated in the flag bit array. public static bool IsFlagActivated(this BitArray ncFlagBitArray, NcFlag ncFlag) Parameters ncFlagBitArray BitArray The bit array of NC flags. ncFlag NcFlag The NC flag to check. Returns bool True if the flag is activated; otherwise, false. IsHeightCompensationEnabled(BitArray) Determines whether height compensation is enabled. public static bool IsHeightCompensationEnabled(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if height compensation is enabled; otherwise, false. IsMacro(BitArray) Is macro such as drilling cycle, rapid home, tool center alignment. public static bool IsMacro(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool Is macro mode IsOnArcCommand(BitArray) Determines whether an arc command is active. public static bool IsOnArcCommand(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if an arc command is active; otherwise, false. IsOnSimpleMachiningMode(BitArray) Determines whether simple machining mode is active (linear or circular interpolation). public static bool IsOnSimpleMachiningMode(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if simple machining mode is active; otherwise, false. IsRadiusCompensationEnabled(BitArray) Determines whether radius compensation is enabled. public static bool IsRadiusCompensationEnabled(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if radius compensation is enabled; otherwise, false. IsRadiusOrHeightCompensationEnabled(BitArray) Determines whether radius or height compensation is enabled. public static bool IsRadiusOrHeightCompensationEnabled(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if radius or height compensation is enabled; otherwise, false. IsRapid(BitArray) Determines whether rapid traverse mode is active. public static bool IsRapid(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if rapid traverse is active; otherwise, false. IsToolCenterPointManagementEnabled(NcGroup08) obosoleted. use BitArray version instead. Is the flag enabled RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM). Check for NcGroup08. public static bool IsToolCenterPointManagementEnabled(this NcGroup08 flag) Parameters flag NcGroup08 Returns bool IsToolCenterPointManagementEnabled(BitArray) Is the flag enabled RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM). public static bool IsToolCenterPointManagementEnabled(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray Returns bool IsToolChanging(BitArray) Determines if a tool change operation is active in the NC flag bit array. public static bool IsToolChanging(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if a tool change is active; otherwise, false. IsToolNormalTiltable(BitArray) Determines whether the tool normal is tiltable based on the flag bit array. public static bool IsToolNormalTiltable(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns bool True if the tool normal is tiltable; otherwise, false. ModalExclusiveAssign(BitArray, NcFlag) Modal exclusive assign in the belonging NC Group. public static BitArray ModalExclusiveAssign(this BitArray ncFlagBitArray, NcFlag assigningNcFlag) Parameters ncFlagBitArray BitArray assigningNcFlag NcFlag Returns BitArray ModalExclusiveAssign<T>(BitArray, T) Modal exclusive assign in the belonging NC Group. public static BitArray ModalExclusiveAssign<T>(this BitArray ncFlagBitArray, T assigningNcGroupFlag) where T : struct, Enum Parameters ncFlagBitArray BitArray assigningNcGroupFlag T Returns BitArray Type Parameters T ResetOneShotFlag(BitArray) Resets all one-shot flags in the specified bit array. public static BitArray ResetOneShotFlag(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns BitArray The modified bit array with one-shot flags reset. ToNcFlagString(BitArray) Converts the active NC flags in the bit array to a string representation. public static string ToNcFlagString(this BitArray ncFlagBitArray) Parameters ncFlagBitArray BitArray The bit array of NC flags. Returns string A string representation of the active NC flags."
},
"api/Hi.Numerical.NcGroup00.html": {
"href": "api/Hi.Numerical.NcGroup00.html",
"title": "Enum NcGroup00 | HiAPI-C# 2025",
"summary": "Enum NcGroup00 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. GCode Group00. Include G04,G52,G53,G53p1,SiemensCycle800Swivel,SiemensSupa. public enum NcGroup00 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G04 = 6 Group00. Dwell. G52 = 27 Group00. Local coordinate system setting. It can be cancelled by G52X0Y0Z0 or M30. G53 = 28 Group00. Machine coordinate system setting. When an incremental command is specified, the G53 command is ignored. G53p1 = 32 Group00. Tool axis direction control. SiemensCycle800Swivel = 33 Group00. Siemens CYCLE800 swivel motion - rotary axis positioning with RTCP. Similar to G53.1 but specific to CYCLE800 behavior. Includes: rotary axis motion + tool center point management."
},
"api/Hi.Numerical.NcGroup01.html": {
"href": "api/Hi.Numerical.NcGroup01.html",
"title": "Enum NcGroup01 | HiAPI-C# 2025",
"summary": "Enum NcGroup01 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. For linear move mode: G00 or G01. G00 is rapid move. G01 is linear cut. G02 is CW cut; G03 is CCW cut. public enum NcGroup01 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G00 = 0 Group01. Rapid move. Although fanuc document says that G00 is an one shot command, (I think it may send warning if use G0 as modal.) set it to modal may fit other CNC controller and is much conservative from collision. G01 = 1 Group01. Move by feedrate. G02 = 2 Group01. Move in CW arc. G03 = 3 Group01. Move in CCW arc. G28 = 15 Group01. Automatic reference position return. Positioning to the intermediate or reference positions are performed at the rapid traverse rate of each axis. Therefore, for safety, the compensation functions, such as the tool radius compensation and tool length compensation, should be cancelled before executing this command. The coordinates for the intermediate position are stored in the CNC for the axes for which a value is specified in a G28 block. For the other axes, the previously specified coordinates are used. G28 Fanuc parameters Nos. 1240 to 1243. HeidenhainL = 4 Group01. Heidenhain flag. Straight linear motion. HeidenhainLN = 5 Group01. Heidenhain flag. Nonlinear motion."
},
"api/Hi.Numerical.NcGroup02.html": {
"href": "api/Hi.Numerical.NcGroup02.html",
"title": "Enum NcGroup02 | HiAPI-C# 2025",
"summary": "Enum NcGroup02 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Plane selection. Include G17,G18,G19. public enum NcGroup02 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NcFlagUtil.GetPlaneDir(NcGroup02) NcFlagUtil.GetPlaneNormal(NcGroup02) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G17 = 10 Group02. XY plane selection. G18 = 11 Group02. ZX plane selection. G19 = 12 Group02. YZ plane selection."
},
"api/Hi.Numerical.NcGroup03.html": {
"href": "api/Hi.Numerical.NcGroup03.html",
"title": "Enum NcGroup03 | HiAPI-C# 2025",
"summary": "Enum NcGroup03 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Absolute(G90) or increment(G91) coordinate. public enum NcGroup03 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NcFlagUtil.GetNcFromSyntax<TVec>(NcGroup03, TVec, TVec) NcFlagUtil.GetNcFromSyntax<TVec>(NcGroup03, TVec, TVec, int, Func<int, TVec, double>, Action<int, TVec, double>) NcFlagUtil.GetNcXyzFromSyntax(NcGroup03, Vec3d, Vec3d) NcFlagUtil.GetNcXyzabcFromSyntax(NcGroup03, DVec3d, DVec3d) NcFlagUtil.GetValue(NcGroup03, double, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G90 = 56 Group03. Absolute coordinate system. G91 = 57 Group03. Relative coordinate system."
},
"api/Hi.Numerical.NcGroup05.html": {
"href": "api/Hi.Numerical.NcGroup05.html",
"title": "Enum NcGroup05 | HiAPI-C# 2025",
"summary": "Enum NcGroup05 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. For feedrate. public enum NcGroup05 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G94 = 58 Group05. Use F as mm/min."
},
"api/Hi.Numerical.NcGroup06.html": {
"href": "api/Hi.Numerical.NcGroup06.html",
"title": "Enum NcGroup06 | HiAPI-C# 2025",
"summary": "Enum NcGroup06 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Group of unit. In mm or in inch. public enum NcGroup06 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G20 = 13 Group06. Input in inch. For Fanuc specification A,B. RS274D specification is G70. G21 = 14 Group06. Input in mm. For Fanuc specification A,B. RS274D specification is G71. G70 = 48 Group06. Input in inch. Fanuc system C specification. Syntec specification. For RS274D specification. Fanuc system A,B specification is G20. G71 = 49 Group06. Input in mm. Fanuc system C specification. Syntec specification. For RS274D specification. Fanuc system A,B specification is G21."
},
"api/Hi.Numerical.NcGroup07.html": {
"href": "api/Hi.Numerical.NcGroup07.html",
"title": "Enum NcGroup07 | HiAPI-C# 2025",
"summary": "Enum NcGroup07 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Left or right compensation for tool radius, etc.. See G40, G41, G42 for available compensation modes. public enum NcGroup07 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G40 = 16 Group07. Cancel radius compensation. See G41 and G42 for left and right compensation. G41 = 17 Group07. Tool radius/tool nose radius compensation. Left compensation: the updated tool tip location is at +y direction compensation from tool running direction. See G40 to cancel compensation and G42 for right compensation. G42 = 18 Group07. Tool radius/tool nose radius compensation. Right compensation: the updated tool tip location is at -y direction compensation from tool running direction. See G40 to cancel compensation and G41 for left compensation."
},
"api/Hi.Numerical.NcGroup08.html": {
"href": "api/Hi.Numerical.NcGroup08.html",
"title": "Enum NcGroup08 | HiAPI-C# 2025",
"summary": "Enum NcGroup08 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Tool length compensation, etc.. G43,G43p4,G44,G49,SiemensTraori,SiemensTrafoof,HeidenhainM128,HeidenhainM129. public enum NcGroup08 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NcFlagUtil.IsToolCenterPointManagementEnabled(NcGroup08) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G43 = 19 Group08 Positive height compensation. G43p4 = 20 Group08 G43.4: start RTCP (Rotational Tool Center Point). G44 = 21 Group08 Negative height compensation. G49 = 22 Group08. Cancel height compensation. HeidenhainM128 = 25 Group08. Heidenhain flag. M128: start RTCP (Rotational Tool Center Point). HeidenhainM129 = 26 Group08. Heidenhain flag. M129: cancel RTCP (Rotational Tool Center Point). SiemensTrafoof = 23 Group08. Siemens flag. Disable RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM). SiemensTraori = 24 Group08. Siemens flag. Enable RTCP (Rotational Tool Center Point) (=Tool Center Point Management, TCPM)."
},
"api/Hi.Numerical.NcGroup09.html": {
"href": "api/Hi.Numerical.NcGroup09.html",
"title": "Enum NcGroup09 | HiAPI-C# 2025",
"summary": "Enum NcGroup09 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Canned cycle. public enum NcGroup09 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G80 = 50 Group09. Canned cycle cancel. Electronic gear box : synchronization cancellation. See G81, G82, G83, G85, G86 for available canned cycles. G81 = 51 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86. G82 = 52 Group09. Drilling cycle or spot boring cycle with bottom staying time. G83 = 53 Group09. Drilling cycle or spot boring cycle. drilling cycle in form of pecking. G85 = 54 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86. G86 = 55 Group09. Drilling cycle or spot boring cycle. Electronic gear box : synchronization start. The same parsing behavior group: G81,G85,G86."
},
"api/Hi.Numerical.NcGroup10.html": {
"href": "api/Hi.Numerical.NcGroup10.html",
"title": "Enum NcGroup10 | HiAPI-C# 2025",
"summary": "Enum NcGroup10 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Canned cycle return point. G98,G99. public enum NcGroup10 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G98 = 61 Group10. Canned cycle : return to initial level. See G99 for R point level return. G99 = 62 Group10. Canned cycle : return to R point level. See G98 for initial level return."
},
"api/Hi.Numerical.NcGroup13.html": {
"href": "api/Hi.Numerical.NcGroup13.html",
"title": "Enum NcGroup13 | HiAPI-C# 2025",
"summary": "Enum NcGroup13 Namespace Hi.Numerical Assembly HiUniNc.dll NC Group 13 for constant surface speed control. public enum NcGroup13 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G96 = 59 Group13. Constant surface speed control cancel. not support. G97 = 60 Group13. Constant surface speed control cancel."
},
"api/Hi.Numerical.NcGroup14.html": {
"href": "api/Hi.Numerical.NcGroup14.html",
"title": "Enum NcGroup14 | HiAPI-C# 2025",
"summary": "Enum NcGroup14 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Coordinate system. Such as G54Series. public enum NcGroup14 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G54Series = 34 Group14. Coordinate settings. HeidenhainDatum = 43 Group14. Heidenhain flag. Coordinate settings for CYCL DEF 7 and CYCL DEF 247. Heidenhain_CYCL_DEF_247 = 41 Group14. Heidenhain flag. With the DATUM SETTING cycle you can activate as the new datum a preset defined in a preset table. After a DATUM SETTING cycle definition, all of the coordinate inputs and datum shifts(absolute and incremental) are referenced to the new preset. When activating a datum from the preset table, the TNC resets the datum shift, mirroring, rotation, scaling factor and axis-specific scaling factor. If you activate preset number 0 (line 0), then you activate the datum that you last set in the Manual Operation or El. Handwheel operating mode. Heidenhain_CYCL_DEF_7 = 40 Group14. Heidenhain flag. For shifting contours directly within the program or from datum tables. SiemensG500 = 42 Group14. Siemens command. Deactivation of the current settable zero offset. G500指令在没有赋值的时候为机床坐标系,可以把机床从工件坐标系转换到机床坐标系"
},
"api/Hi.Numerical.NcGroup15.html": {
"href": "api/Hi.Numerical.NcGroup15.html",
"title": "Enum NcGroup15 | HiAPI-C# 2025",
"summary": "Enum NcGroup15 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. public enum NcGroup15 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G60 = 35 Group15. Siemens: Exact stop / positioning mode. Machine decelerates to complete stop at each programmed point. G61 = 36 Group15. Exact stop mode. G62 = 37 Group15. Automatic corner override. G63 = 38 Group15. Tapping mode. Not support. G64 = 39 Group15. Cutting mode."
},
"api/Hi.Numerical.NcGroup16.html": {
"href": "api/Hi.Numerical.NcGroup16.html",
"title": "Enum NcGroup16 | HiAPI-C# 2025",
"summary": "Enum NcGroup16 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Rotation plane related. Interface of get transformation. Heidenhain equivalent group is NcGroupHeidenhainPlane. public enum NcGroup16 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G68 = 44 Group16. 3-dimensional coordinate system conversion. run a pattern of operations in a rotated angle. G68p2 = 45 Group16. Tilted working plane command. G69 = 46 Group16. Coordinate system rotation cancel or 3-dimensional coordinate conversion mode off SiemensCycle800 = 47 Group16. Siemens flag. Tilted working plane command. CYCLE800() cancels the previous transformation."
},
"api/Hi.Numerical.NcGroup21.html": {
"href": "api/Hi.Numerical.NcGroup21.html",
"title": "Enum NcGroup21 | HiAPI-C# 2025",
"summary": "Enum NcGroup21 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Polar coordinate interpolation mode. public enum NcGroup21 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields G12p1 = 8 Group21. Polar coordinate interpolation mode ON. Use G13p1 to turn off polar coordinate interpolation mode. G13p1 = 9 Group21. Polar coordinate interpolation mode OFF. Use G12p1 to turn on polar coordinate interpolation mode."
},
"api/Hi.Numerical.NcGroupAttribute.html": {
"href": "api/Hi.Numerical.NcGroupAttribute.html",
"title": "Class NcGroupAttribute | HiAPI-C# 2025",
"summary": "Class NcGroupAttribute Namespace Hi.Numerical Assembly HiUniNc.dll NC Group Attribute. [AttributeUsage(AttributeTargets.Field)] public class NcGroupAttribute : Attribute Inheritance object Attribute NcGroupAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcGroupAttribute(Type) Ctor. public NcGroupAttribute(Type ncGroup) Parameters ncGroup Type Properties NcGroupType Gets or sets the NC group type. public Type NcGroupType { get; set; } Property Value Type"
},
"api/Hi.Numerical.NcGroupHeidenhainM107M108.html": {
"href": "api/Hi.Numerical.NcGroupHeidenhainM107M108.html",
"title": "Enum NcGroupHeidenhainM107M108 | HiAPI-C# 2025",
"summary": "Enum NcGroupHeidenhainM107M108 Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Heidenhain group. Enable or disable Suppress error message for replacement tools with oversize. public enum NcGroupHeidenhainM107M108 Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields HeidenhainM107 = 86 Heidenhain flag. Enable Suppress error message for replacement tools with oversize. HeidenhainM108 = 87 Heidenhain flag. Reset M107. disable Suppress error message for replacement tools with oversize."
},
"api/Hi.Numerical.NcGroupHeidenhainPlane.html": {
"href": "api/Hi.Numerical.NcGroupHeidenhainPlane.html",
"title": "Enum NcGroupHeidenhainPlane | HiAPI-C# 2025",
"summary": "Enum NcGroupHeidenhainPlane Namespace Hi.Numerical Assembly HiUniNc.dll Heidenhain Group Plane related. ISO equivalent group is NcGroup16. public enum NcGroupHeidenhainPlane Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields HeidenhainPlaneReset = 80 Heidenhain Plane command is exclusive HeidenhainPlaneSpatial = 81 Heidenhain Plane command is exclusive"
},
"api/Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html": {
"href": "api/Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html",
"title": "Enum NcGroupHeidenhainShortestRotaryPath | HiAPI-C# 2025",
"summary": "Enum NcGroupHeidenhainShortestRotaryPath Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Heidenhain group. shortest rotary state. HeidenhainM126,HeidenhainM127 public enum NcGroupHeidenhainShortestRotaryPath Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields HeidenhainM126 = 88 NcGroup.HeidenhainShortestRotaryPath. Heidenhain flag. Shortest rotation for commands of ABC axise. The M126 will be canceled automatically at the end of the program. For Heidenhain. HeidenhainM127 = 89 NcGroup.HeidenhainShortestRotaryPath. Heidenhain flag. Cancel HeidenhainM126, i.e. disable shortest rotation for ABC axises. For Heidenhain."
},
"api/Hi.Numerical.NcGroupSpindleRotation.html": {
"href": "api/Hi.Numerical.NcGroupSpindleRotation.html",
"title": "Enum NcGroupSpindleRotation | HiAPI-C# 2025",
"summary": "Enum NcGroupSpindleRotation Namespace Hi.Numerical Assembly HiUniNc.dll NcGroup enum. Spindle rotation control. See SpindleStop, SpindleCw, SpindleCcw for available rotation modes. public enum NcGroupSpindleRotation Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields SpindleCcw = 78 NcGroupSpindleRotation. Rotate spindle counter-clockwise (CCW). See SpindleStop to stop rotation and SpindleCw for clockwise rotation. SpindleCw = 77 NcGroupSpindleRotation. Rotate spindle clockwise (CW). See SpindleStop to stop rotation and SpindleCcw for counter-clockwise rotation. SpindleStop = 76 NcGroupSpindleRotation. Stop spindle rotation. See SpindleCw and SpindleCcw for clockwise and counter-clockwise rotation."
},
"api/Hi.Numerical.NcLifeCycleAttribute.html": {
"href": "api/Hi.Numerical.NcLifeCycleAttribute.html",
"title": "Class NcLifeCycleAttribute | HiAPI-C# 2025",
"summary": "Class NcLifeCycleAttribute Namespace Hi.Numerical Assembly HiUniNc.dll Attribute to specify the lifecycle mode of an NC flag. [AttributeUsage(AttributeTargets.Field)] public class NcLifeCycleAttribute : Attribute Inheritance object Attribute NcLifeCycleAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcLifeCycleAttribute(NcLifeCycleMode) Initializes a new instance of the NcLifeCycleAttribute class. public NcLifeCycleAttribute(NcLifeCycleMode ncLifeCycleMode) Parameters ncLifeCycleMode NcLifeCycleMode The lifecycle mode of the NC flag. Properties NcLifeCycleMode Gets or sets the lifecycle mode of the NC flag. public NcLifeCycleMode NcLifeCycleMode { get; set; } Property Value NcLifeCycleMode"
},
"api/Hi.Numerical.NcLifeCycleMode.html": {
"href": "api/Hi.Numerical.NcLifeCycleMode.html",
"title": "Enum NcLifeCycleMode | HiAPI-C# 2025",
"summary": "Enum NcLifeCycleMode Namespace Hi.Numerical Assembly HiUniNc.dll Defines the lifecycle mode of NC commands. public enum NcLifeCycleMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NcFlagUtil.GetFlags(NcLifeCycleMode) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Modal = 1 Command remains active until superseded by another command in the same group. OneShot = 2 Command is active only for the block in which it is specified. Undefined = 0 Undefined lifecycle mode."
},
"api/Hi.Numerical.NcNameAttribute.html": {
"href": "api/Hi.Numerical.NcNameAttribute.html",
"title": "Class NcNameAttribute | HiAPI-C# 2025",
"summary": "Class NcNameAttribute Namespace Hi.Numerical Assembly HiUniNc.dll Attribute used to define a name for NC flags and other enumeration fields. [AttributeUsage(AttributeTargets.Field)] public class NcNameAttribute : Attribute Inheritance object Attribute NcNameAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcNameAttribute(string) Initializes a new instance of the NcNameAttribute class. public NcNameAttribute(string name) Parameters name string The name to associate with the enum field Properties Name Gets or sets the name associated with the enum field. public string Name { get; set; } Property Value string"
},
"api/Hi.Numerical.NcNoteCache.html": {
"href": "api/Hi.Numerical.NcNoteCache.html",
"title": "Class NcNoteCache | HiAPI-C# 2025",
"summary": "Class NcNoteCache Namespace Hi.Numerical Assembly HiUniNc.dll Cache for notes and warnings generated during NC line parsing. public class NcNoteCache Inheritance object NcNoteCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties IndexNote Gets or sets the index note (N number) from the NC line. public int? IndexNote { get; set; } Property Value int? SkippedFlags Known flags and sure to skip. public List<string> SkippedFlags { get; set; } Property Value List<string> Text Gets a text representation of all non-empty flag lists. public string Text { get; } Property Value string UnExpectedFlags known flags but not shown on an expected way. public List<string> UnExpectedFlags { get; set; } Property Value List<string> UnSupportedFlags Known flags but not support. public List<string> UnSupportedFlags { get; set; } Property Value List<string> UnknownFlags Unknown flags. public List<string> UnknownFlags { get; set; } Property Value List<string> Warnings Gets or sets the list of warnings generated during parsing. public List<string> Warnings { get; set; } Property Value List<string>"
},
"api/Hi.Numerical.NcProc.html": {
"href": "api/Hi.Numerical.NcProc.html",
"title": "Class NcProc | HiAPI-C# 2025",
"summary": "Class NcProc Namespace Hi.Numerical Assembly HiUniNc.dll Provides processing utilities for NC programming. public static class NcProc Inheritance object NcProc Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetActs(HardNcEnv, SeqPair<HardNcLine>, IProgress<IMessage>) Gets the acts from a sequence pair of NcLines public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, SeqPair<HardNcLine> ncLineSeq, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv The numerical control environment ncLineSeq SeqPair<HardNcLine> The sequence pair of NcLines mixedProgress IProgress<IMessage> The message host for logging Returns IEnumerable<IAct> Enumerable of acts GetActs(HardNcEnv, HardNcLine, HardNcLine, IProgress<IMessage>) Gets the acts from a pair of NcLines public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, HardNcLine preNcLine, HardNcLine curNcLine, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv The numerical control environment preNcLine HardNcLine The previous NcLine curNcLine HardNcLine The current NcLine mixedProgress IProgress<IMessage> The message host for logging Returns IEnumerable<IAct> Enumerable of acts GetActs(HardNcEnv, LinkedListNode<HardNcLine>, IProgress<IMessage>) Gets the acts from a linked list node containing an NcLine public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, LinkedListNode<HardNcLine> ncLineNode, IProgress<IMessage> mixedProgress) Parameters ncEnv HardNcEnv The numerical control environment ncLineNode LinkedListNode<HardNcLine> The linked list node containing the NcLine mixedProgress IProgress<IMessage> The message host for logging Returns IEnumerable<IAct> Enumerable of acts"
},
"api/Hi.Numerical.NcWarningSceneEnum.html": {
"href": "api/Hi.Numerical.NcWarningSceneEnum.html",
"title": "Enum NcWarningSceneEnum | HiAPI-C# 2025",
"summary": "Enum NcWarningSceneEnum Namespace Hi.Numerical Assembly HiUniNc.dll Defines scene types for NC warnings. public enum NcWarningSceneEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Skip = 1 Skip operation warning. TransformFailed = 4 Transform operation failed warning. UnExpect = 3 Unexpected result warning. UnSupport = 2 Unsupported operation warning. Unknown = 0 Unknown warning scene."
},
"api/Hi.Numerical.NumericUtil.html": {
"href": "api/Hi.Numerical.NumericUtil.html",
"title": "Class NumericUtil | HiAPI-C# 2025",
"summary": "Class NumericUtil Namespace Hi.Numerical Assembly HiGeom.dll Utility class for numeric operations and unit conversions. public static class NumericUtil Inheritance object NumericUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFeedrate_mmdmin(IGetFeedrate) Gets the feedrate in millimeters per minute. public static double GetFeedrate_mmdmin(this IGetFeedrate src) Parameters src IGetFeedrate The feedrate source Returns double Feedrate in mm/min GetSpindleCyclePeriod(IGetSpindleSpeed) Gets the spindle cycle period as a TimeSpan. public static TimeSpan GetSpindleCyclePeriod(this IGetSpindleSpeed src) Parameters src IGetSpindleSpeed The spindle speed source Returns TimeSpan Cycle period as a TimeSpan GetSpindleCyclePeriod_s(IGetSpindleSpeed) Gets the spindle cycle period in seconds. public static double GetSpindleCyclePeriod_s(this IGetSpindleSpeed src) Parameters src IGetSpindleSpeed The spindle speed source Returns double Cycle period in seconds GetSpindleSpeed_rpm(IGetSpindleSpeed) Gets the spindle speed in revolutions per minute. public static double GetSpindleSpeed_rpm(this IGetSpindleSpeed src) Parameters src IGetSpindleSpeed The spindle speed source Returns double Spindle speed in rpm IsRotating(SpindleDirection) Determines whether the spindle is rotating (either clockwise or counter-clockwise). public static bool IsRotating(this SpindleDirection spindleDirection) Parameters spindleDirection SpindleDirection The spindle direction to check Returns bool True if the spindle is rotating; otherwise, false SetFeedrate_mmdmin(ISetFeedrate, double) Sets the feedrate in millimeters per minute. public static void SetFeedrate_mmdmin(this ISetFeedrate src, double feedrate_mmdmin) Parameters src ISetFeedrate The feedrate target feedrate_mmdmin double Feedrate value in mm/min SetSpindleSpeed_rpm(ISetSpindleSpeed, double) Sets the spindle speed in revolutions per minute. public static void SetSpindleSpeed_rpm(this ISetSpindleSpeed src, double spindleSpeed_rpm) Parameters src ISetSpindleSpeed The spindle speed target spindleSpeed_rpm double Spindle speed value in rpm"
},
"api/Hi.Numerical.PolarEntry.html": {
"href": "api/Hi.Numerical.PolarEntry.html",
"title": "Class PolarEntry | HiAPI-C# 2025",
"summary": "Class PolarEntry Namespace Hi.Numerical Assembly HiUniNc.dll The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. public class PolarEntry Inheritance object PolarEntry Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CentralProgramPolarRxcz ProgramPolarPos on no-shifting polar coordinate (e.g. coordinate on the c axis center and x-zero). public Vec3d CentralProgramPolarRxcz { get; set; } Property Value Vec3d CodePolarDxcz In Polar coordinate interpolation mode (G12.1), the X value is the diameter value. and also, rotary is assigned by hypothesis value (called C. Some controller accepts Y as equivalent.). Dx: X is diameter. public Vec3d CodePolarDxcz { get; set; } Property Value Vec3d InitProgramPolarRxcz InitProgramPolarXcz. z is always zero. Const session data. Only set at the G12.1 line once. public Vec3d InitProgramPolarRxcz { get; set; } Property Value Vec3d PolarModeDir Gets or sets the polar mode direction public PolarModeDirEnum PolarModeDir { get; set; } Property Value PolarModeDirEnum ProgramPolarRxcz ProgramPos. XC, YA or ZB. The Last is Z (for XC). According to PolarModeDir. Rx: x is radius . Pos.X is linear axis position (X,Y,Z); Pos.Y is hypothetical axis position (C,A,B). Unit of Pos.Y is linear. In contrast to term “OrdinaryProgramXcz”, the Unit of “OrdinaryProgramXcz”.Y is angle. In Polar coordinate interpolation mode (G12.1), the X value is the diameter value. So remark R to X here, emphasize x is different from the G12.1 convention. Use x as radius so that the dimension is uniform on the three axises (XCZ). public Vec3d ProgramPolarRxcz { get; set; } Property Value Vec3d 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.Numerical.RadiusCompensationBuf.html": {
"href": "api/Hi.Numerical.RadiusCompensationBuf.html",
"title": "Class RadiusCompensationBuf | HiAPI-C# 2025",
"summary": "Class RadiusCompensationBuf Namespace Hi.Numerical Assembly HiUniNc.dll Buffer for radius compensation (G41/G42) operations in numerical control. At each line junction, the offset paths of adjacent lines may form an intersection (intersected rays) or align directly (parallel rays). For straight lines, the tool goes to the intersection point. For arcs, the offset curve doesn't pass through the intersection, so transient points bridge the gap: Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc. Transient properties are null when rays are parallel (offset paths align, no corner needed) or when the adjacent line is not an arc. public class RadiusCompensationBuf Inheritance object RadiusCompensationBuf Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RadiusCompensationBuf() Initializes a new instance of the RadiusCompensationBuf class. public RadiusCompensationBuf() Properties CenterProgramPos Arc only. The circle center in program coordinates, computed from the arc's IJK values and the begin position. Used by NcProc to generate spiral contours. public Vec3d CenterProgramPos { get; set; } Property Value Vec3d CompensatedPosOnProgramCoordinate The compensated tool-tip position on program coordinates (after radius offset). For straight lines, this is the intersection of the adjacent offset lines. For parallel rays, this is a direct perpendicular offset from the program position. Can be Cartesian XYZ or Polar Coordinate Interpolation Mode (G12.1) XCZ. public Vec3d CompensatedPosOnProgramCoordinate { get; set; } Property Value Vec3d TransientBeginMc Arc only. Machine coordinates corresponding to TransientBeginProgramPos. public DVec3d TransientBeginMc { get; set; } Property Value DVec3d TransientBeginProgramPos 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<IMessage>). public Vec3d TransientBeginProgramPos { get; set; } Property Value Vec3d TransientEndMc Arc only. Machine coordinates corresponding to TransientEndProgramPos. public DVec3d TransientEndMc { get; set; } Property Value DVec3d TransientEndProgramPos 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<IMessage>). public Vec3d TransientEndProgramPos { get; set; } Property Value Vec3d Methods ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<IMessage>) Resolves radius compensation for the given node. public static bool ResolveRadiusCompensation(LinkedListNode<HardNcLine> srcNode, HardNcEnv ncEnv, NcNoteCache ncLineCache, IProgress<IMessage> mixedProgress) Parameters srcNode LinkedListNode<HardNcLine> The source node to resolve radius compensation for. ncEnv HardNcEnv The numerical control environment. ncLineCache NcNoteCache The NC line cache for storing messages. mixedProgress IProgress<IMessage> The message host for reporting issues. Returns bool True if radius compensation was resolved; otherwise, false. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object."
},
"api/Hi.Numerical.SourcedActEntry.html": {
"href": "api/Hi.Numerical.SourcedActEntry.html",
"title": "Class SourcedActEntry | HiAPI-C# 2025",
"summary": "Class SourcedActEntry Namespace Hi.Numerical Assembly HiMech.dll Represents an entry containing a source command and its associated act. public record SourcedActEntry : IEquatable<SourcedActEntry> Inheritance object SourcedActEntry Implements IEquatable<SourcedActEntry> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SourcedActEntry(ISentenceCarrier, IAct) Represents an entry containing a source command and its associated act. public SourcedActEntry(ISentenceCarrier SentenceSource, IAct Act) Parameters SentenceSource ISentenceCarrier The source sentence carrier, carrying both the Sentence and the execution-order SentenceIndex. Act IAct The act associated with the source command. Properties Act The act associated with the source command. public IAct Act { get; init; } Property Value IAct SentenceSource The source sentence carrier, carrying both the Sentence and the execution-order SentenceIndex. public ISentenceCarrier SentenceSource { get; init; } Property Value ISentenceCarrier"
},
"api/Hi.Numerical.SpindleDirection.html": {
"href": "api/Hi.Numerical.SpindleDirection.html",
"title": "Enum SpindleDirection | HiAPI-C# 2025",
"summary": "Enum SpindleDirection Namespace Hi.Numerical Assembly HiGeom.dll Enumeration of spindle rotation directions. public enum SpindleDirection Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) NumericUtil.IsRotating(SpindleDirection) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields CCW = 2 Counter-clockwise rotation (M04 command). CW = 1 Clockwise rotation (M03 command). STOP = 0 Spindle is stopped (M05 command). UnDefined = 3 Undefined direction state."
},
"api/Hi.Numerical.StepSelectionUtils.AnchorMode.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.AnchorMode.html",
"title": "Enum AnchorMode | HiAPI-C# 2025",
"summary": "Enum AnchorMode Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Defines the mode for anchoring boundaries when selecting steps. public enum AnchorMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FirstTouch = 4 Anchor at the first touch point. LastTouch = 8 Anchor at the last touch point. LineBegin = 1 Anchor at the beginning of a line. LineEnd = 2 Anchor at the end of a line. Undefined = 0 Undefined anchor mode."
},
"api/Hi.Numerical.StepSelectionUtils.BoundSelector.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelector.html",
"title": "Class BoundSelector | HiAPI-C# 2025",
"summary": "Class BoundSelector Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Mark on source command line for managing step. public class BoundSelector : IFileLineIndex, IGetFileLineIndex, IMakeXmlSource Inheritance object BoundSelector Implements IFileLineIndex IGetFileLineIndex 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BoundSelector(AnchorMode, IStepShift, FileLineIndex, int) Initializes a new instance of the BoundSelector class. public BoundSelector(AnchorMode anchorMode, IStepShift shift, FileLineIndex fileLineIndex, int boundStepIndex) Parameters anchorMode AnchorMode The anchor mode for the bound. shift IStepShift The step shift to apply. fileLineIndex FileLineIndex The file line index. boundStepIndex int The step index at the boundary. BoundSelector(XElement, string, IProgress<IMessage>) Ctor. public BoundSelector(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML source element baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> Progress reporter for nested XML factory calls. Properties BoundStepIndex If locale on begin, the step index should be the first step of the line; if locale on end, the step index should be the last step of the line. i.e. the index is inclusive. public int BoundStepIndex { get; set; } Property Value int FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FileLineIndex Gets or sets the file line index. public FileLineIndex FileLineIndex { get; set; } Property Value FileLineIndex FileNo Gets or sets the file number. public int FileNo { get; set; } Property Value int KeyAnchorMode Gets or sets the key anchor mode that determines how the boundary is anchored. public AnchorMode KeyAnchorMode { get; set; } Property Value AnchorMode LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int LineNo Gets or sets the line number. public int LineNo { get; set; } Property Value int Shift Gets or sets the shift to apply to the step index. public IStepShift Shift { get; set; } Property Value IStepShift XName Name for XML IO. public static string XName { get; } Property Value string Methods GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.StepSelectionUtils.BoundSelectorHost.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html",
"title": "Class BoundSelectorHost | HiAPI-C# 2025",
"summary": "Class BoundSelectorHost Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Hosts bound selectors and manages step sections within a CL strip. public class BoundSelectorHost : IMakeXmlSource Inheritance object BoundSelectorHost 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BoundSelectorHost() Initializes a new instance of the BoundSelectorHost class. public BoundSelectorHost() BoundSelectorHost(XElement, string, IProgress<IMessage>) Ctor. public BoundSelectorHost(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML source element baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> Progress reporter for nested bundle XML. Properties XName Name for XML IO. public static string XName { get; } Property Value string Methods Begin(string, AnchorMode, IStepShift, FileLineIndex, int) Marks the beginning of a step section with the specified key and parameters. public void Begin(string key, AnchorMode anchorMode, IStepShift shift, FileLineIndex fileLineIndex, int boundStepIndex) Parameters key string The key identifying the step section. anchorMode AnchorMode The anchor mode for the bound. shift IStepShift The step shift to apply. fileLineIndex FileLineIndex The file line index. boundStepIndex int The step index at the boundary. Begin(string, BoundSelector) Marks the beginning of a step section with the specified key. public void Begin(string key, BoundSelector beginMark) Parameters key string The key identifying the step section. beginMark BoundSelector The bound selector marking the beginning. Clear() Clears all unclosed sections and bound selector bundles. public void Clear() End(string, AnchorMode, IStepShift, FileLineIndex, int) Marks the end of a step section with the specified key and parameters. public void End(string key, AnchorMode anchorMode, IStepShift shift, FileLineIndex fileLineIndex, int boundStepIndex) Parameters key string The key identifying the step section. anchorMode AnchorMode The anchor mode for the bound. shift IStepShift The step shift to apply. fileLineIndex FileLineIndex The file line index. boundStepIndex int The step index at the boundary. End(string, BoundSelector) Marks the end of a step section with the specified key. public void End(string key, BoundSelector endMark) Parameters key string The key identifying the step section. endMark BoundSelector The bound selector marking the end. GetKeyToStepSectionDictionary(ClStrip) Gets a dictionary mapping keys to their corresponding step section ranges in the CL strip. public Dictionary<string, Range<int>> GetKeyToStepSectionDictionary(ClStrip clStrip) Parameters clStrip ClStrip The CL strip containing the steps. Returns Dictionary<string, Range<int>> A dictionary mapping keys to step section ranges. GetStepSection(string, ClStrip) Gets the step section range for the specified key in the CL strip. public Range<int> GetStepSection(string key, ClStrip clStrip) Parameters key string The key identifying the step section. clStrip ClStrip The CL strip containing the steps. Returns Range<int> The step section range, or null if the key is not found. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html",
"title": "Enum BoundSelectorPair.BoundLocale | HiAPI-C# 2025",
"summary": "Enum BoundSelectorPair.BoundLocale Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Defines the location of a bound within the pair. public enum BoundSelectorPair.BoundLocale Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Begin = 1 The beginning bound. End = 2 The ending bound."
},
"api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html",
"title": "Class BoundSelectorPair | HiAPI-C# 2025",
"summary": "Class BoundSelectorPair Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Represents a pair of bound selectors defining the beginning and end of a step section. public class BoundSelectorPair : IMakeXmlSource Inheritance object BoundSelectorPair 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BoundSelectorPair(BoundSelector, BoundSelector) Initializes a new instance of the BoundSelectorPair class with specified begin and end bound selectors. public BoundSelectorPair(BoundSelector begin, BoundSelector end) Parameters begin BoundSelector The beginning bound selector. end BoundSelector The ending bound selector. BoundSelectorPair(XElement, string, IProgress<IMessage>) Ctor. public BoundSelectorPair(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML source element baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> Progress reporter for nested selector XML. Properties Begin Gets the beginning bound selector. public BoundSelector Begin { get; } Property Value BoundSelector End Gets the ending bound selector. public BoundSelector End { get; } Property Value BoundSelector XName Name for XML IO. public static string XName { get; } Property Value string Methods GetStepSectionBound(BoundLocale) Gets the bound selector for the specified location. public BoundSelector GetStepSectionBound(BoundSelectorPair.BoundLocale locale) Parameters locale BoundSelectorPair.BoundLocale The location of the bound to retrieve. Returns BoundSelector The bound selector at the specified location. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html",
"title": "Class BoundSelectorStepSectionBundle | HiAPI-C# 2025",
"summary": "Class BoundSelectorStepSectionBundle Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Represents a bundle containing a boundary selector pair and the corresponding step section range. public class BoundSelectorStepSectionBundle : IMakeXmlSource Inheritance object BoundSelectorStepSectionBundle 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BoundSelectorStepSectionBundle(BoundSelectorPair, Range<int>) Initializes a new instance of the BoundSelectorStepSectionBundle class with the specified boundary selector pair and step section. public BoundSelectorStepSectionBundle(BoundSelectorPair boundSelectorPair, Range<int> stepSection) Parameters boundSelectorPair BoundSelectorPair The boundary selector pair. stepSection Range<int> The step section range. BoundSelectorStepSectionBundle(XElement, string, IProgress<IMessage>) Ctor. public BoundSelectorStepSectionBundle(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement XML source element baseDirectory string Base directory for resolving relative paths progress IProgress<IMessage> Progress reporter for nested selector XML. Properties BoundSelectorPair Gets or sets the boundary selector pair that defines the step section. public BoundSelectorPair BoundSelectorPair { get; set; } Property Value BoundSelectorPair XName Name for XML IO. public static string XName { get; } Property Value string Methods BuildStepSection(ClStrip) Builds the step section range from the CL strip using the boundary selector pair. public Range<int> BuildStepSection(ClStrip clStrip) Parameters clStrip ClStrip The CL strip to build the step section from. Returns Range<int> The built step section range. CallStepSection(ClStrip) Gets the existing step section or builds it if it doesn't exist. public Range<int> CallStepSection(ClStrip clStrip) Parameters clStrip ClStrip The CL strip to use for building the step section if needed. Returns Range<int> The step section range. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.StepSelectionUtils.BoundSelectorUtil.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html",
"title": "Class BoundSelectorUtil | HiAPI-C# 2025",
"summary": "Class BoundSelectorUtil Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Utility class for selecting steps within boundaries in a CL strip. public static class BoundSelectorUtil Inheritance object BoundSelectorUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetStepRange(ClStrip, BoundSelectorPair) Gets the range of step indices based on the provided boundary selector pair. public static Range<int> GetStepRange(this ClStrip clStrip, BoundSelectorPair rangeStepLineMark) Parameters clStrip ClStrip The CL strip containing the steps. rangeStepLineMark BoundSelectorPair The boundary selector pair defining the range. Returns Range<int> A range of step indices."
},
"api/Hi.Numerical.StepSelectionUtils.DistanceShift.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.DistanceShift.html",
"title": "Class DistanceShift | HiAPI-C# 2025",
"summary": "Class DistanceShift Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll A step shift implementation that shifts based on distance along the tool path. public class DistanceShift : IStepShift, IMakeXmlSource Inheritance object DistanceShift Implements IStepShift 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DistanceShift(double) Constructor with specified distance shift in millimeters. public DistanceShift(double distanceShift_mm) Parameters distanceShift_mm double The distance to shift in millimeters. DistanceShift(XElement) Ctor. public DistanceShift(XElement src) Parameters src XElement XML Properties DistanceShift_mm The distance to shift in millimeters. public double DistanceShift_mm { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods GetShiftedStepIndex(ClStrip, int) Gets the shifted step index based on distance along the tool path. public int GetShiftedStepIndex(ClStrip host, int originalStepIndex) Parameters host ClStrip The CL strip hosting the steps. originalStepIndex int The original step index to shift from. Returns int The shifted step index after applying the distance shift. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.StepSelectionUtils.IStepShift.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.IStepShift.html",
"title": "Interface IStepShift | HiAPI-C# 2025",
"summary": "Interface IStepShift Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Interface for defining step shift behavior. public interface IStepShift : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetShiftedStepIndex(ClStrip, int) Gets the shifted step index based on the original step index. int GetShiftedStepIndex(ClStrip host, int originalStepIndex) Parameters host ClStrip The CL strip hosting the steps. originalStepIndex int The original step index to shift from. Returns int The shifted step index."
},
"api/Hi.Numerical.StepSelectionUtils.TimeShift.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.TimeShift.html",
"title": "Class TimeShift | HiAPI-C# 2025",
"summary": "Class TimeShift Namespace Hi.Numerical.StepSelectionUtils Assembly HiMech.dll Represents a time-based shift operation for machining steps. This class provides functionality to shift step indices based on time offsets. public class TimeShift : IStepShift, IMakeXmlSource Inheritance object TimeShift Implements IStepShift 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeShift(TimeSpan, bool) Initializes a new instance of the TimeShift class with the specified parameters. public TimeShift(TimeSpan timeShift, bool isBackward) Parameters timeShift TimeSpan The amount of time to shift. isBackward bool True to shift backward in time, false to shift forward. TimeShift(XElement) Initializes a new instance of the TimeShift class from XML. public TimeShift(XElement src) Parameters src XElement The XML element containing the time shift configuration. Properties IsBackward Gets or sets a value indicating whether the shift is backward in time. When true, shifts steps earlier in time; when false, shifts steps later in time. public bool IsBackward { get; set; } Property Value bool ShiftTimeSpan Gets or sets the amount of time to shift. public TimeSpan ShiftTimeSpan { get; set; } Property Value TimeSpan XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string Remarks This name is used as the XML tag when serializing/deserializing TimeShift instances. The value is the unqualified name of the class (TimeShift). Methods GetShiftedStepIndex(ClStrip, int) Gets the shifted step index based on the original index and the time shift configuration. public int GetShiftedStepIndex(ClStrip host, int originalStepIndex) Parameters host ClStrip The cutter location strip containing the steps. originalStepIndex int The original step index to shift. Returns int The shifted step index, or -1 if the shift results in an invalid 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"
},
"api/Hi.Numerical.StepSelectionUtils.html": {
"href": "api/Hi.Numerical.StepSelectionUtils.html",
"title": "Namespace Hi.Numerical.StepSelectionUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.StepSelectionUtils Classes BoundSelector Mark on source command line for managing step. BoundSelectorHost Hosts bound selectors and manages step sections within a CL strip. BoundSelectorPair Represents a pair of bound selectors defining the beginning and end of a step section. BoundSelectorStepSectionBundle Represents a bundle containing a boundary selector pair and the corresponding step section range. BoundSelectorUtil Utility class for selecting steps within boundaries in a CL strip. DistanceShift A step shift implementation that shifts based on distance along the tool path. TimeShift Represents a time-based shift operation for machining steps. This class provides functionality to shift step indices based on time offsets. Interfaces IStepShift Interface for defining step shift behavior. Enums AnchorMode Defines the mode for anchoring boundaries when selecting steps. BoundSelectorPair.BoundLocale Defines the location of a bound within the pair."
},
"api/Hi.Numerical.SubStringKit.ActivationMode.html": {
"href": "api/Hi.Numerical.SubStringKit.ActivationMode.html",
"title": "Enum SubStringKit.ActivationMode | HiAPI-C# 2025",
"summary": "Enum SubStringKit.ActivationMode Namespace Hi.Numerical Assembly HiGeom.dll Defines the mode of activation for substring extraction. public enum SubStringKit.ActivationMode Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields TailSymbol = 0 Activates extraction based on a tail symbol."
},
"api/Hi.Numerical.SubStringKit.html": {
"href": "api/Hi.Numerical.SubStringKit.html",
"title": "Class SubStringKit | HiAPI-C# 2025",
"summary": "Class SubStringKit Namespace Hi.Numerical Assembly HiGeom.dll Utility class for extracting and manipulating substrings based on specific activation patterns. public class SubStringKit Inheritance object SubStringKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ActivationRaw Gets or sets the raw activation string used for pattern matching. public string ActivationRaw { get; set; } Property Value string Mode Gets or sets the activation mode for substring extraction. public SubStringKit.ActivationMode Mode { get; set; } Property Value SubStringKit.ActivationMode Methods GetScript(string) Gets the script part from the raw text based on the activation pattern. public string GetScript(string rawText) Parameters rawText string The raw text to extract script from. Returns string The extracted script, or null if no match is found. RemoveScript(string, out string) Removes the script part from the raw text based on the activation pattern. public string RemoveScript(string rawText, out string script) Parameters rawText string The raw text to process script string Output parameter that will contain the extracted script, or null if no match is found Returns string The raw text with the script part and activation pattern removed"
},
"api/Hi.Numerical.ToolConfigNotFoundException.html": {
"href": "api/Hi.Numerical.ToolConfigNotFoundException.html",
"title": "Class ToolConfigNotFoundException | HiAPI-C# 2025",
"summary": "Class ToolConfigNotFoundException Namespace Hi.Numerical Assembly HiUniNc.dll Exception thrown when a tool configuration cannot be found. public class ToolConfigNotFoundException : Exception, ISerializable Inheritance object Exception ToolConfigNotFoundException 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 Exception.SerializeObjectState object.Equals(object) object.Equals(object, object) object.GetHashCode() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ToolConfigNotFoundException(int, string) Initializes a new instance of the ToolConfigNotFoundException class. public ToolConfigNotFoundException(int configId, string msg) Parameters configId int The configuration ID that could not be found. msg string The error message. Properties ConfigId Gets or sets the configuration ID that could not be found. public int ConfigId { get; set; } Property Value int"
},
"api/Hi.Numerical.Xyzabc.Abc.html": {
"href": "api/Hi.Numerical.Xyzabc.Abc.html",
"title": "Struct Abc | HiAPI-C# 2025",
"summary": "Struct Abc Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Represents a three-axis rotational configuration in ABC coordinates. public struct Abc Inherited Members ValueType.Equals(object) ValueType.GetHashCode() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Abc(Vec3d) Creates a new ABC configuration from a 3D vector. public Abc(Vec3d src) Parameters src Vec3d The source vector where X, Y, Z components map to A, B, C angles respectively Abc(Abc) Creates a new ABC configuration by copying another one. public Abc(Abc src) Parameters src Abc The source ABC configuration to copy Abc(double, double, double) Ctor. public Abc(double a = NaN, double b = NaN, double c = NaN) Parameters a double b double c double Abc((double a, double b, double c)) Creates a new ABC configuration from a tuple of angles. public Abc((double a, double b, double c) src) Parameters src (double, double, double) The source tuple containing (a, b, c) angles Fields a The A-axis rotation angle. public double a Field Value double b The B-axis rotation angle. public double b Field Value double c The C-axis rotation angle. public double c Field Value double Properties Tuple Gets the ABC angles as a tuple. public (double a, double b, double c) Tuple { get; } Property Value (double, double, double) A tuple containing the (a, b, c) angles Methods ToString() Returns the fully qualified type name of this instance. public override string ToString() Returns string The fully qualified type name. ToVec3d() Converts the ABC angles to a 3D vector. public Vec3d ToVec3d() Returns Vec3d A vector where X, Y, Z components represent A, B, C angles respectively"
},
"api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html": {
"href": "api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html",
"title": "Class CodeXyzabcChain | HiAPI-C# 2025",
"summary": "Class CodeXyzabcChain Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll IXyzabcChain Composed by ChainCode. On purpose of easy XML hand management. public class CodeXyzabcChain : IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, IMakeXmlSource Inheritance object CodeXyzabcChain Implements IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 CodeXyzabcChain(string, bool) Initializes a new instance of the CodeXyzabcChain class. public CodeXyzabcChain(string chainCode = \"[O][Z][C][w];[O][Y][X][B][S][t]\", bool isVertical = true) Parameters chainCode string Chain code of machine tool. Must contain at least base, tool buckle and table buckle, where the code is O,t and w, respectively. The other available members: S is spindle. X,Y and Z are translational motion component. A,B and C are rotational motion component. The codes should be all uppercases. isVertical bool Whether the machine is in vertical configuration Examples The chain code of a three axis machine tool can be defined by \"[O][Z][w];[O][Y][X][S][t]\". The chain code of a five axis machine tool can be defined by \"[O][Z][C][w];[O][Y][X][B][S][t]\". CodeXyzabcChain(XElement, string, string, IProgress<IMessage>) Initializes a new instance of the CodeXyzabcChain class from XML. public CodeXyzabcChain(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress<IMessage> The progress reporter. Properties AnchorToSolid Gets or sets the dictionary mapping anchors to solids for display purposes. public Dictionary<Anchor, Solid> AnchorToSolid { get; set; } Property Value Dictionary<Anchor, Solid> Asmb Gets the assembly instance. public Asmb Asmb { get; } Property Value Asmb ChainBegin Gets the chain begin anchor. public Anchor ChainBegin { get; } Property Value Anchor ChainCode ChainCode is the chain code of machine tool. Each machine tool component is represented by a word embraced by brackets. Must contain at least base, tool buckle and table buckle, where the code is O,t and w, respectively. The other available members: S is spindle. X,Y and Z are translational motion component. A,B and C are rotational motion component. public string ChainCode { get; } Property Value string ChainEnd Gets the chain end anchor. public Anchor ChainEnd { get; } Property Value Anchor CodeToAnc Gets the dictionary mapping component codes to anchors. public Dictionary<string, Anchor> CodeToAnc { get; } Property Value Dictionary<string, Anchor> ComponentCodes_O2T Gets the list of component codes from root to tool buckle. public List<string> ComponentCodes_O2T { get; } Property Value List<string> ComponentCodes_O2W Gets the list of component codes from root to table buckle. public List<string> ComponentCodes_O2W { get; } Property Value List<string> IsVertical Set the machine to vertical; otherwise, set to horizontal. public bool IsVertical { get; } 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[] RootAnchor Gets the root anchor of the XYZABC chain. public Anchor RootAnchor { get; } Property Value Anchor TableBuckleTransformer Gets the table buckle transformer. public IStaticTransformer TableBuckleTransformer { get; set; } Property Value IStaticTransformer ToolBuckleTransformer Gets or sets the static transformer for the tool buckle. public IStaticTransformer ToolBuckleTransformer { get; set; } Property Value IStaticTransformer TransformerA Gets the A-axis transformer. public DynamicRotation TransformerA { get; } Property Value DynamicRotation TransformerB Gets the B-axis transformer. public DynamicRotation TransformerB { get; } Property Value DynamicRotation TransformerC Gets the C-axis transformer. public DynamicRotation TransformerC { get; } Property Value DynamicRotation TransformerX Gets the X-axis transformer. public DynamicTranslation TransformerX { get; } Property Value DynamicTranslation TransformerY Gets the Y-axis transformer. public DynamicTranslation TransformerY { get; } Property Value DynamicTranslation TransformerZ Gets the Z-axis transformer. public DynamicTranslation TransformerZ { get; } Property Value DynamicTranslation XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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 MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Numerical.Xyzabc.GeneralXyzabcChain.html": {
"href": "api/Hi.Numerical.Xyzabc.GeneralXyzabcChain.html",
"title": "Class GeneralXyzabcChain | HiAPI-C# 2025",
"summary": "Class GeneralXyzabcChain Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Represents a general XYZABC chain that can be constructed from a general mechanism. public class GeneralXyzabcChain : IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, IMakeXmlSource Inheritance object GeneralXyzabcChain Implements IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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 GeneralXyzabcChain(GeneralMechanism) Initializes a new instance of the GeneralXyzabcChain class with the specified general mechanism. public GeneralXyzabcChain(GeneralMechanism generalMechanism) Parameters generalMechanism GeneralMechanism The general mechanism to use for the chain. GeneralXyzabcChain(XElement, string, IProgress<IMessage>) Initializes a new instance of the GeneralXyzabcChain class from XML. public GeneralXyzabcChain(XElement src, string baseDirectory, IProgress<IMessage> progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress<IMessage> Progress reporter for loading the nested mechanism. Properties Asmb Asmb. public Asmb Asmb { get; } Property Value Asmb GeneralMechanismFile Gets or sets the file path for the general mechanism. public string GeneralMechanismFile { get; set; } Property Value string 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[] TableBuckleTransformer Gets or sets the static transformer for the table buckle. public IStaticTransformer TableBuckleTransformer { get; set; } Property Value IStaticTransformer ToolBuckleTransformer Gets or sets the static transformer for the tool buckle. public IStaticTransformer ToolBuckleTransformer { get; set; } Property Value IStaticTransformer TransformerA Transformer A. public DynamicRotation TransformerA { get; } Property Value DynamicRotation TransformerB Transformer B. public DynamicRotation TransformerB { get; } Property Value DynamicRotation TransformerC Transformer C. public DynamicRotation TransformerC { get; } Property Value DynamicRotation TransformerX Transformer X. public DynamicTranslation TransformerX { get; } Property Value DynamicTranslation TransformerY Transformer Y. public DynamicTranslation TransformerY { get; } Property Value DynamicTranslation TransformerZ Transformer Z. public DynamicTranslation TransformerZ { get; } Property Value DynamicTranslation XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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 MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 UpdateByMechanism() Updates the XYZABC chain components based on the current general mechanism. public void UpdateByMechanism()"
},
"api/Hi.Numerical.Xyzabc.IGetMcXyzabc.html": {
"href": "api/Hi.Numerical.Xyzabc.IGetMcXyzabc.html",
"title": "Interface IGetMcXyzabc | HiAPI-C# 2025",
"summary": "Interface IGetMcXyzabc Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Interface of GetMcXyzabc(). public interface IGetMcXyzabc Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetMcXyzabc() Get McXyzabc. ABC is in radian. DVec3d GetMcXyzabc() Returns DVec3d machine coordinate."
},
"api/Hi.Numerical.Xyzabc.IGetXyzabcChain.html": {
"href": "api/Hi.Numerical.Xyzabc.IGetXyzabcChain.html",
"title": "Interface IGetXyzabcChain | HiAPI-C# 2025",
"summary": "Interface IGetXyzabcChain Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Interface of get IXyzabcChain. public interface IGetXyzabcChain Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetXyzabcChain() Get IXyzabcChain. IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain"
},
"api/Hi.Numerical.Xyzabc.IMachineKinematics.html": {
"href": "api/Hi.Numerical.Xyzabc.IMachineKinematics.html",
"title": "Interface IMachineKinematics | HiAPI-C# 2025",
"summary": "Interface IMachineKinematics Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Device for UniNc controller. public interface IMachineKinematics Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. 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. 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. 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. 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. 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. 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"
},
"api/Hi.Numerical.Xyzabc.ISetMcXyzabc.html": {
"href": "api/Hi.Numerical.Xyzabc.ISetMcXyzabc.html",
"title": "Interface ISetMcXyzabc | HiAPI-C# 2025",
"summary": "Interface ISetMcXyzabc Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Abstraction for components that accept a full machine-coordinate pose (XYZ linear + ABC rotary). public interface ISetMcXyzabc Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods SetMcXyzabc(DVec3d) Writes the current MC pose into the implementation (linear metres, rotary radians). void SetMcXyzabc(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d Machine position and orientation."
},
"api/Hi.Numerical.Xyzabc.IXyzabcChain.html": {
"href": "api/Hi.Numerical.Xyzabc.IXyzabcChain.html",
"title": "Interface IXyzabcChain | HiAPI-C# 2025",
"summary": "Interface IXyzabcChain Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll A single chain contains subset transformers of {X,Y,Z,A,B,C} . public interface IXyzabcChain : IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d Inherited Members IGetXyzabcChain.GetXyzabcChain() IMachiningChain.GetTableBuckle() IMachiningChain.GetToolBuckle() IMachiningChain.McCodes IMachiningChain.McTransformers IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchorToSolidDictionary.GetAnchorToSolidDictionary() IGetAnchorToSolidDictionary.PrepareAnchorSolids() IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IExpandToBox3d.ExpandToBox3d(Box3d) Extension Methods MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) 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) Methods GetTransformerA() Get transformer A. DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerAbc() Rotary column transformers A, B, C in chain order (entries may be null if an axis is absent). IDynamicRotation[] GetTransformerAbc() Returns IDynamicRotation[] GetTransformerB() Get transformer B. DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerXyz() Linear column transformers X, Y, Z in chain order. DynamicTranslation[] GetTransformerXyz() Returns DynamicTranslation[] GetTransformerY() Get transformer Y. DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z"
},
"api/Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html": {
"href": "api/Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html",
"title": "Class ReflectedXyzabcChain | HiAPI-C# 2025",
"summary": "Class ReflectedXyzabcChain Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Cloned CodeXyzabcChain. public class ReflectedXyzabcChain : IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d Inheritance object ReflectedXyzabcChain Implements IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) 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) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ReflectedXyzabcChain(IXyzabcChain) Creates a reflected XYZABC chain from a source chain. public ReflectedXyzabcChain(IXyzabcChain src) Parameters src IXyzabcChain The source XYZABC chain. Properties AnchorToSolid Dictionary mapping anchors to solids. public Dictionary<Anchor, Solid> AnchorToSolid { get; set; } Property Value Dictionary<Anchor, Solid> Asmb The assembly. public Asmb Asmb { get; } Property Value Asmb ChainBegin The beginning anchor of the chain. public Anchor ChainBegin { get; } Property Value Anchor ChainEnd The ending anchor of the chain. public Anchor ChainEnd { get; } Property Value Anchor 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[] RootAnchor The root anchor. public Anchor RootAnchor { get; } Property Value Anchor SourceChain Source. public IXyzabcChain SourceChain { get; } Property Value IXyzabcChain TopoReflection Topology reflection. public TopoReflection TopoReflection { get; } Property Value TopoReflection TransformerA The A-axis transformer. public DynamicRotation TransformerA { get; } Property Value DynamicRotation TransformerB The B-axis transformer. public DynamicRotation TransformerB { get; } Property Value DynamicRotation TransformerC The C-axis transformer. public DynamicRotation TransformerC { get; } Property Value DynamicRotation TransformerX The X-axis transformer. public DynamicTranslation TransformerX { get; } Property Value DynamicTranslation TransformerY The Y-axis transformer. public DynamicTranslation TransformerY { get; } Property Value DynamicTranslation TransformerZ The Z-axis transformer. public DynamicTranslation TransformerZ { get; } Property Value DynamicTranslation XName Name for XML serialization. public static string XName { get; } Property Value string Methods 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() Returns List<IAnchoredDisplayee> A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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 MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file."
},
"api/Hi.Numerical.Xyzabc.XyzabcSolver.html": {
"href": "api/Hi.Numerical.Xyzabc.XyzabcSolver.html",
"title": "Class XyzabcSolver | HiAPI-C# 2025",
"summary": "Class XyzabcSolver Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Support to two-way conversion between MC (machine coordinate) and NP (Normal and Point). public class XyzabcSolver : IMachineKinematics Inheritance object XyzabcSolver Implements 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors XyzabcSolver(IXyzabcChain) Ctor. public XyzabcSolver(IXyzabcChain srcDevice) Parameters srcDevice IXyzabcChain target device Methods IsAxisAExisted() Whether rotary column A exists on this chain (non-null transformer). public bool IsAxisAExisted() Returns bool IsAxisBExisted() Whether rotary column B exists on this chain (non-null transformer). public bool IsAxisBExisted() Returns bool IsAxisCExisted() Whether rotary column C exists on this chain (non-null transformer). public bool IsAxisCExisted() Returns bool 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 mc) Parameters mc DVec3d 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 mc) Parameters mc DVec3d 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 np, out DVec3d mcXyzabc_rad) Parameters np DVec3d mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded Rebuild() Rebuild the solver. It should be called after the kinematic chain of Hi.Numerical.Xyzabc.XyzabcSolver.SrcDevice is modified. public void Rebuild() SetPn(DVec3d, out DVec3d) 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. public bool SetPn(DVec3d pn, out DVec3d mc) Parameters pn DVec3d normal and point mc DVec3d Resolved machine position (XYZ + ABC radians). Returns bool true if solved"
},
"api/Hi.Numerical.Xyzabc.XyzabcUtil.html": {
"href": "api/Hi.Numerical.Xyzabc.XyzabcUtil.html",
"title": "Class XyzabcUtil | HiAPI-C# 2025",
"summary": "Class XyzabcUtil Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Utility of XYZABC device. public static class XyzabcUtil Inheritance object XyzabcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods BuildAnchorToSolid(Dictionary<Anchor, Solid>, List<Anchor>, Dictionary<string, Solid>) Builds a dictionary mapping anchors to solids. public static void BuildAnchorToSolid(this Dictionary<Anchor, Solid> dstAnchorToSolidDictionary, List<Anchor> anchors, Dictionary<string, Solid> keyToSolid) Parameters dstAnchorToSolidDictionary Dictionary<Anchor, Solid> The destination dictionary to populate anchors List<Anchor> List of anchors keyToSolid Dictionary<string, Solid> Dictionary mapping anchor names to solids GenerateCollisionIndexPairs(IXyzabcChain) Generate collision index pairs for the XYZABC chain. public static List<CollisionIndexPair> GenerateCollisionIndexPairs(this IXyzabcChain xyzabcChain) Parameters xyzabcChain IXyzabcChain The XYZABC chain Returns List<CollisionIndexPair> List of collision index pairs GetMc(IXyzabcChain, out DVec3d) Get machine coordinates. public static void GetMc(this IXyzabcChain device, out DVec3d mc) Parameters device IXyzabcChain The XYZABC device mc DVec3d Output machine coordinate as DVec3d GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) Get machine coordinates. The output value set to NAN if the corresponding transformer does not exist. public static void GetMc(this IXyzabcChain device, out double mcX, out double mcY, out double mcZ, out double mcA, out double mcB, out double mcC) Parameters device IXyzabcChain device mcX double machine coordinate X mcY double machine coordinate Y mcZ double machine coordinate Z mcA double machine coordinate A (rad) mcB double machine coordinate B (rad) mcC double machine coordinate C (rad) GetMcAbc_rad(IXyzabcChain, out Abc) Get machine coordinates. The output value set to NAN if the corresponding transformer does not exist. public static void GetMcAbc_rad(this IXyzabcChain device, out Abc mcAbc_rad) Parameters device IXyzabcChain device mcAbc_rad Abc Output machine coordinates ABC in radians GetMcXyzabc(IXyzabcChain) Get machine coordinates as DVec3d. public static DVec3d GetMcXyzabc(this IXyzabcChain device) Parameters device IXyzabcChain The XYZABC device Returns DVec3d Machine coordinate as DVec3d. ABC in rad. GetNp(IXyzabcChain) Get normal and position from Hi.Numerical.Xyzabc.IXyzabcChain.GetChainBegin to Hi.Numerical.Xyzabc.IXyzabcChain.GetChainEnd. public static DVec3d GetNp(this IXyzabcChain src) Parameters src IXyzabcChain src Returns DVec3d normal and position GetTransformationMat4d(IXyzabcChain) Get transformation matrix from Hi.Numerical.Xyzabc.IXyzabcChain.GetChainBegin to Hi.Numerical.Xyzabc.IXyzabcChain.GetChainEnd. public static Mat4d GetTransformationMat4d(this IXyzabcChain src) Parameters src IXyzabcChain src Returns Mat4d transformation matrix SetMc(IXyzabcChain, DVec3d) Set machine coordinate. public static void SetMc(this IXyzabcChain device, DVec3d mc) Parameters device IXyzabcChain device mc DVec3d machine coordinate SetMc(IXyzabcChain, Vec3d) Set machine coordinate. public static void SetMc(this IXyzabcChain device, Vec3d mcXyz) Parameters device IXyzabcChain device mcXyz Vec3d Machine coordinate XYZ SetMc(IXyzabcChain, double, double, double) Set machine coordinate. The input value do no effect if the corresponding transformer does not exist. public static void SetMc(this IXyzabcChain device, double mcX, double mcY, double mcZ) Parameters device IXyzabcChain device mcX double machine coordinate X mcY double machine coordinate Y mcZ double machine coordinate Z SetMc(IXyzabcChain, double, double, double, double, double, double) Set machine coordinate. The input value do no effect if the corresponding transformer does not exist. public static void SetMc(this IXyzabcChain device, double mcX, double mcY, double mcZ, double mcA, double mcB, double mcC) Parameters device IXyzabcChain device mcX double machine coordinate X mcY double machine coordinate Y mcZ double machine coordinate Z mcA double machine coordinate A mcB double machine coordinate B mcC double machine coordinate C SetMcAbc_rad(IXyzabcChain, Vec3d) Set machine coordinate. The input value do no effect if the corresponding transformer does not exist. public static void SetMcAbc_rad(this IXyzabcChain device, Vec3d mcAbc_rad) Parameters device IXyzabcChain device mcAbc_rad Vec3d Machine coordinate ABC in radians"
},
"api/Hi.Numerical.Xyzabc.html": {
"href": "api/Hi.Numerical.Xyzabc.html",
"title": "Namespace Hi.Numerical.Xyzabc | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical.Xyzabc Classes CodeXyzabcChain IXyzabcChain Composed by ChainCode. On purpose of easy XML hand management. GeneralXyzabcChain Represents a general XYZABC chain that can be constructed from a general mechanism. ReflectedXyzabcChain Cloned CodeXyzabcChain. XyzabcSolver Support to two-way conversion between MC (machine coordinate) and NP (Normal and Point). XyzabcUtil Utility of XYZABC device. Structs Abc Represents a three-axis rotational configuration in ABC coordinates. Interfaces IGetMcXyzabc Interface of GetMcXyzabc(). IGetXyzabcChain Interface of get IXyzabcChain. IMachineKinematics Device for UniNc controller. ISetMcXyzabc Abstraction for components that accept a full machine-coordinate pose (XYZ linear + ABC rotary). IXyzabcChain A single chain contains subset transformers of {X,Y,Z,A,B,C} ."
},
"api/Hi.Numerical.html": {
"href": "api/Hi.Numerical.html",
"title": "Namespace Hi.Numerical | HiAPI-C# 2025",
"summary": "Namespace Hi.Numerical Classes FlexDictionaryUtil Utility for flexible dictionary operations. HardNcComment Represents a comment in NC code. HardNcEnv Represents the numerical control environment containing configuration for CNC operations. HardNcLine Represents a line in the NC program with its associated data and operations. HardNcUtil Utility class for working with NC code. MechNcUtil NC Utility. MillingToolOffsetTable Offset table for milling tool. The key is Offset ID (H or D in NC code). MillingToolOffsetTableRow Raw of MillingToolOffsetTable NcFlagUtil Utility class for working with NC flags and their lifecycle modes. NcGroupAttribute NC Group Attribute. NcLifeCycleAttribute Attribute to specify the lifecycle mode of an NC flag. NcNameAttribute Attribute used to define a name for NC flags and other enumeration fields. NcNoteCache Cache for notes and warnings generated during NC line parsing. NcProc Provides processing utilities for NC programming. NumericUtil Utility class for numeric operations and unit conversions. PolarEntry The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. RadiusCompensationBuf Buffer for radius compensation (G41/G42) operations in numerical control. At each line junction, the offset paths of adjacent lines may form an intersection (intersected rays) or align directly (parallel rays). For straight lines, the tool goes to the intersection point. For arcs, the offset curve doesn't pass through the intersection, so transient points bridge the gap: Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc. Transient properties are null when rays are parallel (offset paths align, no corner needed) or when the adjacent line is not an arc. SourcedActEntry Represents an entry containing a source command and its associated act. SubStringKit Utility class for extracting and manipulating substrings based on specific activation patterns. ToolConfigNotFoundException Exception thrown when a tool configuration cannot be found. Interfaces IFlexDictionaryHost<T> Interface of FlexDictionary. Provider of additional quantity source. IGetFeedrate Interface for retrieving feedrate information. 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. ISetFeedrate Interface for setting feedrate information. ISetSpindleSpeed Interface for setting spindle speed. Enums CncBrand Represents different CNC controller brands supported by the system. CommentMark Enumeration of different comment mark types used in NC code. CoolantMode Cutting-fluid delivery mode parsed from typical NC coolant machine functions (e.g. M07 / M08 / M09). Values are consumed by higher-level machining simulation and thermal models that map each mode to convection and temperature assumptions. CoordinateInterpolationMode Defines the coordinate interpolation mode for NC operations. NcFlag NC Flag. NcGroup00 NcGroup enum. GCode Group00. Include G04,G52,G53,G53p1,SiemensCycle800Swivel,SiemensSupa. NcGroup01 NcGroup enum. For linear move mode: G00 or G01. G00 is rapid move. G01 is linear cut. G02 is CW cut; G03 is CCW cut. NcGroup02 NcGroup enum. Plane selection. Include G17,G18,G19. NcGroup03 NcGroup enum. Absolute(G90) or increment(G91) coordinate. NcGroup05 NcGroup enum. For feedrate. NcGroup06 NcGroup enum. Group of unit. In mm or in inch. NcGroup07 NcGroup enum. Left or right compensation for tool radius, etc.. See G40, G41, G42 for available compensation modes. NcGroup08 NcGroup enum. Tool length compensation, etc.. G43,G43p4,G44,G49,SiemensTraori,SiemensTrafoof,HeidenhainM128,HeidenhainM129. NcGroup09 NcGroup enum. Canned cycle. NcGroup10 NcGroup enum. Canned cycle return point. G98,G99. NcGroup13 NC Group 13 for constant surface speed control. NcGroup14 NcGroup enum. Coordinate system. Such as G54Series. NcGroup15 NcGroup enum. NcGroup16 NcGroup enum. Rotation plane related. Interface of get transformation. Heidenhain equivalent group is NcGroupHeidenhainPlane. NcGroup21 NcGroup enum. Polar coordinate interpolation mode. NcGroupHeidenhainM107M108 NcGroup enum. Heidenhain group. Enable or disable Suppress error message for replacement tools with oversize. NcGroupHeidenhainPlane Heidenhain Group Plane related. ISO equivalent group is NcGroup16. NcGroupHeidenhainShortestRotaryPath NcGroup enum. Heidenhain group. shortest rotary state. HeidenhainM126,HeidenhainM127 NcGroupSpindleRotation NcGroup enum. Spindle rotation control. See SpindleStop, SpindleCw, SpindleCcw for available rotation modes. NcLifeCycleMode Defines the lifecycle mode of NC commands. NcWarningSceneEnum Defines scene types for NC warnings. SpindleDirection Enumeration of spindle rotation directions. SubStringKit.ActivationMode Defines the mode of activation for substring extraction."
},
"api/Hi.PanelModels.HiKey.html": {
"href": "api/Hi.PanelModels.HiKey.html",
"title": "Enum HiKey | HiAPI-C# 2025",
"summary": "Enum HiKey Namespace Hi.PanelModels Assembly HiDisp.dll The definition is the same as WPF Key. public enum HiKey Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields A = 44 AbntC1 = 147 AbntC2 = 148 Add = 85 Apps = 72 Attn = 163 B = 45 Back = 2 BrowserBack = 122 BrowserFavorites = 127 BrowserForward = 123 BrowserHome = 128 BrowserRefresh = 124 BrowserSearch = 126 BrowserStop = 125 C = 46 Cancel = 1 Capital = 8 CapsLock = 8 Clear = 5 CrSel = 164 D = 47 D0 = 34 D1 = 35 D2 = 36 D3 = 37 D4 = 38 D5 = 39 D6 = 40 D7 = 41 D8 = 42 D9 = 43 DbeAlphanumeric = 157 DbeCodeInput = 167 DbeDbcsChar = 161 DbeDetermineString = 169 DbeEnterDialogConversionMode = 170 DbeEnterImeConfigureMode = 165 DbeEnterWordRegisterMode = 164 DbeFlushString = 166 DbeHiragana = 159 DbeKatakana = 158 DbeNoCodeInput = 168 DbeNoRoman = 163 DbeRoman = 162 DbeSbcsChar = 160 DeadCharProcessed = 172 Decimal = 88 Delete = 32 Divide = 89 Down = 26 E = 48 End = 21 Enter = 6 EraseEof = 166 Escape = 13 ExSel = 165 Execute = 29 F = 49 F1 = 90 F10 = 99 F11 = 100 F12 = 101 F13 = 102 F14 = 103 F15 = 104 F16 = 105 F17 = 106 F18 = 107 F19 = 108 F2 = 91 F20 = 109 F21 = 110 F22 = 111 F23 = 112 F24 = 113 F3 = 92 F4 = 93 F5 = 94 F6 = 95 F7 = 96 F8 = 97 F9 = 98 FinalMode = 11 G = 50 H = 51 HangulMode = 9 HanjaMode = 12 Help = 33 Home = 22 I = 52 ImeAccept = 16 ImeConvert = 14 ImeModeChange = 17 ImeNonConvert = 15 ImeProcessed = 155 Insert = 31 J = 53 JunjaMode = 10 K = 54 KanaMode = 9 KanjiMode = 12 L = 55 LWin = 70 LaunchApplication1 = 138 LaunchApplication2 = 139 LaunchMail = 136 Left = 23 LeftAlt = 120 LeftCtrl = 118 LeftShift = 116 LineFeed = 4 M = 56 MediaNextTrack = 132 MediaPlayPause = 135 MediaPreviousTrack = 133 MediaStop = 134 Multiply = 84 N = 57 Next = 20 NoName = 169 None = 0 NumLock = 114 NumPad0 = 74 NumPad1 = 75 NumPad2 = 76 NumPad3 = 77 NumPad4 = 78 NumPad5 = 79 NumPad6 = 80 NumPad7 = 81 NumPad8 = 82 NumPad9 = 83 O = 58 Oem1 = 140 Oem102 = 154 Oem2 = 145 Oem3 = 146 Oem4 = 149 Oem5 = 150 Oem6 = 151 Oem7 = 152 Oem8 = 153 OemAttn = 157 OemAuto = 160 OemBackTab = 162 OemBackslash = 154 OemClear = 171 OemCloseBrackets = 151 OemComma = 142 OemCopy = 159 OemEnlw = 161 OemFinish = 158 OemMinus = 143 OemOpenBrackets = 149 OemPeriod = 144 OemPipe = 150 OemPlus = 141 OemQuestion = 145 OemQuotes = 152 OemSemicolon = 140 OemTilde = 146 P = 59 Pa1 = 170 PageDown = 20 PageUp = 19 Pause = 7 Play = 167 Print = 28 PrintScreen = 30 Prior = 19 Q = 60 R = 61 RWin = 71 Return = 6 Right = 25 RightAlt = 121 RightCtrl = 119 RightShift = 117 S = 62 Scroll = 115 Select = 27 SelectMedia = 137 Separator = 86 Sleep = 73 Snapshot = 30 Space = 18 Subtract = 87 System = 156 T = 63 Tab = 3 U = 64 Up = 24 V = 65 VolumeDown = 130 VolumeMute = 129 VolumeUp = 131 W = 66 X = 67 Y = 68 Z = 69 Zoom = 168"
},
"api/Hi.PanelModels.HiKeyEvent.html": {
"href": "api/Hi.PanelModels.HiKeyEvent.html",
"title": "Class HiKeyEvent | HiAPI-C# 2025",
"summary": "Class HiKeyEvent Namespace Hi.PanelModels Assembly HiDisp.dll Cross platform key event. public class HiKeyEvent : EventArgs Inheritance object EventArgs HiKeyEvent Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HiKeyEvent() Initializes a new instance of the HiKeyEvent class. public HiKeyEvent() HiKeyEvent(HiKey, PanelModel) Initializes a new instance of the HiKeyEvent class. public HiKeyEvent(HiKey key, PanelModel panelModel) Parameters key HiKey The key associated with this event. panelModel PanelModel The panel model associated with this event. Properties Key Gets the key associated with this event. public HiKey Key { get; } Property Value HiKey PanelModel Gets the panel model associated with this event. public PanelModel PanelModel { get; } Property Value PanelModel"
},
"api/Hi.PanelModels.HiModifierKeys.html": {
"href": "api/Hi.PanelModels.HiModifierKeys.html",
"title": "Enum HiModifierKeys | HiAPI-C# 2025",
"summary": "Enum HiModifierKeys Namespace Hi.PanelModels Assembly HiDisp.dll The definition is the same as WPF ModifierKeys. [Flags] public enum HiModifierKeys Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Alt = 1 Control = 2 None = 0 Shift = 4 Windows = 8"
},
"api/Hi.PanelModels.HiMouseButton.html": {
"href": "api/Hi.PanelModels.HiMouseButton.html",
"title": "Enum HiMouseButton | HiAPI-C# 2025",
"summary": "Enum HiMouseButton Namespace Hi.PanelModels Assembly HiDisp.dll The definition is the same as WPF MouseButton public enum HiMouseButton Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Left = 0 The left mouse button. Identical to javascript convention. Middle = 1 Right = 2 The right mouse button. Identical to javascript convention. XButton1 = 3 XButton2 = 4"
},
"api/Hi.PanelModels.HiMouseButtonEvent.html": {
"href": "api/Hi.PanelModels.HiMouseButtonEvent.html",
"title": "Class HiMouseButtonEvent | HiAPI-C# 2025",
"summary": "Class HiMouseButtonEvent Namespace Hi.PanelModels Assembly HiDisp.dll Mouse button event for cross-platform. public class HiMouseButtonEvent : EventArgs Inheritance object EventArgs HiMouseButtonEvent Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HiMouseButtonEvent(HiMouseButton, PanelModel) Initializes a new instance of the HiMouseButtonEvent class. public HiMouseButtonEvent(HiMouseButton changedButton, PanelModel panelModel) Parameters changedButton HiMouseButton The button that changed state. panelModel PanelModel The panel model associated with this event. Properties ChangedButton Gets the button that changed state. public HiMouseButton ChangedButton { get; } Property Value HiMouseButton PanelModel Gets the panel model associated with this event. public PanelModel PanelModel { get; } Property Value PanelModel"
},
"api/Hi.PanelModels.HiMouseButtonMask.html": {
"href": "api/Hi.PanelModels.HiMouseButtonMask.html",
"title": "Enum HiMouseButtonMask | HiAPI-C# 2025",
"summary": "Enum HiMouseButtonMask Namespace Hi.PanelModels Assembly HiDisp.dll Bit Mask of HiMouseButton. [Flags] public enum HiMouseButtonMask Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) HiMouseButtonMaskUtil.IsLeftPressed(HiMouseButtonMask) HiMouseButtonMaskUtil.IsMiddlePressed(HiMouseButtonMask) HiMouseButtonMaskUtil.IsRightPressed(HiMouseButtonMask) HiMouseButtonMaskUtil.IsXButton1Pressed(HiMouseButtonMask) HiMouseButtonMaskUtil.IsXButton2Pressed(HiMouseButtonMask) HiMouseButtonMaskUtil.Set(ref HiMouseButtonMask, HiMouseButton, bool) HiMouseButtonMaskUtil.SetLeftPressed(ref HiMouseButtonMask, bool) HiMouseButtonMaskUtil.SetMiddlePressed(ref HiMouseButtonMask, bool) HiMouseButtonMaskUtil.SetRightPressed(ref HiMouseButtonMask, bool) HiMouseButtonMaskUtil.SetXButton1Pressed(ref HiMouseButtonMask, bool) HiMouseButtonMaskUtil.SetXButton2Pressed(ref HiMouseButtonMask, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Left = 1 Left mouse button. Middle = 2 Middle mouse button. Right = 4 Right mouse button. XButton1 = 8 Other mouse button X1. XButton2 = 16 Other mouse button X2."
},
"api/Hi.PanelModels.HiMouseButtonMaskUtil.html": {
"href": "api/Hi.PanelModels.HiMouseButtonMaskUtil.html",
"title": "Class HiMouseButtonMaskUtil | HiAPI-C# 2025",
"summary": "Class HiMouseButtonMaskUtil Namespace Hi.PanelModels Assembly HiDisp.dll Utility of HiMouseButtonMask. public static class HiMouseButtonMaskUtil Inheritance object HiMouseButtonMaskUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods IsLeftPressed(HiMouseButtonMask) Is mouse button Left pressed. public static bool IsLeftPressed(this HiMouseButtonMask src) Parameters src HiMouseButtonMask Returns bool IsMiddlePressed(HiMouseButtonMask) Is mouse button Middle pressed. public static bool IsMiddlePressed(this HiMouseButtonMask src) Parameters src HiMouseButtonMask Returns bool IsRightPressed(HiMouseButtonMask) Is mouse button Right pressed. public static bool IsRightPressed(this HiMouseButtonMask src) Parameters src HiMouseButtonMask Returns bool IsXButton1Pressed(HiMouseButtonMask) Is mouse button XButton1 pressed. public static bool IsXButton1Pressed(this HiMouseButtonMask src) Parameters src HiMouseButtonMask Returns bool IsXButton2Pressed(HiMouseButtonMask) Is mouse button XButton2 pressed. public static bool IsXButton2Pressed(this HiMouseButtonMask src) Parameters src HiMouseButtonMask Returns bool Set(ref HiMouseButtonMask, HiMouseButton, bool) Set the src by HiMouseButton. public static void Set(this ref HiMouseButtonMask src, HiMouseButton changedMouseButton, bool isPressed) Parameters src HiMouseButtonMask src changedMouseButton HiMouseButton changed mouse button isPressed bool true if the action is pressed; false if the action is released SetLeftPressed(ref HiMouseButtonMask, bool) Set mouse button Left pressed. public static void SetLeftPressed(this ref HiMouseButtonMask src, bool b) Parameters src HiMouseButtonMask b bool SetMiddlePressed(ref HiMouseButtonMask, bool) Set mouse button Middle pressed. public static void SetMiddlePressed(this ref HiMouseButtonMask src, bool b) Parameters src HiMouseButtonMask b bool SetRightPressed(ref HiMouseButtonMask, bool) Set mouse button Right pressed. public static void SetRightPressed(this ref HiMouseButtonMask src, bool b) Parameters src HiMouseButtonMask b bool SetXButton1Pressed(ref HiMouseButtonMask, bool) Set mouse button XButton1 pressed. public static void SetXButton1Pressed(this ref HiMouseButtonMask src, bool b) Parameters src HiMouseButtonMask b bool SetXButton2Pressed(ref HiMouseButtonMask, bool) Set mouse button XButton2 pressed. public static void SetXButton2Pressed(this ref HiMouseButtonMask src, bool b) Parameters src HiMouseButtonMask b bool"
},
"api/Hi.PanelModels.HiMouseMoveEvent.html": {
"href": "api/Hi.PanelModels.HiMouseMoveEvent.html",
"title": "Class HiMouseMoveEvent | HiAPI-C# 2025",
"summary": "Class HiMouseMoveEvent Namespace Hi.PanelModels Assembly HiDisp.dll Mouse event for cross-platform. public class HiMouseMoveEvent : EventArgs Inheritance object EventArgs HiMouseMoveEvent Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HiMouseMoveEvent(Vec2d, PanelModel) Initializes a new instance of the HiMouseMoveEvent class. public HiMouseMoveEvent(Vec2d position, PanelModel panelModel) Parameters position Vec2d The position of the mouse. panelModel PanelModel The panel model associated with this event. Properties PanelModel Gets the panel model associated with this event. public PanelModel PanelModel { get; } Property Value PanelModel Position Gets the position of the mouse. public Vec2d Position { get; } Property Value Vec2d"
},
"api/Hi.PanelModels.HiMouseWheelEvent.html": {
"href": "api/Hi.PanelModels.HiMouseWheelEvent.html",
"title": "Class HiMouseWheelEvent | HiAPI-C# 2025",
"summary": "Class HiMouseWheelEvent Namespace Hi.PanelModels Assembly HiDisp.dll Mouse wheel event for cross-platform. public class HiMouseWheelEvent : EventArgs Inheritance object EventArgs HiMouseWheelEvent Inherited Members EventArgs.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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HiMouseWheelEvent(int, PanelModel) Initializes a new instance of the HiMouseWheelEvent class. public HiMouseWheelEvent(int delta, PanelModel panelModel) Parameters delta int The delta value of the mouse wheel movement. panelModel PanelModel The panel model associated with this event. Properties Delta Gets the delta value of the mouse wheel movement. public int Delta { get; } Property Value int PanelModel Gets the panel model associated with this event. public PanelModel PanelModel { get; } Property Value PanelModel"
},
"api/Hi.PanelModels.PanelModel.html": {
"href": "api/Hi.PanelModels.PanelModel.html",
"title": "Class PanelModel | HiAPI-C# 2025",
"summary": "Class PanelModel Namespace Hi.PanelModels Assembly HiDisp.dll A panel model contains necessary data for manipulating a panel. It is platform-neutral. public class PanelModel Inheritance object PanelModel Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CursorDelta Mouse cursor position changed from the last time to current. public Vec2d CursorDelta { get; set; } Property Value Vec2d CursorPosition Current mouse cursor position. public Vec2d CursorPosition { get; set; } Property Value Vec2d Height Panel height. public double Height { get; set; } Property Value double IsVisible Is panel visible. public bool IsVisible { get; set; } Property Value bool ModifierKeys Current pressed keyboard modifiers. public HiModifierKeys ModifierKeys { get; set; } Property Value HiModifierKeys MouseButtonMask Current pressed mouse button. public HiMouseButtonMask MouseButtonMask { get; set; } Property Value HiMouseButtonMask Width Panel width. public double Width { get; set; } Property Value double Methods KeyDown(HiKey) Press the key to this model. public void KeyDown(HiKey key) Parameters key HiKey key KeyUp(HiKey) Release the key to this model. public void KeyUp(HiKey key) Parameters key HiKey key MouseButtonDown(HiMouseButton) Press the mouse button to this model. public void MouseButtonDown(HiMouseButton button) Parameters button HiMouseButton button MouseButtonUp(HiMouseButton) Release the mouse button to this model. public void MouseButtonUp(HiMouseButton button) Parameters button HiMouseButton button MouseMove(Vec2d) Move the mouse and update the mouse cursor position to this model. public void MouseMove(Vec2d cursorPosition) Parameters cursorPosition Vec2d cursor position MouseWheel(int) Roll mouse wheel to this model. public void MouseWheel(int delta) Parameters delta int the quantity of the mouse wheel rolling Resize(double, double) Resize the panel model. public void Resize(double w, double h) Parameters w double width h double height"
},
"api/Hi.PanelModels.html": {
"href": "api/Hi.PanelModels.html",
"title": "Namespace Hi.PanelModels | HiAPI-C# 2025",
"summary": "Namespace Hi.PanelModels Classes HiKeyEvent Cross platform key event. HiMouseButtonEvent Mouse button event for cross-platform. HiMouseButtonMaskUtil Utility of HiMouseButtonMask. HiMouseMoveEvent Mouse event for cross-platform. HiMouseWheelEvent Mouse wheel event for cross-platform. PanelModel A panel model contains necessary data for manipulating a panel. It is platform-neutral. Enums HiKey The definition is the same as WPF Key. HiModifierKeys The definition is the same as WPF ModifierKeys. HiMouseButton The definition is the same as WPF MouseButton HiMouseButtonMask Bit Mask of HiMouseButton."
},
"api/Hi.Parallels.CurrentThreadTaskScheduler.html": {
"href": "api/Hi.Parallels.CurrentThreadTaskScheduler.html",
"title": "Class CurrentThreadTaskScheduler | HiAPI-C# 2025",
"summary": "Class CurrentThreadTaskScheduler Namespace Hi.Parallels Assembly HiGeom.dll A task scheduler that executes tasks on the current thread. public class CurrentThreadTaskScheduler : TaskScheduler Inheritance object TaskScheduler CurrentThreadTaskScheduler Inherited Members TaskScheduler.FromCurrentSynchronizationContext() TaskScheduler.TryDequeue(Task) TaskScheduler.TryExecuteTask(Task) TaskScheduler.Current TaskScheduler.Default TaskScheduler.Id TaskScheduler.MaximumConcurrencyLevel TaskScheduler.UnobservedTaskException object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetScheduledTasks() Gets the tasks currently scheduled on this scheduler. protected override IEnumerable<Task> GetScheduledTasks() Returns IEnumerable<Task> An empty enumerable since this scheduler doesn't queue tasks. QueueTask(Task) Queues a task to the scheduler, which immediately executes it on the current thread. protected override void QueueTask(Task task) Parameters task Task The task to be executed. TryExecuteTaskInline(Task, bool) Tries to execute a task synchronously on the current thread. protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) Parameters task Task The task to be executed. taskWasPreviouslyQueued bool Whether the task was previously queued to the scheduler. Returns bool Always returns true since the task is always executed."
},
"api/Hi.Parallels.DistributedQueueTaskScheduler.html": {
"href": "api/Hi.Parallels.DistributedQueueTaskScheduler.html",
"title": "Class DistributedQueueTaskScheduler | HiAPI-C# 2025",
"summary": "Class DistributedQueueTaskScheduler Namespace Hi.Parallels Assembly HiGeom.dll A task scheduler that distributes tasks across multiple threads or processes. Allows for controlled execution of tasks with a specified maximum concurrency level. public class DistributedQueueTaskScheduler : TaskScheduler, IDisposable Inheritance object TaskScheduler DistributedQueueTaskScheduler Implements IDisposable Inherited Members TaskScheduler.FromCurrentSynchronizationContext() TaskScheduler.TryDequeue(Task) TaskScheduler.TryExecuteTask(Task) TaskScheduler.Current TaskScheduler.Default TaskScheduler.Id TaskScheduler.MaximumConcurrencyLevel TaskScheduler.UnobservedTaskException object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DistributedQueueTaskScheduler(DistributedQueueTaskStarter, int, int) Initializes a new instance of the DistributedQueueTaskScheduler class. public DistributedQueueTaskScheduler(DistributedQueueTaskStarter starter, int maxIdlingTaskNum, int maxWorkingTaskNum) Parameters starter DistributedQueueTaskStarter The task starter responsible for distributing tasks. maxIdlingTaskNum int The maximum number of tasks that can be queued. maxWorkingTaskNum int The maximum number of tasks that can be executed concurrently. Properties MaxWorkingTaskNum Gets the maximum number of tasks that can be executed concurrently. public int MaxWorkingTaskNum { get; } Property Value int 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 DistributedQueueTaskScheduler 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. GetScheduledTasks() Gets the tasks currently scheduled for execution. protected override IEnumerable<Task> GetScheduledTasks() Returns IEnumerable<Task> An enumerable of the tasks currently scheduled. QueueTask(Task) Queues a task to the scheduler. protected override void QueueTask(Task task) Parameters task Task The task to be queued. TryExecuteTaskInline(Task, bool) Tries to execute a task synchronously on the current thread. protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) Parameters task Task The task to be executed. taskWasPreviouslyQueued bool Whether the task was previously queued to the scheduler. Returns bool true if the task was successfully executed; otherwise, false. WaitAll() Waits for all queued tasks to complete. public void WaitAll() Events Ending Event that is raised when a worker thread ends processing tasks. public event Action Ending Event Type Action Starting Event that is raised when a worker thread starts processing tasks. public event Action Starting Event Type Action"
},
"api/Hi.Parallels.DistributedQueueTaskStarter.html": {
"href": "api/Hi.Parallels.DistributedQueueTaskStarter.html",
"title": "Class DistributedQueueTaskStarter | HiAPI-C# 2025",
"summary": "Class DistributedQueueTaskStarter Namespace Hi.Parallels Assembly HiGeom.dll A class that manages and starts a collection of actions in parallel. public class DistributedQueueTaskStarter Inheritance object DistributedQueueTaskStarter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DistributedQueueTaskStarter(int) Initializes a new instance of the DistributedQueueTaskStarter class. public DistributedQueueTaskStarter(int maxWorkingTaskNum = 0) Parameters maxWorkingTaskNum int The maximum number of tasks that can be executed simultaneously. If 0, uses the processor count. Properties IdleTaskNum Gets the number of idle tasks (capacity minus current count). public int IdleTaskNum { get; } Property Value int ThreadPriority Gets or sets the thread priority for executing tasks. Default is BelowNormal. public ThreadPriority ThreadPriority { get; set; } Property Value ThreadPriority Methods Start() Starts executing all actions in parallel. public Task Start() Returns Task A task representing the asynchronous operation."
},
"api/Hi.Parallels.LockUtil.html": {
"href": "api/Hi.Parallels.LockUtil.html",
"title": "Class LockUtil | HiAPI-C# 2025",
"summary": "Class LockUtil Namespace Hi.Parallels Assembly HiGeom.dll Utility class for object locking operations. public static class LockUtil Inheritance object LockUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Lock(object) Acquires a lock on the specified object and returns a disposable token that releases the lock when disposed. public static IDisposable Lock(this object obj) Parameters obj object The object to lock. Returns IDisposable A disposable token that releases the lock when disposed."
},
"api/Hi.Parallels.PriorityTaskScheduler.html": {
"href": "api/Hi.Parallels.PriorityTaskScheduler.html",
"title": "Class PriorityTaskScheduler | HiAPI-C# 2025",
"summary": "Class PriorityTaskScheduler Namespace Hi.Parallels Assembly HiGeom.dll A task scheduler that executes tasks with a specified thread priority. public class PriorityTaskScheduler : TaskScheduler Inheritance object TaskScheduler PriorityTaskScheduler Inherited Members TaskScheduler.FromCurrentSynchronizationContext() TaskScheduler.TryDequeue(Task) TaskScheduler.TryExecuteTask(Task) TaskScheduler.Current TaskScheduler.Default TaskScheduler.Id TaskScheduler.MaximumConcurrencyLevel TaskScheduler.UnobservedTaskException object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PriorityTaskScheduler(ThreadPriority) Initializes a new instance. public PriorityTaskScheduler(ThreadPriority threadPriority) Parameters threadPriority ThreadPriority The thread priority for executing tasks. Properties MaxDegreeOfParallelism Max Degree Of Parallelism. Set special value 0 for no limiting. public int MaxDegreeOfParallelism { get; set; } Property Value int ThreadPriority Gets or sets the thread priority for executing tasks. public ThreadPriority ThreadPriority { get; set; } Property Value ThreadPriority Methods GetScheduledTasks() For debugger support only, generates an enumerable of Task instances currently queued to the scheduler waiting to be executed. protected override IEnumerable<Task> GetScheduledTasks() Returns IEnumerable<Task> An enumerable that allows a debugger to traverse the tasks currently queued to this scheduler. Exceptions NotSupportedException This scheduler is unable to generate a list of queued tasks at this time. QueueTask(Task) Queues a Task to the scheduler. protected override void QueueTask(Task task) Parameters task Task The Task to be queued. Exceptions ArgumentNullException The task argument is null. TryExecuteTaskInline(Task, bool) Determines whether the provided Task can be executed synchronously in this call, and if it can, executes it. protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) Parameters task Task The Task to be executed. taskWasPreviouslyQueued bool A Boolean denoting whether or not task has previously been queued. If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it. Returns bool A Boolean value indicating whether the task was executed inline. Exceptions ArgumentNullException The task argument is null. InvalidOperationException The task was already executed."
},
"api/Hi.Parallels.QueueTaskScheduler.html": {
"href": "api/Hi.Parallels.QueueTaskScheduler.html",
"title": "Class QueueTaskScheduler | HiAPI-C# 2025",
"summary": "Class QueueTaskScheduler Namespace Hi.Parallels Assembly HiGeom.dll A task scheduler that queues tasks and executes them in a controlled manner. Limits the number of concurrent tasks and provides mechanisms for waiting for all tasks to complete. public class QueueTaskScheduler : TaskScheduler, IDisposable Inheritance object TaskScheduler QueueTaskScheduler Implements IDisposable Inherited Members TaskScheduler.FromCurrentSynchronizationContext() TaskScheduler.TryDequeue(Task) TaskScheduler.TryExecuteTask(Task) TaskScheduler.Current TaskScheduler.Default TaskScheduler.Id TaskScheduler.MaximumConcurrencyLevel TaskScheduler.UnobservedTaskException object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QueueTaskScheduler(int, int, ThreadPriority) Initializes a new instance of the QueueTaskScheduler class. public QueueTaskScheduler(int maxIdlingTaskNum, int maxWorkingTaskNum = 0, ThreadPriority threadPriority = ThreadPriority.BelowNormal) Parameters maxIdlingTaskNum int The maximum number of tasks that can be queued. maxWorkingTaskNum int The maximum number of tasks that can be executed concurrently. If 0, defaults to the number of processors. threadPriority ThreadPriority The thread priority for executing tasks. Properties CancellationToken Gets the cancellation token used to cancel the working task. public CancellationToken CancellationToken { get; } Property Value CancellationToken IdlingTaskNum Gets the number of tasks currently waiting in the queue. public int IdlingTaskNum { get; } Property Value int ThreadPriority Gets the thread priority used for executing tasks. public ThreadPriority ThreadPriority { get; } Property Value ThreadPriority 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 GetScheduledTasks() Gets the tasks currently scheduled for execution. protected override IEnumerable<Task> GetScheduledTasks() Returns IEnumerable<Task> An enumerable of the tasks currently scheduled. QueueTask(Task) Queues a task to the scheduler. protected override void QueueTask(Task task) Parameters task Task The task to be queued. Test() Tests the QueueTaskScheduler by running multiple tasks concurrently. public static void Test() TryExecuteTaskInline(Task, bool) Tries to execute a task synchronously on the current thread. protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) Parameters task Task The task to be executed. taskWasPreviouslyQueued bool Whether the task was previously queued to the scheduler. Returns bool true if the task was successfully executed; otherwise, false. WaitAll() Waits for all queued tasks to complete. public void WaitAll()"
},
"api/Hi.Parallels.ReaderWriterLockUtil.html": {
"href": "api/Hi.Parallels.ReaderWriterLockUtil.html",
"title": "Class ReaderWriterLockUtil | HiAPI-C# 2025",
"summary": "Class ReaderWriterLockUtil Namespace Hi.Parallels Assembly HiGeom.dll Utility class for reader-writer lock operations. Provides extension methods for ReaderWriterLockSlim to simplify lock acquisition and release. public static class ReaderWriterLockUtil Inheritance object ReaderWriterLockUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ReadLock(ReaderWriterLockSlim) Acquires a read lock on the specified reader-writer lock. public static IDisposable ReadLock(this ReaderWriterLockSlim obj) Parameters obj ReaderWriterLockSlim The reader-writer lock to acquire a read lock on. Returns IDisposable A disposable token that releases the read lock when disposed. UpgradeableReadLock(ReaderWriterLockSlim) Acquires an upgradeable read lock on the specified reader-writer lock. public static IDisposable UpgradeableReadLock(this ReaderWriterLockSlim obj) Parameters obj ReaderWriterLockSlim The reader-writer lock to acquire an upgradeable read lock on. Returns IDisposable A disposable token that releases the upgradeable read lock when disposed. WriteLock(ReaderWriterLockSlim) Acquires a write lock on the specified reader-writer lock. public static IDisposable WriteLock(this ReaderWriterLockSlim obj) Parameters obj ReaderWriterLockSlim The reader-writer lock to acquire a write lock on. Returns IDisposable A disposable token that releases the write lock when disposed."
},
"api/Hi.Parallels.SemaphoreUtil.html": {
"href": "api/Hi.Parallels.SemaphoreUtil.html",
"title": "Class SemaphoreUtil | HiAPI-C# 2025",
"summary": "Class SemaphoreUtil Namespace Hi.Parallels Assembly HiGeom.dll Utility class for semaphore operations. Provides extension methods for SemaphoreSlim to simplify semaphore acquisition and release. public static class SemaphoreUtil Inheritance object SemaphoreUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Embrace(SemaphoreSlim) Acquires the specified semaphore. public static IDisposable Embrace(this SemaphoreSlim semaphore) Parameters semaphore SemaphoreSlim The semaphore to acquire. Returns IDisposable A disposable token that releases the semaphore when disposed. EmbraceAsync(SemaphoreSlim) Acquires the specified semaphore asynchronously. public static Task<IDisposable> EmbraceAsync(this SemaphoreSlim semaphore) Parameters semaphore SemaphoreSlim The semaphore to acquire. Returns Task<IDisposable> A task that represents the asynchronous operation. The task result contains a disposable token that releases the semaphore when disposed."
},
"api/Hi.Parallels.ThreadSafeSet-1.html": {
"href": "api/Hi.Parallels.ThreadSafeSet-1.html",
"title": "Class ThreadSafeSet<T> | HiAPI-C# 2025",
"summary": "Class ThreadSafeSet<T> Namespace Hi.Parallels Assembly HiGeom.dll A thread-safe implementation of a set data structure. Uses a reader-writer lock to synchronize access to the underlying HashSet. public class ThreadSafeSet<T> : IDisposable Type Parameters T The type of elements in the set. Inheritance object ThreadSafeSet<T> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ThreadSafeSet(HashSet<T>, LockRecursionPolicy) Initializes a new instance of the ThreadSafeSet<T> class with the specified HashSet and lock recursion policy. public ThreadSafeSet(HashSet<T> src, LockRecursionPolicy lockRecursionPolicy) Parameters src HashSet<T> The source HashSet to use. lockRecursionPolicy LockRecursionPolicy The lock recursion policy to use. ThreadSafeSet(int, LockRecursionPolicy) Initializes a new instance of the ThreadSafeSet<T> class with the specified capacity and lock recursion policy. public ThreadSafeSet(int capacity, LockRecursionPolicy lockRecursionPolicy) Parameters capacity int The initial capacity of the set. lockRecursionPolicy LockRecursionPolicy The lock recursion policy to use. ThreadSafeSet(LockRecursionPolicy) Initializes a new instance of the ThreadSafeSet<T> class with the specified lock recursion policy. public ThreadSafeSet(LockRecursionPolicy lockRecursionPolicy) Parameters lockRecursionPolicy LockRecursionPolicy The lock recursion policy to use. Properties Content Gets the underlying HashSet that stores the elements. public HashSet<T> Content { get; } Property Value HashSet<T> Count Gets the number of elements in the set. public int Count { get; } Property Value int ReaderWriterLock Gets the reader-writer lock used to synchronize access to the set. public ReaderWriterLockSlim ReaderWriterLock { get; } Property Value ReaderWriterLockSlim Methods Add(T) Adds an element to the set. public bool Add(T item) Parameters item T The element to add. Returns bool true if the element is added to the set; false if the element is already present. Clear() Removes all elements from the set. public void Clear() CloneContent() Creates a new HashSet that contains the same elements as the current set. public HashSet<T> CloneContent() Returns HashSet<T> A new HashSet that contains the same elements as the current set. Contains(T) Determines whether the set contains the specified element. public bool Contains(T item) Parameters item T The element to locate. Returns bool true if the set contains the specified element; otherwise, false. 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 ThreadSafeSet<T> 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. EnsureCapacity(int) Ensures that the set can hold the specified number of elements without growing. public int EnsureCapacity(int capacity) Parameters capacity int The minimum capacity to ensure. Returns int The new capacity of the set. Remove(T) Removes the specified element from the set. public bool Remove(T item) Parameters item T The element to remove. Returns bool true if the element is successfully found and removed; otherwise, false. TrimExcess() Sets the capacity of the set to the actual number of elements it contains. public void TrimExcess() TryGetValue(T, out T) Attempts to get the actual value of an element equal to the specified value. public bool TryGetValue(T equalValue, out T actualValue) Parameters equalValue T The value to search for. actualValue T When this method returns, contains the actual value if found; otherwise, the default value for the type. Returns bool true if the set contains an element equal to the specified value; otherwise, false. UnionWith(IEnumerable<T>) Modifies the current set to contain all elements that are present in itself, the specified collection, or both. public void UnionWith(IEnumerable<T> other) Parameters other IEnumerable<T> The collection to compare to the current set."
},
"api/Hi.Parallels.html": {
"href": "api/Hi.Parallels.html",
"title": "Namespace Hi.Parallels | HiAPI-C# 2025",
"summary": "Namespace Hi.Parallels Classes CurrentThreadTaskScheduler A task scheduler that executes tasks on the current thread. DistributedQueueTaskScheduler A task scheduler that distributes tasks across multiple threads or processes. Allows for controlled execution of tasks with a specified maximum concurrency level. DistributedQueueTaskStarter A class that manages and starts a collection of actions in parallel. LockUtil Utility class for object locking operations. PriorityTaskScheduler A task scheduler that executes tasks with a specified thread priority. QueueTaskScheduler A task scheduler that queues tasks and executes them in a controlled manner. Limits the number of concurrent tasks and provides mechanisms for waiting for all tasks to complete. ReaderWriterLockUtil Utility class for reader-writer lock operations. Provides extension methods for ReaderWriterLockSlim to simplify lock acquisition and release. SemaphoreUtil Utility class for semaphore operations. Provides extension methods for SemaphoreSlim to simplify semaphore acquisition and release. ThreadSafeSet<T> A thread-safe implementation of a set data structure. Uses a reader-writer lock to synchronize access to the underlying HashSet."
},
"api/Hi.Physics.AmpPhase.html": {
"href": "api/Hi.Physics.AmpPhase.html",
"title": "Class AmpPhase | HiAPI-C# 2025",
"summary": "Class AmpPhase Namespace Hi.Physics Assembly HiGeom.dll Represents amplitude and phase information for wave-like phenomena. public class AmpPhase Inheritance object AmpPhase Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors AmpPhase() Initializes a new instance of the AmpPhase class. public AmpPhase() AmpPhase(double, double) Initializes a new instance of the AmpPhase class with specified amplitude and phase. public AmpPhase(double amp, double phase_rad) Parameters amp double The amplitude value. phase_rad double The phase value in radians. Properties Amp Gets or sets the amplitude value. public double Amp { get; set; } Property Value double Phase_deg Gets or sets the phase value in degrees. public double Phase_deg { get; set; } Property Value double Phase_rad Gets or sets the phase value in radians. public double Phase_rad { get; set; } Property Value double"
},
"api/Hi.Physics.CoatingMaterial.html": {
"href": "api/Hi.Physics.CoatingMaterial.html",
"title": "Class CoatingMaterial | HiAPI-C# 2025",
"summary": "Class CoatingMaterial Namespace Hi.Physics Assembly HiMech.dll Represents a coating material used in cutting tools. public class CoatingMaterial : CutterMaterial, ISurfaceMaterial, IStructureMaterial, IMakeXmlSource, IDuplicate, INameNote, IToXElement Inheritance object CutterMaterial CoatingMaterial Implements ISurfaceMaterial IStructureMaterial IMakeXmlSource IDuplicate INameNote IToXElement Inherited Members CutterMaterial.Name CutterMaterial.Note CutterMaterial.ElasticModulus_GPa CutterMaterial.PoissonRatio CutterMaterial.TensileStrength_MPa CutterMaterial.ThermalExpansionCoefficient_dMK CutterMaterial.HeatConductivity_WdmK CutterMaterial.HeatConductivity_WdmmK CutterMaterial.HeatCapacity_JdgK CutterMaterial.Density_gdm3 CutterMaterial.Density_gdcm3 CutterMaterial.Density_gdmm3 CutterMaterial.MeltingTemperature_K CutterMaterial.FusionLatentHeat_Jdg CutterMaterial.FrictionCoefficient CutterMaterial.TemperatureVsHardnessCurve CutterMaterial.TemperatureVsWearCoefficientCurve CutterMaterial.WC CutterMaterial.WC_Co6_800nm object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CoatingMaterial() Initializes a new instance of the CoatingMaterial class. public CoatingMaterial() CoatingMaterial(CoatingMaterial) Initializes a new instance of the CoatingMaterial class by copying from another instance. public CoatingMaterial(CoatingMaterial src) Parameters src CoatingMaterial The source coating material to copy from. CoatingMaterial(XElement) Initializes a new instance of the CoatingMaterial class from XML data. public CoatingMaterial(XElement src) Parameters src XElement The XML element containing coating material data. Properties DefaultFrictionCoefficient Gets the default friction coefficient for coating materials. public static double DefaultFrictionCoefficient { get; } Property Value double PreferedThickness_mm Gets or sets the preferred thickness of the coating in millimeters. public double PreferedThickness_mm { get; set; } Property Value double PreferedThickness_um Gets or sets the preferred thickness of the coating in micrometers. public double PreferedThickness_um { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string Methods Duplicate(params object[]) public object Duplicate(params object[] res) Parameters res object[] Returns object 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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToXElement() Get the XElement to represent the object. public override XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Physics.CoolantHeatCondition.html": {
"href": "api/Hi.Physics.CoolantHeatCondition.html",
"title": "Class CoolantHeatCondition | HiAPI-C# 2025",
"summary": "Class CoolantHeatCondition Namespace Hi.Physics Assembly HiMech.dll Represents the heat condition parameters for coolant in machining operations. 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). 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, INameNote, IPreferredFileName Inheritance object CoolantHeatCondition Implements IMakeXmlSource INameNote IPreferredFileName Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CoolantHeatCondition() Initializes a new instance of the CoolantHeatCondition class. public CoolantHeatCondition() CoolantHeatCondition(XElement) Initializes a new instance of the CoolantHeatCondition class from XML data. public CoolantHeatCondition(XElement src) Parameters src XElement The XML element containing coolant heat condition data. Fields CustomName Reserved Name marking an explicitly customized condition; see MatchStandardPreset(). public const string CustomName = \"Custom\" Field Value string Properties CoolantConvectionCoefficient_Wdm2K Gets or sets the coolant heat transfer coefficient (flood baseline) in Watts per square meter per Kelvin. public double CoolantConvectionCoefficient_Wdm2K { get; set; } Property Value double Remarks Common value: forced air: 10~500; coolant: 1e3~1e4 (ref by “Effects of coolant on temperature distribution in metal machining”, 1988) coolant: 1e3 (ref by “Modeling heat transfer in die milling”, 2014) CoolantConvectionCoefficient_Wdmm2K Gets or sets the coolant heat transfer coefficient (flood baseline) in Watts per square millimeter per Kelvin. public double CoolantConvectionCoefficient_Wdmm2K { get; set; } Property Value double CoolantTemperature_C Gets or sets the coolant temperature in Celsius. public double CoolantTemperature_C { get; set; } Property Value double CoolantTemperature_K Gets or sets the coolant temperature in Kelvin. public double CoolantTemperature_K { get; set; } Property Value double MistFloodConvectionRatio Convection-coefficient ratio of mist coolant (MQL) relative to flood coolant. Applied multiplicatively to CoolantConvectionCoefficient_Wdm2K when the current CoolantMode is Mist. public double MistFloodConvectionRatio { get; set; } Property Value double Remarks 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.40.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 OffConvectionCoefficient_Wdm2K Gets or sets the convection coefficient when coolant is off (ambient air / forced blow-off), in Watts per square meter per Kelvin. public double OffConvectionCoefficient_Wdm2K { get; set; } Property Value double Remarks Natural convection in still air is ~525 W/(m²·K); forced air (shop blow-off / chip conveyor draft) falls in 10500 W/(m²·K). Default 50 W/(m²·K) represents a mild forced-air environment 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 10500 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 100500 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 10003000). XName Name for XML IO. public static string XName { get; } Property Value string Methods 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 GetEffectiveConvectionCoefficient_Wdm2K(CoolantMode) Gets the effective convection coefficient for the given coolant mode in Watts per square meter per Kelvin. Flood: CoolantConvectionCoefficient_Wdm2K Mist: CoolantConvectionCoefficient_Wdm2K × MistFloodConvectionRatio Off / UnDefined: OffConvectionCoefficient_Wdm2K public double GetEffectiveConvectionCoefficient_Wdm2K(CoolantMode mode) Parameters mode CoolantMode Returns double GetEffectiveConvectionCoefficient_Wdmm2K(CoolantMode) Mode-dependent convection coefficient in Watts per square millimetre per Kelvin (direct input to the FEM layer). See GetEffectiveConvectionCoefficient_Wdm2K(CoolantMode). public double GetEffectiveConvectionCoefficient_Wdmm2K(CoolantMode mode) Parameters mode CoolantMode 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. 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 Reg(XFactory) Registers this 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.Physics.CutterMaterial.html": {
"href": "api/Hi.Physics.CutterMaterial.html",
"title": "Class CutterMaterial | HiAPI-C# 2025",
"summary": "Class CutterMaterial Namespace Hi.Physics Assembly HiMech.dll Represents a cutter material with physical and thermal properties. public class CutterMaterial : ISurfaceMaterial, IStructureMaterial, IMakeXmlSource, IDuplicate, INameNote, IToXElement Inheritance object CutterMaterial Implements ISurfaceMaterial IStructureMaterial IMakeXmlSource IDuplicate INameNote IToXElement Derived CoatingMaterial Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CutterMaterial() Default constructor. public CutterMaterial() CutterMaterial(CutterMaterial) Creates a new cutter material as a copy of an existing one. public CutterMaterial(CutterMaterial src) Parameters src CutterMaterial The source material to copy from. CutterMaterial(XElement) Ctor. public CutterMaterial(XElement src) Parameters src XElement XML Properties Density_gdcm3 Gets or sets the density in grams per cubic centimeter. public double Density_gdcm3 { get; set; } Property Value double Density_gdm3 Density in g/dm³. public double Density_gdm3 { get; set; } Property Value double Density_gdmm3 Density in g/mm³. public double Density_gdmm3 { get; set; } Property Value double ElasticModulus_GPa Gets or sets the elastic modulus in gigapascals. public double ElasticModulus_GPa { get; set; } Property Value double FrictionCoefficient Gets or sets the friction coefficient of the surface material. public double FrictionCoefficient { get; set; } Property Value double FusionLatentHeat_Jdg Latent Heat of Fusion. public double FusionLatentHeat_Jdg { get; set; } Property Value double HeatCapacity_JdgK Gets or sets the heat capacity in Joules per gram-Kelvin. public double HeatCapacity_JdgK { get; set; } Property Value double HeatConductivity_WdmK Gets or sets the heat transfer coefficient in Watts per meter-Kelvin. public double HeatConductivity_WdmK { get; set; } Property Value double HeatConductivity_WdmmK Heat transfer coefficient in W/(mm·K). public double HeatConductivity_WdmmK { get; set; } Property Value double MeltingTemperature_K public double MeltingTemperature_K { get; set; } Property Value double 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 PoissonRatio public double PoissonRatio { get; set; } Property Value double TemperatureVsHardnessCurve Temperature versus hardness curve data. public List<TemperatureVsHardness> TemperatureVsHardnessCurve { get; set; } Property Value List<TemperatureVsHardness> TemperatureVsWearCoefficientCurve Temperature(K) vs WearCoefficient. Unit of WearCoefficient: 1e-6 (non-unit). public List<Vec2d> TemperatureVsWearCoefficientCurve { get; set; } Property Value List<Vec2d> TensileStrength_MPa public double TensileStrength_MPa { get; set; } Property Value double ThermalExpansionCoefficient_dMK public double ThermalExpansionCoefficient_dMK { get; set; } Property Value double WC General condition of WC (Tungsten Carbide). public static CutterMaterial WC { get; } Property Value CutterMaterial WC_Co6_800nm WC-Co6 with 800nm grain size properties. public static CutterMaterial WC_Co6_800nm { get; } Property Value CutterMaterial 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 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 ToXElement() Get the XElement to represent the object. public virtual XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Physics.IGetThermalLayerList.html": {
"href": "api/Hi.Physics.IGetThermalLayerList.html",
"title": "Interface IGetThermalLayerList | HiAPI-C# 2025",
"summary": "Interface IGetThermalLayerList Namespace Hi.Physics Assembly HiMech.dll Interface for objects that can provide a list of thermal layers. public interface IGetThermalLayerList Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MillingTemperatureUtil.GetMaterial(IGetThermalLayerList, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetThermalLayerList() Gets the list of thermal layers. List<ThermalLayer1D> GetThermalLayerList() Returns List<ThermalLayer1D> List of thermal layers."
},
"api/Hi.Physics.IStructureMaterial.html": {
"href": "api/Hi.Physics.IStructureMaterial.html",
"title": "Interface IStructureMaterial | HiAPI-C# 2025",
"summary": "Interface IStructureMaterial Namespace Hi.Physics Assembly HiMech.dll Interface for structure materials with thermal properties. public interface IStructureMaterial : IMakeXmlSource, IDuplicate, INameNote Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) INameNote.Name INameNote.Note Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Density_gdcm3 Gets or sets the density in grams per cubic centimeter. double Density_gdcm3 { get; set; } Property Value double Density_gdmm3 Gets or sets the density in grams per cubic millimeter. double Density_gdmm3 { get; set; } Property Value double ElasticModulus_GPa Gets or sets the elastic modulus in gigapascals. double ElasticModulus_GPa { get; set; } Property Value double HeatCapacity_JdgK Gets or sets the heat capacity in Joules per gram-Kelvin. double HeatCapacity_JdgK { get; set; } Property Value double HeatConductivity_WdmK Gets or sets the heat transfer coefficient in Watts per meter-Kelvin. double HeatConductivity_WdmK { get; set; } Property Value double HeatConductivity_WdmmK Gets or sets the heat transfer coefficient in Watts per millimeter-Kelvin. double HeatConductivity_WdmmK { get; set; } Property Value double ThermalDiffusivity_mm2dsK Gets the thermal diffusivity in square millimeters per second-Kelvin. double ThermalDiffusivity_mm2dsK { get; } Property Value double"
},
"api/Hi.Physics.ISuccessivePhysicsBriefAccessor.html": {
"href": "api/Hi.Physics.ISuccessivePhysicsBriefAccessor.html",
"title": "Interface ISuccessivePhysicsBriefAccessor | HiAPI-C# 2025",
"summary": "Interface ISuccessivePhysicsBriefAccessor Namespace Hi.Physics Assembly HiMech.dll Interface for accessing sequential physics brief information. public interface ISuccessivePhysicsBriefAccessor Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SeqPhysicsBrief Gets or sets the sequential physics brief. SeqPhysicsBrief SeqPhysicsBrief { get; set; } Property Value SeqPhysicsBrief"
},
"api/Hi.Physics.ISurfaceMaterial.html": {
"href": "api/Hi.Physics.ISurfaceMaterial.html",
"title": "Interface ISurfaceMaterial | HiAPI-C# 2025",
"summary": "Interface ISurfaceMaterial Namespace Hi.Physics Assembly HiMech.dll Interface for materials that can be used on surfaces. public interface ISurfaceMaterial : IStructureMaterial, IMakeXmlSource, IDuplicate, INameNote Inherited Members IStructureMaterial.HeatConductivity_WdmK IStructureMaterial.HeatConductivity_WdmmK IStructureMaterial.HeatCapacity_JdgK IStructureMaterial.Density_gdcm3 IStructureMaterial.Density_gdmm3 IStructureMaterial.ThermalDiffusivity_mm2dsK IStructureMaterial.ElasticModulus_GPa IMakeXmlSource.MakeXmlSource(string, string, bool) IDuplicate.Duplicate(params object[]) INameNote.Name INameNote.Note Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FrictionCoefficient Gets or sets the friction coefficient of the surface material. double FrictionCoefficient { get; set; } Property Value double"
},
"api/Hi.Physics.ITimecoded.html": {
"href": "api/Hi.Physics.ITimecoded.html",
"title": "Interface ITimecoded | HiAPI-C# 2025",
"summary": "Interface ITimecoded Namespace Hi.Physics Assembly HiGeom.dll Interface for objects that provide time information. public interface ITimecoded Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Timecode Gets or sets the time value in seconds. TimeSpan Timecode { get; set; } Property Value TimeSpan"
},
"api/Hi.Physics.MillingTemperatureUtil.html": {
"href": "api/Hi.Physics.MillingTemperatureUtil.html",
"title": "Class MillingTemperatureUtil | HiAPI-C# 2025",
"summary": "Class MillingTemperatureUtil Namespace Hi.Physics Assembly HiMech.dll Utility class for calculating and managing temperatures during milling operations. public static class MillingTemperatureUtil Inheritance object MillingTemperatureUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetMaterial(IGetThermalLayerList, double) Gets the thermal material at the specified depth from a thermal layer list. public static IStructureMaterial GetMaterial(this IGetThermalLayerList host, double depth_mm) Parameters host IGetThermalLayerList The object providing the thermal layer list. depth_mm double The depth in millimeters at which to get the material. Returns IStructureMaterial The thermal material at the specified depth, or the last material in the list if the depth exceeds all layers. GetTemperatureVsHardnessCurveByXElements(IEnumerable<XElement>) Creates a list of temperature vs hardness data from XML elements. public static List<TemperatureVsHardness> GetTemperatureVsHardnessCurveByXElements(IEnumerable<XElement> temperatureVsHardnessXElements) Parameters temperatureVsHardnessXElements IEnumerable<XElement> The XML elements containing temperature vs hardness data. Returns List<TemperatureVsHardness> A list of temperature vs hardness data points. ToXElements(IEnumerable<TemperatureVsHardness>) Converts a collection of temperature vs hardness data to XML elements. public static IEnumerable<XElement> ToXElements(this IEnumerable<TemperatureVsHardness> src) Parameters src IEnumerable<TemperatureVsHardness> The source collection of temperature vs hardness data. Returns IEnumerable<XElement> A collection of XML elements representing the temperature vs hardness data."
},
"api/Hi.Physics.SeqPhysicsBrief.html": {
"href": "api/Hi.Physics.SeqPhysicsBrief.html",
"title": "Class SeqPhysicsBrief | HiAPI-C# 2025",
"summary": "Class SeqPhysicsBrief Namespace Hi.Physics Assembly HiMech.dll Represents a brief summary of physical properties and measurements during a machining sequence. public class SeqPhysicsBrief : IGetQuantityByKey Inheritance object SeqPhysicsBrief Implements IGetQuantityByKey Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SeqPhysicsBrief(SeqPhysicsBrief) Creates a new instance by copying from an existing SeqPhysicsBrief. public SeqPhysicsBrief(SeqPhysicsBrief src) Parameters src SeqPhysicsBrief The source object to copy from. SeqPhysicsBrief(double, double) Initializes a new instance of the SeqPhysicsBrief class. public SeqPhysicsBrief(double backgroundTemperature_K, double spindleTemperature_K) Parameters backgroundTemperature_K double The background temperature in Kelvin. spindleTemperature_K double The spindle temperature in Kelvin. Properties AccumulatedCraterWear_um Gets or sets the accumulated crater wear in micrometers. public double AccumulatedCraterWear_um { get; set; } Property Value double AccumulatedFlankWearDepth_um Gets or sets the accumulated flank wear depth in micrometers. public double AccumulatedFlankWearDepth_um { get; set; } Property Value double AccumulatedFlankWearWidth_um Gets or sets the accumulated flank wear width in micrometers. public double AccumulatedFlankWearWidth_um { get; set; } Property Value double ChipTemperature_C Gets or sets the chip temperature in Celsius. [NotMapped] public double ChipTemperature_C { get; set; } Property Value double ChipTemperature_K Gets or sets the chip temperature in Kelvin. public double ChipTemperature_K { get; set; } Property Value double CutterBodyTemperature_C Gets or sets the cutter body temperature in Celsius. [NotMapped] public double CutterBodyTemperature_C { get; set; } Property Value double CutterBodyTemperature_K Gets or sets the cutter body temperature in Kelvin. public double CutterBodyTemperature_K { get; set; } Property Value double CutterFluteTemperatureList Gets or sets the list of cutter dermis temperatures at different depths. [0] represents the temperature at the rake surface. public List<double> CutterFluteTemperatureList { get; set; } Property Value List<double> CutterShankTemperatureList Gets or sets the list of cutter body temperatures at different points. public List<double> CutterShankTemperatureList { get; set; } Property Value List<double> CutterSurfaceTemperature_C Gets or sets the cutter surface temperature in Celsius. [NotMapped] public double CutterSurfaceTemperature_C { get; set; } Property Value double CutterSurfaceTemperature_K Gets or sets the cutter surface temperature in Kelvin. public double CutterSurfaceTemperature_K { get; set; } Property Value double InstantCraterWear_um Gets or sets the instant crater wear in micrometers. public double InstantCraterWear_um { get; set; } Property Value double InstantFlankWearDepth_um Gets or sets the instant flank wear depth in micrometers. public double InstantFlankWearDepth_um { get; set; } Property Value double SpindleEnergyConsumption_kJ Accumulation of Spindle input energy. public double SpindleEnergyConsumption_kJ { get; } Property Value double SpindleTemperature_C Gets or sets the spindle temperature in Celsius. public double SpindleTemperature_C { get; } Property Value double SpindleTemperature_K Gets or sets the spindle temperature in Kelvin. public double SpindleTemperature_K { get; } Property Value double SpindleWorkingTemperatureRatio Gets or sets the ratio of current spindle temperature to its working temperature range. public double SpindleWorkingTemperatureRatio { get; set; } Property Value double ThermalStress_MPa Gets or sets the thermal stress in megapascals. public double ThermalStress_MPa { get; } Property Value double ThermalYieldRatio Ratio between Thermal Stress and tensile strength. The tensile strength is applied since the compressive strength is high. so assume if the material shrink back, there arise tensile stress. public double ThermalYieldRatio { get; } Property Value double WorkpieceDermisTemperatureList Gets or sets the list of workpiece dermis temperatures at different depths. public List<double> WorkpieceDermisTemperatureList { get; set; } Property Value List<double> WorkpieceSurfaceTemperature_C Gets or sets the workpiece surface temperature in Celsius. [NotMapped] public double WorkpieceSurfaceTemperature_C { get; set; } Property Value double WorkpieceSurfaceTemperature_K Gets or sets the workpiece surface temperature in Kelvin. public double WorkpieceSurfaceTemperature_K { get; set; } Property Value double Methods AddToCsvDictionary(Dictionary<string, string>) Adds physical quantities to a CSV dictionary representation. public void AddToCsvDictionary(Dictionary<string, string> dst) Parameters dst Dictionary<string, string> The destination dictionary to add values to. AddToQuantityDictionary(Dictionary<string, double>) Adds physical quantities to a numeric dictionary representation. public void AddToQuantityDictionary(Dictionary<string, double> dst) Parameters dst Dictionary<string, double> The destination dictionary to add values to. BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool, MillingToolPhysicsPack, Action<string>) Builds cutting temperature and wear calculations for the current step. 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 preSeqPhysicsBrief SeqPhysicsBrief The previous sequence physics brief. preMachineMotionStep MachineMotionStep The previous machine motion step. curMachineMotionStep MachineMotionStep The current machine motion step. backgroundTemperature_K double The background temperature in Kelvin. spindleCapability SpindleCapability The spindle capability information. machiningTool IMachiningTool The machining tool. workpiece Workpiece The workpiece. stepIndex int The step index. substraction Substraction The substraction data. layerMillingEngagement LayerMillingEngagement The layer milling engagement. millingPhysicsBrief MillingPhysicsBrief The milling physics brief. coolantHeatCondition CoolantHeatCondition The coolant heat condition. coolantMode CoolantMode Current coolant delivery mode — selects which convection coefficient in coolantHeatCondition is used by the temperature FEM. Callers must supply the per-step mode (e.g. from CoolantMode) so the 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. BuildSpindleTemperatureAndRatio(MachineMotionStep, MillingPhysicsBrief, double, SpindleCapability, SpindleSpeedCache, double) Internal Use Only. public void BuildSpindleTemperatureAndRatio(MachineMotionStep machiningStep, MillingPhysicsBrief rakeFacePhysicsBrief, double backgroundTemperature_K, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, double preSpindleTemperature_K) Parameters machiningStep MachineMotionStep rakeFacePhysicsBrief MillingPhysicsBrief backgroundTemperature_K double spindleCapability SpindleCapability spindleSpeedCache SpindleSpeedCache preSpindleTemperature_K double GetCutterDermisAvgTemperature_K(double, IList<ThermalLayer1D>) Gets the average cutter dermis temperature up to a specific depth. public double GetCutterDermisAvgTemperature_K(double depth, IList<ThermalLayer1D> thermalLayerList) Parameters depth double The depth to calculate the average temperature to thermalLayerList IList<ThermalLayer1D> The list of thermal layers Returns double The average temperature in Kelvin up to the specified depth GetCutterDermisTemperature_K(double, IList<ThermalLayer1D>) Gets the cutter dermis temperature at a specified depth. public double GetCutterDermisTemperature_K(double depth_mm, IList<ThermalLayer1D> thermalLayerList) Parameters depth_mm double The depth in millimeters. thermalLayerList IList<ThermalLayer1D> The thermal layer list. Returns double The temperature in Kelvin. 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 SetByCsvDictionary(Dictionary<string, string>, bool) Sets properties from a CSV dictionary. public void SetByCsvDictionary(Dictionary<string, string> src, bool removeFromSource = false) Parameters src Dictionary<string, string> The source dictionary containing values. removeFromSource bool Whether to remove keys from the source dictionary after reading."
},
"api/Hi.Physics.StructureMaterial.html": {
"href": "api/Hi.Physics.StructureMaterial.html",
"title": "Class StructureMaterial | HiAPI-C# 2025",
"summary": "Class StructureMaterial Namespace Hi.Physics Assembly HiMech.dll Represents a material with physical and thermal properties used in structural analysis. public class StructureMaterial : IStructureMaterial, IMakeXmlSource, IDuplicate, INameNote, IToXElement Inheritance object StructureMaterial Implements IStructureMaterial IMakeXmlSource IDuplicate INameNote IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StructureMaterial() Default constructor. public StructureMaterial() StructureMaterial(StructureMaterial) Creates a new cutter material as a copy of an existing one. public StructureMaterial(StructureMaterial src) Parameters src StructureMaterial The source material to copy from. StructureMaterial(XElement) Ctor. public StructureMaterial(XElement src) Parameters src XElement XML Properties AlloySteel42CrMo Gets a predefined 42CrMo alloy steel material commonly used for milling cutter bodies. public static StructureMaterial AlloySteel42CrMo { get; } Property Value StructureMaterial Density_gdcm3 Gets or sets the density in grams per cubic centimeter. public double Density_gdcm3 { get; set; } Property Value double Density_gdm3 Density in g/dm³. public double Density_gdm3 { get; set; } Property Value double Density_gdmm3 Density in g/mm³. public double Density_gdmm3 { get; set; } Property Value double ElasticModulus_GPa Gets or sets the elastic modulus in gigapascals. public double ElasticModulus_GPa { get; set; } Property Value double HeatCapacity_JdgK Gets or sets the heat capacity in Joules per gram-Kelvin. public double HeatCapacity_JdgK { get; set; } Property Value double HeatConductivity_WdmK Gets or sets the heat transfer coefficient in Watts per meter-Kelvin. public double HeatConductivity_WdmK { get; set; } Property Value double HeatConductivity_WdmmK Heat transfer coefficient in W/(mm·K). public double HeatConductivity_WdmmK { get; set; } Property Value double 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 PoissonRatio public double PoissonRatio { get; set; } Property Value double TensileStrength_MPa public double TensileStrength_MPa { get; set; } Property Value double ThermalExpansionCoefficient_dMK public double ThermalExpansionCoefficient_dMK { get; set; } Property Value double 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 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 ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object."
},
"api/Hi.Physics.TemperatureUtil.html": {
"href": "api/Hi.Physics.TemperatureUtil.html",
"title": "Class TemperatureUtil | HiAPI-C# 2025",
"summary": "Class TemperatureUtil Namespace Hi.Physics Assembly HiMech.dll Utility class for temperature conversions. public static class TemperatureUtil Inheritance object TemperatureUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields temperature0C_K Temperature of 0 degrees Celsius in Kelvin. public const double temperature0C_K = 273.16 Field Value double Methods CtoK(double) Convert temperature from Celsius to kelvin. public static double CtoK(double degCelsius) Parameters degCelsius double Returns double KtoC(double) Convert temperature from kelvin to Celsius. public static double KtoC(double degKelvin) Parameters degKelvin double Returns double"
},
"api/Hi.Physics.TemperatureVsHardness.html": {
"href": "api/Hi.Physics.TemperatureVsHardness.html",
"title": "Class TemperatureVsHardness | HiAPI-C# 2025",
"summary": "Class TemperatureVsHardness Namespace Hi.Physics Assembly HiMech.dll Represents the relationship between temperature and hardness for materials. public record TemperatureVsHardness : IAdditionOperators<TemperatureVsHardness, TemperatureVsHardness, TemperatureVsHardness>, IMultiplyOperators<TemperatureVsHardness, double, TemperatureVsHardness>, IEquatable<TemperatureVsHardness> Inheritance object TemperatureVsHardness Implements IAdditionOperators<TemperatureVsHardness, TemperatureVsHardness, TemperatureVsHardness> IMultiplyOperators<TemperatureVsHardness, double, TemperatureVsHardness> IEquatable<TemperatureVsHardness> Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TemperatureVsHardness(TemperatureVsHardness) Initializes a new instance of the TemperatureVsHardness record by copying from another instance. public TemperatureVsHardness(TemperatureVsHardness src) Parameters src TemperatureVsHardness The source instance to copy from. TemperatureVsHardness(double, double) Represents the relationship between temperature and hardness for materials. public TemperatureVsHardness(double Temperature_K, double VickerHardness_Ndmm2) Parameters Temperature_K double The temperature in Kelvin. VickerHardness_Ndmm2 double The Vickers hardness in Newtons per square millimeter. Properties Temperature_K The temperature in Kelvin. public double Temperature_K { get; init; } Property Value double VickerHardness_Ndmm2 The Vickers hardness in Newtons per square millimeter. public double VickerHardness_Ndmm2 { get; init; } Property Value double Operators operator +(TemperatureVsHardness, TemperatureVsHardness) Adds two values together to compute their sum. public static TemperatureVsHardness operator +(TemperatureVsHardness left, TemperatureVsHardness right) Parameters left TemperatureVsHardness The value to which right is added. right TemperatureVsHardness The value that is added to left. Returns TemperatureVsHardness The sum of left and right. operator *(TemperatureVsHardness, double) Multiplies two values together to compute their product. public static TemperatureVsHardness operator *(TemperatureVsHardness left, double right) Parameters left TemperatureVsHardness The value that right multiplies. right double The value that multiplies left. Returns TemperatureVsHardness The product of left multiplied by right."
},
"api/Hi.Physics.ThermalLayer1D.html": {
"href": "api/Hi.Physics.ThermalLayer1D.html",
"title": "Class ThermalLayer1D | HiAPI-C# 2025",
"summary": "Class ThermalLayer1D Namespace Hi.Physics Assembly HiMech.dll Represents a one-dimensional thermal layer for heat transfer calculations. public class ThermalLayer1D : IMakeXmlSource Inheritance object ThermalLayer1D 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ThermalLayer1D() Initializes a new instance of the ThermalLayer1D class. public ThermalLayer1D() ThermalLayer1D(IStructureMaterial, double) Initializes a new instance of the ThermalLayer1D class with the specified material and length. public ThermalLayer1D(IStructureMaterial material, double length_mm) Parameters material IStructureMaterial The thermal material of this layer. length_mm double The length of this layer in millimeters. ThermalLayer1D(ThermalLayer1D) Initializes a new instance of the ThermalLayer1D class by copying from another instance. public ThermalLayer1D(ThermalLayer1D src) Parameters src ThermalLayer1D The source thermal layer to copy from. ThermalLayer1D(XElement, string, string, IProgress<IMessage>) Initializes a new instance of the ThermalLayer1D class from XML data. public ThermalLayer1D(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement The XML element containing thermal layer data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress<IMessage> Progress reporter for nested material XML loading. Properties Length_mm Gets or sets the length of this thermal layer in millimeters. public double Length_mm { get; set; } Property Value double Length_um Gets or sets the length of this thermal layer in micrometers. public double Length_um { get; set; } Property Value double Material Gets or sets the thermal material of this layer. public IStructureMaterial Material { get; set; } Property Value IStructureMaterial 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 and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory"
},
"api/Hi.Physics.TimeSeriesUtil.html": {
"href": "api/Hi.Physics.TimeSeriesUtil.html",
"title": "Class TimeSeriesUtil | HiAPI-C# 2025",
"summary": "Class TimeSeriesUtil Namespace Hi.Physics Assembly HiGeom.dll Utility class for time series data operations. public static class TimeSeriesUtil Inheritance object TimeSeriesUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods FourierTransformApSeries(List<TimeValue>, TimeSpan, TimeSpan, int) Performs a Fourier transform series on a list of time values and converts the results to amplitude-phase format. public static List<AmpPhase> FourierTransformApSeries(this List<TimeValue> timeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, int threadNum = 1) Parameters timeValueList List<TimeValue> timeToValueList which the time length is closed to integral multiple of basePeriod. The offset part cause bias. basePeriod TimeSpan period of 1st fourier transform parameter. resolutionPeriod TimeSpan peroid of last fourier transform parameter. threadNum int thread number. Set 0 to apply processor count. Set 1 for not creating additional thread during the function. Returns List<AmpPhase> A list of amplitude-phase pairs for each frequency FourierTransformApSeries<TimeItem>(List<TimeItem>, TimeSpan, TimeSpan, Func<TimeItem, double>[], int) Performs a Fourier transform series on a list of time-based items and converts the results to amplitude-phase format. 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 timeValueList List<TimeItem> timeToValueList which the time length is closed to integral multiple of basePeriod. The offset part cause bias. basePeriod TimeSpan period of 1st fourier transform parameter. resolutionPeriod TimeSpan peroid of last fourier transform parameter. getValueFuncs Func<TimeItem, double>[] Array of functions to extract values from each time-based item threadNum int thread number. Set 0 to apply processor count. Set 1 for not creating additional thread during the function. Returns List<AmpPhase[]> A list of arrays of amplitude-phase pairs for each frequency and value function Type Parameters TimeItem The type of items that implement ITimecoded FourierTransformSeries(List<TimeValue>, TimeSpan, TimeSpan, int) Performs a Fourier transform series on a list of time values, generating frequency domain data. public static List<Vec2d> FourierTransformSeries(this List<TimeValue> fittedTimeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, int threadNum = 1) Parameters fittedTimeValueList List<TimeValue> timeToValueList which the time length is closed to integral multiple of basePeriod. The offset part cause bias. basePeriod TimeSpan period of 1st fourier transform parameter. resolutionPeriod TimeSpan peroid of last fourier transform parameter. threadNum int thread number. Set 0 to apply processor count. Set 1 for not creating additional thread during the function. Returns List<Vec2d> A list of 2D vectors containing the cosine and sine components for each frequency FourierTransformSeries<TimeItem>(List<TimeItem>, TimeSpan, TimeSpan, Func<TimeItem, double>[], int) Performs a Fourier transform series on a list of time-based items, generating frequency domain data for multiple value functions. 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 fittedTimeValueList List<TimeItem> timeToValueList which the time length is closed to integral multiple of basePeriod. The offset part cause bias. basePeriod TimeSpan Base period. Effective period. Period of 1st fourier transform parameter. The period should be close and smaller than the full period. resolutionPeriod TimeSpan peroid of last fourier transform parameter. getValueFuncs Func<TimeItem, double>[] Array of functions to extract values from each time-based item threadNum int thread number. Set 0 to apply processor count. Set 1 for not creating additional thread during the function. Returns List<Vec2d[]> A list of arrays of 2D vectors containing the cosine and sine components for each frequency and value function Type Parameters TimeItem The type of items that implement ITimecoded FourierTransformSingleton(List<TimeValue>, double) Performs a Fourier transform at a specific angular frequency for a list of time values. public static Vec2d FourierTransformSingleton(this List<TimeValue> fittedTimeValueList, double kw) Parameters fittedTimeValueList List<TimeValue> The list of time-value pairs to transform kw double The angular frequency to transform at Returns Vec2d A 2D vector containing the cosine and sine components of the transform FourierTransformSingleton(List<TimeValue>, double, TimeSpan) Get fourier transform parameter of indicated angular frequency kw. public static Vec2d FourierTransformSingleton(this List<TimeValue> fittedTimeValueList, double kw, TimeSpan fullPeriod) Parameters fittedTimeValueList List<TimeValue> timeToValueList which the time length is closed to integral multiple of period. The offset part cause bias. kw double multiplication of K (number of angular frequency) and W (base angular frequency f2pi) fullPeriod TimeSpan The full period of the time series. Returns Vec2d (parameter cos,parameter sin) FourierTransformSingleton<TimeItem>(List<TimeItem>, double, Func<TimeItem, double>[]) Performs a Fourier transform at a specific angular frequency for a list of time-based items. public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimecoded Parameters fittedTimeValueList List<TimeItem> The list of time-based items to transform kw double The angular frequency to transform at getValueFuncs Func<TimeItem, double>[] Array of functions to extract values from each TimeItem Returns Vec2d[] An array of 2D vectors containing the cosine and sine components of the transform for each value function Type Parameters TimeItem The type of items that implement ITimecoded FourierTransformSingleton<TimeItem>(List<TimeItem>, double, TimeSpan, Func<TimeItem, double>[]) Get fourier transform parameter of indicated frequency kw. public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, TimeSpan fullPeriod, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimecoded Parameters fittedTimeValueList List<TimeItem> timeToValueList which the time length is closed to integral multiple of period. The offset part cause bias. kw double multiplication of K and W fullPeriod TimeSpan period of 1st fourier transform parameter. getValueFuncs Func<TimeItem, double>[] Array of functions to extract values from each TimeItem. Returns Vec2d[] (parameter cos,parameter sin) Type Parameters TimeItem GetAvgTimeInterval(List<TimeValue>) Calculates the average time interval between consecutive TimeValue items in a list. public static TimeSpan GetAvgTimeInterval(this List<TimeValue> timeValueList) Parameters timeValueList List<TimeValue> The list of TimeValue objects Returns TimeSpan The average time interval as a TimeSpan GetFullPeriod<TimeItem>(IList<TimeItem>) Gets the total time period covered by a collection of time-based items. public static TimeSpan GetFullPeriod<TimeItem>(this IList<TimeItem> src) where TimeItem : ITimecoded Parameters src IList<TimeItem> The collection of time-based items Returns TimeSpan The time span between the first and last items, or TimeSpan.Zero if the collection is empty Type Parameters TimeItem The type of items that implement ITimecoded GetInterpolatedAvgValueByTime(IEnumerable<KeyValuePair<double, double>>, double) Get interpolated average value by time. public static IEnumerable<KeyValuePair<double, double>> GetInterpolatedAvgValueByTime(this IEnumerable<KeyValuePair<double, double>> sortedTimeToValue, double timeInterval) Parameters sortedTimeToValue IEnumerable<KeyValuePair<double, double>> sorted time to value. Key is time. Value is value. timeInterval double time interval Returns IEnumerable<KeyValuePair<double, double>> enumerable of (Key: time, Value: interpolated average value) GetInterpolatedAvgValueByTime<Data>(IEnumerable<KeyValuePair<double, Data>>, double, Func<Data, Data, Data>, Func<Data, double, Data>) Get interpolated average value by time. public static IEnumerable<KeyValuePair<double, Data>> GetInterpolatedAvgValueByTime<Data>(this IEnumerable<KeyValuePair<double, Data>> sortedTimeToValue, double timeInterval, Func<Data, Data, Data> addingFunc, Func<Data, double, Data> scalingFunc) Parameters sortedTimeToValue IEnumerable<KeyValuePair<double, Data>> sorted time to value. Key is time. Value is value. timeInterval double time interval addingFunc Func<Data, Data, Data> Function to add two values of type Data scalingFunc Func<Data, double, Data> Function to scale a value of type Data by a factor Returns IEnumerable<KeyValuePair<double, Data>> enumerable of (Key: time, Value: interpolated average value) Type Parameters Data The type of data values GetInterpolatedValueByTime(List<TimeValue>, TimeSpan) Gets an interpolated value from a list of TimeValue objects at a specified time. public static double GetInterpolatedValueByTime(this List<TimeValue> timeVsValueContour, TimeSpan t) Parameters timeVsValueContour List<TimeValue> The list of TimeValue objects t TimeSpan The time at which to interpolate Returns double The interpolated value at the specified time GetInterpolatedValueByTime(SortedList<double, double>, double) Gets an interpolated double value from a time-value contour at a specified time. public static double GetInterpolatedValueByTime(this SortedList<double, double> timeVsValueContour, double t) Parameters timeVsValueContour SortedList<double, double> The sorted list of time-value pairs t double The time at which to interpolate Returns double The interpolated value at the specified time GetInterpolatedValueByTime<T>(SortedList<double, T>, double, Func<T, T, T>, Func<T, double, T>) Gets an interpolated value from a time-value contour at a specified time. public static T GetInterpolatedValueByTime<T>(this SortedList<double, T> timeVsValueContour, double t, Func<T, T, T> addingFunc, Func<T, double, T> scalingFunc) Parameters timeVsValueContour SortedList<double, T> The sorted list of time-value pairs t double The time at which to interpolate addingFunc Func<T, T, T> Function to add two values of type T scalingFunc Func<T, double, T> Function to scale a value of type T by a factor Returns T The interpolated value at the specified time Type Parameters T The type of values in the contour"
},
"api/Hi.Physics.TimeValue.html": {
"href": "api/Hi.Physics.TimeValue.html",
"title": "Class TimeValue | HiAPI-C# 2025",
"summary": "Class TimeValue Namespace Hi.Physics Assembly HiGeom.dll Represents a value associated with a specific point in time. public class TimeValue : ITimecoded Inheritance object TimeValue Implements ITimecoded Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeValue(TimeSpan, double) Initializes a new instance of the TimeValue class with the specified time and value. public TimeValue(TimeSpan time_s, double value) Parameters time_s TimeSpan The time in seconds. value double The value associated with the time. Fields value The value associated with the time. public double value Field Value double Properties Timecode Gets or sets the time value in seconds. public TimeSpan Timecode { get; set; } Property Value TimeSpan Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string) Returns a string representation of this instance using the specified format. public string ToString(string format) Parameters format string The format to use for the string representation. Returns string A string representation of this instance. Operators operator +(TimeValue, TimeValue) Adds two TimeValue instances. public static TimeValue operator +(TimeValue a, TimeValue b) Parameters a TimeValue The first TimeValue instance. b TimeValue The second TimeValue instance. Returns TimeValue A new TimeValue instance with the sum of times and values. operator *(TimeValue, double) Multiplies a TimeValue instance by a scalar. public static TimeValue operator *(TimeValue a, double scale) Parameters a TimeValue The TimeValue instance to multiply. scale double The scalar value to multiply by. Returns TimeValue A new TimeValue instance with scaled time and value."
},
"api/Hi.Physics.WorkpieceMaterial.html": {
"href": "api/Hi.Physics.WorkpieceMaterial.html",
"title": "Class WorkpieceMaterial | HiAPI-C# 2025",
"summary": "Class WorkpieceMaterial Namespace Hi.Physics Assembly HiMech.dll Represents the physical and mechanical properties of a workpiece material. public class WorkpieceMaterial : IPreferredFileName, IStructureMaterial, IMakeXmlSource, IDuplicate, INameNote Inheritance object WorkpieceMaterial Implements IPreferredFileName IStructureMaterial IMakeXmlSource IDuplicate INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WorkpieceMaterial() Ctor. public WorkpieceMaterial() WorkpieceMaterial(XElement, string) Ctor. public WorkpieceMaterial(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties Al6061T6 General condition of Al6061T6. public static WorkpieceMaterial Al6061T6 { get; } Property Value WorkpieceMaterial CompressiveYieldStrength_MPa Gets or sets the compressive yield strength in megapascals (MPa). public double CompressiveYieldStrength_MPa { get; set; } Property Value double Density_gdcm3 Gets or sets the density in grams per cubic centimeter (g/cm³). public double Density_gdcm3 { get; set; } Property Value double Density_gdm3 Gets or sets the density in grams per cubic decimeter (g/dm³). public double Density_gdm3 { get; set; } Property Value double Density_gdmm3 Gets or sets the density in grams per cubic millimeter (g/mm³). public double Density_gdmm3 { get; set; } Property Value double ElasticModulus_GPa Gets or sets the elastic modulus in gigapascals (GPa). public double ElasticModulus_GPa { get; set; } Property Value double ElogationRaioAtBreak Gets or sets the elongation ratio at break point. public double ElogationRaioAtBreak { get; set; } Property Value double FusionLatentHeat_Jdg Gets or sets the latent heat of fusion in joules per gram (J/g). public double FusionLatentHeat_Jdg { get; set; } Property Value double HeatCapacity_JdgK Gets or sets the specific heat capacity in joules per gram per Kelvin (J/g·K). public double HeatCapacity_JdgK { get; set; } Property Value double HeatConductivity_WdmK Gets or sets the heat transfer coefficient in watts per decimeter per Kelvin (W/dm·K). public double HeatConductivity_WdmK { get; set; } Property Value double HeatConductivity_WdmmK Gets or sets the heat conductivity in watts per millimeter per Kelvin (W/mm·K). This is a conversion of HeatConductivity_WdmK with a factor of 1/1000. public double HeatConductivity_WdmmK { get; set; } Property Value double MeltingTemperature_C Gets or sets the melting temperature in Celsius (°C). public double MeltingTemperature_C { get; set; } Property Value double MeltingTemperature_K Gets or sets the melting temperature in Kelvin (K). public double MeltingTemperature_K { get; set; } Property Value double Name Gets or sets the name of the material. public string Name { get; set; } Property Value string Note Gets or sets additional notes about the material. public string Note { get; set; } Property Value string PoissonRatio Gets or sets the Poisson's ratio of the material. public double PoissonRatio { get; set; } Property Value double PreferredFileName Gets or sets the preferred file name for this object when generating or saving files. public string PreferredFileName { get; set; } Property Value string TensileYieldStrength_MPa Gets or sets the tensile yield strength in megapascals (MPa). public double TensileYieldStrength_MPa { get; set; } Property Value double 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 MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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.Physics.html": {
"href": "api/Hi.Physics.html",
"title": "Namespace Hi.Physics | HiAPI-C# 2025",
"summary": "Namespace Hi.Physics Classes AmpPhase Represents amplitude and phase information for wave-like phenomena. CoatingMaterial Represents a coating material used in cutting tools. CoolantHeatCondition Represents the heat condition parameters for coolant in machining operations. 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). 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. CutterMaterial Represents a cutter material with physical and thermal properties. MillingTemperatureUtil Utility class for calculating and managing temperatures during milling operations. SeqPhysicsBrief Represents a brief summary of physical properties and measurements during a machining sequence. StructureMaterial Represents a material with physical and thermal properties used in structural analysis. TemperatureUtil Utility class for temperature conversions. TemperatureVsHardness Represents the relationship between temperature and hardness for materials. ThermalLayer1D Represents a one-dimensional thermal layer for heat transfer calculations. TimeSeriesUtil Utility class for time series data operations. TimeValue Represents a value associated with a specific point in time. WorkpieceMaterial Represents the physical and mechanical properties of a workpiece material. Interfaces IGetThermalLayerList Interface for objects that can provide a list of thermal layers. IStructureMaterial Interface for structure materials with thermal properties. ISuccessivePhysicsBriefAccessor Interface for accessing sequential physics brief information. ISurfaceMaterial Interface for materials that can be used on surfaces. ITimecoded Interface for objects that provide time information."
},
"api/Hi.SessionCommands.CollisionDetectionCommand.html": {
"href": "api/Hi.SessionCommands.CollisionDetectionCommand.html",
"title": "Class CollisionDetectionCommand | HiAPI-C# 2025",
"summary": "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 object CollisionDetectionCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.SessionCommands.CommandCatalogAttribute.html": {
"href": "api/Hi.SessionCommands.CommandCatalogAttribute.html",
"title": "Class CommandCatalogAttribute | HiAPI-C# 2025",
"summary": "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 object Attribute CommandCatalogAttribute 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. NcFileCommand → ncfile). 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."
},
"api/Hi.SessionCommands.CommandCategory.html": {
"href": "api/Hi.SessionCommands.CommandCategory.html",
"title": "Enum CommandCategory | HiAPI-C# 2025",
"summary": "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 InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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)."
},
"api/Hi.SessionCommands.CommandFieldAttribute.html": {
"href": "api/Hi.SessionCommands.CommandFieldAttribute.html",
"title": "Class CommandFieldAttribute | HiAPI-C# 2025",
"summary": "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 object Attribute CommandFieldAttribute 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.SessionCommands.EnablingWrapper.html": {
"href": "api/Hi.SessionCommands.EnablingWrapper.html",
"title": "Class EnablingWrapper | HiAPI-C# 2025",
"summary": "Class EnablingWrapper Namespace Hi.SessionCommands Assembly HiNc.dll Wrapper for session commands that provides enable/disable functionality. public class EnablingWrapper : ISessionCommand, IMakeXmlSource Inheritance object EnablingWrapper Implements ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors EnablingWrapper() Ctor. public EnablingWrapper() EnablingWrapper(ISessionCommand) Initializes a new instance of the EnablingWrapper class with the specified command. public EnablingWrapper(ISessionCommand command) Parameters command ISessionCommand The command to wrap. EnablingWrapper(XElement, string, string, IProgress<IMessage>, object[]) Ctor. public EnablingWrapper(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory for relative paths relFile string Relative file path progress IProgress<IMessage> Progress reporter for nested command XML. res object[] Additional resources Properties Command Gets or sets the wrapped session command. public ISessionCommand Command { get; set; } Property Value ISessionCommand IsEnabled Gets or sets whether the wrapped command is enabled. public bool IsEnabled { 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 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."
},
"api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html": {
"href": "api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html",
"title": "Class ExportMeshedGeomToStlCommand | HiAPI-C# 2025",
"summary": "Class ExportMeshedGeomToStlCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command to call ExportMeshedGeomToStl(string, double). [CultureText(\"zh-Hant\", \"匯出網格幾何 STL\")] [CultureText(\"zh-Hans\", \"导出网格几何 STL\")] [CommandCatalog(CommandCategory.Output, Order = 2, Kind = \"exportmeshedgeom\")] public class ExportMeshedGeomToStlCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object ExportMeshedGeomToStlCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ExportMeshedGeomToStlCommand() Default constructor. public ExportMeshedGeomToStlCommand() ExportMeshedGeomToStlCommand(XElement, string) Ctor. public ExportMeshedGeomToStlCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties RelFile Relative path for the output STL file. public string RelFile { get; set; } Property Value string Resolution_mm Resolution in millimeters for STL generation. public double Resolution_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."
},
"api/Hi.SessionCommands.GeomDiffCommand.html": {
"href": "api/Hi.SessionCommands.GeomDiffCommand.html",
"title": "Class GeomDiffCommand | HiAPI-C# 2025",
"summary": "Class GeomDiffCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for calculating geometric differences between workpieces. [CultureText(\"zh-Hant\", \"幾何差異\")] [CultureText(\"zh-Hans\", \"几何差异\")] public class GeomDiffCommand : ISessionCommand, IMakeXmlSource Inheritance object GeomDiffCommand Implements ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeomDiffCommand() Default constructor. public GeomDiffCommand() GeomDiffCommand(XElement, string) Ctor. public GeomDiffCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for relative paths. Fields ConstDisplayName Display name constant for this command. public const string ConstDisplayName = \"Geometry Difference\" Field Value string Properties DetectRadius_mm Detection radius in millimeters. public double DetectRadius_mm { get; set; } Property Value double 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 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."
},
"api/Hi.SessionCommands.ISessionCommand.html": {
"href": "api/Hi.SessionCommands.ISessionCommand.html",
"title": "Interface ISessionCommand | HiAPI-C# 2025",
"summary": "Interface ISessionCommand Namespace Hi.SessionCommands Assembly HiNc.dll Interface for commands that can be executed in a machining session. public interface ISessionCommand : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Run(SessionShell) Runs the command, delegating execution to the provided session shell. 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."
},
"api/Hi.SessionCommands.ITitleCommand.html": {
"href": "api/Hi.SessionCommands.ITitleCommand.html",
"title": "Interface ITitleCommand | HiAPI-C# 2025",
"summary": "Interface ITitleCommand Namespace Hi.SessionCommands Assembly HiNc.dll ISessionCommand with title. [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 Inherited Members ISessionCommand.Run(SessionShell) IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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. string GetCommandTitle(ICommandTextSource text) Parameters text ICommandTextSource Culture-bearing vocabulary the static words are taken from. Returns string The command title."
},
"api/Hi.SessionCommands.Lang.html": {
"href": "api/Hi.SessionCommands.Lang.html",
"title": "Class Lang | HiAPI-C# 2025",
"summary": "Class Lang Namespace Hi.SessionCommands Assembly HiNc.dll Language package class for command flow. public class Lang Inheritance object Lang Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.SessionCommands.ListCommand.html": {
"href": "api/Hi.SessionCommands.ListCommand.html",
"title": "Class ListCommand | HiAPI-C# 2025",
"summary": "Class ListCommand Namespace Hi.SessionCommands Assembly HiNc.dll A command that contains and executes a list of other commands. [CultureText(\"zh-Hant\", \"清單\")] [CultureText(\"zh-Hans\", \"列表\")] [CommandCatalog(CommandCategory.Flow, Order = 0)] public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object ListCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ListCommand() Default constructor. public ListCommand() ListCommand(XElement, string, string, IProgress<IMessage>, object[]) Ctor. public ListCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory for relative paths. relFile string Relative file path. progress IProgress<IMessage> Progress reporter for nested command XML. res object[] Additional resources 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 CommandEntryList Command List. The item in list is null capable. public List<EnablingWrapper> CommandEntryList { get; set; } Property Value List<EnablingWrapper> 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 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), 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."
},
"api/Hi.SessionCommands.MachiningMotionResolutionCommand.html": {
"href": "api/Hi.SessionCommands.MachiningMotionResolutionCommand.html",
"title": "Class MachiningMotionResolutionCommand | HiAPI-C# 2025",
"summary": "Class MachiningMotionResolutionCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for setting machining motion resolution for the milling process. [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 Inheritance object MachiningMotionResolutionCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningMotionResolutionCommand() Ctor. public MachiningMotionResolutionCommand() MachiningMotionResolutionCommand(XElement, string, string, IProgress<IMessage>) Ctor. public MachiningMotionResolutionCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths relFile string Relative file path progress IProgress<IMessage> Progress reporter for nested resolution XML. Properties MachiningMotionResolution Main content. Machining Cycle Resolution. public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution 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), 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."
},
"api/Hi.SessionCommands.MachiningResolutionCommand.html": {
"href": "api/Hi.SessionCommands.MachiningResolutionCommand.html",
"title": "Class MachiningResolutionCommand | HiAPI-C# 2025",
"summary": "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 object MachiningResolutionCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.SessionCommands.NcCodeCommand.html": {
"href": "api/Hi.SessionCommands.NcCodeCommand.html",
"title": "Class NcCodeCommand | HiAPI-C# 2025",
"summary": "Class NcCodeCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for executing NC code directly. [CultureText(\"zh-Hant\", \"NC程式碼\")] [CultureText(\"zh-Hans\", \"NC代码\")] [CommandCatalog(CommandCategory.Program, Order = 1)] public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object NcCodeCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcCodeCommand() Ctor. public NcCodeCommand() NcCodeCommand(string) Initializes a new instance of the NcCodeCommand class with the specified NC text. public NcCodeCommand(string nc) Parameters nc string The NC code text. NcCodeCommand(XElement, string) Ctor. public NcCodeCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths 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 NcText The NC code text content. public string NcText { get; set; } Property Value string Title Title. 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. public string Title { 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."
},
"api/Hi.SessionCommands.NcFileCommand.html": {
"href": "api/Hi.SessionCommands.NcFileCommand.html",
"title": "Class NcFileCommand | HiAPI-C# 2025",
"summary": "Class NcFileCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for executing an NC program file (Nc is the umbrella term: brand controller code, NX-CL or CSV). The runner is picked by NcKind — Auto (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”. [CultureText(\"zh-Hant\", \"程式檔案\")] [CultureText(\"zh-Hans\", \"程序文件\")] [CommandCatalog(CommandCategory.Program, Order = 0)] public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object NcFileCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcFileCommand() Default constructor. public NcFileCommand() NcFileCommand(string) Initializes a new instance of the NcFileCommand class with the specified NC program file path. public NcFileCommand(string ncFile) Parameters ncFile string The NC program file path. NcFileCommand(XElement, string) Ctor. public NcFileCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties NcFile Path to the NC program file. public string NcFile { get; set; } Property Value string NcKind Which runner plays NcFile; Auto detects by extension. public NcKind NcKind { get; set; } Property Value NcKind 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."
},
"api/Hi.SessionCommands.NcOptOptionCommand.html": {
"href": "api/Hi.SessionCommands.NcOptOptionCommand.html",
"title": "Class NcOptOptionCommand | HiAPI-C# 2025",
"summary": "Class NcOptOptionCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for NC optimization options. [CultureText(\"zh-Hant\", \"NC優化設定\")] [CultureText(\"zh-Hans\", \"NC优化设定\")] [CommandCatalog(CommandCategory.Optimization, Order = 0)] public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object NcOptOptionCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcOptOptionCommand() Ctor. public NcOptOptionCommand() NcOptOptionCommand(XElement, string, string, IProgress<IMessage>, object[]) Ctor. public NcOptOptionCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory for relative paths relFile string Relative file path progress IProgress<IMessage> Progress reporter for nested option XML. res object[] Additional resources Properties NcOptOption Gets or sets the NC optimization options. public NcOptOption NcOptOption { get; set; } Property Value NcOptOption 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."
},
"api/Hi.SessionCommands.OptimizeToFilesCommand.html": {
"href": "api/Hi.SessionCommands.OptimizeToFilesCommand.html",
"title": "Class OptimizeToFilesCommand | HiAPI-C# 2025",
"summary": "Class OptimizeToFilesCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command to call OptimizeToFiles(string). [CultureText(\"zh-Hant\", \"優化NC至檔案\")] [CultureText(\"zh-Hans\", \"优化NC至文件\")] public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource Inheritance object OptimizeToFilesCommand Implements ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors OptimizeToFilesCommand() Default constructor. public OptimizeToFilesCommand() OptimizeToFilesCommand(XElement, string) Ctor. public OptimizeToFilesCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties RelFileTemplate Template for the relative file path. public string RelFileTemplate { 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 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."
},
"api/Hi.SessionCommands.PauseOnFailureCommand.html": {
"href": "api/Hi.SessionCommands.PauseOnFailureCommand.html",
"title": "Class PauseOnFailureCommand | HiAPI-C# 2025",
"summary": "Class PauseOnFailureCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command that turns pause-on-failure 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 = 3)] public class PauseOnFailureCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object PauseOnFailureCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PauseOnFailureCommand() Ctor. public PauseOnFailureCommand() PauseOnFailureCommand(XElement, string) Ctor. public PauseOnFailureCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties Enable Whether the session pauses on a failure from this command on. [CultureText(\"zh-Hant\", \"啟用失敗時暫停\", Key = \"Enable Pause on Failure\")] [CultureText(\"zh-Hans\", \"启用失败时暂停\", Key = \"Enable Pause on Failure\")] 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."
},
"api/Hi.SessionCommands.PhysicsCommand.html": {
"href": "api/Hi.SessionCommands.PhysicsCommand.html",
"title": "Class PhysicsCommand | HiAPI-C# 2025",
"summary": "Class PhysicsCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command that turns physics simulation 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 = 4)] public class PhysicsCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object PhysicsCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PhysicsCommand() Ctor. public PhysicsCommand() PhysicsCommand(XElement, string) Ctor. public PhysicsCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties Enable Whether physics simulation is enabled from this command on. [CultureText(\"zh-Hant\", \"啟用物理模擬\", Key = \"Enable Physics\")] [CultureText(\"zh-Hans\", \"启用物理模拟\", Key = \"Enable Physics\")] 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."
},
"api/Hi.SessionCommands.PostExecutionCommand.html": {
"href": "api/Hi.SessionCommands.PostExecutionCommand.html",
"title": "Class PostExecutionCommand | HiAPI-C# 2025",
"summary": "Class PostExecutionCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for post-execution actions after NC command running. [CultureText(\"zh-Hant\", \"執行後處理\")] [CultureText(\"zh-Hans\", \"执行后处理\")] [CommandCatalog(CommandCategory.Output, Order = 0)] public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object PostExecutionCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PostExecutionCommand() Ctor. public PostExecutionCommand() PostExecutionCommand(XElement, string, string, params object[]) Ctor. public PostExecutionCommand(XElement src, string baseDirectory, string relFile, params object[] res) Parameters src XElement XML baseDirectory string Base directory for relative paths relFile string Relative file path res object[] Additional resources Properties 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 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 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 OptimizationFileTemplate Gets or sets the optimization file template path. public string OptimizationFileTemplate { 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 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."
},
"api/Hi.SessionCommands.PreSettingCommand.html": {
"href": "api/Hi.SessionCommands.PreSettingCommand.html",
"title": "Class PreSettingCommand | HiAPI-C# 2025",
"summary": "Class PreSettingCommand Namespace Hi.SessionCommands Assembly HiNc.dll 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. [CultureText(\"zh-Hant\", \"一般設定\")] [CultureText(\"zh-Hans\", \"一般设定\")] public class PreSettingCommand : ITitleCommand, ISessionCommand, IMakeXmlSource Inheritance object PreSettingCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PreSettingCommand() Ctor. public PreSettingCommand() PreSettingCommand(XElement, string, string, IProgress<IMessage>, object[]) Ctor. public PreSettingCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res) Parameters src XElement XML baseDirectory string Base directory for relative paths relFile string Relative file path progress IProgress<IMessage> Progress reporter for nested preset XML. res object[] Additional resources Properties EnableCollisionDetection Gets or sets whether collision detection is enabled. public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure. public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether physics is enabled. public bool EnablePhysics { get; set; } Property Value bool EnableReadMeshedGeom Gets or sets whether to enable reading meshed geometry. public bool EnableReadMeshedGeom { get; set; } Property Value bool 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 MeshedGeomFile Gets or sets the meshed geometry file path. public string MeshedGeomFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods ExpandToEntries(bool) 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 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 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."
},
"api/Hi.SessionCommands.RecordMeshedGeomActionEnum.html": {
"href": "api/Hi.SessionCommands.RecordMeshedGeomActionEnum.html",
"title": "Enum RecordMeshedGeomActionEnum | HiAPI-C# 2025",
"summary": "Enum RecordMeshedGeomActionEnum Namespace Hi.SessionCommands Assembly HiNc.dll Action of the RecordMeshedGeomCommand. public enum RecordMeshedGeomActionEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields [CultureText(\"zh-Hant\", \"無操作\")] [CultureText(\"zh-Hans\", \"无操作\")] NoAction = 0 No action. [CultureText(\"zh-Hant\", \"讀取\")] [CultureText(\"zh-Hans\", \"读取\")] Read = 1 Read meshed geometry from file. [CultureText(\"zh-Hant\", \"首次讀取,否則寫入\")] [CultureText(\"zh-Hans\", \"首次读取,否则写入\")] ReadOnFirstOrWrite = 3 If file existed and no motion has ran before, read the meshed geometry; otherwise, write the current geometry into file. [CultureText(\"zh-Hant\", \"寫入\")] [CultureText(\"zh-Hans\", \"写入\")] Write = 2 Write meshed geometry to file."
},
"api/Hi.SessionCommands.RecordMeshedGeomCommand.html": {
"href": "api/Hi.SessionCommands.RecordMeshedGeomCommand.html",
"title": "Class RecordMeshedGeomCommand | HiAPI-C# 2025",
"summary": "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 object RecordMeshedGeomCommand Implements ITitleCommand ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) 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."
},
"api/Hi.SessionCommands.ScriptCommand.html": {
"href": "api/Hi.SessionCommands.ScriptCommand.html",
"title": "Class ScriptCommand | HiAPI-C# 2025",
"summary": "Class ScriptCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command for executing C# scripts in the milling process. [CultureText(\"zh-Hant\", \"腳本\")] [CultureText(\"zh-Hans\", \"脚本\")] [CommandCatalog(CommandCategory.Program, Order = 2)] public class ScriptCommand : ITitleCommand, ISessionCommand, IMakeXmlSource, IGetSelectionName Inheritance object ScriptCommand Implements ITitleCommand ISessionCommand IMakeXmlSource IGetSelectionName Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ScriptCommand() Ctor. public ScriptCommand() ScriptCommand(XElement, string) Ctor. public ScriptCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties ExecutionTemplate Gets the execution template command. public static ScriptCommand ExecutionTemplate { get; } Property Value ScriptCommand OptimizationConfigurationTemplate Gets the optimization configuration template command. public static ScriptCommand OptimizationConfigurationTemplate { get; } Property Value ScriptCommand PreSettingTemplate Gets the pre-setting template command. public static ScriptCommand PreSettingTemplate { get; } Property Value ScriptCommand ScriptText The script text content. public string ScriptText { get; set; } Property Value string ScriptTitle Title or name of the script. public string ScriptTitle { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GenTemplateCommand() Generates a template script command with default values. public static ScriptCommand GenTemplateCommand() Returns ScriptCommand A new ScriptCommand with template values 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. GetSelectionName() Gets a name that can be used for selection in UI or other contexts. public string GetSelectionName() Returns string The selection name for this 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 (and its legacy alias) 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. Run(SessionShell, string) Runs a specified script with the given session shell. public IEnumerable<Action> Run(SessionShell sessionShell, string scriptText) Parameters sessionShell SessionShell The session shell that scripts delegate to. scriptText string The script text to run Returns IEnumerable<Action> Enumerable of actions to perform"
},
"api/Hi.SessionCommands.WriteShotFilesCommand.html": {
"href": "api/Hi.SessionCommands.WriteShotFilesCommand.html",
"title": "Class WriteShotFilesCommand | HiAPI-C# 2025",
"summary": "Class WriteShotFilesCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command to call WriteShotFiles(string, double). [CultureText(\"zh-Hant\", \"輸出時間序資訊至檔案\")] [CultureText(\"zh-Hans\", \"输出时间序信息至文件\")] public class WriteShotFilesCommand : ISessionCommand, IMakeXmlSource Inheritance object WriteShotFilesCommand Implements ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WriteShotFilesCommand() Default constructor. public WriteShotFilesCommand() WriteShotFilesCommand(XElement, string) Ctor. public WriteShotFilesCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties RelFileTemplate Template for the relative file path where shot files will be written. public string RelFileTemplate { get; set; } Property Value string TimeResolution_ms Time resolution in milliseconds for shot data sampling. public double TimeResolution_ms { get; set; } Property Value double 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 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."
},
"api/Hi.SessionCommands.WriteStepFilesCommand.html": {
"href": "api/Hi.SessionCommands.WriteStepFilesCommand.html",
"title": "Class WriteStepFilesCommand | HiAPI-C# 2025",
"summary": "Class WriteStepFilesCommand Namespace Hi.SessionCommands Assembly HiNc.dll Command to call WriteStepFiles(string). [CultureText(\"zh-Hant\", \"輸出每步資訊至檔案\")] [CultureText(\"zh-Hans\", \"输出每步信息至文件\")] public class WriteStepFilesCommand : ISessionCommand, IMakeXmlSource Inheritance object WriteStepFilesCommand Implements ISessionCommand 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WriteStepFilesCommand() Default constructor. public WriteStepFilesCommand() WriteStepFilesCommand(XElement, string) Ctor. public WriteStepFilesCommand(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for resolving relative paths Properties RelFileTemplate Template for the relative file path where step files will be written. public string RelFileTemplate { 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 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."
},
"api/Hi.SessionCommands.html": {
"href": "api/Hi.SessionCommands.html",
"title": "Namespace Hi.SessionCommands | HiAPI-C# 2025",
"summary": "Namespace Hi.SessionCommands 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). GeomDiffCommand Command for calculating geometric differences between workpieces. Lang Language package class for command flow. ListCommand A command that contains and executes a list of other commands. 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. NcCodeCommand Command for executing NC code directly. NcFileCommand Command for executing an NC program file (Nc is the umbrella term: brand controller code, NX-CL or CSV). The runner is picked by NcKind — Auto (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”. NcOptOptionCommand Command for NC optimization options. 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. PostExecutionCommand Command for post-execution actions after NC command running. PreSettingCommand 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. RecordMeshedGeomCommand Command for recording meshed geometry to/from file. ScriptCommand Command for executing C# scripts in the milling process. WriteShotFilesCommand Command to call WriteShotFiles(string, double). WriteStepFilesCommand Command to call WriteStepFiles(string). Interfaces ISessionCommand Interface for commands that can be executed in a machining session. ITitleCommand ISessionCommand with title. Enums 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."
},
"api/Hi.SessionShellUtils.ISessionShell.html": {
"href": "api/Hi.SessionShellUtils.ISessionShell.html",
"title": "Interface ISessionShell | HiAPI-C# 2025",
"summary": "Interface ISessionShell Namespace Hi.SessionShellUtils Assembly HiGeom.dll Interface for C# scripting API functionality. public interface ISessionShell Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ScriptOptions ScriptOptions. ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions"
},
"api/Hi.SessionShellUtils.JsAceAttribute.html": {
"href": "api/Hi.SessionShellUtils.JsAceAttribute.html",
"title": "Class JsAceAttribute | HiAPI-C# 2025",
"summary": "Class JsAceAttribute Namespace Hi.SessionShellUtils Assembly HiGeom.dll Attribute for JavaScript Ace editor integration. public class JsAceAttribute : Attribute Inheritance object Attribute JsAceAttribute 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.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Do not add new usages. Retained only so the legacy HiNcRcl (Blazor) Ace editor completion pipeline keeps working until that app is retired: SessionShell.JsAceCompletionProfileJsonArray scans [JsAce] members by reflection and CommonRcl.AceEditor feeds the resulting JSON into Ace's completer list. New code should rely on Roslyn CompletionService served over POST /api/script/completions and consumed by CodeMirror 6 on the HiNC-2025-webservice Quasar frontend. XML <summary> comments become the single source of truth for tooltip content, so no duplicated attribute metadata is needed. Deprecation lifecycle: Now — discouraged for new code (this remark); existing call sites in HiNcRcl / SessionShell / MachiningStep keep building without warnings. When HiNcRcl retires — this attribute will be marked [Obsolete], surfacing a compiler warning on every remaining call site so they can be cleaned up. After all call sites are gone — this file (and SessionShell.JsAceCompletionProfileJsonArray) will be deleted entirely. Constructors JsAceAttribute() Initializes a new instance of the JsAceAttribute class. public JsAceAttribute() JsAceAttribute(string) Initializes a new instance of the JsAceAttribute class with a specified snippet. public JsAceAttribute(string snippet) Parameters snippet string The code snippet for the editor JsAceAttribute(string, string) Initializes a new instance of the JsAceAttribute class with a specified snippet and documentation. public JsAceAttribute(string snippet, string docHtml) Parameters snippet string The code snippet for the editor docHtml string The HTML documentation content Properties ClassExt Gets or sets the class extension. public string ClassExt { get; set; } Property Value string DocContentHtml Gets or sets the HTML documentation content. public string DocContentHtml { get; set; } Property Value string Snippet Gets or sets the code snippet for the editor. public string Snippet { get; set; } Property Value string"
},
"api/Hi.SessionShellUtils.html": {
"href": "api/Hi.SessionShellUtils.html",
"title": "Namespace Hi.SessionShellUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.SessionShellUtils Classes JsAceAttribute Attribute for JavaScript Ace editor integration. Interfaces ISessionShell Interface for C# scripting API functionality."
},
"api/Hi.SqliteUtils.SqliteIdentityRole.html": {
"href": "api/Hi.SqliteUtils.SqliteIdentityRole.html",
"title": "Class SqliteIdentityRole | HiAPI-C# 2025",
"summary": "Class SqliteIdentityRole Namespace Hi.SqliteUtils Assembly HiNc.dll Base class for SQLite-based identity roles. public class SqliteIdentityRole Inheritance object SqliteIdentityRole Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SqliteIdentityRole() Initializes a new instance of the SqliteIdentityRole class. public SqliteIdentityRole() SqliteIdentityRole(string) Initializes a new instance of the SqliteIdentityRole class with the specified role name. public SqliteIdentityRole(string roleName) Parameters roleName string The role name. Properties ConcurrencyStamp Gets or sets the concurrency stamp. public virtual string ConcurrencyStamp { get; set; } Property Value string Id Gets or sets the role ID. public virtual string Id { get; set; } Property Value string Name Gets or sets the role name. public virtual string Name { get; set; } Property Value string NormalizedName Gets or sets the normalized role name. public virtual string NormalizedName { get; set; } Property Value string"
},
"api/Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html": {
"href": "api/Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html",
"title": "Class SqliteIdentityStorage.RoleRow | HiAPI-C# 2025",
"summary": "Class SqliteIdentityStorage.RoleRow Namespace Hi.SqliteUtils Assembly HiNc.dll Represents a role row in the database. public class SqliteIdentityStorage.RoleRow Inheritance object SqliteIdentityStorage.RoleRow Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ConcurrencyStamp Gets or sets the concurrency stamp. public string ConcurrencyStamp { get; set; } Property Value string Id Gets or sets the role ID. public string Id { get; set; } Property Value string Name Gets or sets the role name. public string Name { get; set; } Property Value string NormalizedName Gets or sets the normalized role name. public string NormalizedName { get; set; } Property Value string Methods ToRole<TRole>() Converts this row to a role object. public TRole ToRole<TRole>() where TRole : SqliteIdentityRole, new() Returns TRole A new role instance. Type Parameters TRole The type of role to create."
},
"api/Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html": {
"href": "api/Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html",
"title": "Class SqliteIdentityStorage.UserRow | HiAPI-C# 2025",
"summary": "Class SqliteIdentityStorage.UserRow Namespace Hi.SqliteUtils Assembly HiNc.dll Represents a user row in the database. public class SqliteIdentityStorage.UserRow Inheritance object SqliteIdentityStorage.UserRow Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AccessFailedCount Gets or sets the access failed count. public int AccessFailedCount { get; set; } Property Value int ConcurrencyStamp Gets or sets the concurrency stamp. public string ConcurrencyStamp { get; set; } Property Value string CustomData Gets or sets custom data as a serialized string. public string CustomData { get; set; } Property Value string Email Gets or sets the email address. public string Email { get; set; } Property Value string EmailConfirmed Gets or sets whether the email is confirmed (1 for true, 0 for false). public int EmailConfirmed { get; set; } Property Value int Id Gets or sets the user ID. public string Id { get; set; } Property Value string InitialPassword Gets or sets the initial password. public string InitialPassword { get; set; } Property Value string LockoutEnabled Gets or sets whether lockout is enabled (1 for true, 0 for false). public int LockoutEnabled { get; set; } Property Value int LockoutEnd Gets or sets the lockout end date/time as a string. public string LockoutEnd { get; set; } Property Value string NormalizedEmail Gets or sets the normalized email address. public string NormalizedEmail { get; set; } Property Value string NormalizedUserName Gets or sets the normalized user name. public string NormalizedUserName { get; set; } Property Value string PasswordHash Gets or sets the password hash. public string PasswordHash { get; set; } Property Value string PhoneNumber Gets or sets the phone number. public string PhoneNumber { get; set; } Property Value string PhoneNumberConfirmed Gets or sets whether the phone number is confirmed (1 for true, 0 for false). public int PhoneNumberConfirmed { get; set; } Property Value int SecurityStamp Gets or sets the security stamp. public string SecurityStamp { get; set; } Property Value string TwoFactorEnabled Gets or sets whether two-factor authentication is enabled (1 for true, 0 for false). public int TwoFactorEnabled { get; set; } Property Value int UserName Gets or sets the user name. public string UserName { get; set; } Property Value string Methods ToUser<TUser>() Converts this row to a user object. public TUser ToUser<TUser>() where TUser : SqliteIdentityUser, new() Returns TUser A new user instance. Type Parameters TUser The type of user to create."
},
"api/Hi.SqliteUtils.SqliteIdentityStorage.html": {
"href": "api/Hi.SqliteUtils.SqliteIdentityStorage.html",
"title": "Class SqliteIdentityStorage | HiAPI-C# 2025",
"summary": "Class SqliteIdentityStorage Namespace Hi.SqliteUtils Assembly HiNc.dll SQLite-based storage for ASP.NET Core Identity. public class SqliteIdentityStorage : IDisposable Inheritance object SqliteIdentityStorage 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SqliteIdentityStorage(string, ILogger) Initializes a new instance of the SqliteIdentityStorage class. public SqliteIdentityStorage(string databasePath = null, ILogger logger = null) Parameters databasePath string The path to the SQLite database file. logger ILogger Optional logger instance. Properties DatabasePath Gets the database file path. public string DatabasePath { get; } Property Value string Default Gets or sets the default SQLite identity storage instance. public static SqliteIdentityStorage Default { get; set; } Property Value SqliteIdentityStorage IsDefaultInit Gets a value indicating whether the default storage has been initialized. public static bool IsDefaultInit { get; } Property Value bool Methods AddToRoleAsync(string, string, CancellationToken) Adds a user to a role asynchronously. public Task AddToRoleAsync(string userId, string normalizedRoleName, CancellationToken cancellationToken) Parameters userId string The user ID. normalizedRoleName string The normalized role name. cancellationToken CancellationToken The cancellation token. Returns Task ClearAllData() Clears all identity data (users, roles, and user-role associations). public void ClearAllData() CreateRoleAsync<TRole>(TRole, CancellationToken) Creates a new role asynchronously. public Task<IdentityResult> CreateRoleAsync<TRole>(TRole role, CancellationToken cancellationToken) where TRole : SqliteIdentityRole Parameters role TRole The role to create. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TRole The type of role to create. CreateUserAsync<TUser>(TUser, CancellationToken) Creates a new user asynchronously. public Task<IdentityResult> CreateUserAsync<TUser>(TUser user, CancellationToken cancellationToken) where TUser : SqliteIdentityUser Parameters user TUser The user to create. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TUser The type of user to create. DeleteRoleAsync<TRole>(TRole, CancellationToken) Deletes a role asynchronously. public Task<IdentityResult> DeleteRoleAsync<TRole>(TRole role, CancellationToken cancellationToken) where TRole : SqliteIdentityRole Parameters role TRole The role to delete. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TRole The type of role to delete. DeleteUserAsync<TUser>(TUser, CancellationToken) Deletes a user asynchronously. public Task<IdentityResult> DeleteUserAsync<TUser>(TUser user, CancellationToken cancellationToken) where TUser : SqliteIdentityUser Parameters user TUser The user to delete. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TUser The type of user to delete. Dispose() Releases all resources used by the SqliteIdentityStorage. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the SqliteIdentityStorage 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. FindRoleByIdAsync<TRole>(string, CancellationToken) Finds a role by its ID asynchronously. public Task<TRole> FindRoleByIdAsync<TRole>(string roleId, CancellationToken cancellationToken) where TRole : SqliteIdentityRole, new() Parameters roleId string The role ID. cancellationToken CancellationToken The cancellation token. Returns Task<TRole> The role if found, otherwise null. Type Parameters TRole The type of role to find. FindRoleByNameAsync<TRole>(string, CancellationToken) Finds a role by its normalized name asynchronously. public Task<TRole> FindRoleByNameAsync<TRole>(string normalizedName, CancellationToken cancellationToken) where TRole : SqliteIdentityRole, new() Parameters normalizedName string The normalized role name. cancellationToken CancellationToken The cancellation token. Returns Task<TRole> The role if found, otherwise null. Type Parameters TRole The type of role to find. FindUserByEmailAsync<TUser>(string, CancellationToken) Finds a user by their normalized email asynchronously. public Task<TUser> FindUserByEmailAsync<TUser>(string normalizedEmail, CancellationToken cancellationToken) where TUser : SqliteIdentityUser, new() Parameters normalizedEmail string The normalized email address. cancellationToken CancellationToken The cancellation token. Returns Task<TUser> The user if found, otherwise null. Type Parameters TUser The type of user to find. FindUserByIdAsync<TUser>(string, CancellationToken) Finds a user by their ID asynchronously. public Task<TUser> FindUserByIdAsync<TUser>(string userId, CancellationToken cancellationToken) where TUser : SqliteIdentityUser, new() Parameters userId string The user ID. cancellationToken CancellationToken The cancellation token. Returns Task<TUser> The user if found, otherwise null. Type Parameters TUser The type of user to find. FindUserByNameAsync<TUser>(string, CancellationToken) Finds a user by their normalized user name asynchronously. public Task<TUser> FindUserByNameAsync<TUser>(string normalizedUserName, CancellationToken cancellationToken) where TUser : SqliteIdentityUser, new() Parameters normalizedUserName string The normalized user name. cancellationToken CancellationToken The cancellation token. Returns Task<TUser> The user if found, otherwise null. Type Parameters TUser The type of user to find. GetRolesAsync(string, CancellationToken) Gets the roles for a user asynchronously. public Task<IList<string>> GetRolesAsync(string userId, CancellationToken cancellationToken) Parameters userId string The user ID. cancellationToken CancellationToken The cancellation token. Returns Task<IList<string>> A list of role names. GetRoles<TRole>() Gets all roles as a queryable collection. public IQueryable<TRole> GetRoles<TRole>() where TRole : SqliteIdentityRole, new() Returns IQueryable<TRole> A queryable collection of roles. Type Parameters TRole The type of roles to retrieve. GetUsersInRoleAsync<TUser>(string, CancellationToken) Gets all users in a role asynchronously. public Task<IList<TUser>> GetUsersInRoleAsync<TUser>(string normalizedRoleName, CancellationToken cancellationToken) where TUser : SqliteIdentityUser, new() Parameters normalizedRoleName string The normalized role name. cancellationToken CancellationToken The cancellation token. Returns Task<IList<TUser>> A list of users in the role. Type Parameters TUser The type of users to retrieve. GetUsers<TUser>() Gets all users as a queryable collection. public IQueryable<TUser> GetUsers<TUser>() where TUser : SqliteIdentityUser, new() Returns IQueryable<TUser> A queryable collection of users. Type Parameters TUser The type of users to retrieve. IsInRoleAsync(string, string, CancellationToken) Checks if a user is in a role asynchronously. public Task<bool> IsInRoleAsync(string userId, string normalizedRoleName, CancellationToken cancellationToken) Parameters userId string The user ID. normalizedRoleName string The normalized role name. cancellationToken CancellationToken The cancellation token. Returns Task<bool> True if the user is in the role, otherwise false. RemoveFromRoleAsync(string, string, CancellationToken) Removes a user from a role asynchronously. public Task RemoveFromRoleAsync(string userId, string normalizedRoleName, CancellationToken cancellationToken) Parameters userId string The user ID. normalizedRoleName string The normalized role name. cancellationToken CancellationToken The cancellation token. Returns Task UpdateRoleAsync<TRole>(TRole, CancellationToken) Updates an existing role asynchronously. public Task<IdentityResult> UpdateRoleAsync<TRole>(TRole role, CancellationToken cancellationToken) where TRole : SqliteIdentityRole Parameters role TRole The role to update. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TRole The type of role to update. UpdateUserAsync<TUser>(TUser, CancellationToken) Updates an existing user asynchronously. public Task<IdentityResult> UpdateUserAsync<TUser>(TUser user, CancellationToken cancellationToken) where TUser : SqliteIdentityUser Parameters user TUser The user to update. cancellationToken CancellationToken The cancellation token. Returns Task<IdentityResult> The result of the operation. Type Parameters TUser The type of user to update."
},
"api/Hi.SqliteUtils.SqliteIdentityUser.html": {
"href": "api/Hi.SqliteUtils.SqliteIdentityUser.html",
"title": "Class SqliteIdentityUser | HiAPI-C# 2025",
"summary": "Class SqliteIdentityUser Namespace Hi.SqliteUtils Assembly HiNc.dll Base class for SQLite-based identity users. public class SqliteIdentityUser Inheritance object SqliteIdentityUser Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AccessFailedCount Gets or sets the access failed count. public virtual int AccessFailedCount { get; set; } Property Value int ConcurrencyStamp Gets or sets the concurrency stamp. public virtual string ConcurrencyStamp { get; set; } Property Value string Email Gets or sets the email address. public virtual string Email { get; set; } Property Value string EmailConfirmed Gets or sets whether the email is confirmed. public virtual bool EmailConfirmed { get; set; } Property Value bool Id Gets or sets the user ID. public virtual string Id { get; set; } Property Value string InitialPassword Gets or sets the initial password. public virtual string InitialPassword { get; set; } Property Value string LockoutEnabled Gets or sets whether lockout is enabled. public virtual bool LockoutEnabled { get; set; } Property Value bool LockoutEnd Gets or sets the lockout end date/time. public virtual DateTimeOffset? LockoutEnd { get; set; } Property Value DateTimeOffset? NormalizedEmail Gets or sets the normalized email address. public virtual string NormalizedEmail { get; set; } Property Value string NormalizedUserName Gets or sets the normalized user name. public virtual string NormalizedUserName { get; set; } Property Value string PasswordHash Gets or sets the password hash. public virtual string PasswordHash { get; set; } Property Value string PhoneNumber Gets or sets the phone number. public virtual string PhoneNumber { get; set; } Property Value string PhoneNumberConfirmed Gets or sets whether the phone number is confirmed. public virtual bool PhoneNumberConfirmed { get; set; } Property Value bool SecurityStamp Gets or sets the security stamp. public virtual string SecurityStamp { get; set; } Property Value string TwoFactorEnabled Gets or sets whether two-factor authentication is enabled. public virtual bool TwoFactorEnabled { get; set; } Property Value bool UserName Gets or sets the user name. public virtual string UserName { get; set; } Property Value string Methods DeserializeCustomData(string) Deserializes custom data from JSON string. Override in derived class. public virtual void DeserializeCustomData(string json) Parameters json string SerializeCustomData() Serializes custom data to JSON string. Override in derived class. public virtual string SerializeCustomData() Returns string"
},
"api/Hi.SqliteUtils.SqliteRoleStore-1.html": {
"href": "api/Hi.SqliteUtils.SqliteRoleStore-1.html",
"title": "Class SqliteRoleStore<TRole> | HiAPI-C# 2025",
"summary": "Class SqliteRoleStore<TRole> Namespace Hi.SqliteUtils Assembly HiNc.dll SQLite-based role store for ASP.NET Core Identity. public class SqliteRoleStore<TRole> : IRoleStore<TRole>, IQueryableRoleStore<TRole>, IRoleStore<TRole>, IDisposable where TRole : SqliteIdentityRole, new() Type Parameters TRole The type of role. Inheritance object SqliteRoleStore<TRole> Implements IRoleStore<TRole> IQueryableRoleStore<TRole> IRoleStore<TRole> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SqliteRoleStore(SqliteIdentityStorage) Initializes a new instance of the SqliteRoleStore<TRole> class. public SqliteRoleStore(SqliteIdentityStorage storage) Parameters storage SqliteIdentityStorage The SQLite identity storage. Properties Roles Gets all roles as a queryable collection. public IQueryable<TRole> Roles { get; } Property Value IQueryable<TRole> Methods CreateAsync(TRole, CancellationToken) Creates a new role in a store as an asynchronous operation. public Task<IdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role to create in the store. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> A Task<TResult> that represents the IdentityResult of the asynchronous query. DeleteAsync(TRole, CancellationToken) Deletes a role from the store as an asynchronous operation. public Task<IdentityResult> DeleteAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role to delete from the store. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> A Task<TResult> that represents the IdentityResult of the asynchronous query. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() FindByIdAsync(string, CancellationToken) Finds the role who has the specified ID as an asynchronous operation. public Task<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken) Parameters roleId string The role ID to look for. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<TRole> A Task<TResult> that result of the look up. FindByNameAsync(string, CancellationToken) Finds the role who has the specified normalized name as an asynchronous operation. public Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken) Parameters normalizedRoleName string The normalized role name to look for. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<TRole> A Task<TResult> that result of the look up. GetNormalizedRoleNameAsync(TRole, CancellationToken) Get a role's normalized name as an asynchronous operation. public Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role whose normalized name should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> A Task<TResult> that contains the name of the role. GetRoleIdAsync(TRole, CancellationToken) Gets the ID for a role from the store as an asynchronous operation. public Task<string> GetRoleIdAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role whose ID should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> A Task<TResult> that contains the ID of the role. GetRoleNameAsync(TRole, CancellationToken) Gets the name of a role from the store as an asynchronous operation. public Task<string> GetRoleNameAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role whose name should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> A Task<TResult> that contains the name of the role. SetNormalizedRoleNameAsync(TRole, string, CancellationToken) Set a role's normalized name as an asynchronous operation. public Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken) Parameters role TRole The role whose normalized name should be set. normalizedName string The normalized name to set cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetRoleNameAsync(TRole, string, CancellationToken) Sets the name of a role in the store as an asynchronous operation. public Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken) Parameters role TRole The role whose name should be set. roleName string The name of the role. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. UpdateAsync(TRole, CancellationToken) Updates a role in a store as an asynchronous operation. public Task<IdentityResult> UpdateAsync(TRole role, CancellationToken cancellationToken) Parameters role TRole The role to update in the store. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> A Task<TResult> that represents the IdentityResult of the asynchronous query."
},
"api/Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html": {
"href": "api/Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html",
"title": "Class SqliteStepStorage.MillingStepLuggageRow | HiAPI-C# 2025",
"summary": "Class SqliteStepStorage.MillingStepLuggageRow Namespace Hi.SqliteUtils Assembly HiNc.dll Represents a milling step luggage row in the database. public class SqliteStepStorage.MillingStepLuggageRow Inheritance object SqliteStepStorage.MillingStepLuggageRow Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties LayerEngagementData Gets or sets the layer engagement data as a byte array. public byte[] LayerEngagementData { get; set; } Property Value byte[] MillingForceData Gets or sets the milling force data as a byte array. public byte[] MillingForceData { get; set; } Property Value byte[] StepIndex Gets or sets the step index. public int StepIndex { get; set; } Property Value int SubstractionData Gets or sets the subtraction data as a byte array. public byte[] SubstractionData { get; set; } Property Value byte[] Methods ToMillingStepLuggage() Converts this row to a milling step luggage object. public MillingStepLuggage ToMillingStepLuggage() Returns MillingStepLuggage A new milling step luggage instance."
},
"api/Hi.SqliteUtils.SqliteStepStorage.html": {
"href": "api/Hi.SqliteUtils.SqliteStepStorage.html",
"title": "Class SqliteStepStorage | HiAPI-C# 2025",
"summary": "Class SqliteStepStorage Namespace Hi.SqliteUtils Assembly HiNc.dll SQLite-based storage for milling step data. MillingStepLuggage data. public class SqliteStepStorage : IDisposable Inheritance object SqliteStepStorage 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SqliteStepStorage(string, ILogger) Initializes a new instance of the SqliteStepStorage class. public SqliteStepStorage(string databasePath = null, ILogger logger = null) Parameters databasePath string 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. Properties DatabasePath Gets the database file path. public string DatabasePath { get; } Property Value string Default Gets or sets the default SQLite step storage instance. public static SqliteStepStorage Default { get; set; } Property Value SqliteStepStorage IsDefaultInit Gets a value indicating whether the default storage has been initialized. public static bool IsDefaultInit { get; } Property Value bool Methods ClearMillingStepLuggages() Deletes all milling step luggages from the database. public void ClearMillingStepLuggages() CountMillingStepLuggages() Gets the count of milling step luggages in the database. public int CountMillingStepLuggages() Returns int The count of records. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the resources used by the storage. protected virtual void Dispose(bool disposing) Parameters disposing bool Whether this method is being called from Dispose. FindMillingStepLuggages(int, int) Finds milling step luggages within the specified index range. public List<MillingStepLuggage> FindMillingStepLuggages(int beginIndex, int endIndex) Parameters beginIndex int The beginning index (inclusive). endIndex int The ending index (exclusive). Returns List<MillingStepLuggage> A list of milling step luggages. InsertMillingStepLuggages(IEnumerable<MillingStepLuggage>) Inserts multiple milling step luggages into the database. public void InsertMillingStepLuggages(IEnumerable<MillingStepLuggage> items) Parameters items IEnumerable<MillingStepLuggage> The items to insert. Reset() Resets the storage by deleting and recreating the database file. public void Reset() 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 (ResetStateAndClStrip → WaitAll) 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)."
},
"api/Hi.SqliteUtils.SqliteUserStore-1.html": {
"href": "api/Hi.SqliteUtils.SqliteUserStore-1.html",
"title": "Class SqliteUserStore<TUser> | HiAPI-C# 2025",
"summary": "Class SqliteUserStore<TUser> Namespace Hi.SqliteUtils Assembly HiNc.dll SQLite-based user store for ASP.NET Core Identity. public class SqliteUserStore<TUser> : IUserStore<TUser>, IUserPasswordStore<TUser>, IUserRoleStore<TUser>, IUserEmailStore<TUser>, IUserPhoneNumberStore<TUser>, IUserTwoFactorStore<TUser>, IUserLockoutStore<TUser>, IUserSecurityStampStore<TUser>, IQueryableUserStore<TUser>, IUserStore<TUser>, IDisposable where TUser : SqliteIdentityUser, new() Type Parameters TUser The type of user. Inheritance object SqliteUserStore<TUser> Implements IUserStore<TUser> IUserPasswordStore<TUser> IUserRoleStore<TUser> IUserEmailStore<TUser> IUserPhoneNumberStore<TUser> IUserTwoFactorStore<TUser> IUserLockoutStore<TUser> IUserSecurityStampStore<TUser> IQueryableUserStore<TUser> IUserStore<TUser> 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>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SqliteUserStore(SqliteIdentityStorage) Initializes a new instance of the SqliteUserStore<TUser> class. public SqliteUserStore(SqliteIdentityStorage storage) Parameters storage SqliteIdentityStorage The SQLite identity storage. Properties Users Gets all users as a queryable collection. public IQueryable<TUser> Users { get; } Property Value IQueryable<TUser> Methods AddToRoleAsync(TUser, string, CancellationToken) Add the specified user to the named role. public Task AddToRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) Parameters user TUser The user to add to the named role. roleName string The name of the role to add the user to. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. CreateAsync(TUser, CancellationToken) Creates the specified user in the user store. public Task<IdentityResult> CreateAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user to create. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> The Task that represents the asynchronous operation, containing the IdentityResult of the creation operation. DeleteAsync(TUser, CancellationToken) Deletes the specified user from the user store. public Task<IdentityResult> DeleteAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user to delete. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> The Task that represents the asynchronous operation, containing the IdentityResult of the delete operation. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() FindByEmailAsync(string, CancellationToken) Gets the user, if any, associated with the specified, normalized email address. public Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken) Parameters normalizedEmail string The normalized email address to return the user for. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<TUser> The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address. FindByIdAsync(string, CancellationToken) Finds and returns a user, if any, who has the specified userId. public Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken) Parameters userId string The user ID to search for. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<TUser> The Task that represents the asynchronous operation, containing the user matching the specified userId if it exists. FindByNameAsync(string, CancellationToken) Finds and returns a user, if any, who has the specified normalized user name. public Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken) Parameters normalizedUserName string The normalized user name to search for. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<TUser> The Task that represents the asynchronous operation, containing the user matching the specified normalizedUserName if it exists. GetAccessFailedCountAsync(TUser, CancellationToken) Retrieves the current failed access count for the specified user. public Task<int> GetAccessFailedCountAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose failed access count should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<int> The Task that represents the asynchronous operation, containing the failed access count. GetEmailAsync(TUser, CancellationToken) Gets the email address for the specified user. public Task<string> GetEmailAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose email should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The task object containing the results of the asynchronous operation, the email address for the specified user. GetEmailConfirmedAsync(TUser, CancellationToken) Gets a flag indicating whether the email address for the specified user has been verified, true if the email address is verified otherwise false. public Task<bool> GetEmailConfirmedAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose email confirmation status should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The task object containing the results of the asynchronous operation, a flag indicating whether the email address for the specified user has been confirmed or not. GetLockoutEnabledAsync(TUser, CancellationToken) Retrieves a flag indicating whether user lockout can enabled for the specified user. public Task<bool> GetLockoutEnabledAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose ability to be locked out should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The Task that represents the asynchronous operation, true if a user can be locked out, otherwise false. GetLockoutEndDateAsync(TUser, CancellationToken) Gets the last DateTimeOffset a user's last lockout expired, if any. Any time in the past should be indicates a user is not locked out. public Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose lockout date should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<DateTimeOffset?> A Task<TResult> that represents the result of the asynchronous query, a DateTimeOffset containing the last time a user's lockout expired, if any. GetNormalizedEmailAsync(TUser, CancellationToken) Returns the normalized email for the specified user. public Task<string> GetNormalizedEmailAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose email address to retrieve. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The task object containing the results of the asynchronous lookup operation, the normalized email address if any associated with the specified user. GetNormalizedUserNameAsync(TUser, CancellationToken) Gets the normalized user name for the specified user. public Task<string> GetNormalizedUserNameAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose normalized name should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, containing the normalized user name for the specified user. GetPasswordHashAsync(TUser, CancellationToken) Gets the password hash for the specified user. public Task<string> GetPasswordHashAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose password hash to retrieve. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, returning the password hash for the specified user. GetPhoneNumberAsync(TUser, CancellationToken) Gets the telephone number, if any, for the specified user. public Task<string> GetPhoneNumberAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose telephone number should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, containing the user's telephone number, if any. GetPhoneNumberConfirmedAsync(TUser, CancellationToken) Gets a flag indicating whether the specified user's telephone number has been confirmed. public Task<bool> GetPhoneNumberConfirmedAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user to return a flag for, indicating whether their telephone number is confirmed. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The Task that represents the asynchronous operation, returning true if the specified user has a confirmed telephone number otherwise false. GetRolesAsync(TUser, CancellationToken) Gets a list of role names the specified user belongs to. public Task<IList<string>> GetRolesAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose role names to retrieve. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IList<string>> The Task that represents the asynchronous operation, containing a list of role names. GetSecurityStampAsync(TUser, CancellationToken) Get the security stamp for the specified user. public Task<string> GetSecurityStampAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose security stamp should be set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, containing the security stamp for the specified user. GetTwoFactorEnabledAsync(TUser, CancellationToken) Returns a flag indicating whether the specified user has two factor authentication enabled or not, as an asynchronous operation. public Task<bool> GetTwoFactorEnabledAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose two factor authentication enabled status should be set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The Task that represents the asynchronous operation, containing a flag indicating whether the specified user has two factor authentication enabled or not. GetUserIdAsync(TUser, CancellationToken) Gets the user identifier for the specified user. public Task<string> GetUserIdAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose identifier should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, containing the identifier for the specified user. GetUserNameAsync(TUser, CancellationToken) Gets the user name for the specified user. public Task<string> GetUserNameAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose name should be retrieved. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<string> The Task that represents the asynchronous operation, containing the name for the specified user. GetUsersInRoleAsync(string, CancellationToken) Returns a list of Users who are members of the named role. public Task<IList<TUser>> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken) Parameters roleName string The name of the role whose membership should be returned. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IList<TUser>> The Task that represents the asynchronous operation, containing a list of users who are in the named role. HasPasswordAsync(TUser, CancellationToken) Gets a flag indicating whether the specified user has a password. public Task<bool> HasPasswordAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user to return a flag for, indicating whether they have a password or not. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The Task that represents the asynchronous operation, returning true if the specified user has a password otherwise false. IncrementAccessFailedCountAsync(TUser, CancellationToken) Records that a failed access has occurred, incrementing the failed access count. public Task<int> IncrementAccessFailedCountAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose cancellation count should be incremented. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<int> The Task that represents the asynchronous operation, containing the incremented failed access count. IsInRoleAsync(TUser, string, CancellationToken) Returns a flag indicating whether the specified user is a member of the given named role. public Task<bool> IsInRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) Parameters user TUser The user whose role membership should be checked. roleName string The name of the role to be checked. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<bool> The Task that represents the asynchronous operation, containing a flag indicating whether the specified user is a member of the named role. RemoveFromRoleAsync(TUser, string, CancellationToken) Remove the specified user from the named role. public Task RemoveFromRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) Parameters user TUser The user to remove the named role from. roleName string The name of the role to remove. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. ResetAccessFailedCountAsync(TUser, CancellationToken) Resets a user's failed access count. public Task ResetAccessFailedCountAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user whose failed access count should be reset. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. Remarks This is typically called after the account is successfully accessed. SetEmailAsync(TUser, string, CancellationToken) Sets the email address for a user. public Task SetEmailAsync(TUser user, string email, CancellationToken cancellationToken) Parameters user TUser The user whose email should be set. email string The email to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The task object representing the asynchronous operation. SetEmailConfirmedAsync(TUser, bool, CancellationToken) Sets the flag indicating whether the specified user's email address has been confirmed or not. public Task SetEmailConfirmedAsync(TUser user, bool confirmed, CancellationToken cancellationToken) Parameters user TUser The user whose email confirmation status should be set. confirmed bool A flag indicating if the email address has been confirmed, true if the address is confirmed otherwise false. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The task object representing the asynchronous operation. SetLockoutEnabledAsync(TUser, bool, CancellationToken) Set the flag indicating if the specified user can be locked out. public Task SetLockoutEnabledAsync(TUser user, bool enabled, CancellationToken cancellationToken) Parameters user TUser The user whose ability to be locked out should be set. enabled bool A flag indicating if lock out can be enabled for the specified user. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetLockoutEndDateAsync(TUser, DateTimeOffset?, CancellationToken) Locks out a user until the specified end date has passed. Setting a end date in the past immediately unlocks a user. public Task SetLockoutEndDateAsync(TUser user, DateTimeOffset? lockoutEnd, CancellationToken cancellationToken) Parameters user TUser The user whose lockout date should be set. lockoutEnd DateTimeOffset? The DateTimeOffset after which the user's lockout should end. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetNormalizedEmailAsync(TUser, string, CancellationToken) Sets the normalized email for the specified user. public Task SetNormalizedEmailAsync(TUser user, string normalizedEmail, CancellationToken cancellationToken) Parameters user TUser The user whose email address to set. normalizedEmail string The normalized email to set for the specified user. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The task object representing the asynchronous operation. SetNormalizedUserNameAsync(TUser, string, CancellationToken) Sets the given normalized name for the specified user. public Task SetNormalizedUserNameAsync(TUser user, string normalizedName, CancellationToken cancellationToken) Parameters user TUser The user whose name should be set. normalizedName string The normalized name to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetPasswordHashAsync(TUser, string, CancellationToken) Sets the password hash for the specified user. public Task SetPasswordHashAsync(TUser user, string passwordHash, CancellationToken cancellationToken) Parameters user TUser The user whose password hash to set. passwordHash string The password hash to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetPhoneNumberAsync(TUser, string, CancellationToken) Sets the telephone number for the specified user. public Task SetPhoneNumberAsync(TUser user, string phoneNumber, CancellationToken cancellationToken) Parameters user TUser The user whose telephone number should be set. phoneNumber string The telephone number to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetPhoneNumberConfirmedAsync(TUser, bool, CancellationToken) Sets a flag indicating if the specified user's phone number has been confirmed. public Task SetPhoneNumberConfirmedAsync(TUser user, bool confirmed, CancellationToken cancellationToken) Parameters user TUser The user whose telephone number confirmation status should be set. confirmed bool A flag indicating whether the user's telephone number has been confirmed. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetSecurityStampAsync(TUser, string, CancellationToken) Sets the provided security stamp for the specified user. public Task SetSecurityStampAsync(TUser user, string stamp, CancellationToken cancellationToken) Parameters user TUser The user whose security stamp should be set. stamp string The security stamp to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetTwoFactorEnabledAsync(TUser, bool, CancellationToken) Sets a flag indicating whether the specified user has two factor authentication enabled or not, as an asynchronous operation. public Task SetTwoFactorEnabledAsync(TUser user, bool enabled, CancellationToken cancellationToken) Parameters user TUser The user whose two factor authentication enabled status should be set. enabled bool A flag indicating whether the specified user has two factor authentication enabled. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. SetUserNameAsync(TUser, string, CancellationToken) Sets the given userName for the specified user. public Task SetUserNameAsync(TUser user, string userName, CancellationToken cancellationToken) Parameters user TUser The user whose name should be set. userName string The user name to set. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task The Task that represents the asynchronous operation. UpdateAsync(TUser, CancellationToken) Updates the specified user in the user store. public Task<IdentityResult> UpdateAsync(TUser user, CancellationToken cancellationToken) Parameters user TUser The user to update. cancellationToken CancellationToken The CancellationToken used to propagate notifications that the operation should be canceled. Returns Task<IdentityResult> The Task that represents the asynchronous operation, containing the IdentityResult of the update operation."
},
"api/Hi.SqliteUtils.html": {
"href": "api/Hi.SqliteUtils.html",
"title": "Namespace Hi.SqliteUtils | HiAPI-C# 2025",
"summary": "Namespace Hi.SqliteUtils Classes SqliteIdentityRole Base class for SQLite-based identity roles. SqliteIdentityStorage SQLite-based storage for ASP.NET Core Identity. SqliteIdentityStorage.RoleRow Represents a role row in the database. SqliteIdentityStorage.UserRow Represents a user row in the database. SqliteIdentityUser Base class for SQLite-based identity users. SqliteRoleStore<TRole> SQLite-based role store for ASP.NET Core Identity. SqliteStepStorage SQLite-based storage for milling step data. MillingStepLuggage data. SqliteStepStorage.MillingStepLuggageRow Represents a milling step luggage row in the database. SqliteUserStore<TUser> SQLite-based user store for ASP.NET Core Identity."
},
"api/Hi.Test.TestCollision.html": {
"href": "api/Hi.Test.TestCollision.html",
"title": "Class TestCollision | HiAPI-C# 2025",
"summary": "Class TestCollision Namespace Hi.Test Assembly HiCbtr.dll For internal. public class TestCollision Inheritance object TestCollision Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Main() For internal. [STAThread] public static void Main()"
},
"api/Hi.Test.html": {
"href": "api/Hi.Test.html",
"title": "Namespace Hi.Test | HiAPI-C# 2025",
"summary": "Namespace Hi.Test Classes TestCollision For internal."
},
"api/Hi.UiExtensions.ChartBoundary.html": {
"href": "api/Hi.UiExtensions.ChartBoundary.html",
"title": "Class ChartBoundary | HiAPI-C# 2025",
"summary": "Class ChartBoundary Namespace Hi.UiExtensions Assembly HiGeom.dll Boundary of Chart public class ChartBoundary Inheritance object ChartBoundary Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Fixed Gets or sets the fixed value for the chart boundary. Only applies when MainChartBoundaryEnum includes Fixed. public double Fixed { get; set; } Property Value double LowerLimit Gets or sets the lower limit of the chart boundary. Only applies when MainChartBoundaryEnum includes LowerLimit. public double LowerLimit { get; set; } Property Value double MainChartBoundaryEnum Gets or sets the boundary enumeration that controls the chart's behavior. public ChartBoundaryEnum MainChartBoundaryEnum { get; set; } Property Value ChartBoundaryEnum UpperLimit Gets or sets the upper limit of the chart boundary. Only applies when MainChartBoundaryEnum includes UpperLimit. public double UpperLimit { get; set; } Property Value double 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.UiExtensions.ChartBoundaryEnum.html": {
"href": "api/Hi.UiExtensions.ChartBoundaryEnum.html",
"title": "Enum ChartBoundaryEnum | HiAPI-C# 2025",
"summary": "Enum ChartBoundaryEnum Namespace Hi.UiExtensions Assembly HiGeom.dll Enum control ChartBoundary. [Flags] public enum ChartBoundaryEnum Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Fixed = 1 Lock the chart boundary. Lock is exclusive from LowerLimit and UpperLimit. LowerLimit = 2 Lower limit of the chart boundary. None = 0 No limit of the chart boundary. UpperLimit = 4 Uppler limit of the chart boundary."
},
"api/Hi.UiExtensions.NativeVisibility.html": {
"href": "api/Hi.UiExtensions.NativeVisibility.html",
"title": "Enum NativeVisibility | HiAPI-C# 2025",
"summary": "Enum NativeVisibility Namespace Hi.UiExtensions Assembly HiGeom.dll Enumeration representing visibility states for UI elements. public enum NativeVisibility : byte Extension Methods InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) MaskUtil.GetMaskedValue<T>(T, T, bool) MaskUtil.SetMask<T>(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Collapsed = 2 Element is hidden and does not take up layout space. Hidden = 1 Element is hidden but still takes up layout space. Visible = 0 Element is visible."
},
"api/Hi.UiExtensions.UiUtil.InvokeFunc.html": {
"href": "api/Hi.UiExtensions.UiUtil.InvokeFunc.html",
"title": "Delegate UiUtil.InvokeFunc | HiAPI-C# 2025",
"summary": "Delegate UiUtil.InvokeFunc Namespace Hi.UiExtensions Assembly HiGeom.dll Delegate for invoking methods asynchronously or synchronously. public delegate object UiUtil.InvokeFunc(Delegate method, params object[] args) Parameters method Delegate The delegate method to invoke args object[] Arguments to pass to the method Returns object The result of the invocation Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)"
},
"api/Hi.UiExtensions.UiUtil.html": {
"href": "api/Hi.UiExtensions.UiUtil.html",
"title": "Class UiUtil | HiAPI-C# 2025",
"summary": "Class UiUtil Namespace Hi.UiExtensions Assembly HiGeom.dll The member should be initial for application begin. public static class UiUtil Inheritance object UiUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties BeginInvoke Gets or sets the function for beginning asynchronous invocation of methods. public static UiUtil.InvokeFunc BeginInvoke { get; set; } Property Value UiUtil.InvokeFunc Invoke Gets or sets the function for synchronous invocation of methods. public static UiUtil.InvokeFunc Invoke { get; set; } Property Value UiUtil.InvokeFunc"
},
"api/Hi.UiExtensions.html": {
"href": "api/Hi.UiExtensions.html",
"title": "Namespace Hi.UiExtensions | HiAPI-C# 2025",
"summary": "Namespace Hi.UiExtensions Classes ChartBoundary Boundary of Chart UiUtil The member should be initial for application begin. Enums ChartBoundaryEnum Enum control ChartBoundary. NativeVisibility Enumeration representing visibility states for UI elements. Delegates UiUtil.InvokeFunc Delegate for invoking methods asynchronously or synchronously."
},
"api/Hi.Vibrations.AngularVelocityUtil.html": {
"href": "api/Hi.Vibrations.AngularVelocityUtil.html",
"title": "Class AngularVelocityUtil | HiAPI-C# 2025",
"summary": "Class AngularVelocityUtil Namespace Hi.Vibrations Assembly HiMech.dll Provides utility methods for working with angular velocity. public static class AngularVelocityUtil Inheritance object AngularVelocityUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFrequency(IAngularVelocityOwner) Gets the frequency in Hz from angular velocity. public static double GetFrequency(this IAngularVelocityOwner src) Parameters src IAngularVelocityOwner The angular velocity owner. Returns double The frequency in Hz. SetFrequency(IAngularVelocityOwner, double) Sets the angular velocity based on the specified frequency. public static void SetFrequency(this IAngularVelocityOwner src, double freq) Parameters src IAngularVelocityOwner The angular velocity owner. freq double The frequency in Hz."
},
"api/Hi.Vibrations.ForceAccelAmpPhase.html": {
"href": "api/Hi.Vibrations.ForceAccelAmpPhase.html",
"title": "Class ForceAccelAmpPhase | HiAPI-C# 2025",
"summary": "Class ForceAccelAmpPhase Namespace Hi.Vibrations Assembly HiMech.dll Represents amplitude and phase information for force and acceleration in vibration analysis. public class ForceAccelAmpPhase Inheritance object ForceAccelAmpPhase Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AccelAmpPhase Gets or sets the amplitude and phase information for acceleration components. public AmpPhase[] AccelAmpPhase { get; set; } Property Value AmpPhase[] ForceAmpPhase Gets or sets the amplitude and phase information for force components. public AmpPhase[] ForceAmpPhase { get; set; } Property Value AmpPhase[]"
},
"api/Hi.Vibrations.ForceAccelFourierSeries.html": {
"href": "api/Hi.Vibrations.ForceAccelFourierSeries.html",
"title": "Class ForceAccelFourierSeries | HiAPI-C# 2025",
"summary": "Class ForceAccelFourierSeries Namespace Hi.Vibrations Assembly HiMech.dll Represents Fourier series data for force and acceleration measurements in three dimensions. public class ForceAccelFourierSeries Inheritance object ForceAccelFourierSeries Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) VibrationUtil.GetAmpPhaseTransformation(ForceAccelFourierSeries) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ForceAccelFourierSeries(double, List<Vec2d>, List<Vec2d>, List<Vec2d>, List<Vec2d>, List<Vec2d>, List<Vec2d>) Initializes a new instance of the ForceAccelFourierSeries class with the specified Fourier coefficients. public ForceAccelFourierSeries(double baseAngularVelocity, List<Vec2d> forceXFourierSeries, List<Vec2d> forceYFourierSeries, List<Vec2d> forceZFourierSeries, List<Vec2d> accelXFourierSeries, List<Vec2d> accelYFourierSeries, List<Vec2d> accelZFourierSeries) Parameters baseAngularVelocity double The base angular velocity for the Fourier series forceXFourierSeries List<Vec2d> Fourier coefficients for force in X direction forceYFourierSeries List<Vec2d> Fourier coefficients for force in Y direction forceZFourierSeries List<Vec2d> Fourier coefficients for force in Z direction accelXFourierSeries List<Vec2d> Fourier coefficients for acceleration in X direction accelYFourierSeries List<Vec2d> Fourier coefficients for acceleration in Y direction accelZFourierSeries List<Vec2d> Fourier coefficients for acceleration in Z direction Properties AccelXFourierSeries Gets or sets the Fourier series coefficients for acceleration in X direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> AccelXFourierSeries { get; set; } Property Value List<Vec2d> AccelYFourierSeries Gets or sets the Fourier series coefficients for acceleration in Y direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> AccelYFourierSeries { get; set; } Property Value List<Vec2d> AccelZFourierSeries Gets or sets the Fourier series coefficients for acceleration in Z direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> AccelZFourierSeries { get; set; } Property Value List<Vec2d> BaseAngularVelocity Gets or sets the base angular velocity for the Fourier series. public double BaseAngularVelocity { get; set; } Property Value double ForceXFourierSeries Gets or sets the Fourier series coefficients for force in X direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> ForceXFourierSeries { get; set; } Property Value List<Vec2d> ForceYFourierSeries Gets or sets the Fourier series coefficients for force in Y direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> ForceYFourierSeries { get; set; } Property Value List<Vec2d> ForceZFourierSeries Gets or sets the Fourier series coefficients for force in Z direction. Each Vec2d represents a complex coefficient (real, imaginary). public List<Vec2d> ForceZFourierSeries { get; set; } Property Value List<Vec2d>"
},
"api/Hi.Vibrations.ForceAccelShot.html": {
"href": "api/Hi.Vibrations.ForceAccelShot.html",
"title": "Class ForceAccelShot | HiAPI-C# 2025",
"summary": "Class ForceAccelShot Namespace Hi.Vibrations Assembly HiMech.dll Represents a data point containing force, acceleration, and moment measurements at a specific time. public class ForceAccelShot : IForceShot, IMomentShot, IAccelerationShot, ITimeShot, ITimecoded Inheritance object ForceAccelShot Implements IForceShot IMomentShot IAccelerationShot ITimeShot ITimecoded Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ForceAccelShot() Initializes a new instance of the ForceAccelShot class. public ForceAccelShot() ForceAccelShot(TimeSpan, Vec3d, Vec3d, Vec3d) Initializes a new instance of the ForceAccelShot class with the specified values. public ForceAccelShot(TimeSpan time, Vec3d force_N, Vec3d acceleration_g, Vec3d moment_Nm) Parameters time TimeSpan The time point of the measurement. force_N Vec3d The force vector in Newtons. acceleration_g Vec3d The acceleration vector in g-force units. moment_Nm Vec3d The moment vector in Newton-meters. 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². public 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². public 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. public 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²) AxTag Gets the column name for X-axis acceleration data in CSV files. public static string AxTag { get; } Property Value string AyTag Gets the column name for Y-axis acceleration data in CSV files. public static string AyTag { get; } Property Value string AzTag Gets the column name for Z-axis acceleration data in CSV files. public static string AzTag { get; } Property Value string Force_N Gets or sets the force vector applied to the workpiece, measured in Newtons (N). public 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) FxTags Gets the possible column names for X-axis force data in CSV files. public static string[] FxTags { get; } Property Value string[] FyTags Gets the possible column names for Y-axis force data in CSV files. public static string[] FyTags { get; } Property Value string[] FzTags Gets the possible column names for Z-axis force data in CSV files. public static string[] FzTags { get; } Property Value string[] Moment_Nm Gets or sets the moment (torque) vector, measured in Newton-meters (N⋅m). public 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 MxTags Gets the possible column names for X-axis moment data in CSV files. public static string[] MxTags { get; } Property Value string[] MyTags Gets the possible column names for Y-axis moment data in CSV files. public static string[] MyTags { get; } Property Value string[] MzTags Gets the possible column names for Z-axis moment data in CSV files. public static string[] MzTags { get; } Property Value string[] TimeTags Gets the possible column names for time data in CSV files. public static string[] TimeTags { get; } Property Value string[] Timecode Gets or sets the time value in seconds. public TimeSpan Timecode { get; set; } Property Value TimeSpan Methods GetAdd(ITimeShot) Adds another time shot to this one. public 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. public 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 ReadRows(string, Action<int>, CancellationToken?, Func<DateTime, TimeSpan>) Reads force and acceleration data from a CSV file. public static List<ForceAccelShot> ReadRows(string file, Action<int> lineReaded = null, CancellationToken? cancellationToken = null, Func<DateTime, TimeSpan> toTimecode = null) Parameters file string The path to the CSV file to read. lineReaded Action<int> Optional callback function to report progress. 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). Returns List<ForceAccelShot> A list of ForceAccelShot objects containing the data from the file. Exceptions InvalidDataException Thrown when the file format is invalid. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string) Returns a string representation of the ForceAccelShot instance with the specified format. public string ToString(string format) Parameters format string The format string to use for numeric values. Returns string A string containing the formatted values. Operators operator +(ForceAccelShot, ForceAccelShot) Adds two ForceAccelShot instances together. public static ForceAccelShot operator +(ForceAccelShot a, ForceAccelShot b) Parameters a ForceAccelShot The first ForceAccelShot instance. b ForceAccelShot The second ForceAccelShot instance. Returns ForceAccelShot A new ForceAccelShot instance containing the sum of the two inputs. operator *(ForceAccelShot, double) Multiplies a ForceAccelShot instance by a scalar value. public static ForceAccelShot operator *(ForceAccelShot a, double s) Parameters a ForceAccelShot The ForceAccelShot instance to multiply. s double The scalar value to multiply by. Returns ForceAccelShot A new ForceAccelShot instance containing the scaled values."
},
"api/Hi.Vibrations.ForceAccelUtil.html": {
"href": "api/Hi.Vibrations.ForceAccelUtil.html",
"title": "Class ForceAccelUtil | HiAPI-C# 2025",
"summary": "Class ForceAccelUtil Namespace Hi.Vibrations Assembly HiMech.dll Utility class for force and acceleration data processing. public static class ForceAccelUtil Inheritance object ForceAccelUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetForceAccelApSeries(List<ForceAccelShot>, TimeSpan, TimeSpan, int) Gets force and acceleration amplitude-phase series from shots. public static List<ForceAccelAmpPhase> GetForceAccelApSeries(this List<ForceAccelShot> shots, TimeSpan basePeriod, TimeSpan resolutionPeriod, int threadNum = 1) Parameters shots List<ForceAccelShot> The force-acceleration shot data. basePeriod TimeSpan The base period for the Fourier transform. resolutionPeriod TimeSpan The resolution period for the Fourier transform. threadNum int The number of threads to use for computation. Returns List<ForceAccelAmpPhase> A list of force and acceleration amplitude-phase data. GetForceAccelFourierSeries(List<ForceAccelShot>, TimeSpan, TimeSpan, int) Gets force and acceleration Fourier series from shots. public static ForceAccelFourierSeries GetForceAccelFourierSeries(this List<ForceAccelShot> shots, TimeSpan basePeriod, TimeSpan resolutionPeriod, int threadNum = 1) Parameters shots List<ForceAccelShot> The force-acceleration shot data. basePeriod TimeSpan The base period for the Fourier transform. resolutionPeriod TimeSpan The resolution period for the Fourier transform. threadNum int The number of threads to use for computation. Returns ForceAccelFourierSeries A force-acceleration Fourier series representation."
},
"api/Hi.Vibrations.IAngularVelocityOwner.html": {
"href": "api/Hi.Vibrations.IAngularVelocityOwner.html",
"title": "Interface IAngularVelocityOwner | HiAPI-C# 2025",
"summary": "Interface IAngularVelocityOwner Namespace Hi.Vibrations Assembly HiMech.dll Provides functionality for objects that have an angular velocity property. public interface IAngularVelocityOwner Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) AngularVelocityUtil.GetFrequency(IAngularVelocityOwner) AngularVelocityUtil.SetFrequency(IAngularVelocityOwner, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AngularVelocity Gets or sets the angular velocity in radians per second. double AngularVelocity { get; set; } Property Value double"
},
"api/Hi.Vibrations.VibrationUtil.html": {
"href": "api/Hi.Vibrations.VibrationUtil.html",
"title": "Class VibrationUtil | HiAPI-C# 2025",
"summary": "Class VibrationUtil Namespace Hi.Vibrations Assembly HiMech.dll Utility class for vibration analysis and processing. public static class VibrationUtil Inheritance object VibrationUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods BuildDampingSystem(List<ForceAccelFourierSeries>) Builds a damping system model based on force and acceleration data. public static void BuildDampingSystem(List<ForceAccelFourierSeries> src) Parameters src List<ForceAccelFourierSeries> List of force-acceleration Fourier series used to build the system. GetAmpPhaseTransformation(ForceAccelFourierSeries) Gets the amplitude-phase transformations across XYZ axes from a force-acceleration Fourier series. public static List<WAmpPhaseXyzTransformation> GetAmpPhaseTransformation(this ForceAccelFourierSeries src) Parameters src ForceAccelFourierSeries The source force-acceleration Fourier series. Returns List<WAmpPhaseXyzTransformation> A list of frequency-based amplitude-phase transformations for the XYZ axes. Main(string[]) Main method for testing vibration analysis. public static void Main(string[] argv) Parameters argv string[] Command line arguments."
},
"api/Hi.Vibrations.WAmpPhase.html": {
"href": "api/Hi.Vibrations.WAmpPhase.html",
"title": "Class WAmpPhase | HiAPI-C# 2025",
"summary": "Class WAmpPhase Namespace Hi.Vibrations Assembly HiMech.dll Represents amplitude and phase information with angular velocity. public class WAmpPhase : IAngularVelocityOwner Inheritance object WAmpPhase Implements IAngularVelocityOwner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods AngularVelocityUtil.GetFrequency(IAngularVelocityOwner) AngularVelocityUtil.SetFrequency(IAngularVelocityOwner, double) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WAmpPhase(double, AmpPhase) Initializes a new instance of the WAmpPhase class with the specified angular velocity and amplitude-phase information. public WAmpPhase(double angularVelocity, AmpPhase ampPhase) Parameters angularVelocity double The angular velocity in radians per second. ampPhase AmpPhase The amplitude and phase information. Properties AmpPhase Gets or sets the amplitude and phase information. public AmpPhase AmpPhase { get; set; } Property Value AmpPhase AngularVelocity Gets or sets the angular velocity in radians per second. public double AngularVelocity { get; set; } Property Value double Frequency Gets or sets the frequency in Hz. public double Frequency { get; set; } Property Value double"
},
"api/Hi.Vibrations.WAmpPhaseXyzTransformation.html": {
"href": "api/Hi.Vibrations.WAmpPhaseXyzTransformation.html",
"title": "Class WAmpPhaseXyzTransformation | HiAPI-C# 2025",
"summary": "Class WAmpPhaseXyzTransformation Namespace Hi.Vibrations Assembly HiMech.dll Represents amplitude and phase information with angular velocity for XYZ transformations. public class WAmpPhaseXyzTransformation Inheritance object WAmpPhaseXyzTransformation Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors WAmpPhaseXyzTransformation(double, AmpPhase, AmpPhase, AmpPhase) Initializes a new instance of the WAmpPhaseXyzTransformation class with the specified angular velocity and amplitude-phase information for each axis. public WAmpPhaseXyzTransformation(double angularVelocity, AmpPhase ampPhaseX, AmpPhase ampPhaseY, AmpPhase ampPhaseZ) Parameters angularVelocity double The angular velocity in radians per second. ampPhaseX AmpPhase The amplitude and phase information for the X axis. ampPhaseY AmpPhase The amplitude and phase information for the Y axis. ampPhaseZ AmpPhase The amplitude and phase information for the Z axis. Properties AmpPhaseX Gets or sets the amplitude and phase information for the X axis. public AmpPhase AmpPhaseX { get; set; } Property Value AmpPhase AmpPhaseY Gets or sets the amplitude and phase information for the Y axis. public AmpPhase AmpPhaseY { get; set; } Property Value AmpPhase AmpPhaseZ Gets or sets the amplitude and phase information for the Z axis. public AmpPhase AmpPhaseZ { get; set; } Property Value AmpPhase AngularVelocity Gets or sets the angular velocity in radians per second. public double AngularVelocity { get; set; } Property Value double"
},
"api/Hi.Vibrations.html": {
"href": "api/Hi.Vibrations.html",
"title": "Namespace Hi.Vibrations | HiAPI-C# 2025",
"summary": "Namespace Hi.Vibrations Classes AngularVelocityUtil Provides utility methods for working with angular velocity. ForceAccelAmpPhase Represents amplitude and phase information for force and acceleration in vibration analysis. ForceAccelFourierSeries Represents Fourier series data for force and acceleration measurements in three dimensions. ForceAccelShot Represents a data point containing force, acceleration, and moment measurements at a specific time. ForceAccelUtil Utility class for force and acceleration data processing. VibrationUtil Utility class for vibration analysis and processing. WAmpPhase Represents amplitude and phase information with angular velocity. WAmpPhaseXyzTransformation Represents amplitude and phase information with angular velocity for XYZ transformations. Interfaces IAngularVelocityOwner Provides functionality for objects that have an angular velocity property."
},
"api/Hi.WinForm.Disp.RenderingCanvas.html": {
"href": "api/Hi.WinForm.Disp.RenderingCanvas.html",
"title": "Class RenderingCanvas | HiAPI-C# 2025",
"summary": "Class RenderingCanvas Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll Window Form Displayer. public class RenderingCanvas : UserControl, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl UserControl RenderingCanvas Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl Inherited Members UserControl.ValidateChildren() UserControl.ValidateChildren(ValidationConstraints) UserControl.OnCreateControl() UserControl.OnLoad(EventArgs) UserControl.OnResize(EventArgs) UserControl.OnMouseDown(MouseEventArgs) UserControl.AutoSize UserControl.AutoSizeMode UserControl.AutoValidate UserControl.BorderStyle UserControl.CreateParams UserControl.DefaultSize UserControl.AutoSizeChanged UserControl.AutoValidateChanged UserControl.Load ContainerControl.AdjustFormScrollbars(bool) ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnFontChanged(EventArgs) ContainerControl.OnLayout(LayoutEventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.ScaleMinMaxSize(float, float, bool) ContainerControl.ProcessDialogChar(char) ContainerControl.ProcessDialogKey(Keys) ContainerControl.ProcessCmdKey(ref Message, Keys) ContainerControl.ProcessMnemonic(char) ContainerControl.ProcessTabKey(bool) ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Select(bool, bool) ContainerControl.UpdateDefaultButton() ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.OnVisibleChanged(EventArgs) ScrollableControl.ScaleControl(SizeF, BoundsSpecified) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScroll ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateAccessibilityInstance() Control.CreateControlsInstance() Control.CreateGraphics() Control.CreateHandle() Control.CreateControl() Control.DefWndProc(ref Message) Control.DestroyHandle() Control.DoDragDropAsJson<T>(T, DragDropEffects) Control.DoDragDropAsJson<T>(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke<T>(Func<T>) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBackgroundImageChanged(EventArgs) Control.OnBackgroundImageLayoutChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnEnabledChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnTextChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnHandleCreated(EventArgs) Control.OnLocationChanged(EventArgs) Control.OnHandleDestroyed(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.OnEnter(EventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnGotFocus(EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnPaint(PaintEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnStyleChanged(EventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.ProcessKeyPreview(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SetBoundsCore(int, int, int, int, BoundsSpecified) Control.SetClientSizeCore(int, int) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.SetVisibleCore(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync<T>(Func<T>, CancellationToken) Control.InvokeAsync(Func<CancellationToken, ValueTask>, CancellationToken) Control.InvokeAsync<T>(Func<CancellationToken, ValueTask<T>>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackColor Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.ClientSize Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Location Control.Margin Control.MaximumSize Control.MinimumSize Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.Size Control.TabIndex Control.TabStop Control.Tag Control.Text Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.DefaultImeMode Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.ToString() Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RenderingCanvas(params IDisplayee[]) Ctor. public RenderingCanvas(params IDisplayee[] displayees) Parameters displayees IDisplayee[] displayees Properties DispEngine DispEngine. public DispEngine DispEngine { get; } Property Value DispEngine Methods Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. IsInputKey(Keys) Determines whether the specified key is a regular input key or a special key that requires preprocessing. protected override bool IsInputKey(Keys keyData) Parameters keyData Keys One of the Keys values. Returns bool true if the specified key is a regular input key; otherwise, false. WndProc(ref Message) Processes Windows messages, handling touch input and forwarding other messages to the base class. protected override void WndProc(ref Message m) Parameters m Message The Windows message to process."
},
"api/Hi.WinForm.Disp.RenderingForm.html": {
"href": "api/Hi.WinForm.Disp.RenderingForm.html",
"title": "Class RenderingForm | HiAPI-C# 2025",
"summary": "Class RenderingForm Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll A Form contains RenderingCanvas. This class is usually used for debug due to its simplicity. public class RenderingForm : Form, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl, IGetDispEngine Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl Form RenderingForm Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl IGetDispEngine Inherited Members Form.SetVisibleCore(bool) Form.OnFormCornerPreferenceChanged(EventArgs) Form.OnFormBorderColorChanged(EventArgs) Form.OnFormCaptionBackColorChanged(EventArgs) Form.OnFormCaptionTextColorChanged(EventArgs) Form.Activate() Form.ActivateMdiChild(Form) Form.AddOwnedForm(Form) Form.AdjustFormScrollbars(bool) Form.Close() Form.CreateAccessibilityInstance() Form.CreateControlsInstance() Form.CreateHandle() Form.DefWndProc(ref Message) Form.ProcessMnemonic(char) Form.CenterToParent() Form.CenterToScreen() Form.LayoutMdi(MdiLayout) Form.OnActivated(EventArgs) Form.OnBackgroundImageChanged(EventArgs) Form.OnBackgroundImageLayoutChanged(EventArgs) Form.OnFormClosing(FormClosingEventArgs) Form.OnFormClosed(FormClosedEventArgs) Form.OnCreateControl() Form.OnDeactivate(EventArgs) Form.OnEnabledChanged(EventArgs) Form.OnEnter(EventArgs) Form.OnFontChanged(EventArgs) Form.OnGotFocus(EventArgs) Form.OnHandleCreated(EventArgs) Form.OnHandleDestroyed(EventArgs) Form.OnHelpButtonClicked(CancelEventArgs) Form.OnLayout(LayoutEventArgs) Form.OnLoad(EventArgs) Form.OnMaximizedBoundsChanged(EventArgs) Form.OnMaximumSizeChanged(EventArgs) Form.OnMinimumSizeChanged(EventArgs) Form.OnInputLanguageChanged(InputLanguageChangedEventArgs) Form.OnInputLanguageChanging(InputLanguageChangingEventArgs) Form.OnVisibleChanged(EventArgs) Form.OnMdiChildActivate(EventArgs) Form.OnMenuStart(EventArgs) Form.OnMenuComplete(EventArgs) Form.OnPaint(PaintEventArgs) Form.OnResize(EventArgs) Form.OnDpiChanged(DpiChangedEventArgs) Form.OnGetDpiScaledSize(int, int, ref Size) Form.OnRightToLeftLayoutChanged(EventArgs) Form.OnShown(EventArgs) Form.OnTextChanged(EventArgs) Form.ProcessCmdKey(ref Message, Keys) Form.ProcessDialogKey(Keys) Form.ProcessDialogChar(char) Form.ProcessKeyPreview(ref Message) Form.ProcessTabKey(bool) Form.RemoveOwnedForm(Form) Form.Select(bool, bool) Form.ScaleMinMaxSize(float, float, bool) Form.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Form.ScaleControl(SizeF, BoundsSpecified) Form.SetBoundsCore(int, int, int, int, BoundsSpecified) Form.SetClientSizeCore(int, int) Form.SetDesktopBounds(int, int, int, int) Form.SetDesktopLocation(int, int) Form.Show(IWin32Window) Form.ShowAsync(IWin32Window) Form.ShowDialog() Form.ShowDialog(IWin32Window) Form.ShowDialogAsync() Form.ShowDialogAsync(IWin32Window) Form.ToString() Form.UpdateDefaultButton() Form.OnResizeBegin(EventArgs) Form.OnResizeEnd(EventArgs) Form.OnStyleChanged(EventArgs) Form.ValidateChildren() Form.ValidateChildren(ValidationConstraints) Form.WndProc(ref Message) Form.AcceptButton Form.ActiveForm Form.ActiveMdiChild Form.AllowTransparency Form.AutoScroll Form.AutoSize Form.AutoSizeMode Form.AutoValidate Form.BackColor Form.FormBorderStyle Form.CancelButton Form.ClientSize Form.ControlBox Form.CreateParams Form.DefaultImeMode Form.DefaultSize Form.DesktopBounds Form.DesktopLocation Form.DialogResult Form.HelpButton Form.Icon Form.IsMdiChild Form.IsMdiContainer Form.IsRestrictedWindow Form.KeyPreview Form.Location Form.MaximizedBounds Form.MaximumSize Form.MainMenuStrip Form.MinimumSize Form.MaximizeBox Form.MdiChildren Form.MdiChildrenMinimizedAnchorBottom Form.MdiParent Form.MinimizeBox Form.Modal Form.Opacity Form.OwnedForms Form.Owner Form.RestoreBounds Form.RightToLeftLayout Form.FormScreenCaptureMode Form.ShowInTaskbar Form.ShowIcon Form.ShowWithoutActivation Form.Size Form.SizeGripStyle Form.StartPosition Form.Text Form.TopLevel Form.TopMost Form.TransparencyKey Form.FormCornerPreference Form.FormBorderColor Form.FormCaptionBackColor Form.FormCaptionTextColor Form.WindowState Form.AutoSizeChanged Form.AutoValidateChanged Form.HelpButtonClicked Form.MaximizedBoundsChanged Form.MaximumSizeChanged Form.MinimumSizeChanged Form.Activated Form.Deactivate Form.FormClosing Form.FormBorderColorChanged Form.FormCaptionBackColorChanged Form.FormCaptionTextColorChanged Form.FormCornerPreferenceChanged Form.FormClosed Form.Load Form.MdiChildActivate Form.MenuComplete Form.MenuStart Form.InputLanguageChanged Form.InputLanguageChanging Form.RightToLeftLayoutChanged Form.Shown Form.DpiChanged Form.ResizeBegin Form.ResizeEnd ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateGraphics() Control.CreateControl() Control.DestroyHandle() Control.DoDragDropAsJson<T>(T, DragDropEffects) Control.DoDragDropAsJson<T>(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke<T>(Func<T>) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsInputKey(Keys) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnLocationChanged(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseDown(MouseEventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync<T>(Func<T>, CancellationToken) Control.InvokeAsync(Func<CancellationToken, ValueTask>, CancellationToken) Control.InvokeAsync<T>(Func<CancellationToken, ValueTask<T>>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Margin Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.TabIndex Control.TabStop Control.Tag Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Displayee Gets or sets the displayee object for rendering. public IDisplayee Displayee { get; set; } Property Value IDisplayee DisplayerMap See Call(string, params IDisplayee[]) to get the information. public static ConcurrentDictionary<string, RenderingForm> DisplayerMap { get; } Property Value ConcurrentDictionary<string, RenderingForm> RenderingCanvas The contained RenderingCanvas. public RenderingCanvas RenderingCanvas { get; } Property Value RenderingCanvas Methods Call(string, params IDisplayee[]) Create and obtain a RenderingForm if the key has not existed; Otherwise, the old one is obtained. displayees are set to the obtained RenderingForm. The dictionary of this function is DisplayerMap. public static RenderingForm Call(string key, params IDisplayee[] displayees) Parameters key string key displayees IDisplayee[] The displayees set to the obtained RenderingForm. Returns RenderingForm A RenderingForm obtained by the key. Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine"
},
"api/Hi.WinForm.Disp.html": {
"href": "api/Hi.WinForm.Disp.html",
"title": "Namespace Hi.WinForm.Disp | HiAPI-C# 2025",
"summary": "Namespace Hi.WinForm.Disp Classes RenderingCanvas Window Form Displayer. RenderingForm A Form contains RenderingCanvas. This class is usually used for debug due to its simplicity."
},
"api/Hi.WpfPlus.Disp.RenderingCanvas.html": {
"href": "api/Hi.WpfPlus.Disp.RenderingCanvas.html",
"title": "Class RenderingCanvas | HiAPI-C# 2025",
"summary": "Class RenderingCanvas Namespace Hi.WpfPlus.Disp Assembly Hi.WpfPlus.dll Provides a WPF rendering canvas for 3D visualization of HiAPI components. Handles user interactions, rendering, and integration with the DispEngine system. public class RenderingCanvas : UserControl, IAnimatable, ISupportInitialize, IFrameworkInputElement, IInputElement, IQueryAmbient, IAddChild, IDisposable Inheritance object DispatcherObject DependencyObject Visual UIElement FrameworkElement Control ContentControl UserControl RenderingCanvas Implements IAnimatable ISupportInitialize IFrameworkInputElement IInputElement IQueryAmbient IAddChild IDisposable Inherited Members UserControl.OnCreateAutomationPeer() ContentControl.ContentProperty ContentControl.ContentStringFormatProperty ContentControl.ContentTemplateProperty ContentControl.ContentTemplateSelectorProperty ContentControl.HasContentProperty ContentControl.AddChild(object) ContentControl.AddText(string) ContentControl.OnContentChanged(object, object) ContentControl.OnContentStringFormatChanged(string, string) ContentControl.OnContentTemplateChanged(DataTemplate, DataTemplate) ContentControl.OnContentTemplateSelectorChanged(DataTemplateSelector, DataTemplateSelector) ContentControl.Content ContentControl.ContentStringFormat ContentControl.ContentTemplate ContentControl.ContentTemplateSelector ContentControl.HasContent ContentControl.LogicalChildren Control.BackgroundProperty Control.BorderBrushProperty Control.BorderThicknessProperty Control.FontFamilyProperty Control.FontSizeProperty Control.FontStretchProperty Control.FontStyleProperty Control.FontWeightProperty Control.ForegroundProperty Control.HorizontalContentAlignmentProperty Control.IsTabStopProperty Control.MouseDoubleClickEvent Control.PaddingProperty Control.PreviewMouseDoubleClickEvent Control.TabIndexProperty Control.TemplateProperty Control.VerticalContentAlignmentProperty Control.ArrangeOverride(Size) Control.MeasureOverride(Size) Control.OnMouseDoubleClick(MouseButtonEventArgs) Control.OnPreviewMouseDoubleClick(MouseButtonEventArgs) Control.OnTemplateChanged(ControlTemplate, ControlTemplate) Control.ToString() Control.Background Control.BorderBrush Control.BorderThickness Control.FontFamily Control.FontSize Control.FontStretch Control.FontStyle Control.FontWeight Control.Foreground Control.HandlesScrolling Control.HorizontalContentAlignment Control.IsTabStop Control.Padding Control.TabIndex Control.Template Control.VerticalContentAlignment Control.MouseDoubleClick Control.PreviewMouseDoubleClick FrameworkElement.ActualHeightProperty FrameworkElement.ActualWidthProperty FrameworkElement.BindingGroupProperty FrameworkElement.ContextMenuClosingEvent FrameworkElement.ContextMenuOpeningEvent FrameworkElement.ContextMenuProperty FrameworkElement.CursorProperty FrameworkElement.DataContextProperty FrameworkElement.DefaultStyleKeyProperty FrameworkElement.FlowDirectionProperty FrameworkElement.FocusVisualStyleProperty FrameworkElement.ForceCursorProperty FrameworkElement.HeightProperty FrameworkElement.HorizontalAlignmentProperty FrameworkElement.InputScopeProperty FrameworkElement.LanguageProperty FrameworkElement.LayoutTransformProperty FrameworkElement.LoadedEvent FrameworkElement.MarginProperty FrameworkElement.MaxHeightProperty FrameworkElement.MaxWidthProperty FrameworkElement.MinHeightProperty FrameworkElement.MinWidthProperty FrameworkElement.NameProperty FrameworkElement.OverridesDefaultStyleProperty FrameworkElement.RequestBringIntoViewEvent FrameworkElement.SizeChangedEvent FrameworkElement.StyleProperty FrameworkElement.TagProperty FrameworkElement.ToolTipClosingEvent FrameworkElement.ToolTipOpeningEvent FrameworkElement.ToolTipProperty FrameworkElement.UnloadedEvent FrameworkElement.UseLayoutRoundingProperty FrameworkElement.VerticalAlignmentProperty FrameworkElement.WidthProperty FrameworkElement.AddLogicalChild(object) FrameworkElement.ApplyTemplate() FrameworkElement.ArrangeCore(Rect) FrameworkElement.BeginInit() FrameworkElement.BeginStoryboard(Storyboard) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior, bool) FrameworkElement.BringIntoView() FrameworkElement.BringIntoView(Rect) FrameworkElement.EndInit() FrameworkElement.FindName(string) FrameworkElement.FindResource(object) FrameworkElement.GetBindingExpression(DependencyProperty) FrameworkElement.GetFlowDirection(DependencyObject) FrameworkElement.GetLayoutClip(Size) FrameworkElement.GetTemplateChild(string) FrameworkElement.GetUIParentCore() FrameworkElement.GetVisualChild(int) FrameworkElement.MeasureCore(Size) FrameworkElement.MoveFocus(TraversalRequest) FrameworkElement.OnApplyTemplate() FrameworkElement.OnContextMenuClosing(ContextMenuEventArgs) FrameworkElement.OnContextMenuOpening(ContextMenuEventArgs) FrameworkElement.OnGotFocus(RoutedEventArgs) FrameworkElement.OnInitialized(EventArgs) FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs) FrameworkElement.OnRenderSizeChanged(SizeChangedInfo) FrameworkElement.OnStyleChanged(Style, Style) FrameworkElement.OnToolTipClosing(ToolTipEventArgs) FrameworkElement.OnToolTipOpening(ToolTipEventArgs) FrameworkElement.OnVisualParentChanged(DependencyObject) FrameworkElement.ParentLayoutInvalidated(UIElement) FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.RegisterName(string, object) FrameworkElement.RemoveLogicalChild(object) FrameworkElement.SetBinding(DependencyProperty, string) FrameworkElement.SetBinding(DependencyProperty, BindingBase) FrameworkElement.SetFlowDirection(DependencyObject, FlowDirection) FrameworkElement.SetResourceReference(DependencyProperty, object) FrameworkElement.TryFindResource(object) FrameworkElement.UnregisterName(string) FrameworkElement.UpdateDefaultStyle() FrameworkElement.ActualHeight FrameworkElement.ActualWidth FrameworkElement.BindingGroup FrameworkElement.ContextMenu FrameworkElement.Cursor FrameworkElement.DataContext FrameworkElement.DefaultStyleKey FrameworkElement.FlowDirection FrameworkElement.FocusVisualStyle FrameworkElement.ForceCursor FrameworkElement.Height FrameworkElement.HorizontalAlignment FrameworkElement.InheritanceBehavior FrameworkElement.InputScope FrameworkElement.IsInitialized FrameworkElement.IsLoaded FrameworkElement.Language FrameworkElement.LayoutTransform FrameworkElement.Margin FrameworkElement.MaxHeight FrameworkElement.MaxWidth FrameworkElement.MinHeight FrameworkElement.MinWidth FrameworkElement.Name FrameworkElement.OverridesDefaultStyle FrameworkElement.Parent FrameworkElement.Resources FrameworkElement.Style FrameworkElement.Tag FrameworkElement.TemplatedParent FrameworkElement.ToolTip FrameworkElement.Triggers FrameworkElement.UseLayoutRounding FrameworkElement.VerticalAlignment FrameworkElement.VisualChildrenCount FrameworkElement.Width FrameworkElement.ContextMenuClosing FrameworkElement.ContextMenuOpening FrameworkElement.DataContextChanged FrameworkElement.Initialized FrameworkElement.Loaded FrameworkElement.RequestBringIntoView FrameworkElement.SizeChanged FrameworkElement.SourceUpdated FrameworkElement.TargetUpdated FrameworkElement.ToolTipClosing FrameworkElement.ToolTipOpening FrameworkElement.Unloaded UIElement.AllowDropProperty UIElement.AreAnyTouchesCapturedProperty UIElement.AreAnyTouchesCapturedWithinProperty UIElement.AreAnyTouchesDirectlyOverProperty UIElement.AreAnyTouchesOverProperty UIElement.BitmapEffectInputProperty UIElement.BitmapEffectProperty UIElement.CacheModeProperty UIElement.ClipProperty UIElement.ClipToBoundsProperty UIElement.DragEnterEvent UIElement.DragLeaveEvent UIElement.DragOverEvent UIElement.DropEvent UIElement.EffectProperty UIElement.FocusableProperty UIElement.GiveFeedbackEvent UIElement.GotFocusEvent UIElement.GotKeyboardFocusEvent UIElement.GotMouseCaptureEvent UIElement.GotStylusCaptureEvent UIElement.GotTouchCaptureEvent UIElement.IsEnabledProperty UIElement.IsFocusedProperty UIElement.IsHitTestVisibleProperty UIElement.IsKeyboardFocusedProperty UIElement.IsKeyboardFocusWithinProperty UIElement.IsManipulationEnabledProperty UIElement.IsMouseCapturedProperty UIElement.IsMouseCaptureWithinProperty UIElement.IsMouseDirectlyOverProperty UIElement.IsMouseOverProperty UIElement.IsStylusCapturedProperty UIElement.IsStylusCaptureWithinProperty UIElement.IsStylusDirectlyOverProperty UIElement.IsStylusOverProperty UIElement.IsVisibleProperty UIElement.KeyDownEvent UIElement.KeyUpEvent UIElement.LostFocusEvent UIElement.LostKeyboardFocusEvent UIElement.LostMouseCaptureEvent UIElement.LostStylusCaptureEvent UIElement.LostTouchCaptureEvent UIElement.ManipulationBoundaryFeedbackEvent UIElement.ManipulationCompletedEvent UIElement.ManipulationDeltaEvent UIElement.ManipulationInertiaStartingEvent UIElement.ManipulationStartedEvent UIElement.ManipulationStartingEvent UIElement.MouseDownEvent UIElement.MouseEnterEvent UIElement.MouseLeaveEvent UIElement.MouseLeftButtonDownEvent UIElement.MouseLeftButtonUpEvent UIElement.MouseMoveEvent UIElement.MouseRightButtonDownEvent UIElement.MouseRightButtonUpEvent UIElement.MouseUpEvent UIElement.MouseWheelEvent UIElement.OpacityMaskProperty UIElement.OpacityProperty UIElement.PreviewDragEnterEvent UIElement.PreviewDragLeaveEvent UIElement.PreviewDragOverEvent UIElement.PreviewDropEvent UIElement.PreviewGiveFeedbackEvent UIElement.PreviewGotKeyboardFocusEvent UIElement.PreviewKeyDownEvent UIElement.PreviewKeyUpEvent UIElement.PreviewLostKeyboardFocusEvent UIElement.PreviewMouseDownEvent UIElement.PreviewMouseLeftButtonDownEvent UIElement.PreviewMouseLeftButtonUpEvent UIElement.PreviewMouseMoveEvent UIElement.PreviewMouseRightButtonDownEvent UIElement.PreviewMouseRightButtonUpEvent UIElement.PreviewMouseUpEvent UIElement.PreviewMouseWheelEvent UIElement.PreviewQueryContinueDragEvent UIElement.PreviewStylusButtonDownEvent UIElement.PreviewStylusButtonUpEvent UIElement.PreviewStylusDownEvent UIElement.PreviewStylusInAirMoveEvent UIElement.PreviewStylusInRangeEvent UIElement.PreviewStylusMoveEvent UIElement.PreviewStylusOutOfRangeEvent UIElement.PreviewStylusSystemGestureEvent UIElement.PreviewStylusUpEvent UIElement.PreviewTextInputEvent UIElement.PreviewTouchDownEvent UIElement.PreviewTouchMoveEvent UIElement.PreviewTouchUpEvent UIElement.QueryContinueDragEvent UIElement.QueryCursorEvent UIElement.RenderTransformOriginProperty UIElement.RenderTransformProperty UIElement.SnapsToDevicePixelsProperty UIElement.StylusButtonDownEvent UIElement.StylusButtonUpEvent UIElement.StylusDownEvent UIElement.StylusEnterEvent UIElement.StylusInAirMoveEvent UIElement.StylusInRangeEvent UIElement.StylusLeaveEvent UIElement.StylusMoveEvent UIElement.StylusOutOfRangeEvent UIElement.StylusSystemGestureEvent UIElement.StylusUpEvent UIElement.TextInputEvent UIElement.TouchDownEvent UIElement.TouchEnterEvent UIElement.TouchLeaveEvent UIElement.TouchMoveEvent UIElement.TouchUpEvent UIElement.UidProperty UIElement.VisibilityProperty UIElement.AddHandler(RoutedEvent, Delegate) UIElement.AddHandler(RoutedEvent, Delegate, bool) UIElement.AddToEventRoute(EventRoute, RoutedEventArgs) UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock) UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) UIElement.Arrange(Rect) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) UIElement.CaptureMouse() UIElement.CaptureStylus() UIElement.CaptureTouch(TouchDevice) UIElement.Focus() UIElement.GetAnimationBaseValue(DependencyProperty) UIElement.HitTestCore(GeometryHitTestParameters) UIElement.HitTestCore(PointHitTestParameters) UIElement.InputHitTest(Point) UIElement.InvalidateArrange() UIElement.InvalidateMeasure() UIElement.InvalidateVisual() UIElement.Measure(Size) UIElement.OnAccessKey(AccessKeyEventArgs) UIElement.OnChildDesiredSizeChanged(UIElement) UIElement.OnDragEnter(DragEventArgs) UIElement.OnDragLeave(DragEventArgs) UIElement.OnDragOver(DragEventArgs) UIElement.OnDrop(DragEventArgs) UIElement.OnGiveFeedback(GiveFeedbackEventArgs) UIElement.OnGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnGotMouseCapture(MouseEventArgs) UIElement.OnGotStylusCapture(StylusEventArgs) UIElement.OnGotTouchCapture(TouchEventArgs) UIElement.OnIsKeyboardFocusedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnKeyDown(KeyEventArgs) UIElement.OnKeyUp(KeyEventArgs) UIElement.OnLostFocus(RoutedEventArgs) UIElement.OnLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnLostMouseCapture(MouseEventArgs) UIElement.OnLostStylusCapture(StylusEventArgs) UIElement.OnLostTouchCapture(TouchEventArgs) UIElement.OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs) UIElement.OnManipulationCompleted(ManipulationCompletedEventArgs) UIElement.OnManipulationDelta(ManipulationDeltaEventArgs) UIElement.OnManipulationInertiaStarting(ManipulationInertiaStartingEventArgs) UIElement.OnManipulationStarted(ManipulationStartedEventArgs) UIElement.OnManipulationStarting(ManipulationStartingEventArgs) UIElement.OnMouseDown(MouseButtonEventArgs) UIElement.OnMouseEnter(MouseEventArgs) UIElement.OnMouseLeave(MouseEventArgs) UIElement.OnMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnMouseMove(MouseEventArgs) UIElement.OnMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnMouseUp(MouseButtonEventArgs) UIElement.OnMouseWheel(MouseWheelEventArgs) UIElement.OnPreviewDragEnter(DragEventArgs) UIElement.OnPreviewDragLeave(DragEventArgs) UIElement.OnPreviewDragOver(DragEventArgs) UIElement.OnPreviewDrop(DragEventArgs) UIElement.OnPreviewGiveFeedback(GiveFeedbackEventArgs) UIElement.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewKeyDown(KeyEventArgs) UIElement.OnPreviewKeyUp(KeyEventArgs) UIElement.OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewMouseDown(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseMove(MouseEventArgs) UIElement.OnPreviewMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseUp(MouseButtonEventArgs) UIElement.OnPreviewMouseWheel(MouseWheelEventArgs) UIElement.OnPreviewQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnPreviewStylusButtonDown(StylusButtonEventArgs) UIElement.OnPreviewStylusButtonUp(StylusButtonEventArgs) UIElement.OnPreviewStylusDown(StylusDownEventArgs) UIElement.OnPreviewStylusInAirMove(StylusEventArgs) UIElement.OnPreviewStylusInRange(StylusEventArgs) UIElement.OnPreviewStylusMove(StylusEventArgs) UIElement.OnPreviewStylusOutOfRange(StylusEventArgs) UIElement.OnPreviewStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnPreviewStylusUp(StylusEventArgs) UIElement.OnPreviewTextInput(TextCompositionEventArgs) UIElement.OnPreviewTouchDown(TouchEventArgs) UIElement.OnPreviewTouchMove(TouchEventArgs) UIElement.OnPreviewTouchUp(TouchEventArgs) UIElement.OnQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnQueryCursor(QueryCursorEventArgs) UIElement.OnRender(DrawingContext) UIElement.OnStylusButtonDown(StylusButtonEventArgs) UIElement.OnStylusButtonUp(StylusButtonEventArgs) UIElement.OnStylusDown(StylusDownEventArgs) UIElement.OnStylusEnter(StylusEventArgs) UIElement.OnStylusInAirMove(StylusEventArgs) UIElement.OnStylusInRange(StylusEventArgs) UIElement.OnStylusLeave(StylusEventArgs) UIElement.OnStylusMove(StylusEventArgs) UIElement.OnStylusOutOfRange(StylusEventArgs) UIElement.OnStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnStylusUp(StylusEventArgs) UIElement.OnTextInput(TextCompositionEventArgs) UIElement.OnTouchDown(TouchEventArgs) UIElement.OnTouchEnter(TouchEventArgs) UIElement.OnTouchLeave(TouchEventArgs) UIElement.OnTouchMove(TouchEventArgs) UIElement.OnTouchUp(TouchEventArgs) UIElement.RaiseEvent(RoutedEventArgs) UIElement.ReleaseAllTouchCaptures() UIElement.ReleaseMouseCapture() UIElement.ReleaseStylusCapture() UIElement.ReleaseTouchCapture(TouchDevice) UIElement.RemoveHandler(RoutedEvent, Delegate) UIElement.TranslatePoint(Point, UIElement) UIElement.UpdateLayout() UIElement.AllowDrop UIElement.AreAnyTouchesCaptured UIElement.AreAnyTouchesCapturedWithin UIElement.AreAnyTouchesDirectlyOver UIElement.AreAnyTouchesOver UIElement.BitmapEffect UIElement.BitmapEffectInput UIElement.CacheMode UIElement.Clip UIElement.ClipToBounds UIElement.CommandBindings UIElement.DesiredSize UIElement.Effect UIElement.Focusable UIElement.HasAnimatedProperties UIElement.HasEffectiveKeyboardFocus UIElement.InputBindings UIElement.IsArrangeValid UIElement.IsEnabled UIElement.IsEnabledCore UIElement.IsFocused UIElement.IsHitTestVisible UIElement.IsInputMethodEnabled UIElement.IsKeyboardFocused UIElement.IsKeyboardFocusWithin UIElement.IsManipulationEnabled UIElement.IsMeasureValid UIElement.IsMouseCaptured UIElement.IsMouseCaptureWithin UIElement.IsMouseDirectlyOver UIElement.IsMouseOver UIElement.IsStylusCaptured UIElement.IsStylusCaptureWithin UIElement.IsStylusDirectlyOver UIElement.IsStylusOver UIElement.IsVisible UIElement.Opacity UIElement.OpacityMask UIElement.PersistId UIElement.RenderSize UIElement.RenderTransform UIElement.RenderTransformOrigin UIElement.SnapsToDevicePixels UIElement.StylusPlugIns UIElement.TouchesCaptured UIElement.TouchesCapturedWithin UIElement.TouchesDirectlyOver UIElement.TouchesOver UIElement.Uid UIElement.Visibility UIElement.DragEnter UIElement.DragLeave UIElement.DragOver UIElement.Drop UIElement.FocusableChanged UIElement.GiveFeedback UIElement.GotFocus UIElement.GotKeyboardFocus UIElement.GotMouseCapture UIElement.GotStylusCapture UIElement.GotTouchCapture UIElement.IsEnabledChanged UIElement.IsHitTestVisibleChanged UIElement.IsKeyboardFocusedChanged UIElement.IsKeyboardFocusWithinChanged UIElement.IsMouseCapturedChanged UIElement.IsMouseCaptureWithinChanged UIElement.IsMouseDirectlyOverChanged UIElement.IsStylusCapturedChanged UIElement.IsStylusCaptureWithinChanged UIElement.IsStylusDirectlyOverChanged UIElement.IsVisibleChanged UIElement.KeyDown UIElement.KeyUp UIElement.LayoutUpdated UIElement.LostFocus UIElement.LostKeyboardFocus UIElement.LostMouseCapture UIElement.LostStylusCapture UIElement.LostTouchCapture UIElement.ManipulationBoundaryFeedback UIElement.ManipulationCompleted UIElement.ManipulationDelta UIElement.ManipulationInertiaStarting UIElement.ManipulationStarted UIElement.ManipulationStarting UIElement.MouseDown UIElement.MouseEnter UIElement.MouseLeave UIElement.MouseLeftButtonDown UIElement.MouseLeftButtonUp UIElement.MouseMove UIElement.MouseRightButtonDown UIElement.MouseRightButtonUp UIElement.MouseUp UIElement.MouseWheel UIElement.PreviewDragEnter UIElement.PreviewDragLeave UIElement.PreviewDragOver UIElement.PreviewDrop UIElement.PreviewGiveFeedback UIElement.PreviewGotKeyboardFocus UIElement.PreviewKeyDown UIElement.PreviewKeyUp UIElement.PreviewLostKeyboardFocus UIElement.PreviewMouseDown UIElement.PreviewMouseLeftButtonDown UIElement.PreviewMouseLeftButtonUp UIElement.PreviewMouseMove UIElement.PreviewMouseRightButtonDown UIElement.PreviewMouseRightButtonUp UIElement.PreviewMouseUp UIElement.PreviewMouseWheel UIElement.PreviewQueryContinueDrag UIElement.PreviewStylusButtonDown UIElement.PreviewStylusButtonUp UIElement.PreviewStylusDown UIElement.PreviewStylusInAirMove UIElement.PreviewStylusInRange UIElement.PreviewStylusMove UIElement.PreviewStylusOutOfRange UIElement.PreviewStylusSystemGesture UIElement.PreviewStylusUp UIElement.PreviewTextInput UIElement.PreviewTouchDown UIElement.PreviewTouchMove UIElement.PreviewTouchUp UIElement.QueryContinueDrag UIElement.QueryCursor UIElement.StylusButtonDown UIElement.StylusButtonUp UIElement.StylusDown UIElement.StylusEnter UIElement.StylusInAirMove UIElement.StylusInRange UIElement.StylusLeave UIElement.StylusMove UIElement.StylusOutOfRange UIElement.StylusSystemGesture UIElement.StylusUp UIElement.TextInput UIElement.TouchDown UIElement.TouchEnter UIElement.TouchLeave UIElement.TouchMove UIElement.TouchUp Visual.AddVisualChild(Visual) Visual.FindCommonVisualAncestor(DependencyObject) Visual.IsAncestorOf(DependencyObject) Visual.IsDescendantOf(DependencyObject) Visual.OnDpiChanged(DpiScale, DpiScale) Visual.OnVisualChildrenChanged(DependencyObject, DependencyObject) Visual.PointFromScreen(Point) Visual.PointToScreen(Point) Visual.RemoveVisualChild(Visual) Visual.TransformToAncestor(Visual3D) Visual.TransformToAncestor(Visual) Visual.TransformToDescendant(Visual) Visual.TransformToVisual(Visual) Visual.VisualBitmapEffect Visual.VisualBitmapEffectInput Visual.VisualBitmapScalingMode Visual.VisualCacheMode Visual.VisualClearTypeHint Visual.VisualClip Visual.VisualEdgeMode Visual.VisualEffect Visual.VisualOffset Visual.VisualOpacity Visual.VisualOpacityMask Visual.VisualParent Visual.VisualScrollableAreaClip Visual.VisualTextHintingMode Visual.VisualTextRenderingMode Visual.VisualTransform Visual.VisualXSnappingGuidelines Visual.VisualYSnappingGuidelines DependencyObject.ClearValue(DependencyProperty) DependencyObject.ClearValue(DependencyPropertyKey) DependencyObject.CoerceValue(DependencyProperty) DependencyObject.Equals(object) DependencyObject.GetHashCode() DependencyObject.GetLocalValueEnumerator() DependencyObject.GetValue(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.ReadLocalValue(DependencyProperty) DependencyObject.SetCurrentValue(DependencyProperty, object) DependencyObject.SetValue(DependencyProperty, object) DependencyObject.SetValue(DependencyPropertyKey, object) DependencyObject.ShouldSerializeProperty(DependencyProperty) DependencyObject.DependencyObjectType DependencyObject.IsSealed DispatcherObject.Dispatcher object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This canvas provides the core rendering capabilities for WPF applications using HiAPI. It manages mouse, keyboard, and touch events, and transforms them into appropriate actions in the 3D environment. Constructors RenderingCanvas() Initializes a new instance of the RenderingCanvas public RenderingCanvas() Properties DispEngine The DispEngine instance that handles rendering and user interactions public DispEngine DispEngine { get; } Property Value DispEngine Methods Dispose() Public dispose method to free resources public void Dispose() Dispose(bool) Disposes managed resources protected virtual void Dispose(bool disposing) Parameters disposing bool"
},
"api/Hi.WpfPlus.Disp.RenderingWindow.html": {
"href": "api/Hi.WpfPlus.Disp.RenderingWindow.html",
"title": "Class RenderingWindow | HiAPI-C# 2025",
"summary": "Class RenderingWindow Namespace Hi.WpfPlus.Disp Assembly Hi.WpfPlus.dll Window for 3D rendering. public class RenderingWindow : Window, IAnimatable, ISupportInitialize, IFrameworkInputElement, IInputElement, IQueryAmbient, IAddChild, IGetDispEngine Inheritance object DispatcherObject DependencyObject Visual UIElement FrameworkElement Control ContentControl Window RenderingWindow Implements IAnimatable ISupportInitialize IFrameworkInputElement IInputElement IQueryAmbient IAddChild IGetDispEngine Inherited Members Window.AllowsTransparencyProperty Window.DpiChangedEvent Window.IconProperty Window.IsActiveProperty Window.LeftProperty Window.ResizeModeProperty Window.ShowActivatedProperty Window.ShowInTaskbarProperty Window.SizeToContentProperty Window.TaskbarItemInfoProperty Window.TitleProperty Window.TopmostProperty Window.TopProperty Window.WindowStateProperty Window.WindowStyleProperty Window.Activate() Window.ArrangeOverride(Size) Window.Close() Window.DragMove() Window.GetWindow(DependencyObject) Window.Hide() Window.MeasureOverride(Size) Window.OnActivated(EventArgs) Window.OnClosed(EventArgs) Window.OnClosing(CancelEventArgs) Window.OnContentChanged(object, object) Window.OnContentRendered(EventArgs) Window.OnCreateAutomationPeer() Window.OnDeactivated(EventArgs) Window.OnDpiChanged(DpiScale, DpiScale) Window.OnLocationChanged(EventArgs) Window.OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs) Window.OnSourceInitialized(EventArgs) Window.OnStateChanged(EventArgs) Window.OnVisualChildrenChanged(DependencyObject, DependencyObject) Window.OnVisualParentChanged(DependencyObject) Window.Show() Window.ShowDialog() Window.AllowsTransparency Window.DialogResult Window.Icon Window.IsActive Window.Left Window.LogicalChildren Window.OwnedWindows Window.Owner Window.ResizeMode Window.RestoreBounds Window.ShowActivated Window.ShowInTaskbar Window.SizeToContent Window.TaskbarItemInfo Window.ThemeMode Window.Title Window.Top Window.Topmost Window.WindowStartupLocation Window.WindowState Window.WindowStyle Window.Activated Window.Closed Window.Closing Window.ContentRendered Window.Deactivated Window.DpiChanged Window.LocationChanged Window.SourceInitialized Window.StateChanged ContentControl.ContentProperty ContentControl.ContentStringFormatProperty ContentControl.ContentTemplateProperty ContentControl.ContentTemplateSelectorProperty ContentControl.HasContentProperty ContentControl.AddChild(object) ContentControl.AddText(string) ContentControl.OnContentStringFormatChanged(string, string) ContentControl.OnContentTemplateChanged(DataTemplate, DataTemplate) ContentControl.OnContentTemplateSelectorChanged(DataTemplateSelector, DataTemplateSelector) ContentControl.Content ContentControl.ContentStringFormat ContentControl.ContentTemplate ContentControl.ContentTemplateSelector ContentControl.HasContent Control.BackgroundProperty Control.BorderBrushProperty Control.BorderThicknessProperty Control.FontFamilyProperty Control.FontSizeProperty Control.FontStretchProperty Control.FontStyleProperty Control.FontWeightProperty Control.ForegroundProperty Control.HorizontalContentAlignmentProperty Control.IsTabStopProperty Control.MouseDoubleClickEvent Control.PaddingProperty Control.PreviewMouseDoubleClickEvent Control.TabIndexProperty Control.TemplateProperty Control.VerticalContentAlignmentProperty Control.OnMouseDoubleClick(MouseButtonEventArgs) Control.OnPreviewMouseDoubleClick(MouseButtonEventArgs) Control.OnTemplateChanged(ControlTemplate, ControlTemplate) Control.ToString() Control.Background Control.BorderBrush Control.BorderThickness Control.FontFamily Control.FontSize Control.FontStretch Control.FontStyle Control.FontWeight Control.Foreground Control.HandlesScrolling Control.HorizontalContentAlignment Control.IsTabStop Control.Padding Control.TabIndex Control.Template Control.VerticalContentAlignment Control.MouseDoubleClick Control.PreviewMouseDoubleClick FrameworkElement.ActualHeightProperty FrameworkElement.ActualWidthProperty FrameworkElement.BindingGroupProperty FrameworkElement.ContextMenuClosingEvent FrameworkElement.ContextMenuOpeningEvent FrameworkElement.ContextMenuProperty FrameworkElement.CursorProperty FrameworkElement.DataContextProperty FrameworkElement.DefaultStyleKeyProperty FrameworkElement.FlowDirectionProperty FrameworkElement.FocusVisualStyleProperty FrameworkElement.ForceCursorProperty FrameworkElement.HeightProperty FrameworkElement.HorizontalAlignmentProperty FrameworkElement.InputScopeProperty FrameworkElement.LanguageProperty FrameworkElement.LayoutTransformProperty FrameworkElement.LoadedEvent FrameworkElement.MarginProperty FrameworkElement.MaxHeightProperty FrameworkElement.MaxWidthProperty FrameworkElement.MinHeightProperty FrameworkElement.MinWidthProperty FrameworkElement.NameProperty FrameworkElement.OverridesDefaultStyleProperty FrameworkElement.RequestBringIntoViewEvent FrameworkElement.SizeChangedEvent FrameworkElement.StyleProperty FrameworkElement.TagProperty FrameworkElement.ToolTipClosingEvent FrameworkElement.ToolTipOpeningEvent FrameworkElement.ToolTipProperty FrameworkElement.UnloadedEvent FrameworkElement.UseLayoutRoundingProperty FrameworkElement.VerticalAlignmentProperty FrameworkElement.WidthProperty FrameworkElement.AddLogicalChild(object) FrameworkElement.ApplyTemplate() FrameworkElement.ArrangeCore(Rect) FrameworkElement.BeginInit() FrameworkElement.BeginStoryboard(Storyboard) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior, bool) FrameworkElement.BringIntoView() FrameworkElement.BringIntoView(Rect) FrameworkElement.EndInit() FrameworkElement.FindName(string) FrameworkElement.FindResource(object) FrameworkElement.GetBindingExpression(DependencyProperty) FrameworkElement.GetFlowDirection(DependencyObject) FrameworkElement.GetLayoutClip(Size) FrameworkElement.GetTemplateChild(string) FrameworkElement.GetUIParentCore() FrameworkElement.GetVisualChild(int) FrameworkElement.MeasureCore(Size) FrameworkElement.MoveFocus(TraversalRequest) FrameworkElement.OnApplyTemplate() FrameworkElement.OnContextMenuClosing(ContextMenuEventArgs) FrameworkElement.OnContextMenuOpening(ContextMenuEventArgs) FrameworkElement.OnGotFocus(RoutedEventArgs) FrameworkElement.OnInitialized(EventArgs) FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs) FrameworkElement.OnRenderSizeChanged(SizeChangedInfo) FrameworkElement.OnStyleChanged(Style, Style) FrameworkElement.OnToolTipClosing(ToolTipEventArgs) FrameworkElement.OnToolTipOpening(ToolTipEventArgs) FrameworkElement.ParentLayoutInvalidated(UIElement) FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.RegisterName(string, object) FrameworkElement.RemoveLogicalChild(object) FrameworkElement.SetBinding(DependencyProperty, string) FrameworkElement.SetBinding(DependencyProperty, BindingBase) FrameworkElement.SetFlowDirection(DependencyObject, FlowDirection) FrameworkElement.SetResourceReference(DependencyProperty, object) FrameworkElement.TryFindResource(object) FrameworkElement.UnregisterName(string) FrameworkElement.UpdateDefaultStyle() FrameworkElement.ActualHeight FrameworkElement.ActualWidth FrameworkElement.BindingGroup FrameworkElement.ContextMenu FrameworkElement.Cursor FrameworkElement.DataContext FrameworkElement.DefaultStyleKey FrameworkElement.FlowDirection FrameworkElement.FocusVisualStyle FrameworkElement.ForceCursor FrameworkElement.Height FrameworkElement.HorizontalAlignment FrameworkElement.InheritanceBehavior FrameworkElement.InputScope FrameworkElement.IsInitialized FrameworkElement.IsLoaded FrameworkElement.Language FrameworkElement.LayoutTransform FrameworkElement.Margin FrameworkElement.MaxHeight FrameworkElement.MaxWidth FrameworkElement.MinHeight FrameworkElement.MinWidth FrameworkElement.Name FrameworkElement.OverridesDefaultStyle FrameworkElement.Parent FrameworkElement.Resources FrameworkElement.Style FrameworkElement.Tag FrameworkElement.TemplatedParent FrameworkElement.ToolTip FrameworkElement.Triggers FrameworkElement.UseLayoutRounding FrameworkElement.VerticalAlignment FrameworkElement.VisualChildrenCount FrameworkElement.Width FrameworkElement.ContextMenuClosing FrameworkElement.ContextMenuOpening FrameworkElement.DataContextChanged FrameworkElement.Initialized FrameworkElement.Loaded FrameworkElement.RequestBringIntoView FrameworkElement.SizeChanged FrameworkElement.SourceUpdated FrameworkElement.TargetUpdated FrameworkElement.ToolTipClosing FrameworkElement.ToolTipOpening FrameworkElement.Unloaded UIElement.AllowDropProperty UIElement.AreAnyTouchesCapturedProperty UIElement.AreAnyTouchesCapturedWithinProperty UIElement.AreAnyTouchesDirectlyOverProperty UIElement.AreAnyTouchesOverProperty UIElement.BitmapEffectInputProperty UIElement.BitmapEffectProperty UIElement.CacheModeProperty UIElement.ClipProperty UIElement.ClipToBoundsProperty UIElement.DragEnterEvent UIElement.DragLeaveEvent UIElement.DragOverEvent UIElement.DropEvent UIElement.EffectProperty UIElement.FocusableProperty UIElement.GiveFeedbackEvent UIElement.GotFocusEvent UIElement.GotKeyboardFocusEvent UIElement.GotMouseCaptureEvent UIElement.GotStylusCaptureEvent UIElement.GotTouchCaptureEvent UIElement.IsEnabledProperty UIElement.IsFocusedProperty UIElement.IsHitTestVisibleProperty UIElement.IsKeyboardFocusedProperty UIElement.IsKeyboardFocusWithinProperty UIElement.IsManipulationEnabledProperty UIElement.IsMouseCapturedProperty UIElement.IsMouseCaptureWithinProperty UIElement.IsMouseDirectlyOverProperty UIElement.IsMouseOverProperty UIElement.IsStylusCapturedProperty UIElement.IsStylusCaptureWithinProperty UIElement.IsStylusDirectlyOverProperty UIElement.IsStylusOverProperty UIElement.IsVisibleProperty UIElement.KeyDownEvent UIElement.KeyUpEvent UIElement.LostFocusEvent UIElement.LostKeyboardFocusEvent UIElement.LostMouseCaptureEvent UIElement.LostStylusCaptureEvent UIElement.LostTouchCaptureEvent UIElement.ManipulationBoundaryFeedbackEvent UIElement.ManipulationCompletedEvent UIElement.ManipulationDeltaEvent UIElement.ManipulationInertiaStartingEvent UIElement.ManipulationStartedEvent UIElement.ManipulationStartingEvent UIElement.MouseDownEvent UIElement.MouseEnterEvent UIElement.MouseLeaveEvent UIElement.MouseLeftButtonDownEvent UIElement.MouseLeftButtonUpEvent UIElement.MouseMoveEvent UIElement.MouseRightButtonDownEvent UIElement.MouseRightButtonUpEvent UIElement.MouseUpEvent UIElement.MouseWheelEvent UIElement.OpacityMaskProperty UIElement.OpacityProperty UIElement.PreviewDragEnterEvent UIElement.PreviewDragLeaveEvent UIElement.PreviewDragOverEvent UIElement.PreviewDropEvent UIElement.PreviewGiveFeedbackEvent UIElement.PreviewGotKeyboardFocusEvent UIElement.PreviewKeyDownEvent UIElement.PreviewKeyUpEvent UIElement.PreviewLostKeyboardFocusEvent UIElement.PreviewMouseDownEvent UIElement.PreviewMouseLeftButtonDownEvent UIElement.PreviewMouseLeftButtonUpEvent UIElement.PreviewMouseMoveEvent UIElement.PreviewMouseRightButtonDownEvent UIElement.PreviewMouseRightButtonUpEvent UIElement.PreviewMouseUpEvent UIElement.PreviewMouseWheelEvent UIElement.PreviewQueryContinueDragEvent UIElement.PreviewStylusButtonDownEvent UIElement.PreviewStylusButtonUpEvent UIElement.PreviewStylusDownEvent UIElement.PreviewStylusInAirMoveEvent UIElement.PreviewStylusInRangeEvent UIElement.PreviewStylusMoveEvent UIElement.PreviewStylusOutOfRangeEvent UIElement.PreviewStylusSystemGestureEvent UIElement.PreviewStylusUpEvent UIElement.PreviewTextInputEvent UIElement.PreviewTouchDownEvent UIElement.PreviewTouchMoveEvent UIElement.PreviewTouchUpEvent UIElement.QueryContinueDragEvent UIElement.QueryCursorEvent UIElement.RenderTransformOriginProperty UIElement.RenderTransformProperty UIElement.SnapsToDevicePixelsProperty UIElement.StylusButtonDownEvent UIElement.StylusButtonUpEvent UIElement.StylusDownEvent UIElement.StylusEnterEvent UIElement.StylusInAirMoveEvent UIElement.StylusInRangeEvent UIElement.StylusLeaveEvent UIElement.StylusMoveEvent UIElement.StylusOutOfRangeEvent UIElement.StylusSystemGestureEvent UIElement.StylusUpEvent UIElement.TextInputEvent UIElement.TouchDownEvent UIElement.TouchEnterEvent UIElement.TouchLeaveEvent UIElement.TouchMoveEvent UIElement.TouchUpEvent UIElement.UidProperty UIElement.VisibilityProperty UIElement.AddHandler(RoutedEvent, Delegate) UIElement.AddHandler(RoutedEvent, Delegate, bool) UIElement.AddToEventRoute(EventRoute, RoutedEventArgs) UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock) UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) UIElement.Arrange(Rect) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) UIElement.CaptureMouse() UIElement.CaptureStylus() UIElement.CaptureTouch(TouchDevice) UIElement.Focus() UIElement.GetAnimationBaseValue(DependencyProperty) UIElement.HitTestCore(GeometryHitTestParameters) UIElement.HitTestCore(PointHitTestParameters) UIElement.InputHitTest(Point) UIElement.InvalidateArrange() UIElement.InvalidateMeasure() UIElement.InvalidateVisual() UIElement.Measure(Size) UIElement.OnAccessKey(AccessKeyEventArgs) UIElement.OnChildDesiredSizeChanged(UIElement) UIElement.OnDragEnter(DragEventArgs) UIElement.OnDragLeave(DragEventArgs) UIElement.OnDragOver(DragEventArgs) UIElement.OnDrop(DragEventArgs) UIElement.OnGiveFeedback(GiveFeedbackEventArgs) UIElement.OnGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnGotMouseCapture(MouseEventArgs) UIElement.OnGotStylusCapture(StylusEventArgs) UIElement.OnGotTouchCapture(TouchEventArgs) UIElement.OnIsKeyboardFocusedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnKeyDown(KeyEventArgs) UIElement.OnKeyUp(KeyEventArgs) UIElement.OnLostFocus(RoutedEventArgs) UIElement.OnLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnLostMouseCapture(MouseEventArgs) UIElement.OnLostStylusCapture(StylusEventArgs) UIElement.OnLostTouchCapture(TouchEventArgs) UIElement.OnManipulationCompleted(ManipulationCompletedEventArgs) UIElement.OnManipulationDelta(ManipulationDeltaEventArgs) UIElement.OnManipulationInertiaStarting(ManipulationInertiaStartingEventArgs) UIElement.OnManipulationStarted(ManipulationStartedEventArgs) UIElement.OnManipulationStarting(ManipulationStartingEventArgs) UIElement.OnMouseDown(MouseButtonEventArgs) UIElement.OnMouseEnter(MouseEventArgs) UIElement.OnMouseLeave(MouseEventArgs) UIElement.OnMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnMouseMove(MouseEventArgs) UIElement.OnMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnMouseUp(MouseButtonEventArgs) UIElement.OnMouseWheel(MouseWheelEventArgs) UIElement.OnPreviewDragEnter(DragEventArgs) UIElement.OnPreviewDragLeave(DragEventArgs) UIElement.OnPreviewDragOver(DragEventArgs) UIElement.OnPreviewDrop(DragEventArgs) UIElement.OnPreviewGiveFeedback(GiveFeedbackEventArgs) UIElement.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewKeyDown(KeyEventArgs) UIElement.OnPreviewKeyUp(KeyEventArgs) UIElement.OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewMouseDown(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseMove(MouseEventArgs) UIElement.OnPreviewMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseUp(MouseButtonEventArgs) UIElement.OnPreviewMouseWheel(MouseWheelEventArgs) UIElement.OnPreviewQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnPreviewStylusButtonDown(StylusButtonEventArgs) UIElement.OnPreviewStylusButtonUp(StylusButtonEventArgs) UIElement.OnPreviewStylusDown(StylusDownEventArgs) UIElement.OnPreviewStylusInAirMove(StylusEventArgs) UIElement.OnPreviewStylusInRange(StylusEventArgs) UIElement.OnPreviewStylusMove(StylusEventArgs) UIElement.OnPreviewStylusOutOfRange(StylusEventArgs) UIElement.OnPreviewStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnPreviewStylusUp(StylusEventArgs) UIElement.OnPreviewTextInput(TextCompositionEventArgs) UIElement.OnPreviewTouchDown(TouchEventArgs) UIElement.OnPreviewTouchMove(TouchEventArgs) UIElement.OnPreviewTouchUp(TouchEventArgs) UIElement.OnQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnQueryCursor(QueryCursorEventArgs) UIElement.OnRender(DrawingContext) UIElement.OnStylusButtonDown(StylusButtonEventArgs) UIElement.OnStylusButtonUp(StylusButtonEventArgs) UIElement.OnStylusDown(StylusDownEventArgs) UIElement.OnStylusEnter(StylusEventArgs) UIElement.OnStylusInAirMove(StylusEventArgs) UIElement.OnStylusInRange(StylusEventArgs) UIElement.OnStylusLeave(StylusEventArgs) UIElement.OnStylusMove(StylusEventArgs) UIElement.OnStylusOutOfRange(StylusEventArgs) UIElement.OnStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnStylusUp(StylusEventArgs) UIElement.OnTextInput(TextCompositionEventArgs) UIElement.OnTouchDown(TouchEventArgs) UIElement.OnTouchEnter(TouchEventArgs) UIElement.OnTouchLeave(TouchEventArgs) UIElement.OnTouchMove(TouchEventArgs) UIElement.OnTouchUp(TouchEventArgs) UIElement.RaiseEvent(RoutedEventArgs) UIElement.ReleaseAllTouchCaptures() UIElement.ReleaseMouseCapture() UIElement.ReleaseStylusCapture() UIElement.ReleaseTouchCapture(TouchDevice) UIElement.RemoveHandler(RoutedEvent, Delegate) UIElement.TranslatePoint(Point, UIElement) UIElement.UpdateLayout() UIElement.AllowDrop UIElement.AreAnyTouchesCaptured UIElement.AreAnyTouchesCapturedWithin UIElement.AreAnyTouchesDirectlyOver UIElement.AreAnyTouchesOver UIElement.BitmapEffect UIElement.BitmapEffectInput UIElement.CacheMode UIElement.Clip UIElement.ClipToBounds UIElement.CommandBindings UIElement.DesiredSize UIElement.Effect UIElement.Focusable UIElement.HasAnimatedProperties UIElement.HasEffectiveKeyboardFocus UIElement.InputBindings UIElement.IsArrangeValid UIElement.IsEnabled UIElement.IsEnabledCore UIElement.IsFocused UIElement.IsHitTestVisible UIElement.IsInputMethodEnabled UIElement.IsKeyboardFocused UIElement.IsKeyboardFocusWithin UIElement.IsManipulationEnabled UIElement.IsMeasureValid UIElement.IsMouseCaptured UIElement.IsMouseCaptureWithin UIElement.IsMouseDirectlyOver UIElement.IsMouseOver UIElement.IsStylusCaptured UIElement.IsStylusCaptureWithin UIElement.IsStylusDirectlyOver UIElement.IsStylusOver UIElement.IsVisible UIElement.Opacity UIElement.OpacityMask UIElement.PersistId UIElement.RenderSize UIElement.RenderTransform UIElement.RenderTransformOrigin UIElement.SnapsToDevicePixels UIElement.StylusPlugIns UIElement.TouchesCaptured UIElement.TouchesCapturedWithin UIElement.TouchesDirectlyOver UIElement.TouchesOver UIElement.Uid UIElement.Visibility UIElement.DragEnter UIElement.DragLeave UIElement.DragOver UIElement.Drop UIElement.FocusableChanged UIElement.GiveFeedback UIElement.GotFocus UIElement.GotKeyboardFocus UIElement.GotMouseCapture UIElement.GotStylusCapture UIElement.GotTouchCapture UIElement.IsEnabledChanged UIElement.IsHitTestVisibleChanged UIElement.IsKeyboardFocusedChanged UIElement.IsKeyboardFocusWithinChanged UIElement.IsMouseCapturedChanged UIElement.IsMouseCaptureWithinChanged UIElement.IsMouseDirectlyOverChanged UIElement.IsStylusCapturedChanged UIElement.IsStylusCaptureWithinChanged UIElement.IsStylusDirectlyOverChanged UIElement.IsVisibleChanged UIElement.KeyDown UIElement.KeyUp UIElement.LayoutUpdated UIElement.LostFocus UIElement.LostKeyboardFocus UIElement.LostMouseCapture UIElement.LostStylusCapture UIElement.LostTouchCapture UIElement.ManipulationBoundaryFeedback UIElement.ManipulationCompleted UIElement.ManipulationDelta UIElement.ManipulationInertiaStarting UIElement.ManipulationStarted UIElement.ManipulationStarting UIElement.MouseDown UIElement.MouseEnter UIElement.MouseLeave UIElement.MouseLeftButtonDown UIElement.MouseLeftButtonUp UIElement.MouseMove UIElement.MouseRightButtonDown UIElement.MouseRightButtonUp UIElement.MouseUp UIElement.MouseWheel UIElement.PreviewDragEnter UIElement.PreviewDragLeave UIElement.PreviewDragOver UIElement.PreviewDrop UIElement.PreviewGiveFeedback UIElement.PreviewGotKeyboardFocus UIElement.PreviewKeyDown UIElement.PreviewKeyUp UIElement.PreviewLostKeyboardFocus UIElement.PreviewMouseDown UIElement.PreviewMouseLeftButtonDown UIElement.PreviewMouseLeftButtonUp UIElement.PreviewMouseMove UIElement.PreviewMouseRightButtonDown UIElement.PreviewMouseRightButtonUp UIElement.PreviewMouseUp UIElement.PreviewMouseWheel UIElement.PreviewQueryContinueDrag UIElement.PreviewStylusButtonDown UIElement.PreviewStylusButtonUp UIElement.PreviewStylusDown UIElement.PreviewStylusInAirMove UIElement.PreviewStylusInRange UIElement.PreviewStylusMove UIElement.PreviewStylusOutOfRange UIElement.PreviewStylusSystemGesture UIElement.PreviewStylusUp UIElement.PreviewTextInput UIElement.PreviewTouchDown UIElement.PreviewTouchMove UIElement.PreviewTouchUp UIElement.QueryContinueDrag UIElement.QueryCursor UIElement.StylusButtonDown UIElement.StylusButtonUp UIElement.StylusDown UIElement.StylusEnter UIElement.StylusInAirMove UIElement.StylusInRange UIElement.StylusLeave UIElement.StylusMove UIElement.StylusOutOfRange UIElement.StylusSystemGesture UIElement.StylusUp UIElement.TextInput UIElement.TouchDown UIElement.TouchEnter UIElement.TouchLeave UIElement.TouchMove UIElement.TouchUp Visual.AddVisualChild(Visual) Visual.FindCommonVisualAncestor(DependencyObject) Visual.IsAncestorOf(DependencyObject) Visual.IsDescendantOf(DependencyObject) Visual.PointFromScreen(Point) Visual.PointToScreen(Point) Visual.RemoveVisualChild(Visual) Visual.TransformToAncestor(Visual3D) Visual.TransformToAncestor(Visual) Visual.TransformToDescendant(Visual) Visual.TransformToVisual(Visual) Visual.VisualBitmapEffect Visual.VisualBitmapEffectInput Visual.VisualBitmapScalingMode Visual.VisualCacheMode Visual.VisualClearTypeHint Visual.VisualClip Visual.VisualEdgeMode Visual.VisualEffect Visual.VisualOffset Visual.VisualOpacity Visual.VisualOpacityMask Visual.VisualParent Visual.VisualScrollableAreaClip Visual.VisualTextHintingMode Visual.VisualTextRenderingMode Visual.VisualTransform Visual.VisualXSnappingGuidelines Visual.VisualYSnappingGuidelines DependencyObject.ClearValue(DependencyProperty) DependencyObject.ClearValue(DependencyPropertyKey) DependencyObject.CoerceValue(DependencyProperty) DependencyObject.Equals(object) DependencyObject.GetHashCode() DependencyObject.GetLocalValueEnumerator() DependencyObject.GetValue(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.ReadLocalValue(DependencyProperty) DependencyObject.SetCurrentValue(DependencyProperty, object) DependencyObject.SetValue(DependencyProperty, object) DependencyObject.SetValue(DependencyPropertyKey, object) DependencyObject.ShouldSerializeProperty(DependencyProperty) DependencyObject.DependencyObjectType DependencyObject.IsSealed DispatcherObject.Dispatcher object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RenderingWindow() Ctor. public RenderingWindow() Properties Displayee Gets or sets the current displayable 3D object. When setting a new displayee, the view will be reset to home position if no previous displayee was set. public IDisplayee Displayee { get; set; } Property Value IDisplayee RenderingCanvas Gets the rendering canvas control used for displaying 3D content. public RenderingCanvas RenderingCanvas { get; } Property Value RenderingCanvas Methods GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine"
},
"api/Hi.WpfPlus.Disp.WpfDispUtil.html": {
"href": "api/Hi.WpfPlus.Disp.WpfDispUtil.html",
"title": "Class WpfDispUtil | HiAPI-C# 2025",
"summary": "Class WpfDispUtil Namespace Hi.WpfPlus.Disp Assembly Hi.WpfPlus.dll Registers WPF as the display framework for DispFrameUtil, supporting multiple windows identified by key. public static class WpfDispUtil Inheritance object WpfDispUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Usage pattern: call Call(string, params IDisplayee[]) to queue display content, then call RunApplication() to start the WPF application and show windows. Each unique key creates a separate RenderingWindow. Calling Call(string, params IDisplayee[]) with the same key updates the existing window. // Queue display content (before or after Run) DispFrameUtil.CallDispFrame(\"Window1\", displayee1); DispFrameUtil.CallDispFrame(\"Window2\", displayee2); // Start the WPF application (blocks until all windows are closed) DispFrameWpf.Run(); Methods Call(string, params IDisplayee[]) Configures the display engine with the specified displayees for the given title. public static DispEngineConfig Call(string title, params IDisplayee[] displayees) Parameters title string The title/key to identify the display window. displayees IDisplayee[] The displayees to be configured. Returns DispEngineConfig The display engine configuration. Init() Initializes the display engine. public static void Init() RunApplication() Starts the WPF application and shows all configured windows. Blocks until all windows are closed. public static void RunApplication() RunApplication(string, params IDisplayee[]) Configures the display engine with the specified displayees and starts the WPF application. public static void RunApplication(string title, params IDisplayee[] displayees) Parameters title string The title/key to identify the display window. displayees IDisplayee[] The displayees to be configured."
},
"api/Hi.WpfPlus.Disp.html": {
"href": "api/Hi.WpfPlus.Disp.html",
"title": "Namespace Hi.WpfPlus.Disp | HiAPI-C# 2025",
"summary": "Namespace Hi.WpfPlus.Disp Classes RenderingCanvas Provides a WPF rendering canvas for 3D visualization of HiAPI components. Handles user interactions, rendering, and integration with the DispEngine system. RenderingWindow Window for 3D rendering. WpfDispUtil Registers WPF as the display framework for DispFrameUtil, supporting multiple windows identified by key."
},
"api/HiMachining.Milling.ClMillingDevice.html": {
"href": "api/HiMachining.Milling.ClMillingDevice.html",
"title": "Class ClMillingDevice | HiAPI-C# 2025",
"summary": "Class ClMillingDevice Namespace HiMachining.Milling Assembly HiMech.dll A milling device driven by CL(Cutter Location). public class ClMillingDevice : IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary Inheritance object ClMillingDevice Implements IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary<Anchor, Mat4d>) DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[]) InvokeUtil.SelfInvoke<TSrc>(TSrc, Action<TSrc>) InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClMillingDevice() Ctor. public ClMillingDevice() ClMillingDevice(XElement, string) Initializes a new instance from XML. public ClMillingDevice(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Properties Cl Gets or sets the current program cutter location in workpiece coordinates. public DVec3d Cl { get; set; } Property Value DVec3d KeyBranch Gets the branch connecting table buckle and tool buckle. public Branch KeyBranch { get; } Property Value Branch KeyTransformer An ITransformer driven by Cl. Null when KeyBranch is absent (a serialized device whose assembly carries no direct table-to-tool branch). public DynamicFreeform KeyTransformer { get; set; } Property Value DynamicFreeform MachiningEquipmentGetter Runtime property. For managing CL. public Func<MachiningEquipment> MachiningEquipmentGetter { get; set; } Property Value Func<MachiningEquipment> MainAsmb Main MainAsmb of this device. public Asmb MainAsmb { get; } Property Value Asmb 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[] TableBuckle Table buckle. public Anchor TableBuckle { get; } Property Value Anchor ToolBuckle Tool buckle. public Anchor ToolBuckle { get; } Property Value Anchor XName Name of XML element. public static string XName { get; } Property Value string Methods 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<Anchor, Solid> GetAnchorToSolidDictionary() Returns Dictionary<Anchor, Solid> A dictionary where keys are anchors and values are their associated solids. GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is 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 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()"
},
"api/HiMachining.Milling.html": {
"href": "api/HiMachining.Milling.html",
"title": "Namespace HiMachining.Milling | HiAPI-C# 2025",
"summary": "Namespace HiMachining.Milling Classes ClMillingDevice A milling device driven by CL(Cutter Location)."
},
"app-anatomy/common/dictionary-service-pattern.html": {
"href": "app-anatomy/common/dictionary-service-pattern.html",
"title": "DictionaryService and DictionaryHub Pattern | HiAPI-C# 2025",
"summary": "DictionaryService and DictionaryHub Pattern Overview A connection-scoped indexing pattern for referencing backend objects across hierarchical SignalR hub connections. Core Components DictionaryService: Manages connection-scoped index dictionaries First layer key: Hub connectionId (auto-generated by SignalR) Second layer key: LocalId (resource name) Value: References to backend objects (functions, getters/setters) DictionaryHub: Base hub that auto-cleans index entries on disconnect Architecture Root-Hub └── Child-Hub - has parent's connectionId └── Grandchild-Hub - has parent's connectionId Each hub gets a unique system-generated hub-connectionId. Child hubs receive parent's connectionId to access parent data. Key Patterns Parent ConnectionId Passing: Child hubs copy parent's function references via connectionId Frontend ConnectionId Chain: Components pass connectionId down the hierarchy Wrapper Function Pattern: Child hubs should create wrapper functions that dynamically retrieve and invoke parent functions at runtime, rather than directly copying references. This ensures type safety through runtime checking and supports dynamic function updates from the parent. Benefits Isolation: Each component has its own connection/index space Nesting Support: Same components can be nested without conflicts Auto-cleanup: Index entries cleaned on disconnect Data Inheritance: Access parent's backend objects via connectionId chain Best Practices Apply or inherit from DictionaryHub for auto-cleanup Use meaningful key names (e.g., “transformer-getter”) Always setup dictionary functions unconditionally during initialization - put condition checks inside the functions, not around the setup. This ensures child panels can access functions even when parent objects temporarily don't meet the conditions. Common Pitfalls Don't use child's connectionId to index parent's data"
},
"app-anatomy/common/webapi-with-hub-cleanup-assistence-pattern.html": {
"href": "app-anatomy/common/webapi-with-hub-cleanup-assistence-pattern.html",
"title": "Webapi with hub-cleapup assistence pattern | HiAPI-C# 2025",
"summary": "Webapi with hub-cleapup assistence pattern any of the index key should be registerForCleanup. i.e. any of indexXxx should follow the registerForCleanup. clean the indexed key which indexed by the host component in beforeUnmount. And so that the component doesn't clean the key that doesn't create by the component itself. Although cleanupHub clean them for sure, the code demonstrates example of pure web-api cleanup (So that it can be a complete web-api workflow). Notice before current key modified, the previous key should be called this.cleanupKey. A twin key should be made from the outside key to keep the lifecycle maintained."
},
"app-anatomy/controller/index.html": {
"href": "app-anatomy/controller/index.html",
"title": "Controller Page | HiAPI-C# 2025",
"summary": "Controller Page The Controller Page is responsible for configuring and managing the CNC controller settings for the machine tool. Key Models The key models used by the Controller Page are: HardNcEnv MachiningProjectDisplayee (GUI-layer, app-owned) The MachiningProjectDisplayee contains IsoCoordinateEntryDisplayee and HeidenhainCoordinateEntryDisplayee. They are GUI-layer composition classes owned by each front-end (every app carries its own copies, e.g. under HiNC-2025-webservice/Disp/) and compose only public API types. Connection with Main Panel The Controller Page is activated through the Main Panel's Util → Legacy-Controller entry. It retrieves the MachiningProject from the Main Panel and updates the model. Layout Controller Page Management Panel Head Line Object Management Menu Button file extension is NcEnv The pointed Editor Panel is Management Tabs Panel Title Label Management Tabs Panel Coordinate Table Tab ISO Coordinate Table Panel HardNcEnv.IsoCoordinateTable Display (Note that The XYZ is not sortable on the table.) Datum Preset Table Tab (Only visible for Heidenhain controllers) HeidenhainDatumPresetTable Panel (Note that The XYZ is not sortable on the table.) Show Datum Preset Toggle Button for HeidenhainCoordinateEntryDisplayee Datum Shift Table Tab (Only visible for Heidenhain controllers) (Note that The XYZ is not sortable on the table.) HeidenhainDatumShiftTable Panel Show Datum Shift Toggle Button for HeidenhainCoordinateEntryDisplayee Offset Table Tab MillingToolOffsetTable Panel Set Ideal Offset Dependent on Tool House Checkbox Machine Tab RapidFeedrate_mmdmin Settings ToolingTime Settings Linear Axis Limits Table StrokeLimitXyz_mm Min and Max for X, Y, Z Rotary Axis Table StrokeLimitAbc_rad Min and Max for A, B, C MaxRotarySpeedABC_radds for A, B, C Brand Tab CncBrand Selection Dropdown Syntec Fanuc Heidenhain Siemens Brand-specific Settings Panel (content varies based on selected brand) Config Tab EnableShortestRotary Setting Viewer Panel Viewer Toolbar RenderingCanvas Tool Bar Rendering Items SubMenu See Rendering Items SubMenu from Player extended RenderingCanvas Tool Bar. RenderingCanvas The DispEngine.Displayee is MachiningProjectDisplayee Tip Viewer Panel is not essential in the single user desktop application if this page raises a new window so that there arises a duplicate rendering content with the Main Window. This page should have a code-behind boolean property to add / remove the Viewer Panel. There should not preserve space for the un-existed Viewer Panel. Apply SetViewToIsometricView() on initialization if Viewer Panel has enabled. Tip Add a resizable splitter between the Manage Panel and Viewer Panel to allow users to customize the interface layout according to their needs. Behavior ISO Coordinate Table The ISO coordinate table allows users to edit and manage coordinates for the IsoCoordinateTable. Each entry consists of: An index identifier X, Y, Z coordinate values Action buttons to set the entry to program zero or machine zero Row selection updates IsoCoordinateEntryDisplayee.IsoCoordinateId. Datum Preset and Shift Tables (Heidenhain) These tables are specific to Heidenhain controllers and provide interfaces for: Setting datum preset positions in HeidenhainDatumPresetTable Configuring datum shifts in HeidenhainDatumShiftTable Visualizing selected datum in the 3D viewer with HeidenhainCoordinateEntryDisplayee Offset Table Manages tool offsets with the following capabilities: Display and edit ideal radius and height values in MillingToolOffsetTable Configure radial and axial wear values Option to automatically set ideal offset based on the MachiningToolHouse configuration Add new tool offset entries (when not using tool house dependency) Machine Configuration Controls machine-specific settings: RapidFeedrate_mmdmin (mm/min) ToolingTime (seconds) Stroke limits (minimum and maximum) for linear axes (StrokeLimitXyz_mm) Stroke limits and maximum speeds for rotary axes (StrokeLimitAbc_rad and MaxRotarySpeedABC_radds) Brand Selection Allows switching between different CNC controller brands via CncBrand: Syntec Fanuc Heidenhain Siemens Each brand may have specialized settings that appear when selected. Config Options General configuration options including: EnableShortestRotary optimization Source Code Path See this page for git repository. WPF Application Source Code Path Numerical/Controller/ControllerWindow Numerical/Controller/IsoCoordinateTablePanel Numerical/Controller/DatumPresetTablePanel Numerical/Controller/DatumShiftTablePanel Numerical/Controller/OffsetTablePanel Numerical/Controller/MachinePanel Numerical/Controller/BrandPanel Numerical/Controller/ConfigPanel Numerical/Controller/ControllerExtendedRenderingCanvasToolBar Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA) — see web-implementation.md for full detail. Controller/ControllerController.cs — REST endpoints (Initialize + CNC brand + ISO coordinate table + Heidenhain datum preset / shift + Milling tool offset table with row-level CRUD + Machine stroke/speed + Config + Master-axis char). wwwroot-src/src/pages/ControllerPage.vue — routed page, two-pane splitter + seven tabs with Heidenhain-conditional visibility + shared rendering viewer. wwwroot-src/src/api/controller.ts — typed wrapper covering every Controller endpoint. wwwroot-src/src/components/controller/ControllerExtendedToolBar.vue — Display Options dropdown on the viewer toolbar (reuses /api/rendering-flags just like PlayerExtendedToolBar.vue). wwwroot-src/src/components/controller/*.vue — per-tab components: CoordinateTableTab.vue — ISO coordinate table (string keys). DatumPresetTab.vue — Heidenhain-only datum preset. DatumShiftTab.vue — Heidenhain-only datum shift. OffsetTableTab.vue — MillingToolOffsetTable editor with row-level CRUD. MachineTab.vue — strokes + speeds + rapid feed (rad ↔ deg, rad/s ↔ rpm conversion client-side). BrandTab.vue — CNC brand + Heidenhain master-axis character. ConfigTab.vue — shortest-rotary toggle. wwwroot-src/src/components/widgets/ObjectManagementMenuButton.vue — reused object-management dropdown (see Object Management Menu Button)."
},
"app-anatomy/controller/web-implementation.html": {
"href": "app-anatomy/controller/web-implementation.html",
"title": "Controller Page Web Implementation | HiAPI-C# 2025",
"summary": "Controller Page Web Implementation This document describes the Quasar-based web implementation of the Controller Page in the HiNC-2025-webservice project. Overview The Controller Page is built on the Quasar CLI SPA that lives under HiNC-2025-webservice/wwwroot-src/. Top-level structure: Backend API controller: Controller/ControllerController.cs (extended; see Endpoints). Frontend Vue 3 / TypeScript <script setup> components: wwwroot-src/src/pages/ControllerPage.vue + seven sibling components under wwwroot-src/src/components/controller/. Typed API wrapper: wwwroot-src/src/api/controller.ts. Shared infrastructure reused unchanged: ObjectManagementMenuButton, RenderingCanvas, RenderingCanvasToolBar, NumericInput, useCleanupHub, projectStore. Backend Implementation Endpoints All endpoints live under Controller/ControllerController.cs (route prefix api/Controller). Endpoints introduced in the 2026-04-19 rebuild are marked new. Initialize POST /api/Controller/initialize - new. Registers the project's HardNcEnv under a fresh IndexService key so the ObjectManagementMenuButton can target it. Returns { ncEnvKey, cncBrand }. Brand GET/PUT /api/Controller/cnc-brand - read / write CncBrand. GET/PUT /api/Controller/heidenhain-master-axis-char - new. Exposes HeidenhainMasterAxisChar as a single-character string (A, B, or C). ISO coordinate table (string keys: G54, ..., G59.9) GET /api/Controller/iso-coordinate-table 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. Heidenhain datum preset / shift GET/PUT /api/Controller/heidenhain-datum-preset-table and /{index} POST /api/Controller/heidenhain-datum-preset-table/{index}/reset - new. Resets the entry to zero (matches WPF DatumPresetTablePanel.SetDatumPosition_Click). GET/PUT /api/Controller/heidenhain-datum-shift-table and /{index} POST /api/Controller/heidenhain-datum-shift-table/{index}/reset - new. Milling tool offset table (MillingToolOffsetTable) GET /api/Controller/milling-tool-offset-table - returns Dictionary<int, MillingToolOffsetTableRow>. PUT /api/Controller/milling-tool-offset-table - whole-table replacement (legacy batch API, still supported). PUT /api/Controller/milling-tool-offset-table/{toolId:int} - new. Row-level PUT. POST /api/Controller/milling-tool-offset-table - new. Adds a default-valued row and returns the new tool ID. DELETE /api/Controller/milling-tool-offset-table/{toolId:int} - new. POST /api/Controller/milling-tool-offset-table/{toolId:int}/rename - new. Body: int newToolId. Rejects duplicate keys. POST /api/Controller/set-ideal-offset-from-toolhouse - recomputes the offset table from the current MachiningToolHouse. GET/PUT /api/Controller/ideal-offset-dependent - IsIdealOffsetDependentOnToolHouse toggle. Machine (strokes, speeds, rapid feed) GET/PUT /api/Controller/rapid-feedrate GET/PUT /api/Controller/tooling-time GET/PUT /api/Controller/stroke-limit-xyz - double[6] in mm. GET/PUT /api/Controller/stroke-limit-abc - double[6] in radians. GET/PUT /api/Controller/max-rotary-speed-abc - double[3] in rad/s. Config GET/PUT /api/Controller/shortest-rotary - EnableShortestRotary. 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. Frontend Implementation pages/ControllerPage.vue Two-pane <q-splitter>. Left: management tabs. Right: rendering viewer. Head line: ObjectManagementMenuButton + “Controller” title + status badge; binds to HardNcEnv via the initialize endpoint. Tabs: a <q-tabs> row with seven tabs. Datum Preset and Datum Shift are gated behind isHeidenhain (cncBrand === CncBrand.Heidenhain), mirroring the WPF UpdateBrandSpecificTabs() behaviour. Viewer: RenderingCanvasToolBar (View dropdown) + ControllerExtendedToolBar (Display Options dropdown) + RenderingCanvas. src/api/controller.ts Full-feature typed wrapper. Retains the CncBrand / getCncBrand exports used by PlayerExtendedToolBar.vue so the Player page stays compatible. Adds initializeController, row-level offset-table helpers, master-axis char read/write, and the two new datum reset helpers. Per-tab components (src/components/controller/) CoordinateTableTab.vue - string-keyed ISO coordinate editor (G54, ..., G59.9). P0 / M0 action buttons. Row-click → iso-coordinate-selection so the selected coordinate is highlighted in the viewer. DatumPresetTab.vue - Heidenhain-only. Q339 int key. Reset-to-zero action. “Show on Display” icon toggles RenderingFlag.HeidenhainCoordinate. DatumShiftTab.vue - Heidenhain-only. D int key. Same structure as DatumPresetTab. OffsetTableTab.vue - MillingToolOffsetTable editor. When isIdealOffsetDependentOnToolHouse is on, tool IDs are read-only and a “Refresh from Tool House” button appears. When off, each tool ID is inline-editable via the shared NumericInput, and an Add button creates new rows. MachineTab.vue - Rapid Feedrate (mm/min) + Tooling Time (sec) + Linear Stroke (mm) + Rotary Stroke (deg) + Max Rotary Speed (rpm). Client-side unit conversion (rad ↔ deg, rad/s ↔ rpm) in the onStrokeAbcChange / onMaxRotaryChange handlers. Uses NumericInput so the backend's ±Infinity default stroke limits display literally. BrandTab.vue - <q-select> with Fanuc / Heidenhain / Mazak / Siemens / Syntec. When Heidenhain, exposes a Master-axis character <q-select> with options A / B / C. Emits @brand-changed to the parent. ConfigTab.vue - “Enable Shortest Rotary Path” toggle + info banner. ControllerExtendedToolBar.vue Thin Display Options ▾ wrapper around the shared /api/rendering-flags endpoints, grouped into Solid / Coordinate / Display Aids (the same structure as PlayerExtendedToolBar.vue). The Heidenhain Coordinate row is visible only when the current brand is Heidenhain. Mirrors the win-desktop ControllerExtendedRenderingCanvasToolBar.xaml which is itself a RenderingFlagSubmenu wrapper. Integration Points Shared displayee with Player: initialize-display/{connectionId} attaches ProjectDisplayeeService.MachiningProjectDisplayee, so flag toggles on the Controller page's extended toolbar also update the Player viewer. Project reload: the page is hosted under MainLayout.vue's <keep-alive :key=\"projectEpoch\"> wrapper, so it remounts automatically on project open / reload (no explicit project-watch boilerplate in ControllerPage.vue). Cleanup hub: initialize returns a fresh NcEnv key each time; the page registers it with useCleanupHub so it is dropped on unmount to prevent IndexService leaks. Notable design decisions Row-level tool-offset CRUD replaces the older “PUT whole table” pattern. Backed by the four endpoints PUT /{toolId} (update one row), POST (add a default-valued row), DELETE /{toolId} (remove one row), and POST /{toolId}/rename (change the tool ID of an existing row). Infinity round-trip: Program.cs enables JsonNumberHandling.AllowNamedFloatingPointLiterals, and the shared NumericInput.vue already parses / formats Infinity, -Infinity, and NaN strings. Default StrokeLimitXyz_mm of [-Inf, +Inf, ...] is therefore displayed and editable without any special handling in MachineTab.vue. IsoCoordinateTable string keys: the table is a Dictionary<string, Vec3d> with human-readable G-code keys (\"G54\", \"G59.2\"). The frontend consumes this directly - no IndexDisplay computed property is required. See iso-coordinate-table-string-key.md in the Second Brain. Heidenhain-conditional tab visibility is driven by a single cncBrand: CncBrandValue | null state on the page. BrandTab emits @brand-changed; ObjectManagementMenuButton reloads trigger a full initialize refetch. Switching away from Heidenhain while one of those tabs is active falls back to Coordinate Table. Key Differences from WPF Implementation Dependency-free SPA: served by the same ASP.NET Core host that provides the REST API; no embedded WPF or web-view bridge. Component architecture: Vue 3 <script setup> + Quasar <q-tabs> / <q-splitter> / <q-markup-table> / <q-select> instead of WPF UserControl + TabControl + DataGrid. Shared displayee: the Quasar implementation binds MachiningProjectDisplayee once (via initialize-display) and lets the rendering-flags API drive toggles, rather than each WPF tab owning per-tab ShowXxx bool bindings. Granular endpoints: both the legacy and Quasar implementations split NcEnv into per-property endpoints, but the Quasar implementation additionally introduces row-level CRUD for the tool offset table. Unit conversion: handled in the per-tab component (rad ↔ deg, rad/s ↔ rpm), same as the legacy draft. Future Enhancements Undo / redo coordination with HardNcEnv's change-tracking. Batch updates (debounced “commit all deltas” for high-frequency sliders). Keyboard shortcuts (Arrow keys for row navigation, Enter to commit, Esc to revert inline edits). Additional per-row tooltips explaining each column."
},
"app-anatomy/general-rules.html": {
"href": "app-anatomy/general-rules.html",
"title": "General Rules | HiAPI-C# 2025",
"summary": "General Rules This document describes the common patterns and conventions used throughout the HiNC GUI codebase. Message and Exception Handling HiNC uses three independent message categories: Diagnostic (IProgress<object>), UI Notification (MessageBoardUtil), and App Log (ILogger). See Message Management for the full design pattern. For async exception handling, use CatchExceptions with a caller-provided handler: await task.CatchExceptions(ex => progress?.Report(ex)); The Bottom Message Bar displays UI-level notifications. The Session Message Panel displays session diagnostic messages. Loose Manner The Loose Manner pattern handles rapidly-called synchronous actions where only the last call needs to be effective. The LooseRunner class manages skippable rapid-calling synchronous actions. When an action is called rapidly, only the last call is executed while previous calls are safely skipped. The TryRun method is used to execute actions in this manner. The LooseRunner should be disposed when its owner is disposed to ensure proper resource cleanup. GUI File Path Assignment See GUI File Path Assignment. Numeric Input/Output Handling The numeric-utils.js module handles special floating-point values (such as NaN, Infinity) in web forms. See Numeric Input/Output Utilities for details. Webapi with hub-cleapup assistence pattern Webapi with hub-cleapup assistence pattern Loose Couple If model of the UI component is null or mismatch, apply status badge instead of throwing exception to keep UI work. Translation Remarks See Translation Remarks."
},
"app-anatomy/geom/box3d-control.html": {
"href": "app-anatomy/geom/box3d-control.html",
"title": "Box3dControl | HiAPI-C# 2025",
"summary": "Box3dControl The Box3dControl provides a user interface for editing a 3D box defined by its minimum and maximum coordinates. Features Edit the minimum and maximum coordinates of the box View the calculated dimensions and center of the box Read-Only Mode and Edit Mode There are three sub-edit modes that can be selected in Edit Mode: Min and Max Min and Dimension Center and Dimension UI Layout The Box3dControl includes the following UI elements: Min Vec3dControl Max Vec3dControl Dimension Vec3dControl Center Vec3dControl The sub-edit mode rules the controls to readonly or editable. Since the native of Box3d is that only Min and Max Properties are editable, the other mode requires little additional logic to take effect. Source Code Path See this page for git repository. WPF Application Source Code Path Geom/Box3dControl Web Service Application Source Code Path wwwroot/geom/box3d-control.js Geom/Box3dHub.cs"
},
"app-anatomy/geom/cylindroid-control.html": {
"href": "app-anatomy/geom/cylindroid-control.html",
"title": "CylindroidControl | HiAPI-C# 2025",
"summary": "CylindroidControl The CylindroidControl provides a user interface for editing a cylindroid, which is a generalized cylinder defined by a series of radius values along the Z-axis. Features Edit the Z-radius pairs that define the cylindroid's profile Set the longitude number (resolution) for the cylindroid Add and remove Z-radius pairs UI Layout The CylindroidControl includes the following UI elements: Longitude Number - A numeric input for setting the resolution of the cylindroid Z-Radius Pairs - A DataGrid showing the Z-coordinate and radius pairs Add Button - Adds a new Z-radius pair Remove Button - Removes the selected Z-radius pair Source Code Path See this page for git repository. WPF Application Source Code Path Geom/CylindroidControl Web Service Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/geom/CylindroidEditor.vue — reusable Z-R pair editor (add / remove / edit); edits the cylindroid by IndexService key and emits changed so the owner can resync. wwwroot-src/src/api/geometry.ts — Cylindroid API wrappers. Geom/CylindroidController.cs — REST endpoints at /api/Cylindroid/* (Get / GetPairCount / GetPairAt / UpdatePairAt / UpdateAllPairs / AddPair / RemovePairAt / SortByZ)."
},
"app-anatomy/geom/extended-cylinder-panel.html": {
"href": "app-anatomy/geom/extended-cylinder-panel.html",
"title": "Extended Cylinder Panel | HiAPI-C# 2025",
"summary": "Extended Cylinder Panel The model is ExtendedCylinder. Layout Extended Cylinder Panel 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. Source Code Path See this page for git repository. WPF Application Source Code Path Geom/ExtendedCylinderControl Web Service Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/geom/ExtendedCylinderEditor.vue — FullLength input; reachable through GeometryEditor's kind dropdown (A3.1). wwwroot-src/src/api/geometry.ts — getExtendedCylinder / updateExtendedCylinderFullLength wrappers + createGeometry('ExtendedCylinder', key) factory. Geom/ExtendedCylinderController.cs — REST endpoints New / Get / UpdateFullLength / GetFullLength."
},
"app-anatomy/geom/geom-combination-control.html": {
"href": "app-anatomy/geom/geom-combination-control.html",
"title": "GeomCombinationControl | HiAPI-C# 2025",
"summary": "GeomCombinationControl The GeomCombinationControl provides a user interface for combining multiple geometric objects into a single composite geometry. This is useful for creating complex shapes from simpler primitives. Features Add multiple geometric objects to the combination Remove selected objects from the combination Edit the properties of each included geometry Support for various geometry types UI Layout The GeomCombinationControl includes the following UI elements: Geometry List - A ListView showing all the geometries in the combination Add Geometry - A section for adding new geometries: Geometry Type - A combo box for selecting the type of geometry to add Add Button - Adds a new geometry of the selected type to the combination Remove Button - Removes the selected geometry from the combination Geometry Properties - A container that shows the appropriate control for editing the selected geometry Supported Geometry Types The control supports adding the following geometry types to the combination: Box3d Cylindroid StlFile TransformationGeom Source Code Path See this page for git repository. WPF Application Source Code Path Geom/GeomCombinationControl Web Service Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/geom/GeomCombinationEditor.vue — children list with Add / Remove / Clear + per-child inline editors (Box3d / Cylindroid / StlFile; matches the backend AddItem switch). Reachable through GeometryEditor (and nested inside TransformationGeomEditor since TransformationGeomController.CreateGeom accepts \"GeomCombination\"). (A3.2). wwwroot-src/src/api/geometry.ts — getGeomCombination / addGeomCombinationItem / removeGeomCombinationItemAt / clearGeomCombination / indexGeomCombinationItemAt wrappers + createGeometry('GeomCombination', key) factory. Geom/GeomCombinationController.cs — REST endpoints New / Get / AddItem / RemoveItemAt / Clear / IndexItemAt / GetCount / GetItemTypeAt."
},
"app-anatomy/geom/geom-manage-control.html": {
"href": "app-anatomy/geom/geom-manage-control.html",
"title": "Geometry Management Panel | HiAPI-C# 2025",
"summary": "Geometry Management Panel Geometry Management Panel get and set a TargetGeometry IStlSource. null is acceptable for TargetGeometry. The TargetGeometry can be convert to TransformationGeom or get out of the TransformationGeom. The conversion button can be hide by the code-behind property. The TargetGeometry can be convert to GeomCombination or get out of the GeomCombination if there is only one geometry in StlSources. The conversion button can be hide by the code-behind property. The geometry type in the Layout Geometry Management Panel Geometry Selection and Conversion Bar Geometry Type Selection Bar TransformationGeom Conversion Button GeomCombination Conversion Button Content Panel (varied by the TargetGeometry) Geometry Type Selection Bar Setting See Geometry Panels for the various geometry type. The geometries are availible by default: Box3d Cylindroid StlFile TransformationGeom GeomCombination The geometries are default hiding but they can be code-behind optionally enabled: CubeTree ExtendedCylinder Source Code Path See this page for git repository. WPF Application Source Code Path Geom/GeometryManagementPanel Web Service Application Source Code Path wwwroot/geom/geometry-management-panel.js Geom/GeomHub.cs Geom/GeometryController.cs"
},
"app-anatomy/geom/index.html": {
"href": "app-anatomy/geom/index.html",
"title": "Geometry Panels | HiAPI-C# 2025",
"summary": "Geometry Panels The Geometry Panels provide GUI components for editing Geometry Objects. The Geometry Management Control handles geometry selection, modification, and lifecycle management. Basic Geometry Controls Control Description Box3dControl Edits a 3D box defined by min/max coordinates CylindroidControl Edits a cylindroid with radius values along Z-axis StlFileControl Loads and manipulates STL files Transformation Controls Control Description TransformationGeomControl Applies transformations to geometric objects GeomCombinationControl Combines multiple geometric objects Special Controls Control Description Meshed Geometry Panel Manages meshed geometry (not IStlSource, but follows similar patterns) Extended Cylinder Panel Extended cylindrical geometry editing Source Code Locations See HiNC GUI Architecture for git repository links. WPF Application Geom/ Web Application wwwroot/geom/ Geom/GeomHub.cs"
},
"app-anatomy/geom/meshed-geom-panel.html": {
"href": "app-anatomy/geom/meshed-geom-panel.html",
"title": "Meshed Geometry Panel | HiAPI-C# 2025",
"summary": "Meshed Geometry Panel Key model is CubeTreeFile. Note The term Meshed Geometry is CubeTree. Layout Meshed Geom Panel File Selector Source Code Path See this page for git repository. WPF Application Source Code Path Geom/MeshedGeomPanel Web Service Application Source Code Path wwwroot/geom/meshed-geom-panel.js Geom/MeshedGeomHub.cs (to be created) Geom/GeometryController.cs"
},
"app-anatomy/geom/stlfile-control.html": {
"href": "app-anatomy/geom/stlfile-control.html",
"title": "StlFileControl | HiAPI-C# 2025",
"summary": "StlFileControl The StlFileControl provides a user interface for loading and manipulating STL (STereoLithography) files, which are commonly used for representing 3D surface geometry. Features Load STL files from the file system Display the path of the loaded STL file View basic information about the loaded STL (when available) UI Layout The StlFileControl includes the following UI elements: File Path - A text box showing the path of the loaded STL file Browse Button - Opens a file dialog to select an STL file Information Panel - Displays information about the loaded STL file (when available) Source Code Path See this page for git repository. WPF Application Source Code Path Geom/StlFileControl Web Service Application Source Code Path wwwroot/geom/stlfile-control.js Geom/StlFileHub.cs"
},
"app-anatomy/geom/transformation-geom-control.html": {
"href": "app-anatomy/geom/transformation-geom-control.html",
"title": "TransformationGeomControl | HiAPI-C# 2025",
"summary": "TransformationGeomControl The TransformationGeomControl provides a user interface for applying transformations to geometric objects. It allows you to wrap any geometry with transformation parameters like scaling, rotation, and translation. Features Select and edit the base geometry object Apply transformations including scaling, rotation, and translation Preview the transformed geometry UI Layout The TransformationGeomControl includes the following UI elements: Base Geometry - A combo box for selecting the type of base geometry Geometry Properties - A container that shows the appropriate control for the selected geometry type Transformation Selection Bar Available options (The dynamic transformer is not avaible): Null Transform Option (Show if originally existed or code-behind optionally assinged) Identity Transform Option (Show if originally existed or code-behind optionally assinged) Static Translate Option General Transform Option Freeform Transform Option See Also Transformers Source Code Path See this page for git repository. WPF Source Code Path Geom/TransformationGeomControl Web Service Application Source Code Path wwwroot/geom/transformation-geom-control.js Geom/TransformationGeomHub.cs (to be created)"
},
"app-anatomy/hinc-web-service/disp-web-service.html": {
"href": "app-anatomy/hinc-web-service/disp-web-service.html",
"title": "Rendering Canvas on Web Service Application | HiAPI-C# 2025",
"summary": "Rendering Canvas on Web Service Application Overview In the HiNC-2025-webservice example project, the 3D canvas rendering is handled through a WebSocket-based architecture using SignalR Hub connections. Core Component The primary component for 3D canvas rendering: Location: wwwroot/disp/rendering-canvas.js Purpose: Manages all 3D canvas rendering operations Connection Management SignalR Hub Connection Components using WebSocket (corresponding to SignalR Hub) receive a unique Hub connectionId The rendering-canvas component maintains a primary connectionId This ID serves as the index for all canvas data stream operations Connection ID Naming Convention In other components, the connection ID may be referenced with different naming patterns: renderingConnectionId rendering-connectionId Similar variations Naming Convention Examples Different components may reference the connection ID with various naming patterns: player-panel component: uses renderingConnectionId (wwwroot/player/player-panel.js) Other components may use similar variations like rendering-connectionId Data Flow Architecture Frontend Responsibilities The rendering-canvas component handles data stream transmission via WebSocket Manages real-time rendering updates through the connection ID Backend Integration Multiple backend controllers can specify content to be rendered on the rendering-canvas. The architecture is designed to be flexible and reusable across different features. Example: Player Controller One example of backend integration: File: Players/PlayerController.cs Method: InitializePlayer Purpose: Initializes player-specific rendering content This is just one example - any controller in the application can interact with the rendering canvas using the same connection ID mechanism to display different types of 3D content Key Points All canvas data stream operations are indexed by the connection ID The WebSocket connection enables real-time rendering updates The architecture separates rendering logic (frontend) from content specification (backend)"
},
"app-anatomy/index.html": {
"href": "app-anatomy/index.html",
"title": "HiNC App Anatomy | HiAPI-C# 2025",
"summary": "HiNC App Anatomy 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: Layout — the visual / widget tree the user sees. Key Model — the backing HiAPI types (MachiningProject, UserService, …). 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. Note This is not a from-scratch build tutorial. It documents how the shipped HiNC apps are put together, so that: End users can understand exactly what each product screen does and which project model each widget edits. Developers extending HiAPI-based apps can see a live, production-scale example of every building block mapped to its source. AI agents working on the codebase have a single reference for the view ↔ model ↔ source correspondence. Source Code Repositories The anatomy covers two codebases. Each page's Source Code Path section lists the implementing file in each repository, but the two are not peers: the web service is the live target, the WPF desktop is the outgoing legacy that the web service replaces. HiNC-2025-webservice (current flagship) Quasar CLI SPA (Vue 3 + TypeScript + Pinia + Quasar) served by ASP.NET Core. This is the primary product delivered to end users today and the only target for new feature work. Repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-webservice.git 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. Repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-win-desktop.git Architecture Patterns Cross-cutting patterns referenced by many pages: DictionaryService and DictionaryHub Pattern — Connection-scoped object indexing for hierarchical components. Rendering Canvas on Web Service — WebSocket / SignalR-based 3D canvas architecture. Reading Guide Jump straight to the component you want to understand. Most readers will land here via an in-text cross-link; the sections below are a browsable index of the anatomy. Core Framework Initialize HiAPI — Application startup and HiAPI bootstrap. Main Panel — The top-level window / layout shell. Message Section — Status and notification bar. Rendering and Visualization RenderingCanvas Tool Bar — 3D view-control toolbar. Player Panel — Simulation playback and visualization. Configuration Panels Preference Menu — Application settings entry point. Graphic-Cache Dropdown — Graphics caching tuning. Geometry and Mechanism Widget Components — Reusable primitives (Vec3dControl, NumericInput, …). Geometry Panels — Geometry creation and management. Transformers — Coordinate-transformation editors. Fixture Page — Fixture configuration. Workpiece Page — Workpiece definition. ToolHouse Page — Tool library. Operation Controller Page — CNC controller settings. Mission Page — Mission (shell-command sequence) editor. Reading a Page Each anatomy page is structured so the reader can pivot between the three layers in a single glance: Start at Layout to see the widget tree and understand the user-visible structure. Drop down to Key Model to learn which backing type each widget edits; click the <xref:…> links to open the API reference. Finish at Source Code Path to open the actual file in each repository. “Web Page Application Source Code Path” is the authoritative entry for the current flagship product; the WPF entry is a legacy cross-reference for users migrating off the desktop client. Tip If you are starting a new application on top of HiAPI and want a step-by-step build guide instead, see Getting Started. The anatomy is the reference you keep open while you build; the Getting Started page is the tutorial you follow in sequence. Note If you are using an AI agent to extend the product, point it at the specific anatomy page whose component you are editing and have it work on the Quasar / ASP.NET Core side. The WPF source paths remain listed so the agent can read the legacy behavior for reference, but new features should land in the web service only — the WPF client is on its way out."
},
"app-anatomy/initialize-hiapi.html": {
"href": "app-anatomy/initialize-hiapi.html",
"title": "HiAPI Initialization | HiAPI-C# 2025",
"summary": "HiAPI Initialization The HiNC applications initialize HiAPI at the application entry point using the following methods: AppBegin - Called at application startup AppEnd - Called on application shutdown These methods handle the initialization and release of: Licensing Display engine Background resources Important Both DI-based and legacy flow implementations require calling LocalApp.AppBegin() at startup and LocalApp.AppEnd() on shutdown."
},
"app-anatomy/main-panel.html": {
"href": "app-anatomy/main-panel.html",
"title": "Main Panel | HiAPI-C# 2025",
"summary": "Main Panel The Main Panel is the primary window of the HiNC application, providing navigation and access to all major features. Key Models Project Service WPF Single-User Desktop Application: Uses self-hosted LocalProjectService Web Service Application: Service inherits from IProjectService User Service: UserService Layout Structure Top Navigation Menu Project Menu Dropdown Project Path Text Field New MenuItem Load MenuItem Save MenuItem Save As MenuItem Environment Menu Dropdown (WPF application only — the web application has no such dropdown; see below) Machine Tool MenuItem Open Machine Tool Page Sole window in WPF app. The page manages MachiningEquipment.MachiningChain. Controller MenuItem Open Controller Page Tool House MenuItem Fixture MenuItem Open Fixture Page Workpiece MenuItem Open Workpiece Page Mission MenuItem 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. The web application shows this as a version badge next to the brand logo, with no Help dropdown. Log MenuItem 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. 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 Project Menu Behavior The Project Path Text Field displays the current project path when a project is loaded. It is implemented as a pure text field (not a button) that allows users to select and copy the path. The Project Menu manages MachiningProject with the following operations: Operation Description Example New Creates a new project See DemoBuildGeomOnlyMachiningProject Load Opens an existing project See DemoUseMachiningProject Save Saves the current project See DemoBuildGeomOnlyMachiningProject Save As Saves the project to a new location See DemoBuildGeomOnlyMachiningProject 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 the MessageUtil extension methods for message handling. Async operations ensure smooth user experience during file I/O. Platform-Specific Differences WPF Application Only a single instance of each sub-window (Mission, Workpiece, Fixture) can exist at a time The Player MenuItem does not exist in the WPF version, as the Main Panel itself serves as the Player Panel Web Application 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. WPF Application MainWindow Web Application Environments/PreferenceController.cs Environments/ProjectController.cs 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."
},
"app-anatomy/mech/background-coolant-page.html": {
"href": "app-anatomy/mech/background-coolant-page.html",
"title": "Background / Coolant (Control Tree) | HiAPI-C# 2025",
"summary": "Background / Coolant (Control Tree) 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: BackgroundTemperature_C (Background leaf) the whole CoolantHeatCondition (Coolant leaf) — preset-first, see below Key Model: MachiningEquipment (+ its CoolantHeatCondition). Note 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 leaf Background Temperature NumberField (°C) — BackgroundTemperature_C. 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). File row — FilePathInput (.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. Behavior 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. 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. WPF Application Source Code Path Not implemented. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): 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/*. Mech/BackgroundCoolantController.cs — REST endpoints: 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, PUT /mist-flood-convection-ratio, PUT /off-convection-coefficient-wdm2k — same pattern for the three convection values (Custom mode). Related Pages Spindle Capability Page — sibling equipment editor, also targets MachiningEquipment. Coolant (manual) — the end-user / API manual page for the cooling types."
},
"app-anatomy/mech/cutter/apt-profile-panel.html": {
"href": "app-anatomy/mech/cutter/apt-profile-panel.html",
"title": "APT Profile Panel | HiAPI-C# 2025",
"summary": "APT Profile Panel The main model is AptProfile and its property AptProfile.Apt. See APT Cutter Definition. GeneralApt is the generalization of other IAptBased types. Layout APT Profile Panel Diameter Input Field (mm) Round Radius Input Field (mm) Visibly if Apt is IAptRc Round Ring Radius Input Field(mm) Visibly if Apt is IAptRr Round Ring Height Input Field(mm) Visibly if Apt is IAptRz Bottom Cone Angle Input Field (deg) Visibly if Apt is IAptAlpha Top Cone Angle Input Field (deg) Visibly if Apt is IAptBeta Length of Cut Input Field (mm) Tip Keep field format “G4” Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/AptProfilePanel Web Page Application Source Code Path wwwroot/mech/cutter/apt-profile-panel.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/cutter/freeform-remover-panel.html": {
"href": "app-anatomy/mech/cutter/freeform-remover-panel.html",
"title": "Freeform Remover Panel | HiAPI-C# 2025",
"summary": "Freeform Remover Panel The key model is FreeformRemover. Layout Freeform Remover Panel Tabs Strut Geometry Tab Geometry Management Panel Manages StrutGeom Shaper Geometry Tab Geometry Management Panel Manages ShaperGeom Anchor Tab Label: Geometry Anchor To Holder Buckle KeepHolderBuckleOnTop Checkbox Transformer Manage Panel Model is GeomToHolderTransformer Enabled if KeepHolderBuckleOnTop is true. Property Tab Is Spinning Cutter Checkbox Controls IsSpinningCutter Info Tab Name TextField (editable) AbstractNote TextField (readonly) Note TextField (editable) Geometry Definitions Strut Geometry - The non-cutting portion (holder/shank) Used for collision detection Shaper Geometry - The cutting portion Defines cutting surfaces Used for material removal simulation Implementation Note Remember to call ClearCache() after geometry changes. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/FreeformRemoverPanel Web Page Application Source Code Path wwwroot/mech/cutter/freeform-remover-panel.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/cutter/index.html": {
"href": "app-anatomy/mech/cutter/index.html",
"title": "Cutter Panel | HiAPI-C# 2025",
"summary": "Cutter Panel Overview The key component is ICutter. The Cutter Panel is used to manage cutting tool definitions in HiNC. It supports two main types of cutting tools: MillingCutter and FreeformRemover. Layout Cutter Panel Head Line Object Management Menu Button File extension is .Cutter The pointed Editor Panel is Cutter Management Panel Title Label Cutter Type Selection Dropdown Options: Milling Cutter, Freeform Remover, Unset Cutter Management Panel Varies by the Cutter Type. It can be: Milling Cutter Panel Freeform Remover Panel Features Since ICutter implements IClearCache, remember to call the ClearCache method when the cutter geometry or properties change to ensure proper updates in simulation. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/CutterManagementPanel Web Page Application Source Code Path wwwroot/mech/cutter/cutter-management-panel.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/cutter/milling-cutter-panel.html": {
"href": "app-anatomy/mech/cutter/milling-cutter-panel.html",
"title": "Milling Cutter Panel | HiAPI-C# 2025",
"summary": "Milling Cutter Panel The key model is MillingCutter. Layout Milling Cutter Panel Tabs Flute-Profile Tab Upper-Beam Tab Geometry Management Control ExtendedCylinder option is enabled. Property Tab Insert-Cutter Tab Material Tab Flute-Contours Tab Flute-Inner-Beam Tab Optimization Tab Info Tab Name TextField (editable) AbstractNote TextField (readonly) Note TextField (editable) Flute-Profile Tab Profile Type Selection Dropdown APT General (GeneralApt) APT Ball (BallApt) APT Column (ColumnApt) APT Cone (ConeApt) APT Taper (TaperApt) Custom Spinning Profile (CustomSpinningProfile) Profile Configuration Panel Dynamic component based on selected profile type See DemoBuildMachiningProject for creating the apt profile and setting to the cutter. See APT Panel for APT-based Profile Configuration Panel. The APT series option is all wrap by AptProfile but with different property AptProfile.Apt assigned. Custom Spinning Profile Panel Geometry Management Control Property Tab Visible if EnablePhysics is true. Integral Mode Selection Dropdown Solid End Insert End Cutter/Shank Mass Input Field (g) Show the label Cutter Mass if the Cutter is Solid End Integral Mode; Show the label Shank Mass if the Cutter is Insert End Integral Mode. Value format “G4” Auto Update CheckBox The model is ShankMassAssignmentMode. When enabled: field becomes readonly and shows calculated value. When disabled: field is editable Functionality Note: The value is calculate by the volume and density. The volume is the inner beam volume and the upper beam volume. Hone Radius (μm) Input Field Relief Angle (deg) Input Field Minimum Available Cutting Thickness (μm) Readonly field with format “G4” Shows calculated value from GetMinimumUncutChipThickness_um(ICuttingPara). The argument (cutting parameter) is obtained by the Workpiece.CuttingPara. Series pass the models by the GUI if needed. Note Label Show Workpiece Cutting Parameter Name. Label Text \"Reference: Workpiece Cutting Parameter - {CuttingPara.Name}\". Since the thickness depdents on the Workpiece Cutting Parameter and hone radius. Insert-Cutter Tab Visible if EnablePhysics is true and Integral Mode is Insert End. Insert Number Input field Insert Mass Input field (g) Format “G4” Insert Thickness Input field (mm) Format “G4” The Insert Thickness is for computing heat transfer. Material Tab Visible if EnablePhysics is true. Shank Material (visible only for Integral Mode is Insert End mode) Material File Selector Apply IStructureMaterial Menu Dropdown Browse Button Browse Resource Button Readonly Name TextBox (Name) ToolTip by Note from the material Flute Material Material File Selector Apply CutterMaterial Menu Dropdown Browse Button Browse Resource Button Readonly Name TextBox (Name) ToolTip by Note from the material Coating Panel Show note that the sequence starts from surface, i.e. from outer to inner. Manages CoatingLayerList Exists sequence management. The first layer has the remark: Air-Exposing Coating. ThermalLayer1D Component Tip Keep the child components to one line. After Coating Material is manual loaded, set the PreferedThickness_um to the Length_um and update the corresponding field. Coating Material Material File Selector Apply CoatingMaterial Menu Dropdown Browse Button Browse Resource Button Readonly Name TextBox (Name) ToolTip by Note from the material Thickness Input Field (um) (editable) Length_um Use format “G4” If the cutter is Solid End, the Shank Material should keep the same with Flute Material. i.e. Set the Shank Material when Flute Material set. Default Resource The default resources of Material exist in Resource folder under application folder (Not project folder). Set the corresponding default folder of the File Selector to the Resource sub folder: “Resource/StructureMaterial” “Resource/CutterMaterial” “Resource/CoatingMaterial” Flute-Contours Tab Visible if EnablePhysics is true. This part manages Fluting. Contour Tray Selection Dropdown Uniform Fluting (UniformFluting) Free Fluting (FreeFluting) Unset Contour Tray Configuration Panel Dynamic component based on selected contour tray type For Uniform Contour Tray: Track Number Input Field Baseline Contour Configuration //building For Free Contour Tray: Individual contour configuration for each flute //building Add/Remove contour controls Flute-Inner-Beam Tab Visible if EnablePhysics is true. This part manages InnerBeamProfile. Profile Type Selection Dropdown Flute Dependent Ratio Profile (FluteDependentRatioProfile) Const Ratio Profile (ConstRatioProfile) Custom Spinning Profile (CustomSpinningProfile) Unset Profile Configuration Panel Dynamic component based on selected profile type For Flute Dependent Ratio Profile: Radius Ratio Number Field (readonly) Label also shows the additional information: Dependent on flute num xxx, the xxx is the flute number that pass by MillingCutter.Fluting. Series pass the model by the GUI if needed. For Const Ratio Profile: Radius Ratio Number Field (editable) For Custom Spinning Profile: Geometry Management Control Optimization Tab Visible if EnablePhysics is true. This part manages MillingCutterOptOption. Enable Optimization Checkbox Controls whether optimization limits are active When optimization is enabled: Limit by Theoretical Minimum Feed Per Tooth Checkbox Shows calculated minimum uncut chip thickness value. To get the value, Workpiece.CuttingPara and MillingCutter are required. Series pass the model by the GUI if needed. When checked, enforces minimum feed constraint Min Feed Per Tooth (mm) Number Field Step (If UI supported): 0.01 Max Feed Per Tooth (mm) Number Field Step (If UI supported): 0.01 Safety Factor for Yielding Number Field Step (If UI supported): 0.1 Default value typically around 2.0 Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/MillingCutterPanel Mech/ToolHouse/AptProfilePanel Mech/ToolHouse/MaterialTabPanel Mech/ToolHouse/PropertyTabPanel Web Page Application Source Code Path wwwroot/mech/cutter/milling-cutter-panel.js wwwroot/mech/cutter/apt-profile-panel.js wwwroot/mech/cutter/material-tab-panel.js wwwroot/mech/cutter/property-tab-panel.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/fixture-page.html": {
"href": "app-anatomy/mech/fixture-page.html",
"title": "Fixture Page | HiAPI-C# 2025",
"summary": "Fixture Page The page triggers by Main Panel. The key model is Fixture and FixtureEditorDisplayeeConfig. Fixture is assigned from the Main Panel's Fixture. FixtureEditorDisplayeeConfig is from UserConfig which assigned from the parent component. Layout Fixture Page Management Panel Head Line Object Management Menu Button file extension is Fixture The pointed Editor Panel is Management Tabs Panel Title Label Management Tabs Panel Geometry Tab (Apply Geometry Management Control to set the Fixture.Geom.) Anchor Tab (Apply Transformer Manage Panel to set the following tabs) Geom To Workpiece Tab Geom To Table Tab Viewer Panel Viewer ToolBar RenderingCanvas Tool Bar SetupDisplayee Options ToolBar Options of FixtureEditorDisplayee RenderingCanvas The DispEngine.Displayee is FixtureEditorDisplayee (Apply the model FixtureEditorDisplayeeConfig). Tip Add a resizable splition bar between Manage Panel and Viewer Panel. Behavior Call Fixture.ClearGeomCache() on geometry set or changed. Call RenderCanvas.DispEngine.SetViewToIsometricView() on geometry set. (Since the assumption of the shape set raise larger viewer changed than content changed, only adjust view of the setter event.) Source Code Path See this page for git repository. WPF Application Source Code Path Mech/Fixtures/FixturePage Mech/Fixtures/FixtureWindow Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/pages/FixturePage.vue — routed page, splitter + Geometry/Anchor tabs + Display Options dropdown. wwwroot-src/src/api/fixture.ts — typed wrapper over FixtureController and FixtureDisplayController. wwwroot-src/src/components/widgets/ObjectManagementMenuButton.vue — reused object-management dropdown (see Object Management Menu Button). wwwroot-src/src/components/geom/GeometryEditor.vue — Geometry tab switchboard (Box3d / Cylindroid / StlFile / TransformationGeom). wwwroot-src/src/components/topo/TransformerSelectPanel.vue — Anchor tab transformer switchboard. Mech/FixtureController.cs — REST endpoints for Initialize / CreateGeometry / Update{GeomTo…}Transformer / ClearGeometryCache. Mech/FixtureDisplayController.cs — REST endpoints for display options (Solid/Edge/Hide rendering mode + 3 anchor visibility flags)."
},
"app-anatomy/mech/holder/cylindroid-holder-panel.html": {
"href": "app-anatomy/mech/holder/cylindroid-holder-panel.html",
"title": "Cylindroid Holder Panel | HiAPI-C# 2025",
"summary": "Cylindroid Holder Panel The key model is CylindroidHolder. Layout Cylindroid Holder Panel Head Line Title Label Tabs Geometry Tab Cylindroid Panel Resolution Tab Model: PolarResolution2d Polar Resolution 2d Info Tab Name TextField (editable) AbstractNote TextField (readonly) Note TextField (editable) Remember to call UpdateByCylindroid() after geometry reference or content changed. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/CylindroidHolderPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/toolhouse/CylindroidHolderEditor.vue — holder-aware editor with Geometry / Resolution / Info tabs; wraps the reusable CylindroidEditor.vue and triggers the holder resync after geometry / resolution edits. wwwroot-src/src/api/cylindroidHolder.ts — typed wrapper over CylindroidHolderController. Mech/CylindroidHolderController.cs — REST endpoints at /api/CylindroidHolder/*: GET Get (+ indexes the holder's Cylindroid for the generic Cylindroid editor), POST UpdateGeometryContent | SetName | SetNote | SetPolarResolution. UpdateGeometryContent performs the resync (UpdateByCylindroid() + ClearCache())."
},
"app-anatomy/mech/holder/freeform-holder-panel.html": {
"href": "app-anatomy/mech/holder/freeform-holder-panel.html",
"title": "Freeform Holder Panel | HiAPI-C# 2025",
"summary": "Freeform Holder Panel The key model is FreeformHolder. Layout Freeform Holder Panel Head Line Title Label Tabs Geometry Tab Geometry Management Panel Anchor Tab (Apply Transformer Manage Panel to set the following tabs) Geom To Spindle Tab Geom To Cutter Tab Resolution Tab Model: PolarResolution2d Polar Resolution 2d Info Tab Name TextField (editable) AbstractNote TextField (readonly) Note TextField (editable) Remember to call UpdateByGeom() after geometry reference or content changed. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/FreeformHolderPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): not yet ported — FreeformHolder geometry / transformer editing is deferred (see Tool House Page). Existing FreeformHolder objects are preserved; edit via the WPF client or HiNcRcl in the meantime. When ported, it should follow CylindroidHolderEditor.vue + a FreeformHolderController (calling UpdateByGeom() for the resync)."
},
"app-anatomy/mech/holder/index.html": {
"href": "app-anatomy/mech/holder/index.html",
"title": "Holder Panel | HiAPI-C# 2025",
"summary": "Holder Panel This section describes the user interface and behavior for managing different types of tool holders in the application. Tool holders are crucial components in defining a complete tool assembly. Note While tool holders are essential components in real-world machining operations, some users may choose not to define them in simulation environments for convenience, particularly when collision detection is not a primary concern. The system allows for this flexibility, though it's recommended to include holders for accurate representation and comprehensive collision analysis. The primary models involved are subclasses of IHolder. Two common types are: Cylindroid Holder: Represents holders with a cylindrical geometry. See CylindroidHolder. Freeform Holder: Represents holders with more complex, freeform geometry, often defined by STL files. See FreeformHolder. Each holder type will have its own specific user interface elements for defining its geometry and properties. Layout Holder Panel Head Line Object Management Menu Button file extension is Holder The pointed Editor Panel is Holder Management Panel. Title Label Holder Management Panel Holder Type Selection Bar Holder Sub Management Panel The content varied by the Holder Type. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/HolderPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/toolhouse/HolderPanel.vue — Holder Type selector that dispatches to a per-type editor component (e.g. CylindroidHolderEditor.vue); Freeform editing is not yet ported. Mech/ToolHouseController.cs — POST SetHolderType, GET GetHolder (returns holder type + abstract note). Per-holder-type editing lives in the dedicated holder controllers."
},
"app-anatomy/mech/machining-chain-page.html": {
"href": "app-anatomy/mech/machining-chain-page.html",
"title": "Machine Tool Page | HiAPI-C# 2025",
"summary": "Machine Tool Page Key Model: IMachiningChain The model is managed by the getter function and setter function (see Object Management Menu Button for the design pattern). Assistant Model: HardNcEnv Layout Head Line Object Management Menu Button file extension is mt. The pointed Editor Panel is Management Panel Title Label “Machine Tool” Management Panel If the key model inherits INameNote: Name Setting Line Name Label Name TextField Note Setting Line Note Label Note TextField Source Code Path See this page for git repository. WPF Application Source Code Path Mech/MachiningChains/MachiningChainPage Mech/MachiningChains/MachiningChainWindow Web Page Application Source Code Path wwwroot/mech/machining-chain-page.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/mech-builder-page.html": {
"href": "app-anatomy/mech/mech-builder-page.html",
"title": "Mechanism Builder Page | HiAPI-C# 2025",
"summary": "Mechanism Builder Page The Mechanism Builder page edits a standalone GeneralMechanism — its anchor topology, per-branch ITransformer, and per-anchor optional TransformationGeom inside a Solid. Unlike the project-scoped editors (Fixture / Workpiece / ToolHouse / Spindle Capability), this page is user-scoped — no project needs to be loaded. Key Model: GeneralMechanism Related Model: GeneralXyzabcChain + GeneralXyzabcMachineTool (used by “Save As Machine Tool”) Layout Mechanism Builder Page File Menu New — discards the current mechanism and starts an empty one. Load… — <input type=file> picks a local XML; POSTs its content to the backend. Reload — re-reads the file last loaded from disk (only available after a prior disk load). Save As General Mechanism — downloads a .general-mech XML via Blob. Save As Xyzabc Machine Tool — wraps the mechanism in a GeneralXyzabcMachineTool and downloads as .mt. Three-Column Layout (<q-splitter> × 2) Graph Panel (left) — mermaid diagram of anchors (nodes) + branches (edges); node / edge click selects. Editor Panel (middle) — content depends on selection: Anchor selected: inline rename + “Add Branch ▾” dropdown + optional TransformationGeom attach / detach. While attached, the panel embeds Geometry Management Control restricted to TransformationGeom; the inner Box3d / Cylindroid / StlFile / CubeTreeFile remain reachable inside the TransformationGeomEditor's Geom slot. Branch selected: inline rename + Transformer Select Panel (7 transformer kinds). Viewer Panel (right) — RenderingCanvas Tool Bar + RenderingCanvas bound to DelegateFuncDisplayee(() => MechService.GeneralMechanism as IDisplayee). Behavior New-anchor auto-naming. Newly-created anchors receive placeholder names (NewAnchor-001, NewAnchor-002, …). Inline rename is debounced 400 ms. Branch add filter. The “Add Branch ▾” dropdown inside the anchor editor filters out the selected anchor itself and anchors already directly connected. Root protection. The root anchor cannot be deleted; double-click delete on any other anchor works. Branch transformer swap. TransformerSelectPanel uses a parent-aware onCreate hook that calls POST /branch/{id}/update-transformer, so the new transformer takes effect on the next frame without a re-init round-trip. Same idiom as Fixture Page. Geometry cache invalidation. Geometry edits POST to anchor/{id}/refresh-geom-cache, which triggers the same Solid.ClearCache() pattern used across the project. DelegateFuncDisplayee. The RenderingCanvas is wired through a delegate so edits render next frame without IndexService churn. Source Code Path See HiNC App Anatomy for git repository links. WPF Application Source Code Path See Machine Tool Page for the WPF chain editor. The generic GeneralMechanism XML is typically authored via scripting or hand-edited XML on the WPF side. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/pages/MechBuilderPage.vue — routed page at /util/mech-builder. wwwroot-src/src/components/mech/MechBuilderGraph.vue — lazy mermaid loader + click-proxy onto mermaid node / edge DOM. Mermaid is dynamic-imported so the first bundle stays slim (~1 MB raw split into its own chunk). wwwroot-src/src/api/generalMechanism.ts — typed wrapper over /api/general-mechanism/*. wwwroot-src/src/router/routes.ts — /util/mech-builder entry. wwwroot-src/src/components/AppMenuBar.vue — Util → Mechanism Builder entry. Mech/MechBuilder/GeneralMechanismService.cs — DI singleton that holds the current mechanism + last BaseDirectory + RelFile. Mech/MechBuilder/GeneralMechanismController.cs — /api/general-mechanism/* CRUD over anchors / branches / per-anchor TransformationGeom; XML Save As for both GeneralMechanism and GeneralXyzabcMachineTool envelopes. Mech/MechBuilder/GeneralMechanismDisplayController.cs — /api/general-mechanism/display/* view init. Program.cs — registers GeneralMechanismService as a DI singleton. IndexService Keys The mechanism state is persistent across pages (unlike Fixture which re-initialises on mount), so mechanism keys are not registered with useCleanupHub. Stale keys are harmless; they are re-pointed on the next index-transformer / index-transformation-geom call. general-mechanism.current — the mechanism itself (informational; DelegateFuncDisplayee bypasses IndexService at render time). general-mechanism.branch.{guid:N}.transformer — stable per-branch transformer key used by TransformerSelectPanel. general-mechanism.anchor.{guid:N}.transformation-geom — stable per-anchor TransformationGeom key used by GeometryEditor. Deferred Server-side file picker. Load currently uses a plain <input type=file> and Save As always streams as a browser download (Blob + <a download>). An in-app picker rooted at the project / resource folders would let users save directly into the server tree; revisit if that workflow is requested. Plain “Save” (no path prompt, overwrite last path). Needs a dedicated server-side write endpoint that reuses the last BaseDirectory + RelFile held by GeneralMechanismService; depends on the server-side file picker above. G2 Machine Tool page integration. If a dedicated Machine Tool page ships, it should wrap this page with preset Branch names (X / Y / Z / A / B / C) + Table / Tool buckle anchors rather than duplicate the editor. Related Pages Fixture Page — parent-aware onCreate transformer rebind pattern reused for Branch. Transformers — the shared 7-transformer switchboard. Geometry Management Control — embedded under the anchor editor. Machine Tool Page — future merge candidate for a preset-chain wrapper."
},
"app-anatomy/mech/spindle-capability-page.html": {
"href": "app-anatomy/mech/spindle-capability-page.html",
"title": "Spindle Capability Page | HiAPI-C# 2025",
"summary": "Spindle Capability Page The Spindle Capability page edits SpindleCapability attached to the current project's MachiningEquipment (MachiningEquipment; the MachiningProject.MachiningEquipment property itself is internal and therefore not individually linkable). It exposes metadata scalars (name / note / efficiency / working-temperature ceiling), the gear-shift spindle speed, dry-run coefficients, and the power / torque contour lists. Key Model: SpindleCapability Assistant Model: MachiningProject MachiningEquipment Note This page exists only in the Quasar webservice. The WPF desktop app has no equivalent today — spindle-capability editing happens via XML through ObjectManagementMenuButton on the Equipment panel in WPF. Layout Spindle Capability Page Metadata Card Name TextField — Name. Note TextField — Note. Energy Efficiency NumberField — EnergyEfficiency. Working Temperature Upper Boundary NumberField (°C) — WorkingTemperatureUpperBoundary_C. Gear Shift Card Has-Gear-Shift CheckBox Flips GearShiftSpindleSpeed_rpm between null (no mechanism) and 0 (mechanism present; operator dials in the speed). Gear Shift Spindle Speed NumberField (rpm) — visible when the checkbox is on. Dry Run Card Friction Power Coefficient NumberField (mW/rpm) — DryRunFrictionPowerCoefficient_mWdrpm. Windage Power Coefficient NumberField (pW/rpm³) — DryRunWindagePowerCoefficient_pWdrpm3. Power Contours Table Rows of { duration key, point count, delete }. Add Contour Button — opens a duration prompt (blank → continuous / ∞) and clones the first existing contour's points as a seed. Torque Contours Table — same shape as the Power Contours table. File Menu Load… — prompts for XML text (read-only paste) plus an optional project-relative path; POSTs to /load which replaces SpindleCapability and stamps SpindleCapabilityFile. Reload — re-reads the file last stamped on the equipment. Save As… — pulls serialised XML via GET /xml and downloads it as a Blob; optionally updates SpindleCapabilityFile. Behavior Rpm ↔ cycles/s conversion lives server-side. SpindleCapability stores spindle speed in cycles/s (Hz); the controller converts to rpm in DTOs and back on POST. The frontend only sees rpm. Nullable gear shift. The Has-Gear-Shift checkbox flips the value between null (no gear-shift mechanism) and 0 (mechanism present; operator dials in the speed). Project-scoped. Unlike GeneralMechanism (see Mechanism Builder Page), the spindle capability lives on LocalProjectService.MachiningEquipment and is persisted as part of the .hincproj save. Contour seed. Add Contour clones the first existing contour so operators rarely draw from scratch; per-point drag editing is deferred (see below). Source Code Path See HiNC App Anatomy for git repository links. WPF Application Source Code Path Not implemented. Edit via ObjectManagementMenuButton on the Equipment panel using a .SpindleCapability XML file. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/pages/SpindleCapabilityPage.vue — routed page at /equipment/spindle. wwwroot-src/src/api/spindleCapability.ts — typed wrapper over /api/mech/spindle-capability/*. wwwroot-src/src/router/routes.ts — /equipment/spindle entry. No menu-bar entry: the Environment menu is gone (wwwroot-src/src/components/AppMenuBar.vue), and Spindle Capability is reached as its own Player Control Tree root. Mech/SpindleCapabilityController.cs — REST endpoints: GET /api/mech/spindle-capability — flat snapshot (metadata + contour keys). GET /power-contours, GET /torque-contours — per-axis contour lists. PUT /name | /note | /energy-efficiency | /working-temperature-upper-boundary-c | /gear-shift-spindle-speed-rpm | /dry-run-friction-power-coefficient-mwdrpm | /dry-run-windage-power-coefficient-pwdrpm3 — one scalar each. POST /power-contours | /torque-contours — add one contour. DELETE /power-contours/{key} | /torque-contours/{key} — remove one contour ({key} accepts numeric strings and \"infinity\"). GET /xml — serialises to XML text. POST /load | /reload — XML round-trip. PUT /capability-file — set SpindleCapabilityFile without reloading. Deferred Full contour-curve editor (per-point drag on a chart). Tracked with the uPlot chart engine introduced in Section O of the pages-migration plan. ObjectManagementMenuButton integration. The File menu currently uses a plain XML-paste prompt; revisit once the widget gains an “apply XML without a project-scoped target” mode. Related Pages Mechanism Builder Page — same file-level IO pattern (Load / Reload / Save As) but user-scoped rather than project-scoped. Background / Coolant Page — sibling under Environment, also targets MachiningEquipment."
},
"app-anatomy/mech/stick-tool-panel/index.html": {
"href": "app-anatomy/mech/stick-tool-panel/index.html",
"title": "Stick Tool Panel | HiAPI-C# 2025",
"summary": "Stick Tool Panel The term stick is for not only milling, but other remover like electric discharge machining tool. The key model is MillingTool. Other model: UserService. Layout Head Line Object Management Menu Button file extension is MillingTool the pointed Editor Panel is Stick Tool Management Panel Title Label Stick Tool Management Panel Cutter Tab Cutter Panel Holder Tab Holder Panel Clamping Tab Exposed-Cutter-Height TextField Preserved-Distance-Between-Flute-and-Spindle-Nose TextField Intelligent Holder Tab Visible if EnablePhysics is true. Info Tab Abstract Note TextField (readonly) Note TextField (editable) Note The Exposed-Cutter-Height and Preserved-Distance-Between-Flute-and-Spindle-Nose are directly related. Each value changed if each other value is changed. Step by Step Build Guide Build the Stick Tool Panel Layout framework. Since the framework helps to check of the child componenet. Build accessory part of the framework. Object Management Menu Button Info Tab Clamping Tab Build Holder Panel and the related holder type panel. Build Cutter Panel and the related cutter type panel. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/StickToolPanel Web Page Application Source Code Path wwwroot/mech/stick-tool-panel.js Controller/Mech/MechController.cs"
},
"app-anatomy/mech/tool-house-page.html": {
"href": "app-anatomy/mech/tool-house-page.html",
"title": "Tool House Page | HiAPI-C# 2025",
"summary": "Tool House Page The page triggers by Main Panel. The key model is MachiningToolHouse. The model UserService is delivered by the host GUI. Layout Tool House Page Tool List Panel The panel has CRUD (and Duplicate) of the tools. Read and Update the selected tool by the Selected Tool Editor Panel. Head Line Object Management Menu Button file extension is MachiningToolHouse The pointed Editor Panel is Tool List Title Label Batch Action Menu Select All Button De-Select All Button (splition bar) Duplication Button Remove Button Create Tool Button Tool List Selection Checkbox (for batch action) Editable Tool ID TextField Editable Note/Abstract TextField Selected Tool Editor Panel Stick Tool Panel Viewer Panel Viewer ToolBar Title Label RenderingCanvas Tool Bar EditorDisplayee Options ToolBar EditorDisplayee Options Menu Dropdown Head Label: Cutter Show Cutter CheckBox (Options of MillingCutterEditorDisplayee) Shape Mode SubMenu Set ShapeMode to Solid Bounding Shape if EnablePhysics is false on GUI initialization. Solid Bounding Shape Ratio Button Detail Physics Shape Ratio Button Visible if EnablePhysics is true. (spliter) Head Label: Holder Show Holder CheckBox (Options of HolderEditorDisplayee) Show Geometry Anchor CheckBox Show Spindle Buckle CheckBox Show Cutter Buckle CheckBox Rendering Mode SubMenu Solid CheckBox Edge CheckBox Hide CheckBox RenderingCanvas The DispEngine.Displayee is MillingToolEditorDisplayee. Tip Do not apply new window for tool creation. Assume the workflow is user create a default content tool and then user setup it in by the edit panel. Add a resizable splition bar between Tool List Panel, Selected Tool Editor Panel and Viewer Panel. The options of MillingCutterEditorDisplayee and HolderEditorDisplayee is enabled only if the upper level options are enabled, i.e. ShowCutter and ShowHolder. Use less layer of EditorDisplayee Options ToolBar for user convenient. Flatten the options of the children displayee except the ratio button group. The Tool ID can not be repeated. When create new tool, assign a new tool ID (maybe the largest ID plus 1). When a tool is entered, call the renderingCanvas.DispEngine.SetViewToHomeView(). Duplication Button Use Duplicate(params object[]) to duplicate the tool. Note/Abstract TextField The Note/Abstract TextField shows note if note existed and is not empty string; otherwise it shows the AbstractNote. The tooltip is the abstract note. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/ToolHouse/ToolHousePage Mech/ToolHouse/ToolHouseWindow Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA). The page is built on the shared Control Tree: the tool nodes on the left, the selected node's tab cascade in the middle, the canvas on the right. wwwroot-src/src/pages/ToolHousePage.vue — routed page: ToolHouseRootPanel + tool list on the left, a NodeTabCascade tab strip for the selected tool in the middle, ToolHouseSetupPanel on the right, in resizable <q-splitter> panes. wwwroot-src/src/components/toolhouse/ToolHouseSetupPanel.vue — the canvas column: one RenderingCanvas bound server-side to MillingToolEditorDisplayee, following the page's selected tool, with the Display Options dropdown (Show Cutter / Show Holder + 3 anchor flags + Holder Rendering Mode + Cutter Shape Mode). wwwroot-src/src/components/controlTree/toolhouse/ToolHouseRootPanel.vue — the tool-house root node: Object Management (Load / Save / Paste / XML of the MachiningToolHouse) + New Tool. wwwroot-src/src/components/controlTree/toolhouse/ToolNodePanel.vue — one tool's General tab: Tool ID / Note / auto Abstract Note + Duplicate / Delete. Mounting it points the tool canvas at that tool. wwwroot-src/src/components/controlTree/toolhouse/ToolCutterPanel.vue — the Cutter stem: cutter type selector plus the MillingCutter identity fields (Shank Mass / Hone Radius / Relief Angle). wwwroot-src/src/components/controlTree/toolhouse/CutterSectionPanel.vue — the cutter's inner tabs, keyed off the node's role path (material / profile / upper-beam / opt). Flute Profile is edited inline; the others dispatch to toolhouse/MaterialDiv.vue (which grows CoatingLayersDiv.vue), toolhouse/UpperBeamDiv.vue and toolhouse/MillingCutterOptLimitDiv.vue. wwwroot-src/src/components/controlTree/toolhouse/CutterContoursPanel.vue — the Flute Contours stem: the fluting type selector only. The selected fluting's editor grows below it. wwwroot-src/src/components/controlTree/toolhouse/FlutingPanel.vue — the concrete fluting node and its fluting-level fields; uniform fluting grows one Baseline Contour, free fluting one tab per flute. wwwroot-src/src/components/controlTree/toolhouse/FluteContourPanel.vue — one flute contour node (baseline, or flute-<i> for a free fluting): hosts Setup Angle, with Side Contour and Bottom Contour as sub-tabs. fluteContourNode.ts carries the shared re-commit. wwwroot-src/src/components/controlTree/toolhouse/FluteSideContourPanel.vue / FluteBottomContourPanel.vue — kind selector + editor, dispatching to toolhouse/fluting/ConstHelixSideContourDiv.vue, FreeformSideContourDiv.vue, SlideBottomContourDiv.vue and FreeformBottomContourDiv.vue; the two freeform editors share SpanContourPosListDiv.vue for the per-flute position list. wwwroot-src/src/components/controlTree/toolhouse/ToolHolderPanel.vue — the Holder stem: holder type selector plus the Cylindroid holder's Name / Note / auto Abstract Note. wwwroot-src/src/components/controlTree/toolhouse/HolderSectionPanel.vue — the Cylindroid holder's Geometry (the Z-R profile, via geom/CylindroidEditor.vue) and Resolution tabs; resyncs the holder (UpdateByCylindroid()) after each edit. wwwroot-src/src/components/controlTree/toolhouse/ToolClampingPanel.vue — the Clamping tab: ExposedCutterHeight = PreservedDistance + FluteHeight; changing either field updates the other on the server. wwwroot-src/src/components/controlTree/toolhouse/ToolIntelligentPanel.vue — the Intelligent Holder tab; a thin wrapper over toolhouse/IntelligentHolderDiv.vue (Observation Location: ObservationAnchorReference dropdown + relative Z + ring radius). wwwroot-src/src/api/toolHouse.ts — typed wrapper over three server modules: ToolHouseController (/api/ToolHouse), CutterController (/api/Cutter) and ToolHouseDisplayController (/api/mech/tool-house-display). wwwroot-src/src/api/cylindroidHolder.ts — typed wrapper over CylindroidHolderController. Mech/ToolHouseController.cs — the tool-house collection and the tool-level fields. REST endpoints: GET /, GET /{id}, GET /GetHolder, GET/PUT /{id}/observation, PUT /{id}/note | exposed-height | preserved-distance, POST /Initialize | Update | SelectTool | CreateTool | DuplicateTool | RenameTool | SetHolderType | ClearToolCache, DELETE /DeleteTool. Mech/CutterController.cs — cutter editing, split out of ToolHouseController. REST endpoints at /api/Cutter/*: POST EnsureCutter | ClearCutter, PUT /{id}/shaper-profile | fluting | general | opt-limit, FreeFluting child CRUD at /{id}/fluting/contours[/{index}], GET/POST /{id}/upper-beam[/create | /resync], and the material endpoints /{id}/flute-material/*, /{id}/shank-material/*, /{id}/coating-layers/*. Mech/ToolHouseDisplayController.cs — REST endpoints at /api/mech/tool-house-display/* for display options (initialize, select-tool, show-cutter / show-holder / show-geom-anchor / show-spindle-buckle / show-cutter-buckle, holder-rendering-mode, cutter-shape-mode, clear-cache). Mech/CylindroidHolderController.cs — holder-aware layer over a tool's CylindroidHolder. REST endpoints at /api/CylindroidHolder/*: GET Get (returns name / note / abstract note / resolution + indexes the holder's Cylindroid), POST UpdateGeometryContent | SetName | SetNote | SetPolarResolution. UpdateGeometryContent is the post-edit resync (UpdateByCylindroid() + ClearCache()) that the generic CylindroidController cannot perform. Note The engine's ContourTray type family was renamed Fluting. Both spellings still resolve: the pre-rename UniformContourTray / FreeContourTray DTO type names are still accepted by PUT /{id}/fluting, and a Control-Tree id minted before the rename (…/cutter/contours/tray…) is migrated to …/contours/fluting… on the way in. Not yet ported to the Quasar page (deferred; edit via the WPF client in the meantime): FreeformRemover cutter type. FreeformHolder geometry / transformer editing. InsertCutter and FluteInnerBeam physics sub-tabs. CustomSpinningProfile shaper profile type."
},
"app-anatomy/mech/topo/transformers.html": {
"href": "app-anatomy/mech/topo/transformers.html",
"title": "Transformers GUI | HiAPI-C# 2025",
"summary": "Transformers GUI Each Transformers has GUI component. Transformer Manage Panel Use Transformer Manage Panel to setup the ITransformer. Layout Transformer Manage Panel Transformer Type Selection Bar Transformer Content Panel (vary by the selected Transformer) Note GeneralTransform control uses its own layout with direct API calls and Vec3d components, instead of embedding StaticRotation and StaticTranslation as sub-components. This avoids redundant title display when nested. Transformer Type Selection Bar Transformer Type Selection Bar get or set ITransformer. The Transformer Type Selection Bar has code-behind option to choose what the transformer options to show. If the original model (i.e. source model) transformer conflicts with the restricted transformers, show the model. Tip Consider one line layout to save the space for the selection bar. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/Topo/TransformerSelectPanel Mech/Topo/StaticTranslationPanel Mech/Topo/StaticFreeformPanel Mech/Topo/DynamicTranslationPanel Mech/Topo/DynamicRotationPanel Mech/Topo/GeneralTransformPanel Mech/Topo/TransformerDemoWindow Web Page Application Source Code Path wwwroot/mech/topo/transformer-select-panel.js wwwroot/mech/topo/static-translation-control.js wwwroot/mech/topo/static-rotation-control.js wwwroot/mech/topo/static-freeform-control.js wwwroot/mech/topo/dynamic-translation-control.js wwwroot/mech/topo/dynamic-rotation-control.js wwwroot/mech/topo/general-transform-control.js"
},
"app-anatomy/mech/workpiece-page.html": {
"href": "app-anatomy/mech/workpiece-page.html",
"title": "Workpiece Page | HiAPI-C# 2025",
"summary": "Workpiece Page The page triggers by Main Panel. The key model is Workpiece and WorkpieceEditorDisplayeeConfig. Which is assigned from the Main Panel's Workpiece. FixtureEditorDisplayeeConfig is from UserConfig which assigned from the parent component. Layout Workpiece Page Management Panel Head Line Object Management Menu Button file extension is Workpiece The pointed Editor Panel is Management Tabs Panel Title Label Management Tabs Panel Raw Shape Tab Raw Geometry Source DropDown (Common Geometry and Meshed Geometry are EXCLUSIVE) Common Geometry Apply Geometry Management Control Meshed Geometry Apply Meshed Geometry Panel Target Shape Tab Geometry Management Control Anchor Tab Geom To Fixture Tab Transformer Manage Panel Geom To Program-Zero Tab Transformer Manage Panel Runtime Tab Initial Resolution Dropdown (powers of 2) 0.0009765625 0.001953125 0.00390625 0.0078125 0.015625 0.03125 0.0625 0.125 0.25 0.5 1 2 4 8 16 Material Tab Visible if EnablePhysics is true. Workpiece Material File Selector Browse Button The initial directory is the project directory. Browse Resource Button The directory is the Default Resource directory. Readonly File Path TextBox Readonly Name TextBox (Name) ToolTip: Note Cutting Parameter File Selector Browse Button The initial directory is the project directory. Browse Resource Button The directory is the Default Resource directory. Readonly File Path TextBox Readonly Name TextBox (Name) ToolTip: Note Viewer Panel Viewer ToolBar RenderingCanvas Tool Bar SetupDisplayee Options ToolBar Options of WorkpieceEditorDisplayee RenderingCanvas The DispEngine.Displayee is WorkpieceEditorDisplayee (Apply the model WorkpieceEditorDisplayeeConfig). Tip Add a resizable splition bar between Manage Panel and Viewer Panel. Default Resource The default resources of Workpiece Material and Cutting Parameter exist in Resource folder under application folder (Not project folder). Set the default folder of the File Selector to the Resource sub folder: “Resource/WorkpieceMaterial” “Resource/CuttingParameter” Behavior Call WorkpieceEditorDisplayee.ClearRawGeomCache() on Raw Shape set or changed. Call WorkpieceEditorDisplayee.ClearIdealGeomCache() on Target Shape set or changed. Call RenderCanvas.DispEngine.SetViewToIsometricView() on Raw Shape set or Target Shape set. (Since the assumption of the shape set raise larger viewer changed than content changed, only adjust view of the setter event.) Keep Portability of the Material properties. Source Code Path See this page for git repository. WPF Application Source Code Path Mech/Workpieces/WorkpiecePage Mech/Workpieces/WorkpieceWindow Web Page Application Source Code Path wwwroot/mech/workpiece-page.js Controller/Mech/MechController.cs"
},
"app-anatomy/message-section-on-main-panel.html": {
"href": "app-anatomy/message-section-on-main-panel.html",
"title": "Bottom Message Bar | HiAPI-C# 2025",
"summary": "Bottom Message Bar The Bottom Message Bar displays application-level notifications at the bottom of the Main Panel. This is the UI Error Notification channel — see Message Management for how it fits into the overall message architecture. Message Handling The Bottom Message Bar is connected to MessageBoardUtil (or ILogger with level-filtered treatment). When a notification is triggered: The Brief Message Text Field content is updated The message is appended to the daily log file at logs/log-{DateTime.Now:yyyy-MM-dd}.txt Message Types The MessageFlag determines the display behavior: Flag Display Behavior Exception Alert style, shown in Message Bar Warning and above Shown in Message Bar Info and below Logged only, not shown in Message Bar Note When the message is an Exception, the brief message shows Message while the full exception details are logged to file. Platform-Specific Layouts WPF Application The WPF version uses a fixed bottom bar: Message Section Bottom Bar Brief Message Text Field (selectable for copy) Show Log Button Web Application The Web version uses Bootstrap-style stacking toasts: Message Section Stacking Toast Brief Message Text Field Auto-hide enabled only for low-priority messages Log Page The Log Page provides access to daily logs: Header: Log Label, Refresh Button, Download Button Content: Log TextArea Show Log Button The Show Log Button opens a modal or editor view displaying the current day's log content. Note The log file may not exist if no messages have been recorded yet."
},
"app-anatomy/mission/ListCommand-panel.html": {
"href": "app-anatomy/mission/ListCommand-panel.html",
"title": "List Command Panel | HiAPI-C# 2025",
"summary": "List Command Panel The key model is ListCommand. Assistant Model MachiningProject UserService Layout Columns Layout (Two column with one splition bar) Command Entry List Panel Provide entrys for selection The model is CommandEntryList. Head Line Add Command Dropdown Button (Note that Dropdown is not combobox.) Buttons for adding: PreSettingCommand Content Panel: PreSetting Command Panel Note This command sets up initial parameters before NC simulation which attempt to take the effect. NcOptOptionCommand Content Panel: NcOptOption Panel Note This command is also a type of pre-setting that should be applied before NC simulation which attempt to take the effect. NcFileCommand Content Panel: NcFile Command Panel NcCodeCommand ScriptCommand Content Panel: Script Command Panel PostExecutionCommand Content Panel: PostExecution Command Panel Remove Command Button Move Up Command Button Move Down Command Button Command Entrys Selection Panel (Each) Command Entry Box: The boxes are multi-selectable for re-order, remove and etc.. The boxes are draggable for re-order. Enable CheckBox The model is IsEnabled. Tip Show the label text. Title Label Apply GetCommandTitle if the command is inherited from ITitleCommand; otherwise, show its localized display name (the DisplayName attribute), never the class name. The label always leads with the command's NAME. A title the user typed is appended as Name [title], it does not replace the name — a row has to say what it is. Tip Apply style changed if the entry is selected. If there is only one PreSettingCommand in the list and at the begining, Keep it at begining when items adding, shows a “pin at begining” label with a pin icon. If there is only one PostExecutionCommand in the list and at the end, Keep it at end when items adding, shows a “pin at end” label a pin icon. Support file drag from the external application (such as file explorer), files drag into the Command Entrys List Panel is equivalent to create NcFileCommands (with the EnablingWrapper) and set the file into the NC File Command. Vertical Splition Bar The bar can be drag to tune the width. Selected Command Content Panel The model is Command. The panel is based on command type Tip The width of the entry block should expand to fulfill the content block. Tip Use Disabled Style for command panels if the Enable checkbox is not checked. Note Each command entry can be individually enabled or disabled without removing it from the list. Features Update the Title Label if the Command is updated by the Command Content Panel. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/ListCommandPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): The ListCommand editor is not a standalone component in the Quasar SPA. Instead it is expressed inline by MissionPage.vue, which renders the root ListCommand's entries as a draggable <q-splitter> left-pane. Nested ListCommand recursion is supported by the backend path scheme (\"0.2\") but the Quasar UI currently renders only root-level entries; recursion support is tracked under Not yet ported below. wwwroot-src/src/pages/MissionPage.vue — hosts the root-level ListCommand list: Add Command ▾ / Delete / Move Up / Move Down / Reload toolbar + draggable row list + per-kind editor panel on the right. Native HTML5 draggable=\"true\" + @dragstart/over/drop handlers; Drop sends the full path order once via PUT /api/Mission/list-command/reorder. wwwroot-src/src/api/mission.ts — typed wrapper over the ListCommand CRUD: addCommand, removeCommand, moveCommand, reorderList. Missions/MissionController.cs — REST endpoints: POST /list-command/entries, DELETE /list-command/entries/{index}, POST /list-command/entries/{index}/move, PUT /list-command/reorder (genuinely rebuilds CommandEntryList; earlier stub returned success without reordering). Not yet ported: Nested ListCommand UI (backend supports the \"0.2\" path; UI renders root only). ObjectManagementMenuButton integration on the Mission toolbar for whole-.shellcommand file load / save."
},
"app-anatomy/mission/NcCodeCommand-panel.html": {
"href": "app-anatomy/mission/NcCodeCommand-panel.html",
"title": "NcCodeCommand Panel | HiAPI-C# 2025",
"summary": "NcCodeCommand Panel The key model is NcCodeCommand. Layout Head Line NC Code Label NC Code Editor Area The model is NcText. Multi-line text editor for NC code input Monospace font for better code readability Line numbers display (optional) Features Direct NC code input without file Syntax highlighting for NC code (optional) Real-time validation (optional) Code statistics (line count, character count) Tip The NC Code editor should expand to fill available space in the panel. Note Unlike NcFileCommand, this command stores the NC code directly in memory. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/NcCodeCommandPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/mission/NcCodeCommandPanel.vue — monospace <q-input type=\"textarea\"> with 400 ms-debounced save, line / character stats, Trim Blank Lines + Clear actions. Monaco upgrade deferred. wwwroot-src/src/api/mission.ts — typed wrapper over the NcCode-related endpoints on MissionController.cs. Missions/MissionController.cs — REST endpoints for NcText per-property updates."
},
"app-anatomy/mission/NcFileCommand-panel.html": {
"href": "app-anatomy/mission/NcFileCommand-panel.html",
"title": "NcFileCommand Panel (Program File) | HiAPI-C# 2025",
"summary": "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 Head Line NC File Setting The model is NcFile. NC File Label NC File Text Field About 20 charactor width Load File Browser Button Apply universal file filter for the NC files. Since NC File has too many extensions, such as but not limits to: nc, h, mpf, ptp. Follow the Load Pattern. NC File Editor The editor only available for text file. If the file lines within 20000 line, enable the NC File Editor; Otherwise, just preview the first 20000 line of the file and show the message to the Head Message Place. Auto-Save the file if the content changed. Head Message Place Show the error or exception of the File. NC Code TextArea Tip Fix the height of NC Code TextArea to the panel bottom. Set NC Code TextArea height resizable. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/NcFileCommandPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): 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."
},
"app-anatomy/mission/NcOptOption-panel.html": {
"href": "app-anatomy/mission/NcOptOption-panel.html",
"title": "NC Optimization Option Panel | HiAPI-C# 2025",
"summary": "NC Optimization Option Panel Key model is NcOptOption. Layout General Optimization Section Enable Optimization CheckBox The model is EnableOpt. Enable Feedrate Optimization CheckBox The model is EnableOptFeedrate. Enable Depth Splitting CheckBox The model is EnableDepthSplition. Enable Interpolation CheckBox The model is EnableInterpolation. Distance Settings Section Extended Pre-Distance Floating Number Field (with Unit) The model is ExtendedPreDistance_mm. Extended Post-Distance Floating Number Field (with Unit) The model is ExtendedPostDistance_mm. Feedrate Limits Section Minimum Feedrate Floating Number Field (with Unit) The model is MinFeedrate_mmdmin. Maximum Feedrate Floating Number Field (with Unit) The model is MaxFeedrate_mmdmin. Rapid Feed Floating Number Field (with Unit) The model is RapidFeed_mmdmin. Motion Dynamics Section Maximum Acceleration Floating Number Field (with Unit) The model is MaxAcceleration_mmds2. Maximum Jerk Floating Number Field (with Unit) The model is MaxJerk_mmds3. Force and Safety Section Preferred Force Floating Number Field (with Unit) The model is PreferedForce_N. Spindle Torque Safety Factor Floating Number Field The model is MaxSpindleTorqueSafetyFactor. Spindle Power Safety Factor Floating Number Field The model is MaxSpindlePowerSafetyFactor. Compensation Section Enable Forward Compensation CheckBox The model is EnableForwardCompensation. Enable Side Compensation CheckBox The model is EnableSideCompensation. Enable Depth Compensation CheckBox The model is EnableDepthCompensation. Tip Use XmlConvert.ToDouble and FromDouble to parse the double value for dealing with the inf value. Source Code Path See this page for git repository. WPF Application Source Code Path NcOpt/NcOptOptionPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/mission/NcOptOptionCommandPanel.vue — six grouped <q-card>s (General / Distances / Feedrate / Motion Dynamics / Force & Safety / Compensation) backed by a setter-map table so adding a new property requires one line. preferedForce_N and maxFeedPerTooth_mm round-trip Infinity through the string-accepting backend endpoint. wwwroot-src/src/api/mission.ts — typed wrapper over the NcOptOption-related endpoints. Missions/NcOptOptionEndpoints.cs — REST endpoints for every NcOptOption property (per-property PUT with string body to accept Infinity). Missions/MissionController.cs — hosts the NcOptOption command CRUD that wraps the property endpoints."
},
"app-anatomy/mission/PostExecutionCommand-panel.html": {
"href": "app-anatomy/mission/PostExecutionCommand-panel.html",
"title": "PostExecutionCommand Panel | HiAPI-C# 2025",
"summary": "PostExecutionCommand Panel Key Model PostExecutionCommand Assistant Model MachiningProject UserService Layout Output Step Files Section Enable Write Step Files CheckBox The model is EnableWriteStepFiles. 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. Output Shot Files Section Visible if EnablePhysics is true. Enable Write Shot Files CheckBox The model is EnableWriteShotFiles. Shot File Template Text Field The model is ShotFileTemplate. Default value: Output/[NcName].shot.csv Shot File Time Resolution (ms) Number Field The model is ShotFileTimeResolution_ms. Default value: 1 Optimization Files Section Visible if EnablePhysics is true. Enable Optimize To Files CheckBox The model is EnableOptimizeToFiles. Optimization File Template Text Field The model is OptimizationFileTemplate. Default value: “Output/Opt-[NcName]” CL → NC Writeback Section Enable Convert CL To NC Files CheckBox The model is EnableConvertClToNcFiles. NC Output Template Text Field The model is ClToNcFileTemplate. Default value: “Output/[NcName].nc” Geometry Difference Section Enable Geom Diff CheckBox The model is EnableGeomDiff. Geom Diff Detect Radius Number Field (with Unit) One Line layout The model is GeomDiffDetectRadius_mm. Default value: 1 Note Meshed-geometry output is no longer a Post-Execution section: a geometry snapshot can be taken at any spot of the mission, unlike the run-derived file outputs above. Use the standalone Record Meshed Geometry (RecordMeshedGeomCommand) or Export Meshed Geometry (ExportMeshedGeomToStlCommand) commands instead. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/PostExecutionCommandPanel 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 / 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."
},
"app-anatomy/mission/PreSettingCommand-panel.html": {
"href": "app-anatomy/mission/PreSettingCommand-panel.html",
"title": "PreSettingCommand Panel | HiAPI-C# 2025",
"summary": "PreSettingCommand Panel Key Model PreSettingCommand Assistant Model MachiningProject UserService Layout Machining Resolution Label (with Unit) Machining Resolution ComboBox The model is MachiningResolution_mm. Default value: 0.125 Options (powers of 2) 0.0009765625 0.001953125 0.00390625 0.0078125 0.015625 0.03125 0.0625 0.125 0.25 0.5 1 2 4 8 16 Note The Machining Resolution is initialized from workpiece's InitResolution if available. Machining Motion Resolution Setting The model is MachiningMotionResolution. Motion Resolution Label Type ComboBox (Feed Per Cycle, Feed Per Tooth, Fixed) FixedMachiningMotionResolution Section If MachiningMotionResolution is FixedMachiningMotionResolution, show the panel. Linear Resolution Label (with Unit) Linear Resolution Number Input Field Angle Resolution Label (with Unit) Angle Resolution Number Input Field Detection Settings Setting Enable Collision Detection CheckBox The model is EnableCollisionDetection. Default value: true Enable Pause On Failure CheckBox The model is EnablePauseOnFailure. Default value: false Enable Physics CheckBox The model is EnablePhysics. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/PreSettingCommandPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): 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."
},
"app-anatomy/mission/index.html": {
"href": "app-anatomy/mission/index.html",
"title": "Mission Page | HiAPI-C# 2025",
"summary": "Mission Page The Mission Page manages machining mission commands and execution settings. Key Models Primary: PlayerCommand Supporting: MachiningProject UserService Layout Mission Page Head Line Object Management Menu Button file extension is ShellCommand The pointed Editor Panel is Mission Edit Panel Mission Type Selection Section Mission Type Label Mission Type ComboBox Mission Edit Panel Content depends on the Mission Type Selection. Mission Type Selection ComboBox The options: Script Command Panel for ScriptCommand. List Command Panel for ListCommand. Source Code Locations See HiNC GUI Architecture for git repository links. Tip Implementation Order: When building a new Mission Page, create the page window/panel first, then implement the command panels (List Command Panel, Script Command Panel). WPF Application Mission/MissionWindow Mission/MissionPanel Web Application Current (Quasar CLI SPA): wwwroot-src/src/pages/MissionPage.vue - Mission page (List / Script mode toggle + drag-and-drop command list + per-kind editor pane) wwwroot-src/src/components/mission/PreSettingCommandPanel.vue wwwroot-src/src/components/mission/NcFileCommandPanel.vue wwwroot-src/src/components/mission/NcCodeCommandPanel.vue wwwroot-src/src/components/mission/ScriptCommandPanel.vue wwwroot-src/src/components/mission/NcOptOptionCommandPanel.vue wwwroot-src/src/components/mission/PostExecutionCommandPanel.vue wwwroot-src/src/api/mission.ts - Typed wrapper for every /api/Mission/* endpoint wwwroot-src/src/router/routes.ts - /mission route entry Missions/MissionController.cs - REST API endpoints (per-property PUTs; fixed reorder + move) Missions/NcOptOptionEndpoints.cs - NcOptOption per-property PUT endpoints"
},
"app-anatomy/mission/script-command-panel.html": {
"href": "app-anatomy/mission/script-command-panel.html",
"title": "Script Command Panel | HiAPI-C# 2025",
"summary": "Script Command Panel The key model is ScriptCommand. Layout Head Line Script Title Label Script Title Text Field C# Rich Text Editor Area The model is ScriptText. Source Code Path See this page for git repository. WPF Application Source Code Path Mission/ScriptCommandPanel Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/mission/ScriptCommandPanel.vue — title + CodeMirror 6 editor with a Lezer-based C# grammar (@replit/codemirror-lang-csharp) + live autocomplete backed by Roslyn's CompletionService. Explicit Save button with dirty-tracking; inserted text is the plain Roslyn DisplayText (snippet-style placeholders intentionally dropped). wwwroot-src/src/components/mission/csharpCompletionSource.ts — CodeMirror CompletionSource adapter that calls the Roslyn-backed endpoint and maps the response into CM6 Completion records. Missions/ScriptCompletionService.cs — in-process singleton AdhocWorkspace that reuses SessionShell.ScriptOptions for completion queries. Missions/ScriptCompletionController.cs — POST /api/script/completions. Returns { label, kind, detail } tuples; per-item Roslyn description (GetDescriptionAsync) is deferred. Missions/MissionController.cs — REST endpoints for ScriptText + title per-property PUTs."
},
"app-anatomy/player/cycle-line-charts.html": {
"href": "app-anatomy/player/cycle-line-charts.html",
"title": "Cycle-Line Charts | HiAPI-C# 2025",
"summary": "Cycle-Line Charts The cycle-line charts visualise a per-step, per-cycle detail view of force / moment signals around the currently-selected step. They are re-fetched whenever SelectedStepInfoHub pushes a new step, so the operator can zoom into one spindle revolution (or the configured cycle window) as they scrub through the mission timeline on the strip charts. The anatomy covers four cycle-line charts in the webservice, all sharing BaseCycleLineChart.vue: Chart Source Data Notes Force Cycle-Line Chart MachiningStep.ForceToWorkpieceOnProgramCoordinate or ForceToToolOnToolRunningCoordinate Header dropdown picks between the two flag values; swaps the fetcher prop so BaseCycleLineChart refetches. Sim Spindle Moment Cycle-Line Chart MachiningStep.MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm Simulated moment from the physics model. Sensor Spindle Moment Cycle-Line Chart IMomentShot via MachiningProject.TimeMapping.GetShots(stepIndex) Sensor-measured moment. Rendered as a sibling card to the sim chart, not a twin overlay (see Deferred). Dynamometer Force Cycle-Line Chart IForceShot via TimeMapping.GetShots(stepIndex) Sensor-measured force. Returns empty shape when no dynamometer data. Key Model: MachiningProject.TimeMapping + the selected MachiningStep. Layout Each cycle-line chart is a card: Header Row Title label. Flag picker (Force chart only) — <q-btn-dropdown> between ForceToWorkpieceOnProgramCoordinate (default) and ForceToToolOnToolRunningCoordinate. Body — UplotChart.vue rendering three series (X / Y / Z channels) over a shared time axis ts. Empty-state overlay — when hasData=false (no selection, no shots), a placeholder is shown; the underlying series still carry a shape-preserving ts=[0,360], xs/ys/zs=[NaN,NaN] payload so the canvas does not jump. Behavior Step-driven refetch. BaseCycleLineChart accepts a fetcher: () => Promise<CycleLineResponse> prop. On SelectedStepInfoHub.StepChanged the fetcher is re-invoked and the chart re-renders. Server-resolved step. Cycle-line endpoints resolve “currently-selected step” from LocalProjectService.ClStrip.GetSelectedPos() rather than accepting stepIndex as a query parameter. This keeps the contract simple and aligns with the event-driven model used by the rest of the player plumbing. Toolbar slot. The optional #toolbar slot lets callers embed per-chart controls (e.g. the Force chart's flag picker) without subclassing. Source Code Path See HiNC App Anatomy for git repository links. WPF Application Source Code Path Not implemented. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/player/charts/BaseCycleLineChart.vue — shared cycle-line skeleton. wwwroot-src/src/components/player/charts/UplotChart.vue — uplot wrapper (shared with strip charts). wwwroot-src/src/components/player/charts/ForceCycleLineChart.vue — force cycle-line chart with flag picker. wwwroot-src/src/components/player/charts/SimSpindleMomentCycleLineChart.vue — simulated spindle moment. wwwroot-src/src/components/player/charts/SensorSpindleMomentCycleLineChart.vue — sensor-measured spindle moment. wwwroot-src/src/components/player/charts/DynamometerForceCycleLineChart.vue — dynamometer force. Players/PlayerChartsController.cs — cycle-line endpoints: GET /api/player/cycle-line/force?flag=ForceToWorkpieceOnProgramCoordinate|ForceToToolOnToolRunningCoordinate GET /api/player/cycle-line/sim-spindle-moment GET /api/player/cycle-line/sensor-spindle-moment GET /api/player/cycle-line/dynamometer-force All four endpoints return { hasData, ts, xs, ys, zs } flattened for direct uplot consumption. Empty payloads use a shape-preserving ts=[0,360], xs/ys/zs=[NaN,NaN] fill. Deferred True twin overlay (two series on one canvas) for Sim + Sensor Spindle Moment. Currently rendered as two sibling cards sharing the same chart grid, which keeps the uplot instances independent. Revisit if operators ask for overlap. Related Pages Strip Charts — windowed mission-timeline charts that share the same uplot engine and drive step selection. Player Panel — top-level layout that hosts the charts."
},
"app-anatomy/player/index.html": {
"href": "app-anatomy/player/index.html",
"title": "Player Panel | HiAPI-C# 2025",
"summary": "Player Panel The Player Panel is the primary visualization component for machining simulation playback. Key Models LocalProjectService - Project data service UserService - User service Associated Tool Bars Player Tool Bar RenderingCanvas Tool Bar Player extended RenderingCanvas Tool Bar Layout Structure The Player Panel consists of: Central Area: RenderingCanvas for 3D visualization Vertical Splitter: Draggable bar to resize widths Side Panel: Upper: Selected-Step Info Panel Horizontal Splitter: Draggable bar to resize heights Lower: Session Message Panel Default Panel Configuration The Player Panel is set as the default panel on the Page Panel when the main window opens. The associated toolbars (Player Tool Bar, RenderingCanvas Tool Bar, Player Extended RenderingCanvas Tool Bar) are also configured accordingly. Player Extended RenderingCanvas Tool Bar Behavior The Player Extended RenderingCanvas Tool Bar provides additional controls: CL Strip Buttons and Fit View Button - Controls for CL strip display and view fitting Project Rendering Items DropDown - Selection of rendering items The toolbar receives notifications when the project is changed from Main Panel. Related Preference Step Present Preference Page - Controls step presentation settings RenderingCanvas Behavior The RenderingCanvas displays the machining project visualization: On initialization, a MachiningProjectDisplayee (the front-end's own copy of the GUI-layer displayee) is created and assigned to RenderingCanvas.DispEngine.Displayee The displayee receives project data from LocalProjectService The RenderingCanvas is disposed when the Player Panel is disposed Source Code Locations See HiNC GUI Architecture for git repository links. WPF Application Play/PlayerPanel Web Application HiNC-2025-webservice (Quasar CLI SPA): Core page + toolbars: wwwroot-src/src/pages/PlayerPage.vue — routed page at /player. Hosts the top toolbar row, the central <RenderingCanvas>, and the right-hand splitter with step-info + session-message panels. wwwroot-src/src/components/player/PlayerToolBar.vue — play / pause / stop / seek controls. wwwroot-src/src/components/player/PlayerExtendedToolBar.vue — Display Options ▾ (via the shared DisplayOptionsMenu) + CL-strip fit-view controls + Project Rendering Items dropdown. wwwroot-src/src/components/player/PlayerDivisionVisibilityButton.vue — view_quilt icon button that drives the ten O1.1 layout toggles (which strip charts / cycle-line charts / info panels are visible). Persists via /api/preference/player-div-config. wwwroot-src/src/components/player/SelectedStepInfoPanel.vue — condensed step-info summary (see Selected-Step Info Panel). wwwroot-src/src/components/player/SessionMessagePanel.vue — mission-time message list. Charts (see the dedicated anatomy pages for details): Strip Charts — three uplot-backed strip charts (availability / surface roughness / individual-property) driven by ClStrip. Cycle-Line Charts — four uplot-backed cycle-line charts (force / sim spindle moment / sensor spindle moment / dynamometer force). Shared chart primitives (under components/player/charts/): UplotChart.vue — thin uplot wrapper with ResizeObserver + reactive data / series / bands bindings. BaseStripChart.vue — strip-chart skeleton that matches PluralStripChart (min / max banded series, header aspect picker, wheel / drag / click pointer handlers). BaseCycleLineChart.vue — cycle-line skeleton that takes a fetcher prop and re-fetches on SelectedStepInfoHub updates. Backends: Players/PlayerController.cs — play / pause / stop / seek. Players/PlayerStatusHub.cs + Players/PlayerStatusService.cs — session lifecycle broadcasts. Players/SessionMessageHub.cs + Players/SessionMessageService.cs — mission-time message stream. Players/SelectedStepInfoHub.cs + Players/SelectedStepInfoService.cs — selected-step push notifications (drives step-info panel + cycle-line chart refetches). Players/ClStripController.cs + Players/ClStripHub.cs + Players/ClStripBroadcastService.cs — CL-strip range state + zoom / pan / select / enter broadcasts. Players/PlayerChartsController.cs — unified strip-chart + cycle-line-chart data endpoints. Players/PlayerCanvasHub.cs — rendering-canvas SignalR hub for the central viewer. Implementation Checklist Tip When building a new Player Panel implementation: Create the layout with RenderingCanvas Set up RenderingCanvas behavior Create Player Tool Bar Create Player Extended RenderingCanvas Tool Bar with CL Strip, Fit View, and Rendering Items behaviors Connect to Navigation Menu on Main Panel Set Player Panel as default panel with associated toolbars Build Session Message Panel, Selected-Step Info Panel, and Step Present Preference Page"
},
"app-anatomy/player/player-extended-renderingcanvas-tool-bar.html": {
"href": "app-anatomy/player/player-extended-renderingcanvas-tool-bar.html",
"title": "Player extended RenderingCanvas Tool Bar | HiAPI-C# 2025",
"summary": "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. Layout Player extended RenderingCanvas Tool Bar Show CL Strip Button Show CL Strip Dots Button 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 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 Tip 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 MachiningProjectDisplayee.RenderingFlagBitArray to set the Project Rendering Items. Tip 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. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerExtendedRenderingCanvasToolBar Web Page Application Source Code Path wwwroot/player/player-extended-toolbar.js Players/PlayerController.cs"
},
"app-anatomy/player/player-tool-bar.html": {
"href": "app-anatomy/player/player-tool-bar.html",
"title": "Player Tool Bar | HiAPI-C# 2025",
"summary": "Player Tool Bar Layout Player Tool Bar Status Text Field Start Button Pause Button Run-One-Line Button Run-One-Step Button Stop Button Reset Button Behavior of Player Tool Bar See the example code to: complete the behavior of the buttons and Status Text Field. The rapidly used buttons should has hotkey. At least the following buttons: Run One Line Button Run One Step Button Start/Continue Pause Both webservice and win-desktop applications use LocalProjectService events for monitoring PacePlayer status changes. In webservice applications, the PlayerStatusService subscribes to these LocalProjectService events and broadcasts status changes via PlayerStatusHub using SignalR for real-time communication. Win-desktop applications can directly subscribe to LocalProjectService events for status updates. Alter the background color of the Status Text Field if the status changed. Warning style color Running Secondary style color Paused No Project Success style color Finished Ready The action of Reset Button should be async for user experience. Tip Use icon instead of text to the tool bar button. Run One Line Button and Run One Step Button use the same icon, use the different color to resolve them. Run One Line Button > default color with green seasoned Run One Step Button > default color with blue seasoned The other button use the default color is enough. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerToolBar Web Page Application Source Code Path wwwroot/player/player-tool-bar.js Players/PlayerController.cs Players/PlayerStatusHub.cs Players/PlayerStatusService.cs SignalR Implementation (Webapi Only) PlayerStatusHub provides real-time player status updates, with methods GetPlayerStatus() and event PlayerStatusUpdated. PlayerStatusService monitors PacePlayer events (IsRunningChangedEvent, IsLockedChangedEvent, IsFinishedChangedEvent, ResetedEvent) and broadcasts changes via SignalR. The JavaScript component connects to /playerStatusHub and listens for status updates. API endpoints include /api/player/start, /api/player/pause, /api/player/resume, /api/player/run-line, /api/player/run-step, /api/player/stop, and /api/player/reset."
},
"app-anatomy/player/selected-step-info-panel.html": {
"href": "app-anatomy/player/selected-step-info-panel.html",
"title": "Selected-Step Info Panel | HiAPI-C# 2025",
"summary": "Selected-Step Info Panel The panel locates on the Player Panel. The model is MachiningStep and UserService. The MachiningStep is assigned by ClStrip.PosSelected. 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 Refer the code to show step infomation. internal static void ShowStepPresent( UserService userEnv, MachiningStep machiningStep) { foreach (var entry in userEnv.DisplayedStepPresentAccessList) { var present = entry.Value.Present; var valueText = string.Format(\"{0:\" + present.DataFormatString + \"}\", entry.Value.GetValueFunc.Invoke(machiningStep)); Console.WriteLine($\"{present.ShortName}: {valueText} {present.TailUnitString} ({present.Name} [{entry.Key}])\"); } } SignalR Implementation (Webapi Only) SelectedStepInfoHub provides real-time step updates with method GetSelectedStepInfo() and event SelectedStepInfoUpdated. SelectedStepInfoService monitors PosSelected and MachiningStepSelected events and broadcasts updates. The JavaScript component connects to /selectedStepInfoHub to receive step change notifications and update the UI accordingly. Source Code Path See this page for git repository. WPF Application Source Code Path Play/SelectedStepInfoPanel Web Page Application Source Code Path wwwroot/player/selected-step-info-panel.js (Vue component) wwwroot/player/selected-step-info-panel.css (Styles) Players/PlayerController.cs (REST API - GetSelectedStepInfo endpoint) Players/SelectedStepInfoService.cs (Business logic) Players/SelectedStepInfoHub.cs (SignalR Hub for real-time updates)"
},
"app-anatomy/player/strip-charts.html": {
"href": "app-anatomy/player/strip-charts.html",
"title": "Strip Charts | HiAPI-C# 2025",
"summary": "Strip Charts The strip charts visualise a windowed, downsampled view of the full mission timeline for physics / quality aspects that are computed per step across the whole NC program. They are rendered as min/max banded series over the ClStrip.GetDispBegin() .. AbsDispEnd window. Operators use them to spot which segments of the mission are loading the spindle, degrading surface quality, or hitting thermal limits. The anatomy covers three strip charts in the webservice, all sharing BaseStripChart.vue: Chart Source Aspect Items Plural Strip Availability Chart Availability Yielding-stress / max-spindle-torque / max-spindle-power / spindle-working-temperature / thermal-yield ratios (5 series). Plural Strip Roughness Chart SurfaceRoughness Re-cut depth + program-side cusp + Δ tip deflection X / Y / Z in µm (5 series). Strip Individual Chart Individual One series of a user-picked StepPropertyAccessDictionary key (≈90 keys). Key Model: MachiningProject via LocalProjectService.ClStrip + LocalProjectService.StepPropertyAccessDictionary. Layout Each strip chart is a card: Header Row Title label (aspect name). Aspect picker (Individual chart only) — tune icon dropdown listing every StepPropertyAccessDictionary key with a GetQuantityFunc, sorted by PresentAttribute.Name. Picking a key calls POST /api/player/inspecting-key and re-fetches the chart. X-axis picker — IndexByTime (default) / IndexByStep. Window chip — displays [dispBegin..absDispEnd] / count for at-a-glance scope. zoom_out_map reset button — returns the window to the full mission. Body — UplotChart.vue rendering one min/max band pair per item (two stroked series of the same colour + a filled band at 15% opacity). “No physics data” overlay — shown when every item's min / max arrays are all NaN (typical for Availability without a physics licence). Behavior Windowed fetch. Only the ClStrip.GetDispBegin() .. AbsDispEnd window is fetched, at a bucket count matching the chart's pixel width. The server-side ClStrip.GetMinMaxList(threshold, itemCount) handles down-sampling. Pointer interactions: wheel over the plot area → POST /api/cl-strip/wheel with scale = Math.pow(1.05, deltaY * 1/166) + xPositionPercentage. Right / middle-button drag → POST /api/cl-strip/pan with accumulated xOffsetPercentage. Frame-batched via requestAnimationFrame. Touch / pen drags also pan without a button modifier. Left click → POST /api/cl-strip/select-step with the nearest bucket's original step index (via chart.valToPos reverse lookup). Mouse move (debounced 80 ms) → POST /api/cl-strip/enter-step for hover. Live refresh. useClStripHub subscribes to DispRangeChanged (re-fetch when anyone else zooms / pans) and Updated (coalesced re-broadcast while a mission is running). PlayerStatusHub.hasProject rising edge also triggers a refetch. Client-side debounce. BaseStripChart.load() is debounced 50 ms on the client so a burst of Updated events during a fast-running mission coalesces into one fetch. Source Code Path See HiNC App Anatomy for git repository links. WPF Application Source Code Path Not implemented. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/player/charts/BaseStripChart.vue — shared strip-chart skeleton. wwwroot-src/src/components/player/charts/UplotChart.vue — uplot wrapper. wwwroot-src/src/components/player/charts/PluralStripAvailabilityChart.vue — availability chart. wwwroot-src/src/components/player/charts/PluralStripRoughnessChart.vue — surface-roughness chart. wwwroot-src/src/components/player/charts/StripIndividualChart.vue — aspect-picker individual chart. wwwroot-src/src/api/clStrip.ts — typed REST wrappers: getClStripRange, setClStripDispRange, clStripWheel, clStripPan, selectClStripStep, enterClStripStep. wwwroot-src/src/composables/useClStripHub.ts — singleton hub wrapper (same ref-counting pattern as the other player hubs). Players/PlayerChartsController.cs — strip-chart data: GET /api/player/strip-chart?aspect=Availability|SurfaceRoughness|Individual&xValueCategory=IndexByTime|IndexByStep&widthHint=…&dispBegin=…&dispEnd=…&inspectingKey=… → { xs, indexes, items:[{ key, label, unit, min, max }], isXTicksRangeMode, dispBegin, absDispEnd, count }. Players/ClStripController.cs — range manipulation (server-side counterparts of the pointer handlers above): GET /api/cl-strip/range — snapshot { dispBegin, absDispEnd, count, selectedIndex, enteredIndex }. POST /api/cl-strip/disp-range body { dispBegin, dispEnd }. POST /api/cl-strip/wheel body { scale, xPositionPercentage, xValueCategory }. POST /api/cl-strip/pan body { xOffsetPercentage, xValueCategory }. Legacy feelingRatio=2. POST /api/cl-strip/select-step body { stepIndex } → ClStrip.SetSelectedPos(...). POST /api/cl-strip/enter-step body { stepIndex } (nullable) → ClStrip.SetEnteredPos(...). Players/ClStripHub.cs + Players/ClStripBroadcastService.cs — SignalR at /clStripHub. Broadcasts DispRangeChanged(snapshot), StepSelected({ stepIndex }), StepEntered({ stepIndex }), Updated(snapshot). Single-flight Interlocked mutex coalesces re-broadcasts; client debounce handles the rest of the rate-limiting. Deferred Y-axis custom tick formatter (e.g. 0.60 → 60% for Availability). Port is axes[1].values: (_, vals) => vals.map(v => \\${(v*100).toFixed(0)}%`)` in uPlot; not yet applied. Same one-liner for µm / N suffixes. triggerHover external programmatic hover — the server-side event flow + client-side hover-on-drag are shipped, but the uPlot cursor is not yet programmatically positioned on incoming StepEntered events from other charts. Pure UX polish. RangeColorRule per-value colour bands — legacy paints bar backgrounds by value thresholds. Requires a custom uPlot draw hook. VRange modes (Fit / Lock / Symmetric) from StripIndividualInputGroup — uPlot supports via scales.y.range function; deferred (auto-fit default is fine for now). Related Pages Cycle-Line Charts — per-selected-step charts that share the same uplot engine. Player Panel — top-level layout that hosts the charts."
},
"app-anatomy/preference/graphic-cache-dropdown.html": {
"href": "app-anatomy/preference/graphic-cache-dropdown.html",
"title": "Graphic-Cache SubMenu | HiAPI-C# 2025",
"summary": "Graphic-Cache SubMenu 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 Graphic-Cache Lower Limit Input Text Field Graphic-Cache Upper Limit Input Text Field Graphic-Cache Input Text Field Graphic-Cache Slider Behavior 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 MainWindow (be included in preference menu) Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): 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/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.GraphicCacheMb → CubeTree.DispCacheMb."
},
"app-anatomy/preference/index.html": {
"href": "app-anatomy/preference/index.html",
"title": "Preference Menu Dropdown | HiAPI-C# 2025",
"summary": "Preference Menu Dropdown 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 Preference Menu Dropdown Step Present Preference Button Web application only: relocated to the Player's Step Info column, where a Step Present button on the Step Properties panel title bar opens it as a modal next to the list it configures. Graphic-Cache Dropdown Web application only: relocated to the Player toolbar's Workpiece ▾ dropdown. Language Selection SubMenu Show Physics Options CheckBox The model is ShowPhysicsOptions. The checkbox is disabled and unchecked if IsPhysicsLicensed is false. Show Log Button See Message Section. The button does not exist on WPF application. In the web application it is an always-visible button on the menu bar's right side rather than a dropdown entry. 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 MainWindow (includes preference menu) Web Application wwwroot-src/src/components/AppMenuBar.vue — the Preference ▾ dropdown itself. Environments/PreferenceController.cs"
},
"app-anatomy/preference/language-selection-submenu.html": {
"href": "app-anatomy/preference/language-selection-submenu.html",
"title": "Language Selection SubMenu | HiAPI-C# 2025",
"summary": "Language Selection SubMenu The submenu locates on the Preference Menu Dropdown. The model UserService is from its parent component. Load the language preference on application start. Note Keep language resource on each UI componenets. Layout Language Selection SubMenu English Radio CheckBox Simlified Chinese Radio CheckBox Traditional Chinese Radio CheckBox Source Code Path See this page for git repository. WPF Application Source Code Path MainWindow (In the preference menu) Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): 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.ts — languageCode 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. Note The rendered text does not yet flip when the language is changed — the preference is persisted but UI text localisation (via vue-i18n + translation bundles) is deferred. The confirmation toast informs the user of this intentionally."
},
"app-anatomy/preference/step-present-preference-page.html": {
"href": "app-anatomy/preference/step-present-preference-page.html",
"title": "Step Present Preference Page | HiAPI-C# 2025",
"summary": "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. Layout Step Present Preference Page (or window) Candidate Keys Panel Category A Panel Key a ToggleButton Key b ToggleButton ... Category B Panel ... ... Category Other Panel Displayed Keys Panel Key 1 Key 2 ... The categories are not defined for programming logic but only for user experience. So decide and define the categories in the GUI here only. Since the Keys are not all come from the properties of 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. To both Candidate Keys Panel and Displayed Keys Panel: 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: File (NcName, NcLineNumber, …). Time (EndTimecode, StepTime, …). Tool (ToolId, CutterName, …). Coordinate (Position, Coordinate, Orientation, …). Motion (Feedrate, SpindleSpeed, Move, …). Cutting / Chip (CuttingGeom, ChipThickness, CuspHeight, …). Physics (Force, Power, Temperature, …) — visible only when UserService.EnablePhysics is true. Keys whose property is not declared on MachiningStep (for example keys contributed by physics add-ons) fall into a catch-all “Other” category at the end of the panel. Refer to the code to apply PresentAttribute: internal static void ShowStepPresent( UserService userEnv, MachiningStep machiningStep) { foreach (var entry in userEnv.DisplayedStepPresentAccessList) { var present = entry.Value.Present; var valueText = string.Format(\"{0:\" + present.DataFormatString + \"}\", entry.Value.GetValueFunc.Invoke(machiningStep)); Console.WriteLine($\"{present.ShortName}: {valueText} {present.TailUnitString} ({present.Name} [{entry.Key}])\"); } } Source Code Path See this page for git repository. WPF Application Source Code Path Preference/StepPresentPreferenceWindow Web Page Application Source Code Path Current (Quasar CLI SPA): wwwroot-src/src/pages/StepPresentPreferencePage.vue — two-pane editor (Candidate Keys grouped by the seven canonical categories / Displayed Keys drag-and-drop list) with Reload / Reset / Cancel / Save toolbar. wwwroot-src/src/api/preference.ts — getStepPresentKeys / setStepPresentKeys / resetStepPresentKeys + STEP_PRESENT_CATEGORY_ORDER. wwwroot-src/src/router/routes.ts — /preference/step-present entry. Environments/PreferenceController.cs — GetStepPresentKeys / UpdateStepPresentKeys (persists through UserService.SaveUserConfig()) / ResetStepPresentKeys + ResolveStepPresentCategory helper (shares the exact nameof(MachiningStep.*) switch with the WPF window)."
},
"app-anatomy/renderingcanvas-tool-bar.html": {
"href": "app-anatomy/renderingcanvas-tool-bar.html",
"title": "RenderingCanvas Tool Bar | HiAPI-C# 2025",
"summary": "RenderingCanvas Tool Bar The RenderingCanvas Tool Bar provides view control buttons for the 3D rendering canvas. It operates on DispEngine. View Buttons The toolbar includes standard view buttons: Button API Method Front View SetViewToFrontView() Back View SetViewToFrontView() + TurnBackView() Right View SetViewToRightView() Left View SetViewToRightView() + TurnBackView() Top View SetViewToTopView() Bottom View SetViewToTopView() + TurnBackView() Isometric View SetViewToIsometricView() Back View Implementation Back / Left / Bottom views are composed by first calling the corresponding forward-view method (SetViewToFrontView / SetViewToRightView / SetViewToTopView) and then invoking TurnBackView() to flip the camera about the view plane. Display Options Dropdown Pages that sit next to a RenderingCanvas surface a per-page Display Options ▾ menu button that toggles visibility / rendering-mode flags on the engine's current Displayee. The dropdown's layout (header + checkboxes + radio rows) is shared across four callers — Workpiece, Fixture, ToolHouse, and the Player extended toolbar — so it is implemented once as a generic, schema-driven component. Schema Each dropdown consumes a DisplayGroup[] array. A group has an optional header and a flat list of items: { kind: 'check', label, modelValue, disable?, onUpdate } — a checkbox row. { kind: 'radio', label, groupValue, value, disable?, onUpdate } — a radio row inside an implicit radio-group keyed by groupValue. The component is generic over the radio value type, so RenderingMode / HolderRenderingMode / etc. stay fully typed at the call site. HiNC-2025-webservice (Quasar CLI SPA) wwwroot-src/src/components/widgets/DisplayOptionsMenu.vue — the shared <q-btn-dropdown> + <q-list> implementation. Replaces the previously-inlined markup in all four callers. Callers (each reads a DisplayGroup[] computed from its page-local state and forwards onUpdate to its existing handlers): wwwroot-src/src/pages/WorkpiecePage.vue wwwroot-src/src/pages/FixturePage.vue wwwroot-src/src/pages/ToolHousePage.vue wwwroot-src/src/components/player/PlayerExtendedToolBar.vue Backends: the existing per-page display controllers (WorkpieceDisplayController.cs, FixtureDisplayController.cs, ToolHouseDisplayController.cs, Players/*DisplayController.cs, and the shared /api/rendering-flags surface) drive the underlying DispEngine.RenderingFlag state. DisplayOptionsMenu.vue is UI-only; it does no REST work itself — the page owns the onUpdate handlers. WPF Common/DisplayOptionsMenu — each page owns its own <MenuItem>-based dropdown; no shared component. Behaviour parity only (no schema-driven reuse). Source Code Locations See HiNC GUI Architecture for git repository links. WPF Application Disp/RenderingCanvasToolBar Web Application HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/widgets/RenderingCanvasToolBar.vue — View dropdown (Isometric / Front / Back / Right / Left / Top / Bottom). Shared across Workpiece / Fixture / ToolHouse / Controller / Player viewer sections. wwwroot-src/src/components/widgets/DisplayOptionsMenu.vue — schema-driven dropdown described above. wwwroot-src/src/components/widgets/RenderingCanvas.vue — SignalR-hosted WebSocket canvas (see Rendering Canvas on Web Service). Backends: Disp/RenderingHub.cs — handles view changes from the toolbar. Disp/RenderingService.cs — manages DispEngine instances. Disp/RenderingFlagsController.cs — the shared /api/rendering-flags surface consumed by DisplayOptionsMenu.vue callers."
},
"app-anatomy/session-message-panel/index.html": {
"href": "app-anatomy/session-message-panel/index.html",
"title": "Session Message Panel | HiAPI-C# 2025",
"summary": "Session Message Panel Session messages are partitioned by kind into three sinks on LocalProjectService (obtained via dependency injection): ShellProgress — session-level routine / lifecycle messages (ShellProgress). Session-scoped: the property is null outside BeginSession/EndSession. NcDiagnosticProgress — NC-pipeline diagnostics (NcDiagnosticProgress), each anchored to its NC source sentence. StepDiagnosticProgress — diagnostics anchored to a motion step (StepDiagnosticProgress). The panel surfaces each sink in its own tab, so one tab holds one message kind. Layout Tab Bar Shell Tab NC Diagnostics Tab Step Diagnostics Tab Per-Tab Content Message Text Filter Input 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 Message — GetId() and GetNotification() Only take the last filtered elements (e.g. 5001000) for user experience. Find the usage example in the code: internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService) { // 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. 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 (NcDiagnostic diagnostic in localProjectService.NcDiagnosticProgress.Diagnostics.ToList()) { 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\", shellMessages.Select(m => $\"[{m.GetSeverity()}] {m.GetId()}: {m.GetNotification()}\")); } 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. Note The message display should be real-time. Behavior of Export Button Export ALL filtered elements of the active tab's sink. SignalR Implementation (Webapi Only) 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 Play/SessionMessagePanel Web Page Application Source Code Path 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)"
},
"app-anatomy/translation-remarks.html": {
"href": "app-anatomy/translation-remarks.html",
"title": "Translation Remarks | HiAPI-C# 2025",
"summary": "Translation Remarks The translation terminology and convention has to keep consistency. Anchor 定位 Cutter 刀具 Insert Cutter 刀片式刀具 Insert 刀片 Holder 刀把 Cylindroid Holder 柱狀刀把 Freeform Holder 任意形刀把 Shank 刀柄 Fixture 夾具 Milling Cutter 銑刀 Freeform Remover 任意移除工具 Flute 刀刃 Flute-Profile 刃包絡型 Flute-Contours 刃型 Flute-Inner-Beam 刃中芯 Upper-Beam 夾持柱 Integral Mode 組裝形式 Solid End 一體式 Insert End 刀片式 Preset 前設置 Meshed Geometry 運行時幾何 Machining Resolution 加工解析度"
},
"app-anatomy/unused/machine-tool-panel.html": {
"href": "app-anatomy/unused/machine-tool-panel.html",
"title": "Machine Tool Panel | HiAPI-C# 2025",
"summary": "Machine Tool Panel Layout of Machine Tool Panel Top Item: Load button and the Loaded Machine Tool File Name readonly textarea. Central Panel: RenderingCanvas Behavior of Machine Tool Panel RenderingCanvas.Displayee is the machine tool (MachiningEquipment.MachiningChain) Load button load the machine tool to MachiningChain and MachiningChainFile by GenByFile."
},
"app-anatomy/util/file-explorer.html": {
"href": "app-anatomy/util/file-explorer.html",
"title": "File Explorer Page | HiAPI-C# 2025",
"summary": "File Explorer Page The File Explorer page is a server-side filesystem browser covering three named roots: AdminDirectory — server-wide admin area. ProjectDirectory — the currently-loaded project directory (omitted from the root list when no project is loaded). ResourceDir — the shared resource tree under AdminDirectory + \"Resource/\". Note Absolute filesystem paths never leave the server. The /roots endpoint returns only { name, displayName }, and every exception message is scrubbed to replace root prefixes with the tokens <Admin> / <Project> / <Resource> before it is returned to the browser. Layout File Explorer Page Toolbar Root Selector Dropdown — display-name only, sourced from GET /roots. Up Button Path Input — editable; Enter navigates. Refresh / New Folder / New File / Upload Buttons. Breadcrumb Row — single-click navigation up the tree. Listing Table (<q-table>) — columns Name / Size / Modified / Actions. Directories first, then files, name-ascending. Row click: Directory → navigate into it. Non-binary file → open the editor dialog. Actions: Edit (non-binary files only), Download (files), Download ZIP (folders), Extract ZIP (.zip only), Rename, Duplicate, Delete (double-click to confirm). Editor Dialog (full-width / full-height) Title Bar — file name + language chip + Cancel / Save / Close. Body — <TextEditor> wrapping CodeMirror 6 filling the viewport. Behavior Path-traversal defence. Every request is resolved via Path.GetFullPath and validated with Hi.Common.PathUtils.PathUtil.IsDescendant(root, absolute) before any IO. Attempts like relativePath=../outside are rejected with HTTP 400. Duplicate. POST /copy tries {name}-Copy-00 through {name}-Copy-19 and returns the first free slot; 400 if all 20 are taken. UTF-8 without BOM. WriteText uses a cached new UTF8Encoding(encoderShouldEmitUTF8Identifier: false) so round-tripped files do not accumulate a 3-byte BOM on every save. Binary gating. The backend refuses to open binary files as text; the frontend also pre-filters by extension (.stl, .zip, images, DBs, …) so the Edit button only appears when the text path is likely to work. Syntax Highlighting components/widgets/TextEditor.vue wraps CodeMirror 6 so the editor gets real syntax highlighting for the common project-file formats listed below. Stack: codemirror + @codemirror/state + @codemirror/view (core). @codemirror/lang-xml + @codemirror/lang-json + @codemirror/lang-markdown (3 language packs). Props: modelValue (two-way), language: 'xml' | 'json' | 'markdown' | 'text' (default text), readonly. Language and readonly are swapped via Compartment.reconfigure, so the view never has to tear down on mode change. Extension → language mapping lives in components/widgets/editorLanguage.ts (single source of truth imported by both TextEditor.vue and FileExplorerPage.vue): Language Extensions xml xml, hincproj, CoatingMaterial, CutterMaterial, Holder, WorkpieceMaterial, mp, MillingPara, SpindleCapability, StickMachiningTool, general-mech, mt markdown md, markdown json json text (fallback) everything else, including .nc / .ptp / .mpf / .h / .cs / .csv Source Code Path See HiNC App Anatomy for git repository links. WPF Application Source Code Path Not implemented. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/pages/FileExplorerPage.vue — routed page at /util/file-explorer. wwwroot-src/src/components/widgets/TextEditor.vue — CodeMirror 6 wrapper. 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/components/AppMenuBar.vue — Util → File Explorer entry. Common/FileExplorerController.cs — REST endpoints under /api/file-explorer: Method Path Notes GET /roots List available roots; Project is omitted when no project is loaded. Returns display names only. GET /list?rootName=&relativePath= Directories-first, name-ascending listing. GET /read-text?… UTF-8 text; when the file is detected as binary returns content=null, isBinary=true. POST /write-text Body {rootName, relativePath, content}; creates parents as needed. POST /create-file Fails if target exists. POST /create-directory Recursive create; no-op if already a directory. POST /rename Body {rootName, relativePath, newRelativePath}; refuses cross-root moves. POST /copy {name}-Copy-00..-Copy-19; uses Hi.Common.FileLines.FileUtil.CopyDirectory for directories. DELETE /delete?… Files → delete, directories → recursive; refuses to delete the root itself. GET /download?… Streams a file as application/octet-stream. GET /download-zip?… Zips a directory in-memory and streams application/zip. POST /upload?… Multipart single-file upload; overwrites target. POST /extract-zip Body {rootName, relativePath}; extracts next to the archive into <name>/. Deferred Path-embedded route like /FileExplorer/{Root}/{*path} — replaced by explicit query state for easier linking. <q-tree> directory-tree sidebar — <q-table> + breadcrumb + Up button covers every navigation need. Drag-and-drop upload, multi-file upload, folder upload (webkitdirectory). Syntax highlighting for .nc / .cs / .csv. NC needs a CM6 StreamLanguage G-code parser; C# needs @codemirror/legacy-modes wiring. FileExplorerConfig.ExposeAbsolutePath flag in appsettings.json. Default (absolute paths never leave the server) is identical to what the flag's default would be, so adding later doesn't change observable behaviour. Related Pages Object Management Menu Button — shares the XML editor dialog pattern and targets the same project / resource folders through a different endpoint family. Mechanism Builder Page — future integration target for Mechanism Builder's Load / Save As dialogs."
},
"app-anatomy/util/index.html": {
"href": "app-anatomy/util/index.html",
"title": "Util Pages | HiAPI-C# 2025",
"summary": "Util Pages The Util menu hosts utility pages that are not tied to the main machining workflow. They support side-tasks — browsing the server filesystem, building a generic mechanism XML, running ad-hoc conversions — and are reachable through the top-level Util ▾ dropdown in AppMenuBar.vue. Shipped 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 Cutter Editor (standalone) — standalone variant of the Cutter editor; reuses the ToolHouse cutter panel. Milling Parameter Converter — profile-milling-parameters → rake-face parameters. Time Chart — CSV shot-file viewer. Debugger — development-only IDisplayee visualiser keyed by IndexService key."
},
"app-anatomy/widget/gui-file-path-assignment.html": {
"href": "app-anatomy/widget/gui-file-path-assignment.html",
"title": "GUI File Path Assignment | HiAPI-C# 2025",
"summary": "GUI File Path Assignment See the remarks of MakeXmlSource(string, string, bool) to know the design pattern of file path treatment. if the assigned file path is descendent of the configuration directory, it is straight forward that set the baseDirectory to the configuration directory and apply relative path to relFile; if not, set baseDirectory to null and set relFile to absolute path. GUI that needs to assign file generally requires a code-behind BaseDirectory property as assistent model. The property is assigned by the parent model from the parent GUI. In most cases, the first BaseDirectory is the project directory if the project has assigned (created or loaded). Portability To maintain For the portability of project or the other folder-based unit, if the sub-item is loaded by absolute path outside the folder-based unit directory, redirect the saving path to the folder-based unit directory, i.e. the SubItemFile below. Note You have no need to do an additional action to create a duplicate in the folder-based unit directory. Since the file-writing pattern of MakeXmlSource(string, string, bool) create files when user call to save. In other perspective, if user does not call to save, the local duplicate should be created. The design pattern is usually saw in the HiAPI program, a object contains the properties: object SubItem; string SubItemFile; Then you should keep the Protability. File Path of Load Button and Save Button The genneral convention of the File Path of Load and Save is different by the single-user desktop application and web page application. Tip Always preserve an empty filter ( * . * ) for the browser. Single-User Desktop Application The default directory of the Save/Load button are generally: System Default Directory or Project Directory (default, if not explicitly indicated) The initial directory is the project directory. Resource Directory The path always point to <application path>/Resource/<classification> directory. The button label has to explicitly show Load Resource. The kinds of buttons are not exclusive, they can be existed on the same tool bar. If the selected file path is under the project directory, apply the relative path from the project, i.e. baseDirectory is project directory and relFile is the relative path. Web Page Application The default directory of the Save/Load button are generally: Admin Directory Project Directory Resource Directory The Resource Directory and Project Directory are generally under the Admin Directory. And the admin directory is generally set in the appsettings.json file. Typical Action if exhibitionOnly false On IMakeXmlSource.MakeXmlSource(string, string, bool) with exhibitionOnly false, the argument (baseDirectory and relFile) should be the same from object's host (if exist) XML output function."
},
"app-anatomy/widget/mat4d/index.html": {
"href": "app-anatomy/widget/mat4d/index.html",
"title": "Mat4dControl Component | HiAPI-C# 2025",
"summary": "Mat4dControl Component Mat4dControl is a user control for Mat4d editing and display. Main Features Dual Input Modes Grid Mode: Input 4x4 matrix elements in a grid layout (formatted display with 4 significant digits) Text Mode: Input complete matrix in text format (full precision, no information loss) Matrix Operations Identity: Set matrix to identity matrix Transpose: Transpose the matrix Inverse: Compute the inverse matrix Special Value Handling (Web) Supports Infinity, -Infinity, and NaN values Uses Numeric Input/Output Utilities for display and parsing Source Code Path See this page for git repository. Web Service Application Source Code Path wwwroot/widget/mat4d-control.js Widget/Mat4dHub.cs"
},
"app-anatomy/widget/numeric-io-utilities.html": {
"href": "app-anatomy/widget/numeric-io-utilities.html",
"title": "Numeric Input/Output Utilities | HiAPI-C# 2025",
"summary": "Numeric Input/Output Utilities Handle special numeric values (Infinity, -Infinity, NaN) in web forms to prevent JSON serialization issues between JavaScript frontend and C# backend. Implementation Requirements Your numeric-utils.js module should: Convert special values for display: Infinity → “INF”, -Infinity → “-INF”, NaN → “NaN” Parse display strings back to numeric values Format regular numbers with 4 significant digits (for standard display mode) Provide full precision output without information loss (for text mode editing) Provide Vue mixin for component integration Required Exports numericToDisplay(value) - Converts numeric to display string (4 significant digits) numericToFullPrecision(value) - Converts numeric to full precision string (no information loss, for text mode) displayToNumeric(displayValue, defaultValue) - Parses display to numeric NumericInputMixin - Vue mixin with formatNumericDisplay, toFullPrecision, and parseNumericDisplay methods Usage Guidelines Use numericToDisplay() for standard input fields where formatted display is preferred Use numericToFullPrecision() for text mode inputs (e.g., array-like number editors) where users need to see/edit exact values without precision loss Avoiding Precision Loss When a component has multiple numeric inputs (e.g., Vec3d with X, Y, Z or Mat4d with 16 elements), parsing display values back to numeric on unchanged fields will cause precision loss due to the 4-digit formatting. Problem: If user only edits X, but displayToNumeric() is called on all fields (X, Y, Z), the unchanged Y and Z values lose precision. Solution: Update only the edited field by: Each input field should have its own @change handler (e.g., onXChanged, onYChanged, onZChanged) Backend should provide single-element update API (e.g., UpdateAt(key, index, value)) Only parse and send the edited value to backend Example (Vec3d): Frontend: @change=\"onXChanged\" calls /api/Vec3d/UpdateAt?index=0&value=... Backend: vec3d.At(index) = value; Example (Mat4d): Frontend: @change=\"onCellChanged(row, col)\" calls /api/Mat4d/UpdateAt?index=...&value=... Backend: mat4d.m[index] = value; Source Code Path See this page for git repository. Web Page Application Source Code Path wwwroot/common/numeric-utils.js"
},
"app-anatomy/widget/object-management-menu-button.html": {
"href": "app-anatomy/widget/object-management-menu-button.html",
"title": "Object Management Menu Button | HiAPI-C# 2025",
"summary": "Object Management Menu Button The menu button represent the target object with getter function and setter function. The target object generally is IMakeXmlSource. the target object with getter function and setter function is such like: object TargetObject{get=>TargetObjectGetter?.Invoke();set=>TargetObjectSetter?.Invoke(value);} Func<TargetObject> TargetObjectGetter{get;set;} Action<TargetObject> TargetObjectSetter{get;set;} The target object has the following functions: File Save/Load See GUI File Path Assignment Object Copy/Paste Editor Panel Mode Selection GUI (user-friendly) XML Get XML by IMakeXmlSource with exhibitionOnly true. Set XML by XFactory. If the target object is not IMakeXmlSource, then the XML Editor Panel Mode should not appear. The other functions are still buildable. On XFactory functions, set enableRebase to true (which is the default). The rebase mode resolves relative file paths from the file's own directory, preventing silent inner exceptions. Layout Object Management Menu Button Load Button Load Resource Button Save As Button (splitter) Copy Button (with hotkey support if the Object Management Menu Button is focused) Paste Button (with hotkey support if the Object Management Menu Button is focused) (splitter) GUI Ratio Button XML Ratio Button Tip Since the Object Management Menu Button has special meaning, use icon instead of text label. Do not use icon on the other child buttons. The icons gains nothing but hard to keep style to the full application. If the model is selected, show a different style (may be color) on the menu button. The model should contain a ResourceDirectory property. Do not show Load Resource Button if Resource directory not explicitly gave. Copy & Paste Object Copy/Paste (i.e. Select/Set or Duplicated-Set) Copy (i.e. Select) Set the model to SelectedItem. Paste Set SelectedItem to the model. Set by reference is default. Apply Duplicated-Set if explicitly required. While a object is copied (selected) here, it can also be paste (drag) to: Text editor Use IMakeXmlSource.MakeXmlSource(string, string, bool) with exhibitionOnly false and the argument (baseDirectory and relFile) from object's host to paste the text, it should be the same text content by the host XML output. File browser Use IMakeXmlSource.MakeXmlSource(string, string, bool) with exhibitionOnly true, baseDirectory destination folder, relFile destination file name (maybe xxx.class-name) to paste the file. Show message when paste action success or failed. See Handle Message and Exception. If the data type is not matched, show the un-matched message. Editor Panel Mode Ratio Button The Editor Panel switched by the Editor Panel Mode Ratio Button. The BaseDirectory and RelFile properties should exist. Use the RelFile property if the object's host has the corresponding property like XXXFile. The Apply action should be well-set. Include SetFileDelegate from Gen function. The last argument should also be delivered by the host. So there must exist an property to pass the argument. XML Editor Panel Layout XML Editor Panel Cancel Button Apply Button XML TextArea Shows error message if the xml-parsing or object creation failed on XML Editor Panel Apply Button applied. WPF Application Source Code Path Common/ObjectManagementMenuButton see this page for git repository. Web Page Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): wwwroot-src/src/components/widgets/ObjectManagementMenuButton.vue — Quasar dropdown + XML editor dialog. Emits update:modelKey, objectLoaded, objectPasted, xmlApplied, error. Supports Ctrl+C / Ctrl+V. wwwroot-src/src/api/objectManagement.ts — typed wrapper over /api/ObjectManagement/*. Widget/ObjectManagementController.cs — REST endpoints: Load, LoadResource, SaveAs, Copy, Paste, GetXml, ApplyXml, SupportsXml, GetSelectedItem."
},
"app-anatomy/widget/polar-resolution-2d-panel.html": {
"href": "app-anatomy/widget/polar-resolution-2d-panel.html",
"title": "Polar Resolution 2D Panel | HiAPI-C# 2025",
"summary": "Polar Resolution 2D Panel The model is PolarResolution2d. Layout Polar Resolution 2D Panel Enable Custom Resolution CheckBox enabled if host.model is not null. set host.model to null if not enabled. Linear Resolution (mm) Input Field enabled if model not null Angle Resolution (deg) Input Field enabled if model not null Feature There is a code-behind property to set visibility of Enable CheckBox. If the host.model is null, it may mean the resolution applied the default value. Source Code Path See this page for git repository. WPF Application Source Code Path Geom/PolarResolution2dPanel Web Service Application Source Code Path HiNC-2025-webservice (Quasar CLI SPA): no standalone widget yet — the resolution is edited inline in the owning holder editor's Resolution tab (e.g. wwwroot-src/src/components/toolhouse/CylindroidHolderEditor.vue) and persisted through that holder's controller (e.g. CylindroidHolderController.SetPolarResolution)."
},
"app-anatomy/widget/resizable-bar.html": {
"href": "app-anatomy/widget/resizable-bar.html",
"title": "Resizable Bar Component | HiAPI-C# 2025",
"summary": "Resizable Bar Component A Vue component that provides draggable dividers for resizing adjacent panels in web applications. Overview The ResizableBar component creates a draggable bar that allows users to resize panels by clicking and dragging. It supports both horizontal and vertical orientations. Key Features Directional Support: Works in both horizontal (for width adjustment) and vertical (for height adjustment) orientations Unit Flexibility: Supports pixel, percentage, and custom unit systems through converters Visual Feedback: Changes appearance on hover and during drag operations Constraint System: Enforces minimum and maximum size limits Usage Pattern The component should be placed between two panels that need to be resizable. The resize events provide size information that parent components use to adjust panel dimensions. Unit Modes Pixel Mode (default): Direct pixel value manipulation Percentage Mode: Automatic calculation relative to parent container Custom Mode: User-defined unit converters for specialized requirements Integration Example See the player-panel.js implementation for a practical example of using ResizableBar to create adjustable layouts between rendering canvas and side panels. Web Application Source Code Path common/resizable-bar common/resizable-bar-example player/player-panel See this page ~/app-anatomy/index.md for git repository."
},
"app-anatomy/widget/vec3d/index.html": {
"href": "app-anatomy/widget/vec3d/index.html",
"title": "Vec3dControl Component | HiAPI-C# 2025",
"summary": "Vec3dControl Component Vec3dControl is a user control for Vec3d and display. Main Features Dual Input Modes Standard Mode: Input X, Y, Z components separately (formatted display with 4 significant digits) Text Mode: Input complete vector in text format (full precision, no information loss) Vector Normalization Normalization button (optional) Button visibility controlled by ShowNormalizeButton property Special Value Handling (Web) Supports Infinity, -Infinity, and NaN values Uses Numeric Input/Output Utilities for display and parsing Refer Sample Code <UserControl x:Class=\"HiNC_2025_win_desktop.Geom.Vec3dControl\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" mc:Ignorable=\"d\" d:DesignHeight=\"30\" d:DesignWidth=\"200\"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width=\"*\"/> <ColumnDefinition Width=\"*\"/> <ColumnDefinition Width=\"*\"/> <ColumnDefinition Width=\"Auto\"/> <ColumnDefinition Width=\"Auto\"/> </Grid.ColumnDefinitions> <!-- Standard Mode Panel --> <StackPanel x:Name=\"StandardModePanel\" Orientation=\"Horizontal\" Grid.ColumnSpan=\"5\"> <TextBox x:Name=\"XTextBox\" Width=\"60\" Margin=\"0,0,2,0\" TextChanged=\"XTextBox_TextChanged\" IsReadOnly=\"{Binding IsReadOnly}\"/> <TextBox x:Name=\"YTextBox\" Width=\"60\" Margin=\"0,0,2,0\" TextChanged=\"YTextBox_TextChanged\" IsReadOnly=\"{Binding IsReadOnly}\"/> <TextBox x:Name=\"ZTextBox\" Width=\"60\" Margin=\"0,0,2,0\" TextChanged=\"ZTextBox_TextChanged\" IsReadOnly=\"{Binding IsReadOnly}\"/> <Button Content=\"{DynamicResource Vec3d_TextMode_Toggle}\" Width=\"20\" Click=\"TextModeToggle_Click\" Margin=\"0,0,2,0\" ToolTip=\"{DynamicResource Vec3d_TextMode_Tooltip}\"/> <Button Content=\"{DynamicResource Vec3d_Normalize}\" Width=\"20\" Click=\"NormalizeButton_Click\" Visibility=\"{Binding ShowNormalizeButton, Converter={StaticResource BooleanToVisibilityConverter}}\" ToolTip=\"{DynamicResource Vec3d_Normalize_Tooltip}\"/> </StackPanel> <!-- Text Mode Panel --> <StackPanel x:Name=\"TextModePanel\" Orientation=\"Horizontal\" Grid.ColumnSpan=\"5\" Visibility=\"Collapsed\"> <TextBox x:Name=\"VectorTextBox\" Width=\"180\" Margin=\"0,0,2,0\" TextChanged=\"VectorTextBox_TextChanged\" IsReadOnly=\"{Binding IsReadOnly}\" ToolTip=\"{DynamicResource Vec3d_TextMode_Format_Tooltip}\"/> <Button Content=\"{DynamicResource Vec3d_StandardMode_Toggle}\" Width=\"20\" Click=\"StandardModeToggle_Click\" Margin=\"0,0,2,0\" ToolTip=\"{DynamicResource Vec3d_StandardMode_Tooltip}\"/> <Button Content=\"{DynamicResource Vec3d_Normalize}\" Width=\"20\" Click=\"NormalizeButton_Click\" Visibility=\"{Binding ShowNormalizeButton, Converter={StaticResource BooleanToVisibilityConverter}}\" ToolTip=\"{DynamicResource Vec3d_Normalize_Tooltip}\"/> </StackPanel> </Grid> </UserControl> using System; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows; using Hi.Geom; using System.Text.RegularExpressions; using System.ComponentModel; using Hi.Common; using Hi.Common.Messages; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace HiNC_2025_win_desktop.Geom { /// <summary> /// Vec3dControl.xaml 的交互逻辑 /// </summary> public partial class Vec3dControl : UserControl, INotifyPropertyChanged { private bool _isUpdating = false; private Func<Vec3d> _getterFunc; private Func<Task> _updateByContentFunc; private bool _showNormalizeButton = false; private bool _isTextMode = false; private bool _isReadOnly = false; private readonly ILogger<Vec3dControl> _logger = App.ServiceProvider.GetRequiredService<ILogger<Vec3dControl>>(); private static readonly Regex VectorRegex = new Regex(@\"^\\s*[\\(\\[\\{]?\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*[\\)\\]\\}]?\\s*$\", RegexOptions.Compiled); private static readonly Regex MatrixRegex = new Regex(@\"\\{(?:\\s*\\{?\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*\\}?\\s*,){3}\\s*\\{?\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*,\\s*(-?\\d*\\.?\\d+)\\s*\\}?\\s*\\}\", RegexOptions.Compiled); public event PropertyChangedEventHandler PropertyChanged; public string ControlId { get; set; } = Guid.NewGuid().ToString(); public Func<Vec3d> GetterFunc { get => _getterFunc; set { _getterFunc = value; UpdateUI(); } } public Func<Task> UpdateByContentFunc { get => _updateByContentFunc; set => _updateByContentFunc = value; } public bool ShowNormalizeButton { get => _showNormalizeButton; set { if (_showNormalizeButton != value) { _showNormalizeButton = value; OnPropertyChanged(nameof(ShowNormalizeButton)); } } } public bool IsTextMode { get => _isTextMode; set { if (_isTextMode != value) { _isTextMode = value; UpdateModeVisibility(); OnPropertyChanged(nameof(IsTextMode)); } } } public bool IsReadOnly { get => _isReadOnly; set { if (_isReadOnly != value) { _isReadOnly = value; OnPropertyChanged(nameof(IsReadOnly)); } } } protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public Vec3dControl() { InitializeComponent(); DataContext = this; } private void UpdateModeVisibility() { if (IsTextMode) { StandardModePanel.Visibility = Visibility.Collapsed; TextModePanel.Visibility = Visibility.Visible; UpdateVectorTextFromXYZ(); } else { StandardModePanel.Visibility = Visibility.Visible; TextModePanel.Visibility = Visibility.Collapsed; } } private void UpdateVectorTextFromXYZ() { if (_isUpdating) return; if (double.TryParse(XTextBox.Text, out double x) && double.TryParse(YTextBox.Text, out double y) && double.TryParse(ZTextBox.Text, out double z)) { VectorTextBox.Text = $\"{x},{y},{z}\"; } } private void TextModeToggle_Click(object sender, RoutedEventArgs e) { IsTextMode = true; } private void StandardModeToggle_Click(object sender, RoutedEventArgs e) { IsTextMode = false; } private async void NormalizeButton_Click(object sender, RoutedEventArgs e) { if (_isUpdating || _getterFunc == null || IsReadOnly) return; try { _isUpdating = true; var vec = _getterFunc(); if (vec != null) { vec.Normalize(); XTextBox.Text = vec.X.ToString(\"F3\"); YTextBox.Text = vec.Y.ToString(\"F3\"); ZTextBox.Text = vec.Z.ToString(\"F3\"); if (IsTextMode) { VectorTextBox.Text = $\"{vec.X:F3},{vec.Y:F3},{vec.Z:F3}\"; } if(_updateByContentFunc != null) await _updateByContentFunc(); } } catch (Exception ex) { _logger.LogWarning(string.Format(Application.Current.FindResource(\"Vec3d_Update_Error\").ToString(), ex.Message)); _logger.LogError(ex, \"{Message}\", ex.Message); } finally { _isUpdating = false; } } public void UpdateUI() { if (_isUpdating || _getterFunc == null) return; try { _isUpdating = true; var vec = _getterFunc(); if (vec != null) { XTextBox.Text = vec.X.ToString(\"F3\"); YTextBox.Text = vec.Y.ToString(\"F3\"); ZTextBox.Text = vec.Z.ToString(\"F3\"); if (IsTextMode) { VectorTextBox.Text = $\"{vec.X},{vec.Y},{vec.Z}\"; } } else { XTextBox.Text = \"\"; YTextBox.Text = \"\"; ZTextBox.Text = \"\"; VectorTextBox.Text = \"\"; } } finally { _isUpdating = false; } } private async void XTextBox_TextChanged(object sender, TextChangedEventArgs e) { await HandleTextChanged(); } private async void YTextBox_TextChanged(object sender, TextChangedEventArgs e) { await HandleTextChanged(); } private async void ZTextBox_TextChanged(object sender, TextChangedEventArgs e) { await HandleTextChanged(); } private async void VectorTextBox_TextChanged(object sender, TextChangedEventArgs e) { if (_isUpdating || _getterFunc == null || IsReadOnly) return; try { string text = VectorTextBox.Text.Trim(); // 如果文本为空或太短,不做处理 if (string.IsNullOrWhiteSpace(text) || text.Length < 3) return; _isUpdating = true; // 尝试解析为向量格式 if (TryParseVector(text, out double x, out double y, out double z)) { await UpdateVectorValues(x, y, z); } // 尝试解析为变换矩阵格式(仅提取位移分量) else if (TryParseTransformMatrix(text, out double tx, out double ty, out double tz)) { await UpdateVectorValues(tx, ty, tz); } // 尝试作为单值解析每个字段(宽松模式) else if (TryParseLooseVector(text, out double lx, out double ly, out double lz)) { await UpdateVectorValues(lx, ly, lz); } } catch (Exception ex) { _logger.LogWarning(string.Format(Application.Current.FindResource(\"Vec3d_Update_Error\").ToString(), ex.Message)); _logger.LogError(ex, \"{Message}\", ex.Message); } finally { _isUpdating = false; } } private bool TryParseVector(string text, out double x, out double y, out double z) { x = y = z = 0; // 使用正则表达式匹配向量格式 Match match = VectorRegex.Match(text); if (match.Success && match.Groups.Count >= 4) { if (double.TryParse(match.Groups[1].Value, out x) && double.TryParse(match.Groups[2].Value, out y) && double.TryParse(match.Groups[3].Value, out z)) { return true; } } return false; } private bool TryParseTransformMatrix(string text, out double tx, out double ty, out double tz) { tx = ty = tz = 0; // 移除所有换行和多余空格,便于匹配 text = Regex.Replace(text, @\"\\s+\", \" \"); // 尝试匹配变换矩阵格式 Match match = MatrixRegex.Match(text); if (match.Success && match.Groups.Count >= 8) { // 变换矩阵的第4列通常是位移分量 if (double.TryParse(match.Groups[4].Value, out tx) && double.TryParse(match.Groups[8].Value, out ty) && double.TryParse(match.Groups[12].Value, out tz)) { return true; } } // 尝试匹配更宽松的变换矩阵表示(例如从界面复制的数据) var numbers = Regex.Matches(text, @\"(-?\\d*\\.?\\d+)\"); if (numbers.Count >= 16) { // 假设这是一个4x4矩阵,提取位移分量(第4、8、12个数字) if (double.TryParse(numbers[3].Value, out tx) && double.TryParse(numbers[7].Value, out ty) && double.TryParse(numbers[11].Value, out tz)) { return true; } } return false; } private bool TryParseLooseVector(string text, out double x, out double y, out double z) { x = y = z = 0; // 移除所有非数字和小数点以外的字符,然后按空白分割 string cleanText = Regex.Replace(text, @\"[^\\d\\.\\-\\s,;]+\", \" \"); string[] parts = Regex.Split(cleanText, @\"[\\s,;]+\"); // 尝试从分割后的部分获取三个数字 var numbers = new System.Collections.Generic.List<double>(); foreach (var part in parts) { if (!string.IsNullOrWhiteSpace(part) && double.TryParse(part, out double value)) { numbers.Add(value); if (numbers.Count >= 3) break; // 最多取3个数字 } } // 如果获取到了三个数字,就认为解析成功 if (numbers.Count >= 3) { x = numbers[0]; y = numbers[1]; z = numbers[2]; return true; } return false; } private async Task UpdateVectorValues(double x, double y, double z) { XTextBox.Text = x.ToString(\"F3\"); YTextBox.Text = y.ToString(\"F3\"); ZTextBox.Text = z.ToString(\"F3\"); var vec = _getterFunc?.Invoke(); if (vec != null) { vec.X = x; vec.Y = y; vec.Z = z; if (_updateByContentFunc != null) { await _updateByContentFunc(); } } } private async Task HandleTextChanged() { if (_isUpdating || _getterFunc == null || IsReadOnly) return; try { _isUpdating = true; // 尝试解析每个文本框的值 bool allValid = true; allValid &= double.TryParse(XTextBox.Text, out double x); allValid &= double.TryParse(YTextBox.Text, out double y); allValid &= double.TryParse(ZTextBox.Text, out double z); if (allValid) { if (IsTextMode) { VectorTextBox.Text = $\"{x},{y},{z}\"; } var vec = _getterFunc(); if (vec != null) { vec.X = x; vec.Y = y; vec.Z = z; if(_updateByContentFunc != null) await _updateByContentFunc(); } } else { // 如果有无效输入,不进行更新但也不显示错误 // 这允许用户在输入过程中有不完整的状态 } } catch (Exception ex) { // 记录异常但不中断用户操作 _logger.LogWarning(string.Format(Application.Current.FindResource(\"Vec3d_Update_Error\").ToString(), ex.Message)); _logger.LogError(ex, \"{Message}\", ex.Message); } finally { _isUpdating = false; } } } } Source Code Path See this page for git repository. WPF Application Source Code Path Geom/Vec3dControl Web Service Application Source Code Path wwwroot/widget/vec3d-control.js Widget/Vec3dHub.cs"
},
"fundamentals/common/message-management.html": {
"href": "fundamentals/common/message-management.html",
"title": "Message Management | HiAPI-C# 2025",
"summary": "Message Management HiNc applications use three independent message categories. Each category serves a distinct purpose and should not be mixed. Categories 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: 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 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. Note MessageBoardUtil is not yet mature for all scenarios. In practice, ILogger with level-filtered treatment is often applied instead. 3. App Log — ILogger 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 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<IMessage> as parameters so the caller decides how to handle messages: await task.CatchExceptions(ex => progress?.Report(ex)); Design Rationale Static/global message sinks mix the three categories, making it unclear whether a message is diagnostic, UI notification, or app log. The current pattern threads the handler explicitly through the call chain so each caller decides the appropriate category."
},
"fundamentals/common/xml-io.html": {
"href": "fundamentals/common/xml-io.html",
"title": "About XML IO | HiAPI-C# 2025",
"summary": "About XML IO The XML IO design pattern in HiNc Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format. Don't serialize the runtime member object like Func<TResult> or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure. Core Components IMakeXmlSource Interface The IMakeXmlSource interface defines the contract for objects that can be serialized to XML format. It contains a single method MakeXmlSource. XFactory XFactory is an instance class with a process-wide Default singleton (XFactory.Default). The instance form exists for test isolation and parallel pipelines that need disjoint generator registries; the static Gen<T> / GenByChild<T> / GenByFile<T> entry points always read from Default. Each instance owns its own Generators dictionary (XML element name → generator delegate). Types add themselves via a Reg(factory) call (see below). Explicit Registration via Reg(XFactory factory = null) Every class implementing IMakeXmlSource exposes a public static Reg method: public static void Reg(XFactory factory = null) { factory ??= XFactory.Default; factory.Generators.TryAdd(XName, (xml, baseDirectory, relFile, progress, res) => new MyClass(xml, baseDirectory, relFile, progress)); } Key properties: Explicit. Callers see registration happen — no hidden side effect from accessing a static member or constructing a type. Idempotent. Uses TryAdd, so the same Reg may be invoked any number of times from any number of boot paths. Composable. Custom factory instances are supported via the optional factory parameter; default usage (MyClass.Reg();) populates XFactory.Default. For example, see BallApt: /// <summary> /// Registers this type's deserializer with the given <see cref=\"XFactory\"/> /// (or <see cref=\"XFactory.Default\"/> when <paramref name=\"factory\"/> is /// <c>null</c>). Idempotent. /// </summary> public static void Reg(XFactory factory = null) { factory ??= XFactory.Default; factory.Generators.TryAdd(XName, (xml,baseDirectory, relFile, progress, res) => new BallApt(xml)); } Composite types chain Reg(factory) on dependents When a class deserializes child elements via XFactory.Gen<T> / XFactory.GenByChild<T>, its Reg(factory) must chain Reg(factory) on each concrete child type so the whole dependency graph is reachable from a single root call: public static void Reg(XFactory factory = null) { factory ??= XFactory.Default; DependentA.Reg(factory); DependentB.Reg(factory); factory.Generators.TryAdd(XName, (xml, baseDirectory, relFile, progress, res) => new MyComposite(xml, baseDirectory, relFile, progress)); } For polymorphic deserialization (GenByChild<IInterface>), the composite must chain every concrete implementation that may appear in the XML. The largest composite, SoftNcRunner, chains roughly 130 dependents (every dependency, initializer, segmenter, syntax, and semantic the NC pipeline may deserialize). Multi-name registration (legacy aliases) When the XML payload may carry an old element name for backward compatibility, register the current XName first and group legacy aliases under a //legacy aliases comment: public static void Reg(XFactory factory = null) { factory ??= XFactory.Default; XFactory.XGeneratorDelegate gen = (xml, baseDirectory, relFile, progress, res) => new MachiningProject(xml, baseDirectory, progress); factory.Generators.TryAdd(XName, gen); //legacy aliases factory.Generators.TryAdd(\"MachiningCourse\", gen); factory.Generators.TryAdd(\"MillingCourse\", gen); } IProgress Threading 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<IMessage> progress) { Child = XFactory.GenByChild<IChild>( src.Element(nameof(Child)), subBaseDirectory, progress); } 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(); LocalProjectService.Reg() chains MachiningProject.Reg(), which in turn chains every type the simulation pipeline may deserialize. After this single call returns, XFactory.Default.Generators carries the full deserialization graph. Implementation Patterns Simple Value Objects See BallApt implementation: /// <summary> /// Name for XML IO. /// </summary> public static string XName => nameof(BallApt); /// <summary> /// Ctor. /// </summary> /// <param name=\"src\">XML</param> public BallApt(XElement src) { Diameter_mm = double.Parse(src.Element(\"D\").Value); FluteHeight_mm = double.Parse(src.Element(\"FluteH\").Value); } /// <inheritdoc/> public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) => ToXElement(); /// <inheritdoc/> public XElement ToXElement() { return new XElement(XName, new XElement(\"D\", Diameter_mm), new XElement(\"FluteH\", FluteHeight_mm) ); } Complex Data Structures See SpindleCapability implementation: /// <summary> /// Name for XML IO. /// </summary> public static string XName => nameof(SpindleCapability); /// <summary> /// Initializes a new instance of the <see cref=\"SpindleCapability\"/> class. /// </summary> /// <param name=\"src\">The XML element containing spindle data.</param> /// <param name=\"baseDirectory\">The base directory for resolving relative paths.</param> /// <param name=\"res\">Additional resolution parameters.</param> public SpindleCapability(XElement src, string baseDirectory, params object[] res) { this.SetNameNote(src); if (src.Element(nameof(EnergyEfficiency)) != null) EnergyEfficiency = XmlConvert.ToDouble( src.Element(nameof(EnergyEfficiency)).Value); src.Element(nameof(WorkingTemperatureUpperBoundary_C))?.SelfInvoke( e => WorkingTemperatureUpperBoundary_C = XmlConvert.ToDouble(e.Value)); src.Element(nameof(GearShiftSpindleSpeed_rpm))?.Value?.SelfInvoke( s => GearShiftSpindleSpeed_rpm = string.IsNullOrEmpty(s) ? null : XmlConvert.ToDouble(s)); if (src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)) != null) DryRunFrictionPowerCoefficient_mWdrpm = XmlConvert.ToDouble( src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)).Value); if (src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)) != null) DryRunWindagePowerCoefficient_pWdrpm3 = XmlConvert.ToDouble( src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)).Value); if (src.Element(\"SpindleSpeedToPowerContours\") != null) //for legacy WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = src.Element(\"SpindleSpeedToPowerContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\") ?.SelfInvoke(dicElem => { WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = dicElem.Elements(\"Contour\") .ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); }); if (src.Element(\"SpindleSpeedToTorqueContours\") != null) //for legacy WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = src.Element(\"SpindleSpeedToTorqueContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\") ?.SelfInvoke(dicElem => { //MessageUtil.WriteLine($\"dicElem: {dicElem}\"); WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = dicElem.Elements(\"Contour\").ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); //MessageUtil.WriteLine($\"keys: {string.Join(',',WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.Select(e=>e.Key))}\"); }); //for legacy compatible. if (src.Element(\"SpindleSpeedToPower--RPM-to-kW\") != null) InfInsistentSpindleSpeedToPower_cycleDs_kW = src.Element(\"SpindleSpeedToPower--RPM-to-kW\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); //for legacy compatible. if (src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\") != null) InfInsistentSpindleSpeedToTorque_cycleDs_Nm = src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); } /// <inheritdoc/> public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) { return new XElement(XName, this.GetNameNoteXElementList(), new XElement(nameof(EnergyEfficiency), EnergyEfficiency), new XElement(nameof(GearShiftSpindleSpeed_rpm), GearShiftSpindleSpeed_rpm), new XElement(nameof(DryRunFrictionPowerCoefficient_mWdrpm), DryRunFrictionPowerCoefficient_mWdrpm), new XElement(nameof(DryRunWindagePowerCoefficient_pWdrpm3), DryRunWindagePowerCoefficient_pWdrpm3), new XElement(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\", WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToPower\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Power-kW\", entry.Y))))) ), new XElement(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\", WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToTorque\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Torque-Nm\", entry.Y))))) ) ); } Best Practices XName: Always define static XName property matching the class name. Registration: 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<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."
},
"fundamentals/general-hinc-workflow/index.html": {
"href": "fundamentals/general-hinc-workflow/index.html",
"title": "General HiNC Workflow | HiAPI-C# 2025",
"summary": "General HiNC Workflow The following diagram illustrates the overall HiNC workflow: graph TD A[\"Create MachiningProject\"] --> B[\"Setting Environment\"] B --> C[\"Setting Project Tasks\"] C --> D[\"Run Tasks\"] D --> E[\"View Analysis Results\"] For a complete implementation example, see: DemoBuildMachiningProject 1. Create MachiningProject Creating a machining project is the first step in the HiNC workflow, accomplished by initializing a MachiningProject object. 2. Setting Environment In MachiningProject Set MachiningEquipment: Usually one-time settings: MachiningChain - Configure the complete machine tool including geometry, kinematic chain, and coordinate transformations SpindleCapability - Configure SpindleCapability CoolantHeatCondition - Configure coolant heat conditions BackgroundTemperature - Configure environment background temperature Variable settings: Fixture - Configure fixture Workpiece - Configure workpiece Set MachiningToolHouse - Configure tool house Set HardNcEnv (Controller) - Configure NC system environment parameters 3. Setting Project Tasks Set sequential tasks using PlayerCommand: Set NC Files - Set the file path and customize simulation and optimization settings for each NC file Configure NC optimization - Configure NC code optimization parameters Set GeomDiffCommand - Configure geometry comparison functionality to compare target workpiece shape with simulated shape Set MillingTraining - Configure milling parameter training to calibrate simulation parameters based on actual machining data Other task configurations… The PlayerCommand is typically a ListCommand that contains a sequence of command entries to be executed during the simulation. 4. Run the Tasks (Simulation and Optimization) Run PlayerCommand through PacePlayer. At this stage, the simulation process is similar to video playback, which can be: Started Stopped Paused Run one line Run one step Reset 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 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: MachiningProject New Save Load Environment ... Task ... Sim (Simulation) This UI structure makes it intuitive to follow the HiNC workflow from project creation to simulation execution."
},
"fundamentals/geom/basic-geometry.html": {
"href": "fundamentals/geom/basic-geometry.html",
"title": "Geometry Objects | HiAPI-C# 2025",
"summary": "Geometry Objects IGetStl is the base interface for all geometry objects in HiAPI, providing unified STL support. Several common geometry types are available: Basic Geometrys Box3d Cylindroid Stl StlFile Management Geometrys TransformationGeom GeomCombination See Transformations for TransformationGeom. GeneralTransform StaticRotation StaticTranslation Note All coordinate values use standard units (millimeters, radians) Example Usage using System; using System.Collections.Generic; using Hi.Geom; using Hi.Mech.Topo; namespace Sample.Geom; /// <summary> /// Demonstrates the creation and manipulation of geometric objects in HiAPI. /// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] /// </remarks> public static class DemoBuildGeom { /// <summary> /// Generates a collection of geometric objects for demonstration purposes. /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. /// </summary> /// <returns>A list of geometries implementing the IGetStl interface</returns> public static List<IGetStl> GenGeoms() { Box3d box = new Box3d(0, 0, -50, 70, 50, 0); Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]); Stl stl = new Stl(\"geom.stl\"); StlFile stlFile = new StlFile(\"geom.stl\"); TransformationGeom transformationGeom = new TransformationGeom() { Transformer = new GeneralTransform(1, new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), new StaticTranslation(new Vec3d(0, 0, 0))), Geom = stl }; GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); return new List<IGetStl>([box, cylindroid, stl, stlFile, transformationGeom]); } }"
},
"fundamentals/getting-started/index.html": {
"href": "fundamentals/getting-started/index.html",
"title": "Getting Started with HiAPI | HiAPI-C# 2025",
"summary": "Getting Started with HiAPI This guide will help you get started with HiAPI development. Installation Create a dotnet project. Setting the nuget server and account. The HiAPI installation is typical Nuget Package installation. You can apply global or local nuget setting. Here apply the local solution for startup. Create a file and name it to nuget.config in the same folder of your dotnet project file. the content of the file is as the following: <?xml version=\"1.0\" encoding=\"utf-8\"?> <configuration> <packageSources> <add key=\"HiAPI\" value=\"https://superhightech-gitea.webredirect.org/api/packages/HiAPI/nuget/index.json\" /> <add key=\"nuget.org\" value=\"https://api.nuget.org/v3/index.json\" protocolVersion=\"3\" /> </packageSources> <packageSourceCredentials> <HiAPI> <add key=\"Username\" value=\"xxxxxx\" /> <add key=\"ClearTextPassword\" value=\"xxxxxx\" /> </HiAPI> </packageSourceCredentials> </configuration> In the dotnet project file, add the package reference. <ItemGroup> <PackageReference Include=\"HiNc\" Version=\"3.1.*\" /> <!--optional--> <PackageReference Include=\"Hi.WpfPlus\" Version=\"*\" /> </ItemGroup> In the program file, setting the HiNC application initialization and finalization. using Hi.HiNcKits; using Microsoft.Extensions.Logging; using System; namespace Sample { /// <summary> /// A sample class demonstrating initialization and usage of the HiAPI framework. /// Shows the basic setup of display engine, MongoDB server, licensing, and other core functionality. /// </summary> /// <remarks> /// This example serves as an entry point for those getting started with HiAPI. /// It demonstrates proper initialization and teardown of key components. /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/HelloHiAPI.cs)] /// </remarks> public static class HelloHiAPI { static int Main(string[] args) { Console.WriteLine(\"HiAPI starting.\"); using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample\")); Console.WriteLine(\"Hello World! HiAPI.\"); LocalApp.AppEnd(); Console.WriteLine(\"HiAPI exited.\"); return 0; } } } Sample Code to Start a MachiningProject See the following sample code to start a HiAPI application. DemoBuildMachiningProject Build a MachiningProject. DemoUseMachiningProject Load a MachiningProject and run NC simulation. DemoRenderingMachiningProcessAndStripPosSelection Apply MachiningProject to 3D canvas with user-interaction in windows platform."
},
"fundamentals/index.html": {
"href": "fundamentals/index.html",
"title": "HiAPI Overview | HiAPI-C# 2025",
"summary": "HiAPI Overview HiAPI is a C# software development kit for machining simulation. It provides libraries for NC motion simulation, collision detection, geometry removal simulation, milling force simulation, optimization, and more. Nuget Packages The HiAPI is applied by the form of Nuget Packages. You have to apply HiNc nuget package and its dependencies. They include all the functionality of the HiNC software, but do not include the GUI components. The packages can be downloaded and installed from the HiAPI NuGet Server. The server URL is: https://superhightech-gitea.webredirect.org/api/packages/HiAPI/nuget/index.json Note Authentication is required to access the server (username and password) Direct browser access to the URL will not show meaningful content. Since the server is designed for Visual Studio NuGet package management. For more information about NuGet, visit NuGet.org Package Dependencies The HiNc package has the following dependency chain: graph LR HiGeom --> HiDisp HiDisp --> HiCbtr HiCbtr --> HiMech HiMech --> HiUniNc HiUniNc --> HiNc HiDisp --> Hi.WinForm HiDisp --> Hi.WpfPlus style HiNc fill:#d3d,stroke:#333,stroke-width:2px UI Framework Support If you need to develop Windows desktop applications: For Windows Forms applications, use the Hi.WinForm package. For WPF applications, use the Hi.WpfPlus package. Note See Building Your Own Rendering Canvas to build the rendering canvas cross-platform. Rendering Canvas Source Code Repositories Hi.WinForm https://superhightech-gitea.webredirect.org/HiNC-Deploy/Hi.WinForm.git Hi.WpfPlus https://superhightech-gitea.webredirect.org/HiNC-Deploy/Hi.WpfPlus.git HiAPI Sample Code See Sample Code or download the repositories to get more samples. The following sample repository demonstrate various aspects of using HiAPI for machining simulation: Hi.Sample https://superhightech-gitea.webredirect.org/HiNC-Deploy/Hi.Sample.git The repository generally contains the sample codes without using rendering canvas. Hi.Sample.Wpf https://superhightech-gitea.webredirect.org/HiNC-Deploy/Hi.Sample.Wpf.git The repository generally contains the sample code that requires rendering canvas."
},
"fundamentals/mechanism/Topo/index.html": {
"href": "fundamentals/mechanism/Topo/index.html",
"title": "Kinematic Topology | HiAPI-C# 2025",
"summary": "Kinematic Topology The Kinematic Topology is composed of three elemental classes: Anchor, Branch and Asmb. Basic Elements Anchors and Branches Anchor object contains a cartesian coordinate. It can be a mechanical component or a flag. Branch object is a directional link between two Anchor objects. It contains the ITransformer object. The ITransformer object contains a coordinate transformation matrix. As shown in the following sketch: Assembly Management Asmb (Assembly) provides organization and management of Anchors. An Assembly can contain both Anchors and other Assemblies. Key features include: Grouping related Anchors together Managing coordinate transformations Providing display and indexing functions Supporting hierarchical structure Kinematic Chain Example The following figure shows a kinematic chain of a non-orthogonal 5-axis machine tool: Each Anchor represents a component: Axis components: X, Y, Z, B, C Base components: O (base1), O* (base2) Tool components: S (spindle), T (tool body), T* (tool flute) Workpiece: W The relative transform between two Anchors is calculated by multiplying the transform matrices along the Branch. For example, the transform matrix from W to T is: \\[ M_{WT} = M_{CW}^{-1} \\cdot M_{YC}^{-1} \\cdot M_{OY}^{-1} \\cdot M_{OO^*} \\cdot M_{O^*X} \\cdot M_{XZ} \\cdot M_{ZB} \\cdot M_{BS} \\cdot M_{ST} \\] This matrix can be obtained using GetMat4d(IGetAnchor, IGetAnchor)."
},
"fundamentals/mechanism/index.html": {
"href": "fundamentals/mechanism/index.html",
"title": "HiAPI Mechanics Overview | HiAPI-C# 2025",
"summary": "Mechanism Topology HiAPI Mechanism Topology provides basic functionality for assembling mechanical structures and simulating their motions. It allows you to build kinematic models of milling machines and similar mechanical structures through a topology-based approach. Core Concepts Kinematic Topology Kinematic Topology is the core concept of this module, which describes the motion relationships between mechanical components. With Kinematic Topology, you can: Define mechanical structures and motion relationships Calculate forward and inverse kinematics Display component positions and orientations Conduct collision detection Main Modules Topology - Kinematic topology structure, including assembly management and chain definition Transformers - Coordinate transformation and motion transformation Render Topology - Rendering with topology structure and anchored display API References Hi.Mech.Topo - Core topology functionality Asmb - Assembly-related functionality Branch - Chain-related functionality Examples Please refer to the examples in each sub-section to learn how to use these features to build your applications."
},
"fundamentals/mechanism/render-topology/index.html": {
"href": "fundamentals/mechanism/render-topology/index.html",
"title": "Render Topology | HiAPI-C# 2025",
"summary": "Render Topology Read Kinematic Topology Rendering for the prerequisite. A Asmb is a group to render its descendent Anchors. Several ways to render with the topology: Render by Anchoring Matrix Map Render by Anchored Displayee Render by Anchoring Matrix Map Render by Anchored Displayee Inherit IAnchoredDisplayee or apply AnchoredDisplayee to Asmb.Display(). Inherit ITopoDisplayee to manage the object with Asmb and plural anchors . The base logic is also by the anchoring matrix. Here is some class and function wrapping the logic. The sample code shows the topology rendering for a MillingTool editing helper: using Hi.Common; using Hi.Common.Messages; using Hi.Disp; using Hi.Disp.Flag; using Hi.Geom; using Hi.Mech.Topo; using Hi.Milling.Cutters; using Hi.NcMech.Holders; using System; using System.Collections.Generic; 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> /// 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(); /// <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); } 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(); } }"
},
"fundamentals/mechanism/transformers/index.html": {
"href": "fundamentals/mechanism/transformers/index.html",
"title": "Handle Transform Matrix by ITransformer | HiAPI-C# 2025",
"summary": "Handle Transform Matrix by ITransformer ITransformer contains a transform matrix and a inverse transform matrix. The matrix is 4x4 column-major matrix, which describe the orientation or movement between 3D coordinates. Several common used interface and class are implemented from ITransformer. The inheritance is shown: IStaticTransformer NoTransform StaticTranslation StaticRotation StaticFreeform GeneralTransform IDynamicTransformer IDynamicRegular DynamicTranslation DynamicRotation DynamicFreeform IStaticTransformer is transformer with constant matrix. NoTransform, StaticTranslation and StaticRotation contains transform matrix of identity, translate and rotate respectively. StaticFreeform contains a arbitrary constant transform matrix. The transform matrix of StaticTranslation is: \\[ M_{StaticTranslate}= \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\\\\\ 0 & 1 & 0 & 0 \\\\\\\\ 0 & 0 & 1 & 0 \\\\\\\\ Trans.x & Trans.y & Trans.z & 1 \\end{bmatrix} \\] The transform matrix of StaticRotation and DynamicRotation is: \\[ M_{Rotate}= \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\\\\\ 0 & 1 & 0 & 0 \\\\\\\\ 0 & 0 & 1 & 0 \\\\\\\\ -Pivot.x & -Pivot.y & -Pivot.z & 1 \\end{bmatrix} \\cdot \\\\\\\\ \\begin{bmatrix} Rot_{00}(axis,rad) & Rot_{01}(axis,rad) & Rot_{02}(axis,rad) & 0 \\\\\\\\ Rot_{10}(axis,rad) & Rot_{11}(axis,rad) & Rot_{12}(axis,rad) & 0 \\\\\\\\ Rot_{20}(axis,rad) & Rot_{21}(axis,rad) & Rot_{22}(axis,rad) & 0 \\\\\\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\cdot \\\\\\\\ \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\\\\\ 0 & 1 & 0 & 0 \\\\\\\\ 0 & 0 & 1 & 0 \\\\\\\\ Pivot.x & Pivot.y & Pivot.z & 1 \\end{bmatrix} \\] Where Pivot is the position of the rotation axis. Tip Pivot is a point. However, rotation axis is a line. It means that it causes the same matrix no matter how the pivot is moving along the axis. IDynamicTransformer is transformer with inconstant transform matrix. IDynamicRegular has a property Step, implied that the transform matrix is one parameter driven. GetSteps(IDynamicRegular[]) and SetSteps(IDynamicRegular[], double[]) provide easy handle of an array of IDynamicRegular objects. The transform matrix of DynamicTranslation is: \\[ M_{DynamicTranslate}= \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\\\\\ 0 & 1 & 0 & 0 \\\\\\\\ 0 & 0 & 1 & 0 \\\\\\\\ Trans.x \\cdot Step & Trans.y \\cdot Step & Trans.z \\cdot Step & 1 \\end{bmatrix} \\] Note In convention, Trans should be normalized."
},
"fundamentals/nc-parsing/index.html": {
"href": "fundamentals/nc-parsing/index.html",
"title": "NC Parsing Engine | HiAPI-C# 2025",
"summary": "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 Stage Responsibility ISegmenter cuts the raw text into blocks. Three implementations ship — one line per block, and the two multi-line forms Heidenhain and Siemens programs need INcInitializer seeds the stream head with the machine's starting state, for example the configured home position Parsing recognizes the text: words, statements, cycle bodies, comments. Writes structure, never meaning Evaluation resolves 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 Logic the 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 PostLogic carries the block's full modal context forward, so every block's data is self-contained Inspection back-fills derived values, reports words nothing consumed, and optionally snapshots the block INcSemantic turns 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: Preset Reads FanucNcRunner Fanuc G-code, including Custom Macro B SiemensNcRunner Sinumerik .mpf / .spf SyntecNcRunner Syntec G-code MazakNcRunner Mazak EIA/ISO HeidenhainNcRunner klartext and DIN/ISO, on one preset GeneralCsvRunner a CSV controller recording NxClRunner NX 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. Brand Supported Recognized, not simulated Not supported Fanuc ISO core, canned cycles G73G89, 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 calls — G10 programmable data setting, G50 spindle limit, G31 skip Siemens modal 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/G75 ROTS/AROTS, SCALE/ASCALE, MIRROR/AMIRROR (SiemensFrame--Unsupported) SETAL Heidenhain klartext 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 912 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/G71 PLANE 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 Syntec ISO core plus the Fanuc-family macro and subprogram vocabulary, polar interpolation — custom G macros, Pr parameter mapping, twin-head / twin-turret syntax Mazak EIA/ISO with the Fanuc-family macro and subprogram vocabulary, polar interpolation — Mazatrol 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. Mechanism Purpose FromLegacyNcEnvXml builds a SoftNcRunner from a legacy configuration element the NcEnv XML alias a project saved under the old element name still deserializes the legacy version patches a 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-fill a saved pipeline gains the runtime-wired dependencies it predates EnableSoftNcRunner set 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."
},
"fundamentals/rendering/color-guide/index.html": {
"href": "fundamentals/rendering/color-guide/index.html",
"title": "Color Guide System | HiAPI-C# 2025",
"summary": "Color Guide System The Color Guide System allows you to assign colors and rendering priorities to visual elements based on machining steps or data states. Overview The IColorGuide interface defines the core functionality for color mapping, allowing different colors and rendering priorities to be returned based on various steps or states. This system is particularly suitable for scenarios requiring visual encoding based on data states, such as CNC machining path visualization. Core Interface IColorGuide Interface IColorGuide is the core interface of the Color Guide System, inheriting from IMakeXmlSource and IGetColorGuide. Methods Method Description GetRgb Returns RGB color value based on the step object GetRgbWithPriority Returns RGB color and rendering priority Priority Explanation The attachmentPriority parameter controls the overlay priority during rendering: Higher values take priority: Larger priority values are displayed first Graph scaling for pixel consolidation: When multiple machining steps are rendered within the same pixel, higher priority colors take precedence Effects on Rendering Systems In CubeTree (CubeTree): Color priorities determine which machining state is displayed when multiple operations overlap in 3D space Higher priority colors (like collision detection) will override lower priority colors (like normal cutting) Application Scenarios The Color Guide System is suitable for the following scenarios: CNC Machining Visualization: Display different path colors based on machining states Data State Encoding: Convert numerical states to visual color representations Priority-based Graph Scaling: When zooming out or viewing dense data, higher priority colors (critical states) remain visible while lower priority colors may be consolidated Multi-resolution Rendering: Critical machining issues (collisions, safety violations) are always displayed regardless of zoom level or data density Registering Color Guide in Project To make the Color Guide effective in a project, implement the IColorGuide interface and register it in the project's color guide dictionary. XML Serialization See About XML IO for details on XML serialization implementation. WPF Application Source And Sample Code Path HiMech/Coloring/IColorGuide HiNC-2025-win-desktop/Demo/DemoColorGuide See this page for Git repository information."
},
"fundamentals/rendering/drawing/index.html": {
"href": "fundamentals/rendering/drawing/index.html",
"title": "Using Hi.Disp.Drawing | HiAPI-C# 2025",
"summary": "Using Hi.Disp.Drawing The Drawing class is the most fundamental and efficient rendering unit that allows you to draw points, lines, and surfaces within the DispEngine. Understanding Drawing Structure Looking at the constructor Drawing(double[], Stamp, int) helps explain its structure: The double[] array contains batch data for rendering, composed of one or more data groups of consistent length Each data group's length is determined by the Stamp parameter Each data group describes a single vertex Data Components A data group can contain up to four types of information: Information Abbreviation Description Size Vertex V The position of the point (x, y, z) 3 doubles Normal N The normal vector affecting light reflection (Nx, Ny, Nz) 3 doubles Color C RGB color values ranging from 0 to 1 3 doubles Pick ID P A single double value converted from an integer for selection operations 1 double The Stamp enumeration combines these abbreviations to create these possible stamps: {V, NV, CV, CNV, PV, PNV, PCV, PCNV}. Important Notes: The Vertex (V) is mandatory, which is why V appears in every Stamp option Normal vectors (N) are typically used for 3D graphics to create a sense of depth through lighting Color (C) uses three double values (R, G, B) in the range of 0 to 1 Pick ID (P) is used for graphical selection operations Data Structure Example If Stamp is V, each data group consists of 3 double values (x, y, z) If Stamp is PCV, each data group consists of 1(P) + 3(C) + 3(V) = 7 double values Rendering Mode The glmode parameter is an OpenGL constant that specifies the drawing mode. You can search for “OpenGL Primitives” online to see illustrations of these modes. Example Usage // Creating a simple line strip with three vertices double[] vertices = new double[] { 0, 0, 0, // First point at origin 1, 0, 0, // Second point along X-axis 0, 0, 1 // Third point along Z-axis }; // Create drawing object using the vertices var drawing = new Drawing(vertices, Stamp.V, (int)OpenGL.GL_LINE_STRIP); This example creates three vertices with only position information (V), so each vertex has just xyz coordinates. The drawing mode is set to LineStrip. Performance Considerations Note After a Drawing object is created, its source data is stored in GPU memory. Regardless of the amount of data, the CPU processing load when calling Display(Bind) remains consistent. This means displaying 100 points with one Drawing object is approximately 100 times faster than using 100 separate Drawing objects to display 100 individual points. Composing Multiple IDisplayee Objects A common pattern is to combine multiple IDisplayee objects, including Drawing objects: public class MyCompositeDisplayee : IDisplayee { private readonly List<IDisplayee> _displayees = new List<IDisplayee>(); public MyCompositeDisplayee() { // Create a grid drawing _displayees.Add(CreateGridDrawing()); // Create an axes drawing _displayees.Add(CreateAxesDrawing()); // Add other custom drawings _displayees.Add(CreateCustomDrawing()); } private Drawing CreateGridDrawing() { // Code to create a grid double[] gridVertices = new double[/* grid data */]; return new Drawing(gridVertices, Stamp.CV, (int)OpenGL.GL_LINES); } private Drawing CreateAxesDrawing() { // Create colored axes double[] axesData = new double[] { // Red X-axis (with color) 1, 0, 0, 0, 0, 0, // Red color, origin 1, 0, 0, 1, 0, 0, // Red color, x-axis end // Green Y-axis (with color) 0, 1, 0, 0, 0, 0, // Green color, origin 0, 1, 0, 0, 1, 0, // Green color, y-axis end // Blue Z-axis (with color) 0, 0, 1, 0, 0, 0, // Blue color, origin 0, 0, 1, 0, 0, 1 // Blue color, z-axis end }; return new Drawing(axesData, Stamp.CV, (int)OpenGL.GL_LINES); } public void Display(Bind bind) { // Render all contained displayees foreach (var displayee in _displayees) { displayee.Display(bind); } } public void ExpandToBox3d(Box3d box) { // Update bounding box based on all displayees foreach (var displayee in _displayees) { displayee.ExpandToBox3d(box); } } } Creating Common Shapes Here are some examples of creating common shapes using the Drawing class: Creating Points // Create an array of points double[] pointData = new double[] { 0, 0, 0, // Point 1 1, 1, 1, // Point 2 2, 0, 0, // Point 3 0, 2, 0 // Point 4 }; // Create a Drawing for points var pointDrawing = new Drawing(pointData, Stamp.V, (int)OpenGL.GL_POINTS); Creating Lines // Create line segments (pairs of vertices) double[] lineData = new double[] { 0, 0, 0, 1, 1, 0, // Line 1: (0,0,0) to (1,1,0) 2, 0, 0, 2, 2, 0 // Line 2: (2,0,0) to (2,2,0) }; // Create a Drawing for lines var lineDrawing = new Drawing(lineData, Stamp.V, (int)OpenGL.GL_LINES); Creating Triangles // Create triangles (triplets of vertices) double[] triangleData = new double[] { // Triangle 1 0, 0, 0, // Vertex 1 1, 0, 0, // Vertex 2 0, 1, 0 // Vertex 3 }; // Create a Drawing for triangles var triangleDrawing = new Drawing(triangleData, Stamp.V, (int)OpenGL.GL_TRIANGLES); See Also DispEngine IDisplayee DispList"
},
"fundamentals/rendering/index.html": {
"href": "fundamentals/rendering/index.html",
"title": "Rendering with HiAPI | HiAPI-C# 2025",
"summary": "Rendering with HiAPI This section covers the rendering capabilities of HiAPI, focusing on how to create and display visual content in your applications. Overview HiAPI provides a powerful rendering system built around the DispEngine and IDisplayee interface. This system enables you to: Create and render 3D and 2D graphics Implement interactive user interfaces Achieve high-performance rendering across multiple platforms Handle touch, mouse, and keyboard input uniformly Key Components The HiAPI rendering system consists of several key components: DispEngine: The core rendering engine that processes displayees and handles user interaction IDisplayee: The interface for renderable objects Drawing: A fundamental rendering unit for creating basic geometric elements RenderingCanvas: UI controls for different frameworks that host the DispEngine Sections Topic Description Using RenderingCanvas with DispEngine Learn how to use the RenderingCanvas component in your applications Building Your Own Rendering Canvas Understand how to implement custom rendering components Drawing Learn how to use the Drawing class to create basic geometric elements Color Guide System Learn how to implement color mapping and rendering priority for steps Basic Rendering Workflow The typical workflow for rendering with HiAPI follows these steps: Create Displayees: Implement IDisplayee or use existing implementations like Drawing Configure DispEngine: Create and initialize a DispEngine with your displayees UI Integration: Use RenderingCanvas components to display the rendered content in your UI Handle Input: Process user interactions through the DispEngine's input handling methods This pattern works consistently across all supported UI frameworks, allowing you to develop cross-platform applications with a unified codebase. See Also DispEngine IDisplayee Drawing DispList"
},
"fundamentals/rendering/rendering-canvas/custom-implementation.html": {
"href": "fundamentals/rendering/rendering-canvas/custom-implementation.html",
"title": "Building Your Own Rendering Canvas | HiAPI-C# 2025",
"summary": "Building Your Own Rendering Canvas This guide provides detailed implementation information for creating your own RenderingCanvas using the DispEngine. By understanding these implementation details, you can customize the rendering component for specific application needs or create implementations for other UI frameworks. Note For Windows Applications: If you are developing for Windows systems, it is recommended to directly use the existing RenderingCanvas implementations in the Hi.WinForm or Hi.WpfPlus packages, rather than creating your own. These implementations are fully tested, optimized, and maintained. The implementation details provided in this document are primarily for educational purposes or for developers who need to port RenderingCanvas to other platforms/frameworks. Basic DispEngine Usage The DispEngine is designed to display objects that implement the IDisplayee interface. This is the fundamental purpose of DispEngine - to render displayable objects. Assign IDisplayee to DispEngine.Displayee. Core Implementation Pattern When implementing a custom RenderingCanvas for a UI platform, follow these key steps: Initialize UI Component - Set up the UI control properties and event handling Configure DispEngine - Create and properly initialize the DispEngine instance Set Up Rendering Pipeline - Implement buffer swapping mechanism for visualization Handle User Input - Map platform-specific input events to DispEngine methods Manage Component Lifecycle - Ensure proper resource management and cleanup Let's examine the actual implementations in WinForm and WPF frameworks to understand these patterns in practice. WinForm Implementation Details The WinForm implementation in Hi.WinForm combines Windows Forms controls with the DispEngine rendering system. Core Properties and Fields Here are the essential properties and fields defined in the WinForm implementation: /// <summary> /// <see cref=\"DispEngine\"/>. /// </summary> public DispEngine DispEngine { get; } // Constants and structures for WM_TOUCH private const int WM_TOUCH = 0x0240; private const int TOUCHEVENTF_MOVE = 0x0001; private const int TOUCHEVENTF_DOWN = 0x0002; private const int TOUCHEVENTF_UP = 0x0004; [StructLayout(LayoutKind.Sequential)] private struct TOUCHINPUT { public int x; public int y; public IntPtr hSource; public int dwID; public int dwFlags; public int dwMask; public int dwTime; public IntPtr dwExtraInfo; public int cxContact; public int cyContact; } [DllImport(\"user32.dll\")] private static extern bool RegisterTouchWindow(IntPtr hWnd, uint ulFlags); [DllImport(\"user32.dll\")] private static extern bool GetTouchInputInfo(IntPtr hTouchInput, int cInputs, [In, Out] TOUCHINPUT[] pInputs, int cbSize); [DllImport(\"user32.dll\")] private static extern void CloseTouchInputHandle(IntPtr lParam); Initialization The initialization code sets up event handlers and creates the DispEngine: /// <summary> /// Ctor. /// </summary> /// <param name=\"displayees\">displayees</param> public unsafe RenderingCanvas(params IDisplayee[] displayees) { // Configure the control's visual styles SetStyle(ControlStyles.Selectable, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, false); SetStyle(ControlStyles.ContainerControl, false); SetStyle(ControlStyles.ResizeRedraw, false); DoubleBuffered = true; InitializeComponent(); Dock = DockStyle.Fill; // Connect event handlers for user input and window events this.Resize += RenderingCanvas_Resize; this.VisibleChanged += RenderingCanvas_VisibleChanged; this.MouseMove += RenderingCanvas_MouseMove; this.MouseDown += RenderingCanvas_MouseDown; this.MouseUp += RenderingCanvas_MouseUp; this.MouseWheel += RenderingCanvas_MouseWheel; this.KeyDown += RenderingCanvas_KeyDown; this.KeyUp += RenderingCanvas_KeyUp; // Add focus event handler this.GotFocus += RenderingCanvas_GotFocus; this.HandleCreated += OnHandleCreated; // Enable touch input and click events for the control this.SetStyle(ControlStyles.StandardClick, true); this.SetStyle(ControlStyles.StandardDoubleClick, true); this.TabStop = true; // Initialize the DispEngine with provided displayees DispEngine = new DispEngine(displayees); DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; DispEngine.SetViewToHomeView(); DispEngine.ImageRequestAfterBufferSwapped += DispEngine_ImageRequestAfterBufferSwapped; // Set initial size and start the rendering engine this.Size = new System.Drawing.Size(500, 300); DispEngine.Start(this.ClientSize.Width, this.ClientSize.Height); } Rendering Pipeline The rendering pipeline processes images from DispEngine and displays them: private unsafe void DispEngine_ImageRequestAfterBufferSwapped(byte* bgra_unsignedbyte_pixels, int w, int h) { // Create a bitmap from the raw pixel data provided by DispEngine Bitmap bitmap; bitmap = new Bitmap(new Bitmap(w, h, w * 4, PixelFormat.Format32bppArgb, new IntPtr(bgra_unsignedbyte_pixels))); // Update the background image and dispose the previous one Image pre = this.BackgroundImage; this.BackgroundImage = bitmap; pre?.Dispose(); } Input Handling Windows Message Handling for Touch WinForm implementation intercepts Windows touch messages and forwards them to DispEngine: /// <summary> /// Processes Windows messages, handling touch input and forwarding other messages to the base class. /// </summary> /// <param name=\"m\">The Windows message to process.</param> protected override void WndProc(ref Message m) { if (m.Msg == WM_TOUCH) { HandleTouchInput(m.WParam, m.LParam); return; } base.WndProc(ref m); } private void OnHandleCreated(object sender, EventArgs e) { // Register window to receive touch messages RegisterTouchWindow(this.Handle, 0); } private void HandleTouchInput(IntPtr wParam, IntPtr lParam) { int inputCount = wParam.ToInt32(); TOUCHINPUT[] inputs = new TOUCHINPUT[inputCount]; if (!GetTouchInputInfo(lParam, inputCount, inputs, Marshal.SizeOf(typeof(TOUCHINPUT)))) return; try { for (int i = 0; i < inputCount; i++) { TOUCHINPUT ti = inputs[i]; int touchId = ti.dwID; // Convert touch coordinates to client coordinates Point touchPoint = PointToClient(new Point(ti.x / 100, ti.y / 100)); if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event DispEngine.TouchUp(touchId); } } } finally { CloseTouchInputHandle(lParam); } } The key aspect is mapping Windows touch events to DispEngine's touch API: // Inside HandleTouchInput method if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event - delegate to DispEngine DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event - delegate to DispEngine DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event - delegate to DispEngine DispEngine.TouchUp(touchId); } Mouse Events private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms DispEngine.MouseMove(e.Location.X, e.Location.Y); DispEngine.MouseDragTransform(e.Location.X, e.Location.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButtons.Left, RIGHT_BUTTON = (long)MouseButtons.Right }); } private void RenderingCanvas_MouseDown(object sender, MouseEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.Button); this.Focus(); } private void RenderingCanvas_MouseUp(object sender, MouseEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.Button); } private void RenderingCanvas_MouseWheel(object sender, MouseEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } Keyboard Events /// <inheritdoc/> protected override bool IsInputKey(Keys keyData) { //since in default, arrow does not trigger key event(keyDown and keyUp). return true; } /// <summary> /// Convert WinForms Keys to W3C KeyboardEvent.key string. /// </summary> static string WinFormsKeyToW3C(Keys key) => (key & Keys.KeyCode) switch { Keys.Home => \"Home\", Keys.End => \"End\", Keys.PageUp => \"PageUp\", Keys.PageDown => \"PageDown\", Keys.Left => \"ArrowLeft\", Keys.Right => \"ArrowRight\", Keys.Up => \"ArrowUp\", Keys.Down => \"ArrowDown\", Keys.LShiftKey or Keys.RShiftKey or Keys.ShiftKey => \"Shift\", Keys.LControlKey or Keys.RControlKey or Keys.ControlKey => \"Control\", Keys.LMenu or Keys.RMenu or Keys.Menu => \"Alt\", Keys.Return => \"Enter\", Keys.Escape => \"Escape\", Keys.Back => \"Backspace\", Keys.Tab => \"Tab\", Keys.Delete => \"Delete\", Keys.Insert => \"Insert\", Keys.Space => \" \", Keys.F1 => \"F1\", Keys.F2 => \"F2\", Keys.F3 => \"F3\", Keys.F4 => \"F4\", Keys.F5 => \"F5\", Keys.F6 => \"F6\", Keys.F7 => \"F7\", Keys.F8 => \"F8\", Keys.F9 => \"F9\", Keys.F10 => \"F10\", Keys.F11 => \"F11\", Keys.F12 => \"F12\", >= Keys.A and <= Keys.Z => ((char)('a' + ((key & Keys.KeyCode) - Keys.A))).ToString(), >= Keys.D0 and <= Keys.D9 => ((char)('0' + ((key & Keys.KeyCode) - Keys.D0))).ToString(), _ => \"Unidentified\" }; private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { Focus(); string key = WinFormsKeyToW3C(e.KeyData); DispEngine.KeyDown(key); DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = \"Home\", PAGE_UP = \"PageUp\", PAGE_DOWN = \"PageDown\", F1 = \"F1\", F2 = \"F2\", F3 = \"F3\", F4 = \"F4\", SHIFT = \"Shift\", ARROW_LEFT = \"ArrowLeft\", ARROW_RIGHT = \"ArrowRight\", ARROW_DOWN = \"ArrowDown\", ARROW_UP = \"ArrowUp\" }); } private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp(WinFormsKeyToW3C(e.KeyData)); } Lifecycle Management Window event handling ensures proper state management: private void RenderingCanvas_Resize(object sender, EventArgs e) { // Notify DispEngine of size changes DispEngine.Resize(this.ClientSize.Width, this.ClientSize.Height); } private void RenderingCanvas_VisibleChanged(object sender, EventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = this.Visible; } Resource Cleanup /// <summary> /// Clean up any resources being used. /// </summary> /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { // Dispose the DispEngine to free resources DispEngine.Dispose(); components.Dispose(); } base.Dispose(disposing); } WPF Implementation Details The WPF implementation uses WPF-specific controls and mechanisms but follows the same core pattern. Core Properties /// <summary> /// The DispEngine instance that handles rendering and user interactions /// </summary> public DispEngine DispEngine { get; } = new DispEngine(); /// <summary> /// Internal container for rendering content /// </summary> private UserControl DisplayerPane { get; } /// <summary> /// Dictionary to store touch point information /// </summary> private Dictionary<int, Point> TouchingPointsMap { get; } = new Dictionary<int, Point>(); /// <summary> /// Dictionary to store previous positions of touch points /// </summary> private Dictionary<int, Point> PreviousTouchingPointsMap { get; } = new Dictionary<int, Point>(); Initialization /// <summary> /// Initializes a new instance of the RenderingCanvas /// </summary> public RenderingCanvas() { DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; // Configure the main control properties HorizontalAlignment = HorizontalAlignment.Stretch; VerticalAlignment = VerticalAlignment.Stretch; Focusable = true; KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Cycle); DataContextChanged += CanvasDataContextChanged; // Create and configure the display pane DisplayerPane = new UserControl(); DisplayerPane.HorizontalAlignment = HorizontalAlignment.Stretch; DisplayerPane.VerticalAlignment = VerticalAlignment.Stretch; DisplayerPane.Focusable = true; DisplayerPane.IsTabStop = true; // Connect event handlers for user input and window events DisplayerPane.SizeChanged += RenderingCanvas_SizeChanged; DisplayerPane.MouseMove += RenderingCanvas_MouseMove; DisplayerPane.MouseDown += RenderingCanvas_MouseDown; DisplayerPane.MouseUp += RenderingCanvas_MouseUp; DisplayerPane.MouseWheel += RenderingCanvas_MouseWheel; DisplayerPane.KeyDown += RenderingCanvas_KeyDown; DisplayerPane.KeyUp += RenderingCanvas_KeyUp; DisplayerPane.Loaded += RenderingCanvas_Loaded; DisplayerPane.Unloaded += RenderingCanvas_Unloaded; DisplayerPane.IsVisibleChanged += DisplayerPane_IsVisibleChanged; // Add touch event handlers DisplayerPane.TouchDown += RenderingCanvas_TouchDown; DisplayerPane.TouchMove += RenderingCanvas_TouchMove; DisplayerPane.TouchUp += RenderingCanvas_TouchUp; // Enable touch support this.IsManipulationEnabled = true; // Initialize power management InitializePowerManagement(); // Add the display pane to this control's content Content = DisplayerPane; } Rendering Pipeline /// <summary> /// Handles the buffer swapped event from DispEngine /// </summary> private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h) { if (data == null) return; Span<byte> bgra = new Span<byte>(data, w * h * 4); // Copy pixel data from DispEngine int n = w * h * 4; byte[] arr = new byte[n]; for (int i = 0; i < n; i++) arr[i] = data[i]; // Update UI on the UI thread DisplayerPane.Dispatcher.InvokeAsync(() => { BitmapSource bitmap = BitmapSource.Create(w, h, 1, 1, PixelFormats.Bgra32, null, arr, w * 4); DisplayerPane.Background = new ImageBrush(bitmap); }); } /// <summary> /// Handles the size changed event /// </summary> private void RenderingCanvas_SizeChanged(object sender, SizeChangedEventArgs e) { // Notify DispEngine of size changes DispEngine.Resize((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); } /// <summary> /// Handles visibility changes /// </summary> private unsafe void DisplayerPane_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = IsVisible; } Mouse and Keyboard Handling /// <summary> /// Helper method to get mouse button mask /// </summary> internal static HiMouseButtonMask GetMouseButtonMask(MouseDevice device) { HiMouseButtonMask mouseButtonMask = 0; mouseButtonMask.SetLeftPressed(device.LeftButton == MouseButtonState.Pressed); mouseButtonMask.SetMiddlePressed(device.MiddleButton == MouseButtonState.Pressed); mouseButtonMask.SetRightPressed(device.RightButton == MouseButtonState.Pressed); mouseButtonMask.SetXButton1Pressed(device.XButton1 == MouseButtonState.Pressed); mouseButtonMask.SetXButton2Pressed(device.XButton2 == MouseButtonState.Pressed); return mouseButtonMask; } /// <summary> /// Handles the mouse wheel event /// </summary> private void RenderingCanvas_MouseWheel(object sender, MouseWheelEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } /// <summary> /// Handles the mouse up event /// </summary> private void RenderingCanvas_MouseUp(object sender, MouseButtonEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.ChangedButton); (sender as UIElement)?.ReleaseMouseCapture(); } /// <summary> /// Handles the mouse down event /// </summary> private void RenderingCanvas_MouseDown(object sender, MouseButtonEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.ChangedButton); DisplayerPane.Focus(); (sender as UIElement)?.CaptureMouse(); } /// <summary> /// Handles the mouse move event /// </summary> private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms Point p = e.GetPosition(DisplayerPane); DispEngine.MouseMove((int)p.X, (int)p.Y); DispEngine.MouseDragTransform((int)p.X, (int)p.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButton.Left, RIGHT_BUTTON = (long)MouseButton.Right }); } /// <summary> /// Convert WPF Key to W3C KeyboardEvent.key string. /// </summary> static string WpfKeyToW3C(Key key) => key switch { Key.Home => \"Home\", Key.End => \"End\", Key.PageUp => \"PageUp\", Key.PageDown => \"PageDown\", Key.Left => \"ArrowLeft\", Key.Right => \"ArrowRight\", Key.Up => \"ArrowUp\", Key.Down => \"ArrowDown\", Key.LeftShift or Key.RightShift => \"Shift\", Key.LeftCtrl or Key.RightCtrl => \"Control\", Key.LeftAlt or Key.RightAlt => \"Alt\", Key.Return => \"Enter\", Key.Escape => \"Escape\", Key.Back => \"Backspace\", Key.Tab => \"Tab\", Key.Delete => \"Delete\", Key.Insert => \"Insert\", Key.Space => \" \", Key.F1 => \"F1\", Key.F2 => \"F2\", Key.F3 => \"F3\", Key.F4 => \"F4\", Key.F5 => \"F5\", Key.F6 => \"F6\", Key.F7 => \"F7\", Key.F8 => \"F8\", Key.F9 => \"F9\", Key.F10 => \"F10\", Key.F11 => \"F11\", Key.F12 => \"F12\", >= Key.A and <= Key.Z => ((char)('a' + (key - Key.A))).ToString(), >= Key.D0 and <= Key.D9 => ((char)('0' + (key - Key.D0))).ToString(), _ => \"Unidentified\" }; /// <summary> /// Handles the key up event /// </summary> private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp(WpfKeyToW3C(e.Key)); } /// <summary> /// Handles the key down event /// </summary> private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { string key = WpfKeyToW3C(e.Key); DispEngine.KeyDown(key); DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = \"Home\", PAGE_UP = \"PageUp\", PAGE_DOWN = \"PageDown\", F1 = \"F1\", F2 = \"F2\", F3 = \"F3\", F4 = \"F4\", SHIFT = \"Shift\", ARROW_LEFT = \"ArrowLeft\", ARROW_RIGHT = \"ArrowRight\", ARROW_DOWN = \"ArrowDown\", ARROW_UP = \"ArrowUp\" }); } Lifecycle Management /// <summary> /// Handles window state changes (maximize, minimize, etc.) /// </summary> private unsafe void RenderingCanvas_StateChanged(object sender, EventArgs e) { switch ((sender as Window).WindowState) { case WindowState.Maximized: DispEngine.IsVisible = true; break; case WindowState.Minimized: DispEngine.IsVisible = false; break; case WindowState.Normal: DispEngine.IsVisible = true; break; } } /// <summary> /// Handles data context changes /// </summary> private unsafe void CanvasDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { DispEngine pre = e.OldValue as DispEngine; DispEngine cur = e.NewValue as DispEngine; //child's binding event is triggered after IsVisible event and Load event. if (pre != null) //this section will never occur if the datacontext not set twice. { pre.Terminate(); pre.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; } if (cur != null) { cur.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; cur.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); cur.IsVisible = IsVisible; } } /// <summary> /// Reference to the current window containing this control /// </summary> private Window currentWindow; /// <summary> /// Gets or sets the current window, connecting or disconnecting state change events /// </summary> Window CurrentWindow { get => currentWindow; set { if (currentWindow != null) currentWindow.StateChanged -= RenderingCanvas_StateChanged; currentWindow = value; if (currentWindow != null) currentWindow.StateChanged += RenderingCanvas_StateChanged; } } /// <summary> /// Handles the loaded event /// </summary> private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e) { // Get the window containing this control CurrentWindow = Window.GetWindow(this); // Set up DispEngine rendering DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; DispEngine.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; DispEngine.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); DispEngine.IsVisible = IsVisible; } /// <summary> /// Handles the unloaded event /// </summary> private unsafe void RenderingCanvas_Unloaded(object sender, RoutedEventArgs e) { DispEngine.IsVisible = IsVisible; DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; CurrentWindow = null; } Resource Cleanup /// <summary> /// Flag to track disposed state /// </summary> private bool disposedValue; /// <summary> /// Disposes managed resources /// </summary> protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // Unsubscribe from power events SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; // Dispose the DispEngine to free resources DispEngine.Dispose(); } disposedValue = true; } } /// <summary> /// Public dispose method to free resources /// </summary> public void Dispose() { // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method Dispose(disposing: true); GC.SuppressFinalize(this); } Core DispEngine Integration Patterns 1. Initialization Sequence // Create DispEngine (optionally with displayees) var engine = new DispEngine(displayees); // Set up image buffer callback engine.ImageRequestAfterBufferSwapped += OnBufferSwapped; // Initialize with canvas size engine.Start(width, height); // Set initial view (optional) engine.SetViewToHomeView(); 2. Render Loop The rendering process follows this pattern: DispEngine processes IDisplayee objects Buffer is swapped and callback is triggered UI framework renders the buffer to screen User input triggers view updates Process repeats 3. Complete User Input Mapping All user interactions must be mapped to DispEngine methods: User Action DispEngine Method Mouse move MouseMove(int, int) Mouse drag MouseDragTransform(int, int, mouse_button_table__transform_view_by_mouse_drag_t) Mouse button MouseButtonDown(long) / MouseButtonUp(long) Mouse wheel MouseWheel(int, int) and MouseWheelTransform(int, int, double) Key press KeyDown(string) / KeyUp(string) and KeyDownTransform(string, key_table__transform_view_by_key_pressing_t) Touch events TouchDown(int, int, int) / TouchMove(int, int, int) / TouchUp(int) 4. Proper Resource Cleanup Resource management is critical for proper operation: // In dispose method DispEngine.ImageRequestAfterBufferSwapped -= OnBufferSwapped; DispEngine.Terminate(); DispEngine.Dispose(); Advanced Implementation Considerations When creating custom implementations, consider these aspects: View Manipulation Use SketchView to directly access or modify the view matrix: // Get current view matrix Mat4d currentView = engine.SketchView; // Apply custom rotation Mat4d rotation = Mat4d.RotateX(Math.PI/4); engine.SketchView = currentView * rotation; See Also DispEngine IDisplayee Vec2d Mat4d"
},
"fundamentals/rendering/rendering-canvas/index.html": {
"href": "fundamentals/rendering/rendering-canvas/index.html",
"title": "Using RenderingCanvas with DispEngine | HiAPI-C# 2025",
"summary": "Using RenderingCanvas with DispEngine The RenderingCanvas is the primary UI component for displaying and interacting with 3D content across different platforms. This section explains how to use it with the DispEngine to create cross-platform applications. Overview The RenderingCanvas class is available in frameworks: Hi.WinForm for Windows Forms applications Hi.WpfPlus for WPF applications All implementations share a common architecture centered around the DispEngine class, enabling consistent rendering and interaction across platforms. Core Concept: DispEngine and IDisplayee At the heart of the rendering system is the relationship between DispEngine and IDisplayee: DispEngine: The rendering engine that manages the OpenGL context and handles user interaction IDisplayee: The interface that defines objects that can be rendered by the DispEngine This relationship is fundamental - the purpose of DispEngine is to render IDisplayee objects. graph TD A[IDisplayee Objects] -->|Rendered by| B B[DispEngine] <--> C[RenderingCanvas UI Component] Working with IDisplayee Objects implementing IDisplayee define what gets rendered. Typically, you'll use Drawing objects or compose multiple IDisplayee objects together: // Create a composite displayee public class MyCompositeDisplayee : IDisplayee { private List<IDisplayee> _displayees = new List<IDisplayee>(); public MyCompositeDisplayee() { // Add various displayees _displayees.Add(new AxesDisplayee()); _displayees.Add(new ModelDisplayee()); } public void Display(Bind bind) { // Render all contained displayees foreach (var displayee in _displayees) { displayee.Display(bind); } } public void ExpandToBox3d(Box3d box) { // Update bounding box based on all displayees foreach (var displayee in _displayees) { displayee.ExpandToBox3d(box); } } } For more detailed information on creating displayees with Drawing, see the Drawing section. Basic Usage Apply Hi.WinForm // Create a new instance with displayee objects using Hi.WinForm.Disp; // Create displayee object var displayee = new MyCompositeDisplayee(); // Initialize canvas with the displayee var canvas = new RenderingCanvas(displayee); // Access the DispEngine for direct manipulation DispEngine engine = canvas.DispEngine; // Add to a form myForm.Controls.Add(canvas); Apply Hi.WPF // Create a new instance using Hi.WpfPlus.Disp; // Create displayee object var displayee = new MyCompositeDisplayee(); // Initialize the canvas var canvas = new RenderingCanvas(); // Set displayee objects through the DispEngine canvas.DispEngine.Displayee = displayee; // Add to a container myGrid.Children.Add(canvas); Switching Displayees at Runtime You can dynamically change what's being displayed: // Switch to a different displayee renderingCanvas.DispEngine.Displayee = alternativeDisplayee; // Or update a DispList var displayList = new DispList(); if (showModel) displayList.Add(modelDisplayee); if (showGrid) displayList.Add(gridDisplayee); renderingCanvas.DispEngine.Displayee = displayList; Key Features of DispEngine The DispEngine provides cross-platform support for: Handles buffer swapping and image generation Mouse/pointer events Keyboard navigation Touch gestures Zoom, pan, and rotate operations Resize and Visibility changed. Camera positioning and orientation Standard views (front, top, isometric, etc.) Renders IDisplayee implementations Touch and Gesture Support The DispEngine centralizes touch handling across all platforms with a unified API that supports: Single-finger pan Two-finger rotate and scale Multi-finger specialized operations The touch API is designed to be simple for UI implementations to use. Platform-specific UI components only need to capture touch events and forward them to the DispEngine. Common Operations // Accessing DispEngine (works on all platforms) var engine = renderingCanvas.DispEngine; // Set to standard views engine.SetViewToHomeView(); engine.SetViewToFrontView(); // Manual camera manipulation engine.Translate(dx, dy); engine.Rotate(deltaX, deltaY); // Resize handling engine.Resize(width, height); Implementation Details For detailed implementation information, including: Full source code examples Implementation details for each platform Advanced touch handling Custom implementation guidance See the Building Your Own RenderingCanvas guide. See Also DispEngine IDisplayee DispList Drawing Building Your Own RenderingCanvas"
},
"fundamentals/system-requirements.html": {
"href": "fundamentals/system-requirements.html",
"title": "System Requirements | HiAPI-C# 2025",
"summary": "System Requirements Operating System: Windows 10 or later Ubuntu 22.04 LTS CPU Architecture: x64 (ARM not yet supported) Runtime: .NET 9.0 or later Memory (RAM): Minimum: 8GB RAM (suitable for low-resolution models) Recommended: 128GB RAM or higher (for large and detailed models) Graphics: OpenGL 4.4 compatible graphics card or integrated graphics Most computers manufactured within the last 15 years meet this requirement Performance Guidelines for High-Resolution Simulation Based on internal testing and practical experience: CPU Considerations High clock speed is prioritized over multiple cores Single-thread performance is more important than multi-core parallelization For small NC programs: 16GB RAM is workable Graphics and GPU GPU is used only for 3D rendering/visualization, not for computation acceleration Always verify OpenGL 4.4 compatibility when using cloud computing resources. Since cloud-hosted virtual machines often lack proper OpenGL support. Storage Performance SSD (Solid State Drive) recommended for optimal simulation efficiency Traditional HDD may cause significant performance degradation."
},
"index.html": {
"href": "index.html",
"title": "HiNC Documentation | HiAPI-C# 2025",
"summary": "HiNC Documentation HiNC is a virtual machine tool and milling simulation software by Tech Coordinate. It performs pre-machining verification and optimization through high-precision simulation and milling physics analysis — including cutting force, moment, deflection, heat, wear, and more. flowchart TD subgraph Setup[\"Setup (ordering-free)\"] Mt[\"Build / Load<br>Virtual Machine Tool\"] ControlPreset[\"Configure<br>Drive Mode\"] BasicConfig[\"Set Workpiece, Fixture,<br>Tool House, Controller & NC\"] MaterialConfig[\"Set Cutting<br>Parameters\"] ImportData[\"Import Sensor Data<br>(dynamometer / smart tool holder)\"] end Setup --> Sim[\"Run Simulation\"] Sim --> Collision[\"Collision Detection\"] Sim --> Examine[\"Inspect & Analyze<br>(force, moment, heat,<br>deflection, wear, power)\"] ImportData --> Examine Sim --> Train[\"Train Milling<br>Parameters\"] ImportData --> Train Train --> MaterialConfig Sim --> Opt[\"Generate Optimized NC<br>(re-interpolation,<br>feedrate adjustment)\"] subgraph Inspection Collision Examine end subgraph Output Opt end Workflows — Task-oriented step-by-step guides Basic Simulation — Set up and run a machining simulation Milling Force Parameter Training — Train cutting force parameters from sensor data NC Optimization — Optimize NC programs for feedrate and compensation Sensor Data Mapping — Map external sensor data to simulation toolpaths Geometry Validation — Collision detection, geometry comparison, defect scanning Dynamometer Experiment SOP — Operating procedure for dynamometer measurement Example Projects — Complete project-level examples with real data Manual — Reference knowledge, looked up on demand Setup — Pre-simulation configuration: machine tool, anchor, cutters, controllers, coolant Runtime — Script commands, MachiningStep, SessionShell, ShellProgress Analysis — Theory and evaluation: milling physics, wear, corner behavior, CPU usage Development — For developers building on HiAPI Release Note App Anatomy — Transparent per-component breakdown of the HiNC applications (Webservice + WPF) — view ↔ model ↔ source mapping API Fundamentals — Geometry, rendering, mechanism topology, messaging, XML IO Sample Code — Code samples Other API Reference — Auto-generated C# class and method reference Product — About, license, activation, system info"
},
"manual/analysis/cam-floating-point-drift.html": {
"href": "manual/analysis/cam-floating-point-drift.html",
"title": "CAM Floating-Point Drift Triggers Floor-Contact Force Peaks | HiAPI-C# 2025",
"summary": "CAM Floating-Point Drift Triggers Floor-Contact Force Peaks Layered (Z-stepped) cuts can produce force peaks that look like simulation bugs but reflect a real physical sensitivity: sub-micron contact between the cutter bottom face and the previous-layer floor produces a large force difference, and CAM-generated NC programs often drift between layers by similar amounts on whichever axis carries the repeated path. This coupling between CAM floating-point drift and sub-micron floor sensitivity is rarely recognized in typical workflows; HiNC surfaces and diagnoses it through smart-tool-holder validation and force-simulation comparison. See also NC Optimization and Corner Feedrate Behavior. Phenomenon In a Z-stepped uniform cut, one or two specific layers occasionally show a sharp force spike. In the example below, the X-direction force peak reaches ~865 N where adjacent layers stay near a ~477 N steady level on a D16 mm cutter in aluminum. Users often interpret this as a simulation anomaly because the NC optimizer slows the feedrate dramatically at the spike. Schematic of a Z-stepped layered cut. Each horizontal trace is one layer; sub-thousandth-mm in-plane drift between layers (Y in this example) shifts where each layer enters and exits the previous-layer floor. Spike layer that contacts the previous-layer ridge — X peaks reach ~865 N. Adjacent normal layer at the “same” XY — X stays near ~477 N. Mechanism Smart-tool-holder measurements show that the cutter bottom face is sensitive to sub-micron contact with the previous-layer floor: A gap of less than 1 μm already produces a measurable force difference. Below the minimum effective chip thickness — 7.5 μm in this example, and in general varying with workpiece material and cutter edge geometry — no chip is formed, but friction on the cutter's lower contact band still loads the spindle. In simulation, modeling the cutter floor as lifted by 0.15 μm versus not lifted yields visibly different spindle-torque waveforms — and only the lifted version matches the real smart-holder torque shape. Simulation force peaks driven by floor contact therefore reflect a real sensitivity, not a numerical artifact. NC-Side Trigger: Layer-to-Layer Drift CAM-generated NC programs frequently drift by ~0.001 mm between consecutive Z layers when they traverse the “same” position. In the example below, the drift falls on Y; in other programs it may fall on X or any in-plane axis along the repeated path. N1000 G01 Y10.001 (layers 1..4) N1100 G01 Y10.002 (layer 5) N… G01 Y10.005 (last layer) Each layer lands at a slightly different position relative to the previous floor. Some layers contact the leftover ridge from the layer above; others miss it. The contacting layers exhibit the peak. Why the Simulation Peak Is Real The simulation force model simplifies how the cutter upper portion engages when the gap is below the minimum effective chip thickness, so the simulated peak may be slightly larger than the real peak. For ductile materials (aluminum being a representative case), friction dominates the cutting force, so the overestimate is small. The actual machine has independent safety margins: the controller decelerates at corners (see Corner Feedrate Behavior), and cutter rotation provides a flute-level Probabilistic Peak Dodging effect. In the example above, the cutter remains inside its safe limits at the spike peak (~865 N versus the ~477 N baseline). Harder materials would be more prone to flute breakage at the same NC, but the fix is the same. Probabilistic Peak Dodging For a multi-flute cutter, whether a contacting layer actually produces a peak depends on the flute phase at the contact moment. Force samples within one flute period typically split into: ~6 samples in the high-force window (e.g., above ~500 N in the spike-layer chart above) ~3 samples low enough to “miss” the spike i.e., ~2/3 fall in the high-force window and ~1/3 miss it. This is why neighboring layers can give different results despite nominally identical geometry. It also explains why the issue is a yield problem rather than a deterministic failure — and why peaks still appear after fixing some, but not all, of the drifting NC lines. Mitigation: Fix the NC Clean up the NC program rather than tune the simulation: Identify the drifting positions (typically a few dozen lines in a layered pocket) and snap the drifting coordinate to a consistent value across layers. This restores a clean floor-to-floor relationship and removes the spurious peaks. Tuning the simulation around the peak would mask a signal that the controller and the cutter both feel in practice. When the NC Cannot Be Modified For mature client products the NC is often a frozen standard, and the floor-contact peaks have to be accepted on the simulation side. Two optimizer-side levers absorb the peaks without modifying the NC: MinFeedPerTooth_mm (API) — a floor on the optimizer's chosen feed-per-tooth. Set it to a scaled fraction of the original feed so the optimizer cannot slow further at a single-revolution spike: MachiningStepBuilt += (preStep, curStep) => { curStep.UpdateNcOptOption(opt => { opt.MinFeedPerTooth_mm = FeedPerTooth_mm * scale; }); }; OptYieldingUtilizationFactor (API) — raise the acceptance threshold for the yield-stress ratio based on the observed stable extreme (e.g., if 150 % is routinely tolerated, set 1.5). See Tuning Peak Tolerance for the full set of per-metric factors and which can be relaxed. Prefer these over modifying cutting coefficients to suppress peaks. The coefficients describe material behaviour; tuning them away from physical values masks the real signal for every downstream calculation (force, moment, wear, thermal). Note The current API does not filter single-revolution spikes out of the optimization basis. If a client policy requires excluding such spikes, apply the levers above at the MachiningStepBuilt (API) callback so per-step settings can be overridden without disturbing the global option. See Also Probabilistic Peak & Cutter Crack — The general statement of the probabilistic peak effect this section describes Corner Feedrate Behavior — Force-peak interaction with controller deceleration at corners Smart Holder Training — Smart tool holder measurement that confirms sub-micron sensitivity Relief Face Avoidance — Related geometry sensitivity on the relief side"
},
"manual/analysis/corner-behavior.html": {
"href": "manual/analysis/corner-behavior.html",
"title": "Optimized Feed Rate at Corners Is Lower Than Empirically Feasible | HiAPI-C# 2025",
"summary": "Optimized Feed Rate at Corners Is Lower Than Empirically Feasible See also NC Optimization and the script command Workflow: NC Optimization. Phenomenon During NC feed rate optimization, corners often exhibit significant feed rate reductions — sometimes even lower than what is empirically known to be feasible. This puzzles users: actual machining at corners doesn't require such drastic reductions, so why does the optimization produce these results? Controller Deceleration at Corners At corners, the controller automatically decelerates at high speeds. This is a built-in controller behavior as well as a hardware limitation, designed to ensure the machine can safely and accurately complete direction changes. The controller also provides parameters to adjust this acceleration/deceleration behavior. Relationship Between Buffer Distance and Speed The higher the speed, the longer the required buffer distance. The figure below shows machining conditions for several straight-line paths: The figure labels the spindle speed (S) and feed rate (F) settings for different segments: through1/through2: S500, F200/F100 low1/low2/low3: S1200, F200/F400/F600 high1/high2/high3: S7200, F1200/F2400/F3600 Why Corners Produce Force Peaks Independently of feed-rate optimization, corners themselves generate force peaks that can be 34× the straight-line steady force. The mechanism is geometric: Contact area grows at the corner. Two cut segments share the corner's swept volume, so during the turn the engaged arc on the cutter exceeds the steady-state arc. Friction force scales with contact area. For ductile materials (aluminum, nickel) friction is a large share of the cutting force, so the area increase translates directly into a torque/force peak. Both bending moment and torque feel it. CAM can amplify the contact area. Layer-to-layer drift or imperfect corner alignment in CAM-generated NC leaves residual ridges that increase the corner sweep on subsequent layers; the peak then reflects both the geometric corner effect and the CAM-side drift. See CAM Floating-Point Drift for the floor-contact mechanism that compounds with this. Peaks are expected, not artifacts. As long as the corner geometry is correctly aligned, peaks will appear in simulation; absent them, suspect a misalignment. A peak contained inside a single revolution is itself a partial safety margin — controller corner smoothing and spindle inertia together absorb a single-rev overshoot. Sustained peaks across multiple revolutions are a different story: they drag the spindle below commanded rpm and compound through feed-per-tooth growth. See Tuning Peak Tolerance for which metrics can be relaxed in response and which cannot. Force Simulation Error Analysis The figure below shows the force simulation error after applying and comparing dynamometer data, with blue-to-red indicating error ratio from low to high: Error Characteristics The following characteristics can be observed from the figure: Errors increase closer to tool retraction (corners toward the Z direction) Higher feed rates result in longer high-error intervals Error Sources The errors mainly originate from controller deceleration. From the per-revolution waveform at the F3600 corner in the lower part of the figure: Data Source Description Left (simulated ideal force) Ideal cutting force calculated based on the set feed rate Right (dynamometer data) Measured cutting force, approximately one-third of the ideal force The test material was S45C. At that location, the actual feed should be even lower than one-third of the ideal feed. Why Is the Optimized Value Lower Than the Empirical Value? During NC feed rate optimization, corners often show significant feed rate reductions. Beyond the fact that corners typically produce higher cutting forces, the reason the optimized value is lower than the empirically feasible feed rate is: The controller has already reduced the feed rate on its own; the optimization simply reveals this. In other words, the optimization result reflects the feed rate actually executed by the controller, not the feed rate specified in the NC program. This “excessively low” optimized value is in fact the real machine behavior. Conclusion When you find that the optimized feed rate at corners is unusually low, this is typically not a system error but rather: The controller has already automatically reduced the actual feed rate for safe cornering The optimization function faithfully reflects this deceleration behavior Even if you set the empirical value, the controller would still decelerate to a similar value during actual machining Understanding this phenomenon allows you to evaluate optimization results more rationally and adjust cornering strategies or machine parameters as needed. Tracking the Limiting Physical Quantity per Step To find out which physical quantity limits the feed rate at each individual step, refer to the Tracking Physical Quantity Constraints of Individual Steps section in Workflow: NC Optimization."
},
"manual/analysis/cpu-usage.html": {
"href": "manual/analysis/cpu-usage.html",
"title": "CPU Usage During Simulation | HiAPI-C# 2025",
"summary": "CPU Usage During Simulation Simulation Computation Threads Time-series data is computed on a single thread (using only one CPU core at a time); other data can be computed in parallel. Geometry Removal Geometry removal is single-threaded because sequential cutting is required to obtain the correct CWE (Cutter-Workpiece Engagement). The workpiece geometry surface after removal appears in light pink, which typically indicates that the physics for that region have not yet been computed. Physics Computation Cutting force computation begins after CWE is obtained. Since it is independent of computation order, it runs in multi-threaded mode under normal conditions. Torque and other physical quantities are also computed in parallel during this stage. Temperature computation must follow time-series order, so it converges back to a single thread. The entire machining simulation alternates between these modes. Once a step is fully computed, it is colored according to the designated indicator. Two Independent Cost Drivers Total simulation time comes from two largely independent parts: Per-step physics (force, torque, power, temperature, wear) — computed once per step. The total physics cost scales with the number of steps, which is set by the machining motion resolution together with the spindle revolutions along the toolpath. It does not depend on the mesh resolution, and it does not depend on the overall workpiece size. Geometry removal (voxel subtraction) — its cost is set by the mesh resolution (MachiningResolution_mm). A finer mesh (smaller value) is more expensive; a coarser mesh (larger value) is cheaper. Removal work is localized to the toolworkpiece contact region, so it is roughly area-scaled and, again, largely independent of the bulk workpiece size. MachiningResolution_mm genuinely controls the removal resolution — it is not clamped away or ignored. But because removal and physics run concurrently, the larger of the two costs governs wall-clock time: When geometry removal dominates — the common case at the fine resolutions real NC machining needs — a finer mesh is much slower, and a coarser mesh reduces total time. When the mesh is coarse enough that geometry removal is already cheap, several fixed per-step costs (physics, thermal/wear, per-step bookkeeping) dominate instead. Coarsening further — e.g. raising MachiningResolution_mm from 1.0 to 2.0 mm — then barely changes total time; to speed up, reduce the number of steps with a coarser motion resolution. (Note: 12 mm is already very coarse for NC machining.) CPU Usage Coarse Mesh — Physics-Bound When the mesh is coarse (a large MachiningResolution_mm), geometry removal is faster than physics computation, so a large area of light pink follows behind the tool during simulation. There is a cap on the number of unfinished steps; geometry removal only proceeds when the count is within that limit. When physics computation cannot keep up with geometry removal, the number of pink steps stays constant. In this scenario, the workload is primarily multi-core (physics computation), and you are more likely to see high multi-core CPU utilization. Making the mesh even coarser will not reduce total time — the step count (physics) is the limit. Fine Mesh — Geometry-Bound When the mesh is fine (a small MachiningResolution_mm), geometry removal is slower than physics computation, so the light pink area is barely visible. In this scenario, the workload is primarily single-core (geometry computation), and a coarser mesh will reduce total time. Balanced State If the geometry resolution is such that geometry and physics computation do not bottleneck each other, the light pink area appears and fluctuates within a certain range. In this case, physics computation does not hold back geometry computation, and geometry computation is typically the performance bottleneck. CPU Not Fully Utilized Possible reasons why the CPU is not fully utilized include: The operating system reserves headroom to ensure the GUI remains responsive. For example, Windows desktop applications (such as WPF) lower the priority of non-GUI threads by one level. The software/hardware throughput has reached its limit for the process. The reported CPU usage may not reach 100%, but other resources such as cache and bus bandwidth may be saturated. System-level factors like branch misprediction are also not reflected in the reported CPU usage. There is currently no solution for this."
},
"manual/analysis/cutter-adjustment-levers.html": {
"href": "manual/analysis/cutter-adjustment-levers.html",
"title": "Cutter Adjustment Levers for Force Reduction | HiAPI-C# 2025",
"summary": "Cutter Adjustment Levers for Force Reduction When force peaks push close to or beyond tool limits, three cutter-side levers reduce peaks without changing the NC or the toolpath. Shorten Tool Overhang The unsupported tool length above the cut multiplies bending stress. A common installation leaves 15 mm or more above the flute start; reducing this exposure toward ~5 mm typically produces a large drop in the yield-stress ratio for the same NC. Process documents may fix the overhang for procedural reasons. If the engineering envelope allows, shortening the overhang is the cheapest mitigation before tuning anything else. Adjust Core Radius Heavy-cut cutters narrow the chip-evacuation flute to thicken the cutter core, raising bending strength. The exact core radius cannot be measured externally; it is an empirical input. The HiNC default is 0.6 (cutter-core radius as a fraction of cutter radius) for 4-flute end mills. If the cutter routinely tolerates yield-stress ratios around 200 % without breakage, the actual core is thicker than the default — raise the value in steps (e.g., 0.7) until the simulated ratio aligns with the observed safety margin. Upgrade Cutter Material The default WC-Co6-800nm is a low-cost grade. Finer-grain or coated grades have higher yielding stress and better thermal tolerance: WC-Co6-TiC-400nm — finer grain with TiC. A reasonable upgrade when the cutter quality is unknown but suspected better than the baseline. For a known cutter, configure the matching material file under Resource/CutterMaterial/ rather than guessing the grade. See Also Evaluating Process Machinability — Reading the yield-stress ratio and the spindle ratios Tuning Peak Tolerance — Per-metric utilization factors and when each is safe to relax Tool Life & Wear — Wear modes affected by material grade"
},
"manual/analysis/index.html": {
"href": "manual/analysis/index.html",
"title": "Analysis | HiAPI-C# 2025",
"summary": "Analysis Theory, principles, and evaluation techniques for interpreting simulation results and understanding machining physics. Physics and Coordinates Milling Physics Coordinates — Coordinate systems used in milling physics Tool Behavior and Wear Process Machinability — Evaluating process machinability Tool Life & Wear — Tool life and wear modes Cutter Adjustment Levers — Overhang, core radius, and material-grade levers for reducing force peaks without changing the NC Relief Face Avoidance — Minimum relief angle and clearance Radial Angle Measurement — Measuring radial rake and relief angles CAM Floating-Point Drift — A subtle CAM-NC issue that most workflows miss: sub-thousandth-mm drift between layers triggers floor-contact force peaks. HiNC detects and diagnoses it. Probabilistic Peak & Cutter Crack — Why the same cut passes most of the time and only occasionally cracks the cutter: a narrow high-contact window sampled by discrete flutes Simulation Performance CPU Usage in Simulation — CPU utilization during simulation Corner Feedrate Behavior — Why optimized feed rates are lower at corners Advanced Topics Smart Holder Training — Smart tool holder coefficient training Spindle Capability — Boundary curves, thermal envelope, and the four torque/power ratios Spindle Power Evaluation — Spindle power accuracy validation NC Optimization Principles — Optimization objectives and tracking"
},
"manual/analysis/machinability.html": {
"href": "manual/analysis/machinability.html",
"title": "Evaluating Process Machinability | HiAPI-C# 2025",
"summary": "Evaluating Process Machinability The machinability time-series chart can be used to evaluate tool breakage risk during machining. Tool breakage occurs when any of the following exceeds 100% and persists for longer than one simulation step: Yielding Stress Ratio [YieldingStressRatio (API)], Max Spindle Torque Ratio [MaxSpindleTorqueRatio (API)], or Max Spindle Power Ratio [MaxSpindlePowerRatio (API)]. If the value significantly exceeds 100% — roughly speaking, above 200% — tool breakage can occur even without sustained duration. Note: The default simulation uses per-revolution milling mode, where one simulation step equals one spindle revolution. Yielding Stress Ratio is a percentage indicator with the tool material's breakage force as the denominator. The numerator is the simulation step's absolute force MaxAbsForce_N(API). Compared to using the absolute force value directly as a limit, the ratio incorporates tool material mechanics and more accurately reflects the tool's actual safety margin. The optimization target force OptPreferedForce_N(API) represents the desired MaxAbsForce_N after optimization. For small tools, breakage is typically caused by insufficient tool force capacity, and breakage is based on the Yielding Stress Ratio. For small-to-medium tools, breakage is typically caused by insufficient spindle performance, and breakage is based on the Max Spindle Torque Ratio or Max Spindle Power Ratio. When cutting resistance exceeds spindle performance, the machine feed rate remains constant but the spindle speed continuously decreases, causing the feed per tooth to continuously increase, which drives cutting forces to spike until tool breakage or machine stoppage. For the underlying boundary curves and how each ratio's denominator is computed at the current rpm, see Spindle Capability. Note Tool Breakage Solutions Modify the toolpath to reduce cutting width/depth, or use HiNC's optimization feature to adjust feed rates, bringing the Yielding Stress Ratio, Max Spindle Torque Ratio, and Max Spindle Power Ratio below 100%. Ripple on Curved and Tilted Cuts (Mesh Quantization) On a nominally constant-engagement cut that is curved or tilted — arc or helical hole milling, ramping, or 5-axis moves — the Yielding Stress Ratio (and the underlying MaxAbsForce_N(API)) can show a small step-to-step ripple even though the theoretical engagement is steady. This is a discretization artifact, not a bug. Cause. The workpiece is represented by an axis-aligned cubic voxel mesh (see Workpiece Entity Resolution). Orthogonal cubes cannot represent a circle or an inclined face smoothly, so the removed volume and the contact engagement area quantize against the grid from step to step. That quantization shows up as ripple in the per-step peak force, and therefore in the ratio. What helps. A finer MachiningResolution_mm makes the quantization step smaller, so the ripple amplitude shrinks — at the cost of slower geometry removal (see CPU Usage During Simulation). What does not help. Switching to fixed-pace / sweeping motion resolution (FixedPace) does not remove this ripple. The ripple comes from the spatial cubic grid, not from the spacing between steps, so changing the step spacing leaves it essentially unchanged. Getting a smooth curve. There is no built-in filter that smooths step-series curves. If a smooth curve is needed for a report, post-process the exported CSV (WriteStepFiles(API)) yourself — e.g. a moving average. Note that the Yielding Stress Ratio is defined on the per-revolution peak force only (there is no averaged variant); the averaged force fields (Avg…) are inherently smoother when a trend, rather than the breakage peak, is what you need to read. Thermal Plastic Deformation of Cutting Edge If the Thermal Yield Ratio [ThermalYieldRatio (API)] exceeds 100%, thermal plastic deformation of the cutting edge occurs, accelerating wear. Unlike the Yielding Stress Ratio, Max Spindle Torque Ratio, and Max Spindle Power Ratio, this is a long-term indicator — exceeding 100% does not cause immediate effects. Note Thermal Plastic Deformation Solutions After addressing tool breakage issues, reduce the spindle speed to allow sufficient time for the cutting edge to dissipate heat. Note that whether the coolant is properly directed at the cutting edge has a significant impact. If the coolant is not aimed at the cutting edge, it effectively reduces the heat dissipation coefficient. Tool manufacturers typically provide recommended machining conditions, and the Thermal Yield Ratio obtained by simulating under those conditions usually exceeds 100%. This is because the manufacturing formulations of tool materials differ from HiNC's conservatively set default values. If you consider machining conditions with a Thermal Yield Ratio above 100% to be reasonable, you can adjust the thermal properties of the tool material so that the calculated Thermal Yield Ratio approaches 100%."
},
"manual/analysis/milling-physics-coordinates.html": {
"href": "manual/analysis/milling-physics-coordinates.html",
"title": "Milling Physics Coordinate Systems | HiAPI-C# 2025",
"summary": "Milling Physics Coordinate Systems Physical properties such as milling forces, milling torques, and deformations can be represented in different coordinate systems. Sensor raw data also corresponds to different coordinate systems. When viewing physical simulation data in HiNC, you will often see coordinate system notations. This chapter explains the three coordinate systems shown in the figure below. Note Workpiece Coordinate System Workpiece Coordinate System, abbreviated as [W]. Usually the program origin coordinate system. The workpiece coordinate system is consistent with the dynamometer coordinate system. Tool Running Coordinate System Tool Running Coordinate System, abbreviated as [TR]. Takes the tool running direction excluding tool normal movement as +X, tool normal vector as +Z, and defines +Y by the right-hand rule. For climb milling, +Y direction is away from the wall. The tool running coordinate system is suitable for understanding machining conditions. Spindle Rotation Coordinate System Spindle Rotation Coordinate System, abbreviated as [SR]. The tool running coordinate system rotated around the Z axis by spindle motion angle \\(\\theta\\) becomes the spindle rotation coordinate system. The spindle rotation coordinate system is consistent with the smart tool holder coordinate system, as the smart tool holder sensor rotates with the spindle."
},
"manual/analysis/nc-optimization-principles.html": {
"href": "manual/analysis/nc-optimization-principles.html",
"title": "NC Optimization | HiAPI-C# 2025",
"summary": "NC Optimization Also refer to the script commands section Workflow: NC Optimization. Optimization Objective Optimization aims to make the physical quantities during machining as close to the target values as possible. Since the optimization uses a conservative feed rate strategy, the physical quantities in the optimized NC code will be as close to equal to or less than the target values as possible. Factors Determining the Optimized Feed Rate The optimized feed rate is determined by: Physical quantity constraints of individual steps: Feed rate limits calculated for each step based on target force, yielding stress, spindle torque, etc. For detailed descriptions of indicators such as yielding stress ratio and spindle torque ratio, refer to \"Evaluating Process Machinability\". Inter-step smoothing: Interactions such as acceleration/deceleration limits and extended distances. Differences in Simulation Results After Optimization Simulation with modified feed rates produces different interpolation points than before, resulting in: Different simulation mesh errors Surface morphology changes at the surface roughness level Therefore, the simulated physical quantities after optimization may not always be equal to or below the target values — they may also be slightly above. The influence of interpolation point density on surface morphology is greater at rounded corners than on straight lines, so this effect may be more pronounced at corners. Tip For abnormally low optimized feed rates at corners, refer to Corner Feed Rate Optimization. Velocity Smoothing The smoothing range terminates at macro commands or line commands with unresolvable paths. Velocity smoothing applies acceleration/deceleration limits based on the path length traversed by the current line command. Therefore, velocity smoothing is effective for re-interpolatable regions; however, for non-re-interpolatable regions, although acceleration/deceleration limits still apply, the excessively long path length of a single line may render them impractical in actual use. Impact of Geometric Errors Current NC optimization is based on an ideal geometric model. If the workpiece is a casting or has installation errors, a conservatively larger workpiece geometry should be configured in the system to prevent the system from misidentifying cutting regions as non-cutting regions, which could cause tool crashes. Tool Breakage Solutions Modify the toolpath to reduce cutting width/depth, or use HiNC's optimization feature to adjust feed rates, bringing the yielding stress ratio, max spindle torque ratio, and max spindle power ratio below 100%. For detailed descriptions of these indicators and tool breakage criteria, refer to \"Evaluating Process Machinability\". Tuning Peak Tolerance Optimization defaults treat the 100 % line on every ratio as a hard ceiling. In practice some metrics tolerate routine excursions and others don't. The per-metric Opt*UtilizationFactor levers let the optimizer accept higher peaks where physically safe. Metric Factor (API) When to raise Yielding stress OptYieldingUtilizationFactor Per-instant. Safe to raise. If 150 % is routinely tolerated without breakage, set 1.5. Controller corner smoothing and spindle inertia absorb a single-revolution overshoot. Spindle torque OptSpindleTorqueUtilizationFactor Cumulative. Keep at 1. Sustained excursions stall the spindle: feed continues, rpm drops, feed-per-tooth grows, forces spike further. Spindle power OptSpindlePowerUtilizationFactor Cumulative. Keep at 1. Same reason as torque. Thermal yield OptThermalYieldUtilizationFactor Long-term. Can be raised modestly if the calibrated tool material is more thermally tolerant than the conservative defaults — see Thermal Plastic Deformation of Cutting Edge. Rule of thumb: relax per-instant per-step metrics based on observed stable extremes; never relax cumulative metrics. For a complementary feed-rate floor lever — useful when the NC cannot be modified to remove single-revolution peaks — see MinFeedPerTooth_mm (API) and When the NC Cannot Be Modified. Thermal Edge Chipping Solutions After addressing tool breakage issues, reduce the spindle speed to allow sufficient time for the cutting edge to dissipate heat. Note that whether the coolant is properly directed at the cutting edge has a significant impact. Tracking Physical Quantity Constraints of Individual Steps To determine which physical quantity limits the feed rate for an individual step, first disable smoothing-related settings, then enable logging: OptMaxAcceleration_mmds2 = double.PositiveInfinity; OptFeedrateAssignmentRatio = 0; OptExtendedPreDistance_mm = 0; OptExtendedPostDistance_mm = 0; EnableIndividualStepAdjustmentLog = true; EmbeddedLogMode = NcOptimizationEmbeddedLogMode.FullLog; After running the optimization, inspect the .IndependentStepAdjustment.log file to view the independent optimization calculation results for each step and identify which physical quantity limited the feed rate. For detailed field descriptions of the log file, refer to the Optimization Logs section in the Workflow: NC Optimization workflow."
},
"manual/analysis/probabilistic-peak-crack.html": {
"href": "manual/analysis/probabilistic-peak-crack.html",
"title": "Probabilistic Peak: Why a Cut Passes Most of the Time and Occasionally Cracks the Cutter | HiAPI-C# 2025",
"summary": "Probabilistic Peak: Why a Cut Passes Most of the Time and Occasionally Cracks the Cutter Left — spindle-moment dartboard. The (Mx, My) moment-vector tip is drawn as a closed locus over one spindle revolution, coloured by the axial moment Mz; the concentric rings are moment magnitude (Nm). For most of the revolution the locus stays near the centre — small fluteworkpiece contact length, small moment. One narrow lobe stretches out to the outer rings: the angle where the contact length spikes and produces the large force that can crack the flute. Right — the 3D engagement at that high-load phase, showing the flute deeply engaged with the workpiece. The Mechanism The fluteworkpiece contact length is small for most spindle angles and spikes only inside one narrow angular window. The large force — and the crack risk — exists only inside that window. The cutter's flutes are discrete. Whether a cutting flute actually lands inside the narrow high-contact window is a matter of flute phase, not a certainty: High probability — the flutes fall in the wide low-contact region and step over the window. The pass completes safely. Low probability — a flute lands inside the narrow window, takes the full contact length, and sees the large force. The flute can crack. This is why a cut with a clear high-contact window still passes most of the time and only occasionally breaks the cutter, and why nominally identical geometry can pass on one pass and crack on another. It is the same effect documented under Probabilistic Peak Dodging. See Also CAM Floating-Point Drift — a concrete case of the same probabilistic peak effect, triggered by sub-micron floor contact."
},
"manual/analysis/radial-angle-measurement.html": {
"href": "manual/analysis/radial-angle-measurement.html",
"title": "Radial Rake Angle and Radial Relief Angle Measurement on the Cutting Plane | HiAPI-C# 2025",
"summary": "Radial Rake Angle and Radial Relief Angle Measurement on the Cutting Plane The method for measuring angles on the tool cutting plane scan is illustrated below: Radial Rake Angle (α) Sweep along the tool rotation direction to find the trailing point A of the cutting edge Connect point A to the center O The angle ∠OAA' between line OA and the first polyline endpoint A' on the cutting side of the edge is the rake angle α Radial Relief Angle (β) Find the contact point B between the tool and the envelope circle Construct the tangent line Lt to the envelope circle at point B BB' is the first line segment on the relief side of the tool Pick an arbitrary point B'' on Lt in the relief direction The angle ∠B'BB'' between BB' and Lt is the relief angle β"
},
"manual/analysis/relief-face-avoidance.html": {
"href": "manual/analysis/relief-face-avoidance.html",
"title": "Primary Relief Angle Clearance | HiAPI-C# 2025",
"summary": "Primary Relief Angle Clearance All relief angles discussed in this article refer to the primary relief angle — the relief angle closest to the cutting zone. Also known as the clearance angle. During cutting, the milling cutter edge follows a trochoidal motion, shown as the red trochoid in the figure below. The blue circle is the tool envelope circle. The region inside the red trochoid (toward the center of the envelope circle) is the already-cut area; the region outside the red trochoid is the uncut area. If the relief face falls in that region, it will collide with the uncut material. Therefore, the angle marked RA (abbreviation for Relief Angle) represents the minimum required relief angle. If the actual tool relief angle is smaller than the minimum required relief angle, the clearance face will press against the uncut workpiece, increasing forces on both the tool and the workpiece. This leads to greater tool vibration, workpiece surface springback, a sharp rise in surface roughness, and reduced tool life. Minimum Required Relief Angle Calculation For fixed-axis machining, the minimum required relief angle can be calculated from the feed rate, spindle speed, and tool radius. For simultaneous multi-axis machining, it must be computed in batch for each contact point along the program path. The following outlines the calculation for fixed-axis machining. \\(\\vec r_p = \\left(t\\cdot v-R\\cdot\\sin\\left(t\\cdot w\\right),R-R\\cdot\\cos\\left(t\\cdot w\\right)\\right)\\) \\(\\vec r_b = \\left(a\\cdot v-R\\cdot\\cos\\left(s\\right),R-R\\cdot\\sin\\left(s\\right)\\right)\\) Where: \\(\\vec r_p\\) is the position vector of the red trochoid; \\(\\vec r_b\\) is the position vector of the blue circle; \\(R\\) is the tool radius (mm); \\(w\\) is the spindle speed (rad/s); \\(v\\) is the feed rate (mm/s); \\(t\\) is time; \\(s = t\\cdot w\\); \\(a\\) is a specified time, used as a constant. Let the velocity vectors be \\[ \\vec v_p = \\frac{d\\vec r_p}{dt} , \\vec v_b = \\frac{d\\vec r_b}{ds} \\] The angle between \\(\\vec v_p\\) and \\(\\vec v_b\\) is the minimum required relief angle."
},
"manual/analysis/smart-holder-training.html": {
"href": "manual/analysis/smart-holder-training.html",
"title": "Smart Tool Holder Coefficient Training | HiAPI-C# 2025",
"summary": "Smart Tool Holder Coefficient Training By cutting the following shapes and collecting three-direction torques with a smart tool holder, you can train milling coefficients through HiNC projects. Overview T1 End mill D10 4 flutes T2 Drill bit, diameter unrestricted Click to download NC code. Note Adjusting Machining Method Speed and feed can be changed according to material conditions, but feed per tooth must be in multiples. Slower spindle speed allows the smart tool holder to collect more data per unit time. The wall thickness between the two slots in Shape I needs to be thin enough so that Shape II cutting is discontinuous per revolution. Shape I Shape I consists of three red slots, which are preparatory shapes, no need to collect smart tool holder data. ae10; ap1; S1500; F600 Shape II Shape II penetrates through the thin walls between the three red slots, need to collect smart tool holder data. lineA: T1; ap1; S50; F20 (frt0.1) lineB: T1; ap1; S50; F10 (frt0.05) Shape III Shape III is drilling, need to collect smart tool holder data. drillA: T2; dp4; S50; F20 drillB: T2; dp4; S50; F10"
},
"manual/analysis/spindle-capability.html": {
"href": "manual/analysis/spindle-capability.html",
"title": "Spindle Capability | HiAPI-C# 2025",
"summary": "Spindle Capability SpindleCapability (API) describes the energy, torque, power, and thermal envelope of a machine spindle. It is loaded as XML (.SpindleCapability files under Resource/SpindleCapability/) and lives on SpindleCapability (API) as part of the project equipment. This page explains what the model represents physically and how the per-step ratios on a machining step are derived. For editing values interactively, see Spindle Capability Page. For empirical validation of the resulting power numbers against Fanuc ServoGuide, see Spindle Power Evaluation. Boundary curves: continuous vs instantaneous A typical spindle datasheet chart (FANUC aT12/12000i, shipped as FANUC-aT12-12000i.SpindleCapability): torque (N-m) and power (kW) plotted against spindle speed. The S1 Cont. curves are the continuous boundary; the S3 60% curves are a short-duration rating. HiNC stores exactly these curves, keyed by workable duration. The capability stores two dictionaries keyed by workable duration (in minutes), mapping spindle speed to the maximum power or torque the spindle can deliver for that duration: WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW (API) WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm (API) Two duration keys are special: PositiveInfinity — the continuous boundary. The spindle can run at any (speed, value) point on this curve forever without overheating. Industry usage often calls this the S1 rating. The smallest finite key (e.g. 15) — the instantaneous boundary. The spindle can run at any (speed, value) point on this curve only for that workable duration before the temperature ceiling is reached. A capability typically also has intermediate keys (e.g. 60 minutes) which document the spindle's published rating curve. Note Why duration-keyed and not just two curves? The duration key serves two roles. The contour values give peak load capability (used by the ratio computation, see below). The duration values implicitly encode the thermal time constants (used by the thermal envelope, see further below). One family of curves drives both. If GearShiftSpindleSpeed_rpm (API) is set, each contour is treated as two segments split at that speed; only the segment for the current spindle speed is used for interpolation. Outside the segment, interpolation uses nearest-neighbour clamping rather than extrapolation. How the four ratios are computed For every machining step where the spindle speed changes, SpindleSpeedCache (API) interpolates each of the four contour-based curves at the current spindle speed and stores four scalar boundaries: Boundary (denominator) Source contour MinInsistentRatioSpindleTorqueBoundary_Nm smallest-key entry of the torque dictionary, interpolated at current rpm InfInsistentRatioSpindleTorqueBoundary_Nm ∞-key entry of the torque dictionary, interpolated at current rpm MinInsistentRatioSpindlePowerBoundary_W smallest-key entry of the power dictionary, interpolated at current rpm InfInsistentRatioSpindlePowerBoundary_W ∞-key entry of the power dictionary, interpolated at current rpm The four MachiningStep ratios are then divisions: \\[ \\begin{aligned} \\text{MaxSpindleTorqueRatio} &= \\frac{\\text{MaxAxialTorque\\_Nm}}{\\text{MinInsistentRatioSpindleTorqueBoundary\\_Nm}} \\\\[6pt] \\text{ContinueSpindleTorqueRatio} &= \\frac{\\text{MaxAxialTorque\\_Nm}}{\\text{InfInsistentRatioSpindleTorqueBoundary\\_Nm}} \\\\[6pt] \\text{MaxSpindlePowerRatio} &= \\frac{\\text{inputPower\\_W}}{\\text{MinInsistentRatioSpindlePowerBoundary\\_W}} \\\\[6pt] \\text{ContinueSpindlePowerRatio} &= \\frac{\\text{inputPower\\_W}}{\\text{InfInsistentRatioSpindlePowerBoundary\\_W}} \\end{aligned} \\] Because the continuous boundary is always lower than (or equal to) the short-duration boundary, the corresponding Continue- ratio is always greater than (or equal to) its Max- counterpart for the same load: A Max- ratio above 100% means the spindle is overdriven instantaneously and will trip thermal protection within the rated short duration. This is the criterion MaxSpindleTorqueRatio (API) and MaxSpindlePowerRatio (API) use to flag tool breakage on Process Machinability. A Continue- ratio above 100% means the spindle cannot sustain this load forever — short bursts may still be safe. Useful for pacing long operations rather than predicting immediate failure. Input power vs output power The power numerator above is input power (energy entering the spindle), not output power (energy reaching the cutting end). They are related by the spindle's energy efficiency: \\(\\text{inputPower\\_W} = \\frac{\\text{AbsAxialPower\\_W}}{\\text{EnergyEfficiency}}\\) — where EnergyEfficiency is EnergyEfficiency (API) and AbsAxialPower_W is what the cutting actually demands. The lost fraction \\((1 - \\text{EnergyEfficiency})\\) becomes heat that the thermal envelope has to dissipate. Spindle Power Evaluation documents the empirical justification for this conversion against measured Fanuc ServoGuide TCMD data. Dry-run idle power Even when the cutter is in air, a rotating spindle dissipates power as bearing friction and aerodynamic windage. HiNC models this as a sum of a linear-in-rpm term (bearing friction) and a higher-order term (windage), parameterised by: DryRunFrictionPowerCoefficient_mWdrpm (API) — friction term coefficient DryRunWindagePowerCoefficient_pWdrpm3 (API) — windage term coefficient The friction term dominates at low rpm; the windage term takes over at high rpm. The thermal envelope (next section) uses the larger of the dry-run idle power and the cutting-induced heat, so the spindle keeps warming up even during air moves. Thermal envelope The same SpindleCapability also drives a thermal model of the spindle body. You do not set heat capacity or convection directly — the thermal model is auto-calibrated from your existing inputs. The continuous (∞-key) curve plus WorkingTemperatureUpperBoundary_C (API) together determine how fast the spindle dumps heat at steady state. Physically: the continuous rating is, by definition, the load the spindle can hold forever without exceeding the working-temperature ceiling — so HiNC infers the steady-state heat-loss capacity from this constraint. The shortest-duration curve plus its duration key together determine how much heat the spindle can absorb before reaching the ceiling. Physically: the short-duration rating is, by definition, the load that brings the spindle to the ceiling exactly within that workable time — so HiNC infers the body's effective thermal mass from this constraint. What this means for you: refining the contour data (more accurate (speed, power/torque) points, better matched duration keys) automatically improves both load-capacity prediction and thermal-response speed. There is no separate thermal parameter to tune. Per-step temperature outputs At each step the body temperature evolves under whatever heat input is currently applied (cutting losses or dry-run, whichever is larger), approaching the steady-state temperature implied by that heat input. The two outputs published per step are: SpindleTemperature_C (API) — current body temperature SpindleWorkingTemperatureRatio (API) — body temperature normalised so that ambient is 0 and the working-temperature ceiling is 1. A value approaching 1.0 means the spindle is near its thermal limit. Note SpindleWorkingTemperatureRatio describes the spindle housing as a whole. It is not the same as the cutter-edge thermal failure tracked by ThermalYieldRatio in Process Machinability, which is a localized cutting-edge phenomenon. Editing and file IO Capabilities are persisted as XML (.SpindleCapability files). Three pre-built spindles ship in Resource/SpindleCapability/: FANUC-aT12-12000i.SpindleCapability TMV-720A-STD-8000RPM.SpindleCapability VP-8--Fanuc-10000RPM.SpindleCapability To edit values interactively, see Spindle Capability Page in the Quasar webservice. The desktop WPF app does not yet have a dedicated editor; load capabilities through the equipment's ObjectManagementMenuButton instead. Related pages Process Machinability — uses MaxSpindleTorqueRatio / MaxSpindlePowerRatio for tool-breakage prediction Spindle Power Evaluation — empirical validation of HiNC spindle power against Fanuc ServoGuide measurements Step Field Reference — full list of per-step physics outputs Spindle Capability Page — UI editor walkthrough"
},
"manual/analysis/spindle-power-evaluation.html": {
"href": "manual/analysis/spindle-power-evaluation.html",
"title": "Spindle Power Evaluation | HiAPI-C# 2025",
"summary": "Spindle Power Evaluation For the spindle capability model itself (boundary curves, thermal envelope, and the four torque/power ratios), see Spindle Capability. This page focuses on empirical validation of HiNC's spindle-power evaluation against measured data. The role of spindle power for energy cost of Milling The energy distribution can be referenced from Heidenhain's published measurements1. The total machine power splits into two main flows: External processing — Cooling lubricant and Compressed air, typically supplied by facility infrastructure. Electrical power of the machine — The machine's own electrical consumption, further split into Auxiliary components and CNC control (which contains Spindle and Feed drives). Note Case A: Mean power requirement for manufacturing a housing part — Roughing (13 kW) sankey-beta Total power (13 kW),External processing,6.4 External processing,Cooling lubricant,5.1 External processing,Compressed air,1.3 Total power (13 kW),Electrical power of the machine,6.6 Electrical power of the machine,Auxiliary components,3.1 Electrical power of the machine,CNC control,3.5 CNC control,Spindle,3.25 CNC control,Feed drives,0.25 Note Case A: Mean power requirement for manufacturing a housing part — Finishing (7.4 kW) sankey-beta Total power (7.4 kW),External processing,2.8 External processing,Cooling lubricant,1.5 External processing,Compressed air,1.3 Total power (7.4 kW),Electrical power of the machine,4.6 Electrical power of the machine,Auxiliary components,2.8 Electrical power of the machine,CNC control,1.8 CNC control,Spindle,1.55 CNC control,Feed drives,0.25 Note Case B: Mean power consumption of the drives during rough facing Face-milling cutter D = 60 mm, speed 4 100 rpm, infeed depth 4 mm. xychart-beta title \"Mean power consumption of the drives (kW)\" x-axis [\"Spindle\", \"Feed axes\"] y-axis \"Mean power (kW)\" 0 --> 20 bar [18.5, 0.3] In Case A roughing, the workpiece material seems like Al6061. CNC control (Spindle + Feed drives) takes about 27% of the total power (3.5 / 13 ≈ 26.9%). From HiNC spindle power evaluation: Milling S45C cost 200% energy compare to Al6061T6. Milling Inconel718 cost 800% energy compare to Al6061T6 i.e., Spindle power of milling S45C occupies 42% of total power. Spindle power of milling Inconel718 occupies 75% of total power. Conclusion: Spindle Power matters for not easy-working materials for computing the energy cost of milling. Verification of HiNC Spindle Power Evaluation HiNC Spindle Power Evaluation is verified by comparison of the gathering Data based on the following setting. Setting Machine Tool: YCM NDV102A Max Spindle Power: 22.4 kW Controller: Fanuc 31i-Model A Sampling: 1ms Total Spindle Expended Energy: 0.412 kWh The total spindle expended energy is rearranged from Fanuc ServoGuide TCMD data. Work Time: 8min 30s Comparison The following figures are spindle power based on Controller and the spindle power evaluated by HiNC. Note The spindle power by Fanuc ServoGuide TCMD(%) * MaxSpindlePower Note The evaluated spindle power by HiNC Milling Power * Energy Conversion Efficiency (here is 0.4) Data summarized from Heidenhain, Technical Information: Aspects of Energy Efficiency in Machine Tools, November 2010.↩"
},
"manual/analysis/wear.html": {
"href": "manual/analysis/wear.html",
"title": "Tool Life and Wear | HiAPI-C# 2025",
"summary": "Tool Life and Wear There are many modes of cutting edge damage, which can be attributed to instantaneous failure modes, including tool breakage and thermal cracking, see this article; while for modes attributed to long-term consumption failure, it is recommended to use flank wear as the target for evaluating tool life . HiNC adopts the wear model1: \\(W(T) = \\frac{k(T) L P}{H(T)}\\) where W is wear amount, k is wear coefficient, L is contact length, P is pressure, H is hardness, T is temperature. HiNC calculates wear including: Crater Wear Flank Wear Width Flank Wear Depth Here crater wear refers to crater wear depth. Flank wear width is most commonly used as an evaluation target in papers because it has measurement standards. In planar motion, tools will wear at the cutting peak first then the flank, so flank wear width can be used to evaluate total wear in laboratory settings. However, if the tool has up and down motion during milling, the flank will experience random collisions before the cutting peak is worn out, in which case flank wear width loses its value for evaluating total wear. The flank wear width calculated by HiNC assumes no random flank collisions and is only applicable to planar cutting. HiNC retains this value for research purposes. Lee, R. S, and J. L Jou. “Application of Numerical Simulation for Wear Analysis of Warm Forging Die.” Journal of Materials Processing Technology, Proceedings of the 6th Asia Pacific Conference on materials Processing, 140, no. 1 (September 22, 2003): 4348.↩"
},
"manual/runtime/cutter-location-playback.html": {
"href": "manual/runtime/cutter-location-playback.html",
"title": "Cutter-Location (CL) Playback | HiAPI-C# 2025",
"summary": "Cutter-Location (CL) Playback PlayClFile replays a CAM cutter-location file — an NX CLSF (.cls) / APT-source toolpath — directly as tool motion, without a post-processor. Use it to verify the programmed toolpath itself (gouge, overcut, engagement) before it is post-processed for any particular machine. The same file can also be played onto a real machine-tool chain, and a played CL program can be written back out as Fanuc NC — see Two chains, two questions and Converting CL to NC. CL vs. NC — two different inputs PlayNcFile (NC / G-code) PlayClFile (CL / CLSF) Source Post-processed G-code for one specific machine CAM cutter-location output, before post-processing, machine-independent Content Axis moves (G01 X.. Y.. Z..), work offsets, canned cycles Cutter locations (GOTO), arcs (CIRCLE), tool axis vectors Drives A machine-tool chain (X/Y/Z/A/B/C axes) through kinematics Either chain — see below Answers “What does this machine do with this program?” “Is the programmed path correct?” — or, on a machine chain, both questions at once A cutter location is a point plus a tool-axis direction in workpiece coordinates. PlayClFile places the tool at each location in turn and sweeps the removed material between them. Two chains, two questions The chain configured in project setup decides what a CL play means. On a ClMillingDevice the cutter location is applied straight to the tool: no inverse kinematics, no work-coordinate offsets, no controller dialect. This is the machine-independent check — it answers whether the CAM output itself is correct, and it is the right chain when you do not yet know which machine will run the job. On a machine-tool chain every CLSF motion endpoint is inverse-solved at parse time and expressed in the same program-to-machine transform vocabulary the NC pipeline uses — a tool-height entry from the active tool, a pivot entry anchored to the workpiece frame, and the solved rotary axes — so the shared machine-coordinate and rotary-wrap handling is reused unchanged. This answers what a particular machine would do with the path, including reach and rotary behaviour, without a post-processor in between. Note A machine-chain play needs the project's kinematics to resolve to a live solver. Where an endpoint cannot be solved, the motion is reported rather than silently dropped — watch for ClToMc--EndpointIkFailed and ClToMc--NoToolOffset in the diagnostics. Converting CL to NC ConvertClToNcFiles writes a played CL program back out as Fanuc NC, one file per source file, template-substituting [NcName] (default Output/[NcName].nc). It requires a prior play on a machine chain — a ClMillingDevice leaves no machine-solved data to serialize — and reports ConvertClToNc--NoPlay otherwise. A mission can declare the writeback through EnableConvertClToNcFiles and ClToNcFileTemplate. File format The reader parses NX CLSF records (the APT-source language): Record Effect GOTO Cutter location — first one positions the tool (rapid teleport); subsequent ones cut a straight CL path CIRCLE / MOVARC Arms an arc; the following GOTO closes it into a true circular CL path RAPID Marks the next move as a non-cutting rapid FEDRAT Feed rate (MMPM / IPM) SPINDL Spindle speed and direction COOLNT Coolant mode (ON / FLOOD / MIST / OFF) TLDATA Tool geometry (diameter, corner radius, length, angles) LOAD/TOOL Tool change to a tool id Comments ($$ to end of line) and line continuation (trailing $) are honored. Records outside this set (PAINT, TOOLNO, TOOL PATH, …) are skipped. Note “APT” here means the APT toolpath language (GOTO, CIRCLE, …). This is a different use of the word from the APT Tool page, which defines cutter geometry. A CL file's TLDATA feeds that same tool-geometry model — see below. The dialect parsed is Siemens NX (.cls). Other CAM systems emit the same APT record family under different names (CATIA APTSOURCE, Creo CL files); those dialects are not yet parsed. Tools from the file A CL file usually carries its own tool definitions. On LOAD/TOOL,<id>, if the tool house has no matching id, the preceding TLDATA geometry is used to create the tool automatically. An id already present in the tool house keeps its configured tool — so you can pre-configure tools for accuracy, or let simple files be self-contained. Example // The machining chain must be a ClMillingDevice (set in project setup). MachiningResolution_mm = 0.125; EnablePhysics = false; // geometry-only check first PlayClFile(\"CL/part-op10.cls\"); // replay the CAM cutter-location file Diff(\"target/part-op10.stl\"); // compare the cut against the design target The project keeps a dedicated CL runner suit (ClsfRunnerSuit) alongside its NC and CSV suits; the parser itself is the NxClRunner preset. See Also PlayClFile — the script command ClMillingDevice — the cutter-location-driven chain APT Tool — cutter geometry (the other meaning of “APT”) Glossary: Script Commands — what is a script command"
},
"manual/runtime/index.html": {
"href": "manual/runtime/index.html",
"title": "Runtime | HiAPI-C# 2025",
"summary": "Runtime Objects, concepts, and APIs that exist during simulation execution. These describe how the simulation progresses and how scripts or the GUI interact with it. Core Concepts Script Command — C# scripting syntax, execution model, warnings Step — The simulation computation unit: concept, accessing, custom variables, output APIs Step Field Reference — CSV field reference for step-level output ShellProgress — Message and progress reporting system API Reference SessionShell Reference — Categorized quick-reference table of all script commands"
},
"manual/runtime/script-command.html": {
"href": "manual/runtime/script-command.html",
"title": "Glossary: Script Commands | HiAPI-C# 2025",
"summary": "Glossary: Script Commands What Is a Script Command? A script command is a C# statement executed by the HiNC scripting engine. Scripts directly reference members and methods of SessionShell, which serves as the global scope — no explicit object reference is needed. // These are all SessionShell members used directly as globals EnablePhysics = true; MachiningResolution_mm = 0.125; PlayNcFile(\"NC/file1.nc\"); Message(\"Done\"); Script Syntax Basics Scripts use native C# syntax: Feature Syntax Statement terminator ; End-of-line comment // comment String interpolation $\"Value is {variable}\" Positive infinity double.PositiveInfinity Negative infinity double.NegativeInfinity Bitwise OR (for flags) Fx|Fy|Fz All standard C# language features (variables, loops, conditionals, LINQ, etc.) are available. Script Task Page In the HiNC GUI, the Task page contains one or more script panels. Each panel has: Order: Execution order (left to right, top to bottom) Enabled: Whether the script runs (unchecked = skipped) Title: A label for human reference only — has no functional effect Execution Model Session Lifecycle Scripts execute in order on the Task page A PacePlayer(API) controls playback — script commands like PlayNcFile(API) block until the NC program completes Player control commands (Pace()(API), Pause()(API), Reset()(API)) interact with the PacePlayer(API) ResetRuntime(API) clears event handlers, buffers, and runtime state Event-Driven Execution Events like SessionStepBuilt(API) fire during simulation and allow per-step logic: SessionStepBuilt += (preStep, curStep) => { if (curStep != null) Message($\"Step: ToolId={curStep.ToolId}\"); }; PlayNcFile(\"NC/file1.nc\"); Events are cleared by ResetRuntime. Script Commands in NC Code Script commands can be embedded inside NC code comments. Lines starting with ;@ execute before that NC line runs: T01 M06 (;@MachiningResolution_mm=0.03125;) S1270 M03 G43 Z10. H01 For controllers that do not support ; as a comment character (e.g., FANUC), wrap in a comment block: T01 M06 (;@MachiningResolution_mm=0.03125;) File Path Templates Commands that output files support the [NcName] token, which is replaced with each NC file name: PlayNcFile(\"NC/file1.nc\"); PlayNcFile(\"NC/file2.nc\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 1); // Produces: Output/file1.nc.shot.csv, Output/file2.nc.shot.csv All file paths are relative to the project directory unless an absolute path is given. Important Warnings The following operations can corrupt simulation state or produce incorrect results: Do not save the project during simulation. System-internal configuration (e.g., training-specific resolution overrides) may overwrite your settings. Do not reset the player during milling coefficient training. Close the project instead of pressing the reset button to avoid unexpected errors. Do not modify resolution, tool, or controller settings during training. Changing these mid-training invalidates the results. Do not combine UpdateNcOptOption in SessionStepBuilt(API) with NC-embedded optimization commands. Parallel computation may cause undefined behavior. Global Variables Global provides a key-value dictionary for sharing data across scripts: Global[\"material\"] = \"Steel\"; var material = Global[\"material\"]; Full API Reference For the complete list of available commands, properties, and events, see: SessionShell — full API documentation Glossary: SessionShell Quick-Reference — categorized quick-reference table See Also Glossary: SessionShell Quick-Reference — SessionShell quick-reference Step — machining step data model Workflow: Basic Machining Simulation — using scripts in a simulation workflow"
},
"manual/runtime/session-shell.html": {
"href": "manual/runtime/session-shell.html",
"title": "Glossary: SessionShell Quick-Reference | HiAPI-C# 2025",
"summary": "Glossary: SessionShell Quick-Reference SessionShell is the global scope for all HiNC script commands. This page organizes every command by category with a one-line description and links to the workflow where each is typically used. Simulation Control Command Description Used In PlayNcFile Execute an NC file Workflow: Basic Machining Simulation PlayNc Execute NC code from a string Workflow: Basic Machining Simulation PlayCsvFile Drive simulation from a CSV file Workflow: Basic Machining Simulation, Workflow: Sensor Data Mapping PlayClFile Replay a cutter-location (CL / APT) toolpath file Workflow: Basic Machining Simulation RunNcFile Parse NC file and return action sequence (no auto-pacing) — RunNc Parse NC string and return action sequence (no auto-pacing) — Pace Insert a pausable checkpoint during playback Workflow: Basic Machining Simulation Pause Pause player execution Workflow: Basic Machining Simulation Reset Reset player state Workflow: Basic Machining Simulation PlayAct Execute a custom action object — PlayToolingTeleport Teleport a tool to a new position — PlayClTeleport Teleport tool to a specified CL position and orientation — Configuration — Resolution Command Description Used In MachiningResolution_mm Set workpiece entity resolution (power-of-2 cube width in mm) Workflow: Basic Machining Simulation DispCache_Mb Set display cache size (Mb) Workflow: Basic Machining Simulation MachiningMotionResolution Set machining motion resolution mode Workflow: Basic Machining Simulation Configuration — Physics Command Description Used In EnablePhysics Enable/disable milling force evaluation Workflow: Milling Force Parameter Training, Workflow: NC Optimization EnableWearEffect Enable/disable tool wear effects — MillingForceCycleDivisionNum Divisions per revolution for force calculation Workflow: Milling Force Parameter Training InitSpindleTemperature_C Initial spindle temperature (°C) — EnablePauseOnFailure Pause execution on failure Workflow: Geometry Validation EnableCollisionDetection Enable collision detection Workflow: Geometry Validation EnablePauseOnCollision Pause on collision Workflow: Geometry Validation Data Export Command Description Used In WriteShotFiles Export waveform (shot) data CSV at given time resolution Workflow: Milling Force Parameter Training WriteStepFiles Export step-level data CSV Workflow: Basic Machining Simulation, Workflow: Milling Force Parameter Training Data Mapping Command Description Used In MapSingleByCsvFile One-to-one time-interpolation mapping from CSV Workflow: Sensor Data Mapping MapSeriesByCsvFile One-to-many series mapping from CSV (via ActualTime) Workflow: Sensor Data Mapping AddTimeDataByFile Specify input data with time range for local mapping Workflow: Sensor Data Mapping, Workflow: Milling Force Parameter Training ClearTimeMappingData Clear all mapping data Workflow: Sensor Data Mapping BeginSelection Set range mapping start point (in NC comments) Workflow: Sensor Data Mapping EndSelection Set range mapping end point (in NC comments) Workflow: Sensor Data Mapping LineSelection Single-line data mapping (in NC comments) Workflow: Sensor Data Mapping EnableMapOnSelectionEnd Auto-trigger mapping when selection ends (default: true) Workflow: Sensor Data Mapping Training Command Description Used In TrainMillingPara Train new milling coefficients from mapped data Workflow: Milling Force Parameter Training ReTrainMillingPara Calibrate existing milling coefficients (10% original / 90% new) Workflow: Milling Force Parameter Training LoadCuttingParaByFile Load cutting parameters from file into workpiece Workflow: Milling Force Parameter Training MillingCycleDivisionNum Angular divisions per revolution — default 36 suits normal simulation; raise (e.g. 180) for training only. Process-wide: not saved per project, survives ResetRuntime() Workflow: Milling Force Parameter Training Optimization Command Description Used In OptimizeToFiles Output optimized NC files Workflow: NC Optimization OptEnableFeedrate Enable sequential feed rate optimization Workflow: NC Optimization OptEnableInterpolation Enable re-interpolation Workflow: NC Optimization OptFeedrateAssignmentRatio Feed rate assignment ratio for re-interpolation Workflow: NC Optimization OptRapidFeed_mmdmin Non-cutting region feed rate (mm/min) Workflow: NC Optimization OptMinFeedrate_mmdmin Minimum cutting feed rate (mm/min) Workflow: NC Optimization OptMaxFeedrate_mmdmin Maximum cutting feed rate (mm/min) Workflow: NC Optimization OptMaxAcceleration_mmds2 Acceleration/deceleration limit (mm/s²) Workflow: NC Optimization OptExtendedPreDistance_mm Pre-distance for cutting region calculation (mm) Workflow: NC Optimization OptExtendedPostDistance_mm Post-distance for cutting region calculation (mm) Workflow: NC Optimization OptSpindlePowerSafetyFactor Spindle power safety factor Workflow: NC Optimization OptSpindleTorqueSafetyFactor Spindle torque safety factor Workflow: NC Optimization OptThermalYieldSafetyFactor Thermal yield safety factor Workflow: NC Optimization OptPreferedForce_N Target cutting force (N) Workflow: NC Optimization Preserve Disable optimization for a single NC line Workflow: NC Optimization BeginPreserve Begin optimization-disabled range Workflow: NC Optimization EndPreserve End optimization-disabled range Workflow: NC Optimization EnableIndividualStepAdjustmentLog Enable per-step optimization log file Workflow: NC Optimization EmbeddedLogMode Set embedded log verbosity (None / SimpleLog / FullLog) Workflow: NC Optimization Geometry Command Description Used In WriteMeshedGeom Save meshed geometry to file Workflow: Basic Machining Simulation ReadMeshedGeom Load meshed geometry from file Workflow: Basic Machining Simulation ExportMeshedGeomToStl Export meshed geometry to STL Workflow: Basic Machining Simulation ExportMeshedGeomToObj Export meshed geometry to Wavefront OBJ (per-vertex RGB) Workflow: Basic Machining Simulation ExportMeshedGeomToPly Export meshed geometry to binary PLY (per-vertex RGB) Workflow: Basic Machining Simulation Diff Compare simulated geometry against target Workflow: Geometry Validation RemoveFlyPiece Remove disconnected residual material Workflow: Geometry Validation ScanMeshedGeomInfDefect Scan for infinite edge cut defects Workflow: Geometry Validation ClearDefectDisplayee Clear defect visualization markers Workflow: Geometry Validation Note These geometry commands were named WriteRuntimeGeom / ReadRuntimeGeom / ExportRuntimeGeomToStl|Obj|Ply / ScanRuntimeGeomInfDefect before the meshed-geom rename. The old names still run in existing player scripts as hidden legacy aliases; new scripts should use the MeshedGeom names. Events Command Description Used In SessionStepBuilt Fired when a machining step is built Workflow: NC Optimization SessionStepSelected Fired when a machining step is selected — Messages Command Description Used In Message Display a general message All workflows ProgressMessage Display a progress message All workflows WarningMessage Display a warning message All workflows ErrorMessage Display an error message All workflows AppendMessagesToFile Export messages to file (optional tag filter) All workflows ShellProgress Session message host object Glossary: Shell Progress (Messages) Step Data Access Command Description Used In GetMillingStep Get step by index Workflow: Basic Machining Simulation StepCount Total step count Workflow: Basic Machining Simulation RegisterStepVariable Register a custom step variable Step Runtime Management Command Description Used In ResetRuntime Clear event handlers, buffers, and runtime state Workflow: Basic Machining Simulation MachiningSession Get the current machining session object — Properties — Workpiece and Fixture Command Description Used In Workpiece Get/set the workpiece object Workflow: Basic Machining Simulation Fixture Get/set the fixture object Workflow: Basic Machining Simulation Global Global variable dictionary for cross-script data sharing Glossary: Script Commands Tool Setup Command Description Used In GetUniformFlutingShiftAngle_deg Get tool contour shift angle (deg) — SetUniformFlutingShiftAngle_deg Set tool contour shift angle (deg) — GetStickMachiningToolObservationHeight_mm Get smart tool holder observation height (mm) — SetStickMachiningToolObservationHeight_mm Set smart tool holder observation height (mm) — Note Tool setup commands are for dynamic adjustment when actual installation conditions differ from defaults. Typically, configure these in the tool configuration file instead. See Also SessionShell — full API documentation Glossary: Script Commands — what is a script command Step — step data model Glossary: Shell Progress (Messages) — message system"
},
"manual/runtime/shell-progress.html": {
"href": "manual/runtime/shell-progress.html",
"title": "Glossary: Shell Progress (Messages) | HiAPI-C# 2025",
"summary": "Glossary: Shell Progress (Messages) What Is ShellProgress? ShellProgress (ShellProgress) is the message host object that manages all messages generated during a HiNC scripting session. It serves as the central hub for logging, filtering, and exporting diagnostic information. Note This host was previously named SessionProgress (and earlier SessionMessageHost); those names are superseded by ShellProgress. Message Types HiNC provides four message types, each with a distinct severity and typical display behavior: Type Command Description Typical Display Message Message General informational message Message panel ProgressMessage ProgressMessage Progress-related status update Progress bar / status area WarningMessage WarningMessage Warning (does not interrupt execution) Message panel (yellow) ErrorMessage ErrorMessage Error (may affect execution flow) Message panel (red) Usage Examples Message(\"Starting simulation\"); ProgressMessage(\"Loading workpiece...\"); WarningMessage(\"No cutting engagement detected in this segment\"); ErrorMessage(\"Workpiece does not exist\"); Message Tags Messages can be tagged for filtering. Standard tags include \"Error\" and \"Warning\". When exporting messages, you can filter by one or more tags. Displaying Messages All messages are automatically recorded in the session message host and appear in the HiNC UI message panel. Progress messages additionally update the progress bar. Accessing the Message Host var messageHost = ShellProgress; Exporting Messages AppendMessagesToFile writes messages to a text file, with optional tag-based filtering: // Export all messages AppendMessagesToFile(\"Output/messages.txt\"); // Export only errors and warnings AppendMessagesToFile(\"Output/errors.txt\", \"Error\", \"Warning\"); Tip Export messages after simulation to create a persistent log for debugging or reporting. Common Patterns Logging Simulation Progress Message(\"Simulation started\"); PlayNcFile(\"NC/file1.nc\"); Message($\"Simulation complete. Total steps: {StepCount}\"); AppendMessagesToFile(\"Output/log.txt\"); Conditional Warnings if (StepCount == 0) { WarningMessage(\"No steps were executed\"); } Error Guard if (Workpiece == null) { ErrorMessage(\"Workpiece does not exist\"); return; } Per-Step Logging via Events SessionStepBuilt += (preStep, curStep) => { if (curStep != null) Message($\"Step {curStep.StepIndex}: ToolId={curStep.ToolId}\"); }; PlayNcFile(\"NC/file1.nc\"); Step Selection Logging MachiningStepSelected += (step) => { if (step != null && step.ToolId == 1) ProgressMessage($\"Tool 1 step selected at line {step.LineNo}\"); }; Message Lifecycle Messages are generated during script execution via the four message commands All messages are stored in the ShellProgress host object Messages persist until the session ends or the runtime is reset ResetRuntime() clears event handlers but does not clear previously recorded messages Messages can be exported at any point using AppendMessagesToFile See Also Glossary: Script Commands — script command basics Glossary: SessionShell Quick-Reference — SessionShell quick-reference Workflow: Basic Machining Simulation — using messages in a simulation workflow"
},
"manual/runtime/step-fields.html": {
"href": "manual/runtime/step-fields.html",
"title": "Step Field Reference | HiAPI-C# 2025",
"summary": "Step Field Reference For the complete and up-to-date field reference, see MachiningStep. To assess the risk of tool breakage, also refer to \"Evaluating Process Machinability\". This page summarizes the main output data for each simulation step, covering source line, kinematics, load, force/torque, power, thermal, and wear information to help quickly understand the machining state at each step. Step data contains information for the time interval between two consecutive steps (i.e., from the previous step to the current step). Many fields are therefore simplified representations over that period. Common prefixes based on the simplification method include Average (Avg), Extremes (Min, Max), Range (Delta), and Maximum Absolute Value (MaxAbs). Basic Source Information FileNo / LineNo / FilePath / LineText / FlagsText: File/line information and flags of the corresponding source NC command. StepIndex: Step sequence index. ToolId: ID of the currently active tool. Time and Motion EndTimecode: Simulated end-of-step timecode (formerly AccumulatedTime; step CSVs written with the legacy header are still read). StepDuration: Duration of this step (default per-revolution mode: one step equals one spindle revolution). BeginSpindleAngle_deg: Spindle angular displacement at the start of this step. Cl (Cutter Location): Cutter location point (including IJK normal). MC (X, Y, Z, A, B, C): Machine coordinates. MoveOnProgramCoordinate, MovingLength_mm: Displacement vector and length in the program coordinate system. Feedrate_mmdmin / SpindleSpeed_rpm / CuttingSpeed_mmds: Feed rate, spindle speed, and cutting speed. FeedPerTooth_mm / FeedPerCycle_mm / ToothArcDuration_s / SpindleCyclePeriod_s: Feed per tooth/per cycle, tooth arc duration, and spindle cycle period. Cutting Engagement and Material Removal Rate IsTouched: Whether cutting engagement occurred. CuttingWidth_mm (ae) / CuttingDepth_mm (ap): Cutting width / cutting depth. Mrr_mm3ds: Material removal rate. ProgramSideCusp_um, SideCuspList_um: Side cusp height and distribution estimated from program feed and radius. Reading tip — a ProgramSideCusp_um spike usually flags a rapid-move (G00) collision, not a finish result. The program-side cusp is computed from the ideal program feedrate while the cutter is engaged with the workpiece. A rapid traverse is not meant to touch material; when it does, the cusp formula is fed the (very high) rapid feedrate, so the value spikes far above any real cutting cusp. Treat an isolated cusp peak at a rapid/G00 line as a likely gouge/collision to investigate. The same engagement-during-rapid usually shows up alongside it as spikes in the availability ratios (yielding-stress / spindle-torque / spindle-power). Chip ChipThickness_mm (/um): Chip thickness. ChipVolume_mm3: Chip volume. ChipMass_mg: Chip mass. Force and Torque (Including Mapping Comparison) Coordinate system note: Most fields in this section indicate their coordinate system (e.g., [W] workpiece, [TR] tool running, [SR] spindle rotation). For coordinate system definitions and diagrams, see \"Milling Physics Coordinate Systems\". AvgForceToToolOnToolRunningCoordinate_N, MaxAbsForce_N: Average/maximum force. Various average/maximum torques (about tool tip, about sensor point; in tool running / spindle rotation / workpiece program coordinate systems). AvgAbsTorque_Nm: Average absolute torque. Mapping comparison: AvgMomentXyByMapping_Nm, AvgAbsTorqueByMapping_Nm, error ratios, and symbolic error correlation metrics. Power, Torque, and Energy Consumption SpindleInputPower_W (input power): Energy entering the spindle. SpindleOutputPower_W (output power): Energy acting on the cutting end after spindle energy losses — i.e., the energy causing workpiece and chip deformation and temperature change. Output power is typically proportional to input power, with the ratio being the energy efficiency set in the spindle configuration EnergyEfficiency(API). MaxSpindlePowerRatio (maximum spindle power ratio): Input power / instantaneous maximum power based on spindle capability. ContinueSpindlePowerRatio (continuous spindle power ratio): Input power / unlimited-duration maximum power based on spindle capability. AccumulatedSpindleEnergyConsumption_kWh: Accumulated spindle energy consumption. Max/Continue Spindle Torque Ratio: Instantaneous/continuous spindle torque ratios. Reading tip — a power / torque ratio over 100% means the spindle cannot supply the demanded load at the commanded rpm, so it droops: with feed held, rpm drops, feed-per-tooth rises, and forces climb further — a runaway loop that, left unchecked, grows the chip until the cutter breaks and the spindle/drive is overstressed and damaged — load damage, not a tool-vs-workpiece collision (see NC optimization). Read it by duration, not just height: a one-revolution (single-cycle) overshoot usually still completes the pass — it just leaves a slightly insufficient cut there — whereas a ratio that stays above 100% across many consecutive spindle revolutions is a genuine overload to fix. A high-load step typically also shows large cutterworkpiece engagement (CWE), large tip deflection, and more vibration/noise. Because the ratio is normalized by the spindle-capability curve, a placeholder/guessed spindle skews it — confirm against the real spindle's speedpower/torque curve before calling it overloaded. Thermal and Temperature CutterBodyTemperature_C / CutterDermisTemperature_C / WorkpieceDermisTemperature_C / ChipTemperature_C: Cutter body, cutter surface, workpiece surface, and chip temperatures. GetCutterDermisTemperature_C(depth_mm) / GetCutterDermisAvgTemperature_C(depth_mm): Cutter subsurface temperature / average temperature at a given depth. ThermalStress_MPa / ThermalYieldRatio: Thermal stress and thermal yield ratio. For tool breakage risk assessment based on thermal yield ratio, see \"Evaluating Process Machinability\". Wear and Deflection For wear models, evaluation metrics, and applicable scenarios, see \"Tool Life and Wear\". InstantCraterWear_um / AccumulatedCraterWear_um: Instantaneous/accumulated crater wear. AccumulatedFlankWearDepth_um / AccumulatedFlankWearWidth_um: Accumulated flank wear depth/width. Tip/Edge Deflection (um): Tool tip and bottom edge deflection (including maximum and delta values), as well as ReCutDepth_um (re-cut depth)."
},
"manual/runtime/step.html": {
"href": "manual/runtime/step.html",
"title": "Step | HiAPI-C# 2025",
"summary": "Step What Is a Step? A MachiningStep (MachiningStep) is a single computation unit in the HiNC simulation. By default, one step corresponds to one spindle revolution, but this interval is configurable via the Basic Simulation workflow. Each step contains data for the time interval between two consecutive steps (from the previous step to the current step). Since this represents a period rather than an instant, many fields are simplified representations using prefixes like Average (Avg), Extremes (Min, Max), Range (Delta), and Maximum Absolute Value (MaxAbs). Registering Custom Step Variables Beyond default properties, you can register custom step variables using RegisterStepVariable: RegisterStepVariable( \"ChipVolume\", // key \"Chip Volume\", // display name \"mm3\", // unit \"F2\", // format string (step) => step.ChipVolume_mm3 // value function ); PlayNcFile(\"NC/file1.nc\"); Parameters: key: Unique identifier name: Display name (shown in UI) unit: Physical unit (can be null) formatString: .NET numeric format string (can be null) variableFunction: Lambda that computes the value from a step (can be null) Registered variables appear in the UI and in output files from WriteStepFiles. Indexer Access Use the this[string] indexer to read/write custom data on a step: SessionStepBuilt += (preStep, curStep) => { if (curStep != null) curStep[\"MyCustomField\"] = someCalculation(); }; Accessing Step Data GetMillingStep GetMillingStep retrieves a step by index: var step = GetMillingStep(100); if (step != null) { Message($\"ToolId={step.ToolId}, Force={step.MaxAbsForce_N} N\"); } StepCount StepCount returns the total number of steps: Message($\"Total steps: {StepCount}\"); Iterating All Steps for (int i = 0; i < StepCount; i++) { var step = GetMillingStep(i); // process step... } Step Output Files Steps can be exported to CSV using WriteStepFiles: WriteStepFiles(\"Output/[NcName].step.csv\"); The CSV contains all default properties plus any registered custom variables. The file can be read back with PlayCsvFile. For waveform-level data (sub-step time resolution), use WriteShotFiles: WriteShotFiles(\"Output/[NcName].shot.csv\", 1); // 1 ms time resolution Dynamically Registered Variables (Training) After executing TrainMillingPara or ReTrainMillingPara, two additional step variables are automatically registered for steps within the training region: Variable Description TrainingErrRatio Error metric between simulation and measurement for each step AngleOffset Cutter rotation phase difference between measured and simulated data See Also Step Field Reference — complete field reference Glossary: SessionShell Quick-Reference — SessionShell quick-reference Workflow: Basic Machining Simulation — simulation workflow producing steps Workflow: Milling Force Parameter Training — training workflow that adds step variables"
},
"manual/setup/anchor.html": {
"href": "manual/setup/anchor.html",
"title": "Component Assembly and Anchors | HiAPI-C# 2025",
"summary": "Component Assembly and Anchors Anchors are used for assembly purposes. When anchors between geometries coincide, assembly is completed. Strictly speaking, an Anchor is not a point, but a coordinate system. For two coordinate systems to be equal, their origins must coincide and their rotation directions must be the same. Note Anchor Assembly Example As shown in the figure below, there are two components, each with two anchors, {AnchorA,AnchorB} and {AnchorC,AnchorD} respectively. The two components are assembled by making AnchorB and AnchorC coincide. Worktable Anchor and Workpiece Anchor Both workpiece and fixture have a workpiece anchor (WorkpieceBuckle), and both machine tool and fixture have a worktable anchor (TableBuckle), used to assemble workpiece, fixture, and machine tool. Note Workpiece Fixture Assembly Example Workpiece and fixture are assembled by making their workpiece anchors (WorkpieceBuckle) coincide. If no fixture is set, the workpiece will be assembled with the machine tool through the workpiece anchor and the machine tool through the worktable anchor. Spindle Anchor and Tool Holder Anchor Both tool holder and machine tool have a spindle anchor (SpindleBuckle), and both tool holder and tool head have a tool holder anchor (HolderBuckle), used to assemble tool head, tool holder, and machine tool. If no tool holder is set, the tool head will be assembled with the machine tool through the tool holder anchor and the machine tool through the spindle anchor."
},
"manual/setup/apt.html": {
"href": "manual/setup/apt.html",
"title": "APT Tool Definition | HiAPI-C# 2025",
"summary": "APT Tool Definition APT (Automatically Programmed Tool) is a universal tool definition. Refer to the APT parameter diagram: Note APT parameter description: D: Diameter Rc: Corner radius Rr: Distance from corner center to tool centerline Rz: Distance from corner center to tool tip horizontal plane Alpha: Angle between horizontal plane and tool tip cone surface Beta: Angle between tool centerline and tool wall cone surface"
},
"manual/setup/controller-heidenhain.html": {
"href": "manual/setup/controller-heidenhain.html",
"title": "Heidenhain Controller Support | HiAPI-C# 2025",
"summary": "Heidenhain Controller Support Heidenhain programs run on a single controller preset that reads both dialects — TNC klartext (TNC 640 / TNC 530 conversational) and Heidenhain DIN/ISO. There is no separate selection to make: pick Heidenhain as the project's controller and the program is read in whichever dialect it is written in. Coverage is stated in the same three states as General NC Code Support — supported, recognized but not simulated, and not supported. Recognized but not simulated is a deliberate state: the construct is consumed and reported under its own message id, so it can never be silently misread as something else. A PLANE AXIAL B+45 will never be mistaken for a rotary-axis command. Program format Separators are optional Klartext is normally written with spaces between the letter instructions, and that is what the control shows. Some post-processors emit the same program with no separators at all. Both forms parse, and so does the detached feed spelling. Equivalent, all parsed: L X-26.3 Y+43.1 Z+100.3 A-90.0 C+13.123 FQ3 and LX-26.3Y+43.1Z+100.3A-90.0C+13.123FQ3 L X+0 Y+0 R0 FMAX and LX+0Y+0R0FMAX FMAX M03 M08 and FMAXM03M08 F20000 and F 20000 Multi-line blocks A statement broken across lines with the tilde continuation — the usual shape of a CYCL DEF body or a long PLANE statement — is joined back into one block before parsing, so it is read as the single statement it is. Motion Construct Support L Straight-line motion with its axis words. FMAX Rapid traverse. CC / C Circular motion — CC sets the pole, C states the end point. DR- is clockwise and DR+ counter-clockwise, the centre may be left implicit, and an arc that closes on its start point is a full circle. RL / RR / R0 Radius compensation left / right / off. M91 One-shot machine-coordinate move for that block. M126 / M127 Shortest-path rotary traverse on / off. With neither stated, shortest path is the default. M140 MB+n / M140 MB MAX Tool-axis retract — by n mm, or to the positive Z stroke limit. Without a configured stroke limit, MB MAX reports M140--NoStrokeLimit and is skipped. The statement's own F drives the retract without entering the modal feedrate. STOP Program stop, alongside M00 / M01. CYCL DEF 32 TOLERANCE Path-smoothing tolerance. BLK FORM Recorded as a stock declaration. It does not replace the workpiece configured in the project. Tools TOOL CALL performs the tool change on its own — klartext has no separate M06 trigger. A tool number or a quoted tool name is accepted. Parsed: TOOL CALL 1 Z S5000 TOOL CALL \"1\" Z S5000 TOOL CALL \"B40R\" Z S3000 DL+0.5 The spindle speed S is recorded modally. DL is a length delta — the effective tool height is the tool-table height plus DL. DR is read and recorded but not applied: radius compensation uses the tool-table radius as-is, and the block reports ToolChange--DeltaUnsupported. A tool axis other than Z reports ToolChange--AxisUnsupported. A TOOL CALL whose tool number could not be captured — an unevaluated variable, for example — reports ToolChange--MissingToolId. Datums CYCL DEF 247 sets the datum preset and CYCL DEF 7 is an additive shift on top of it, which is the TNC semantic. The two compose as separate entries in the coordinate chain instead of replacing each other. Parsed: CYCL DEF 247 Q339=+1 CYCL DEF 7.0 DATUM SHIFT CYCL DEF 7.1 X10.123 CYCL DEF 7.2 Y22.223 CYCL DEF 7.3 Z32.97 Q parameters and FN Q, QR, QL and QS parameters are read wherever a value is expected, so FQ1 reaches the feedrate, L X+Q2 reaches the program position and TOOL CALL SQ3 reaches the spindle speed. Q0Q99 free parameters and QR0QR499 permanent parameters are held as per-project data and saved with the project. Construct Support FN 0FN 5 Assignment and arithmetic, including the DIV keyword of FN 4 and the prefix SQRT of FN 5. FN 9FN 12 Conditional jumps — executed, with a per-label iteration cap so a corrupt or hostile program cannot spin forever. Other FN opcodes (FN 14, FN 16, FN 18 SYSREAD, …) Recognized, not simulated. The statement is claimed and reported, so its target parameter stays empty instead of taking a fabricated value. Parsed: Q1 = 5000 FN0: Q1 = 5000 FN1: Q1 = -Q2 + -5 FN2: Q1 = +10 - +5 FN3: Q2 = +3 * +3 Tilted planes and RTCP Construct Support PLANE SPATIAL Fully composed, including SEQ+ / SEQ-, COORD ROT / TABLE ROT, and the STAY / MOVE / TURN positioning behaviours. PLANE RESET Cancels the tilt. PLANE VECTOR Structurally captured, not simulated. PLANE EULER / POINTS / RELATIV / AXIAL / PROJECTED Recognized, not simulated — consumed and reported as HeidenhainPlane--Unsupported, with the previous tilt retained. FUNCTION TCPM Supported. M128 / M129 Tool centre point control on / off — real RTCP, the Heidenhain sibling of ISO G43.4 and Siemens TRAORI. Parsed: PLANE SPATIAL SPA-60.3 SPB+0 SPC-19.88 STAY SEQ- TABLE ROT PLANE RESET STAY Cycles and calls CYCL DEF 2xx bodies are read with their Q parameters mirrored into the block. Cycles 200, 232, 251, 252 and 253 are mapped onto the shared drilling machinery and simulated; the mapping follows the cycle's own Q values, so a Q202 peck increment routes to peck drilling and a Q211 bottom dwell to dwell drilling. A CYCL DEF body that is not one of those is recognized, not simulated — reported as HeidenhainCycl--Unsupported. CYCL CALL and CYCL CALL POS fire the cycle once; M99 fires once and M89 arms modal firing. CALL LBL n inlines the label body up to LBL 0; CALL LBL n REP m repeats that section m times. CALL PGM resolves the called program by file name. Mirror image in both spellings — the klartext CYCL DEF 8 form and the DIN/ISO G28 form. DIN/ISO dialect The same preset, with nothing to switch. % tape header and N block numbers. T plus M06 tool change. Arc centres I / J / K are absolute pole coordinates, not incremental offsets from the start point. This is the Heidenhain reading, and the pole carries forward modally. The ISO label family — G98 L<n> definitions, and the head-anchored L<n>,<m> call whose comma count maps onto the repeat count. G247 Q339 stamps the same datum preset as CYCL DEF 247. G54 with axis words is read as a datum-shift declaration. G70 / G71 units. Warning G28 on Heidenhain is MIRROR IMAGE, not a reference-point return. The Fanuc reading of G28 is deliberately absent from the Heidenhain preset. Select the Heidenhain controller for a Heidenhain DIN/ISO file — read as Fanuc, every mirror statement becomes a home move. Not supported TOOL DEF, FK free-contour programming, SL cycles, PATTERN DEF, and TCH PROBE. These are left unconsumed, and the block that carried them reports Parsing--Unconsumed naming the words. Machine-specific M-codes that are not part of the Heidenhain vocabulary above are declared on the machine rather than built in — see the M-code note on General NC Code Support. See also General NC Code Support — Fanuc, Syntec, Mazak and Siemens SINUMERIK. NC Parsing Engine — the pipeline behind these constructs, the brand-by-brand support matrix in one table, and how a machine's own vocabulary is added without changing HiNC."
},
"manual/setup/controller-iso.html": {
"href": "manual/setup/controller-iso.html",
"title": "General NC Code Support | HiAPI-C# 2025",
"summary": "General NC Code Support The vocabulary HiNC interprets is decided by the controller brand selected for the project. This page covers the ISO-family presets — Fanuc, Syntec and Mazak — and Siemens SINUMERIK. Heidenhain is a different language and has its own page: Heidenhain Support. How to read this page Coverage is stated in three states. State What happens when the construct appears in your program Supported interpreted, and its effect is simulated. Recognized, not simulated consumed on purpose and reported under its own message id. The block keeps running and the construct's effect does not apply — but it can never be silently misread as something else. Not supported the words are left over, and the block reports Parsing--Unconsumed naming them. Tip The message list a run produces is the coverage report for your program. Every word the interpreter could not use is named on the block that carried it, so you never have to infer coverage from the simulated result. An unknown code does not stop the run — it is reported and skipped. ISO core Fanuc, Syntec and Mazak share the vocabulary below. Siemens spells most of it the same way and adds its own for the rest — see Siemens SINUMERIK. Motion Code Meaning G00 Rapid positioning. G01 Linear interpolation at the programmed feedrate. G02 / G03 Circular interpolation, clockwise / counter-clockwise. The centre may be given as I / J / K offsets or as a radius R. G04 Dwell. X / U are seconds, P is milliseconds, S is spindle revolutions. Both the G4 and G04 spellings are read. G28 Reference-point (home) return through an intermediate point. G53 One-shot machine-coordinate move — work offsets are bypassed for that block only. Plane, units and positioning mode Code Meaning G17 / G18 / G19 Plane selection — XY / ZX / YZ. Arcs and canned cycles follow the active plane. G21 Metric. This is the HiNC default. G20 Inch — not supported. The block reports Unit--InchNotSupported; post the program in metric. G90 / G91 Absolute / incremental positioning. G94 / G95 Feed per minute / feed per revolution. Work coordinates Code Meaning G54G59 Standard work coordinate systems. G59.1G59.9 Extended work coordinate systems. G54.1 P1P48 Fanuc extended work offset table. G52 Local coordinate offset, applied on top of the active work coordinate system. Tool compensation Code Meaning G43 / G44 / G49 Tool length compensation, positive / negative / cancel. H selects the offset row. G41 / G42 / G40 Cutter radius compensation, left / right / cancel. D selects the offset row. Rotation, tilted planes and five-axis Code Meaning G68 Coordinate rotation in the active plane, around a centre point by angle R. G68.2 Tilted work plane — Euler angles I / J / K with origin X / Y / Z. G69 Cancels G68 and G68.2. G53.1 Tool-axis direction — swings the rotary axes into line with the active G68.2 plane. G43.4 RTCP / tool centre point management. The Siemens equivalent is TRAORI, the Heidenhain equivalent M128. Canned cycles Code Cycle G73 High-speed peck drilling — Q increments with a partial retract. G74 Left-hand tapping. G76 Fine boring — oriented spindle stop, Q shift, rapid out. G81 Drilling. G82 Drilling with a dwell at the bottom. G83 Peck drilling — Q increments with a full retract to the R point. G84 Right-hand tapping. G85 Boring, feed out. G86 Boring, spindle stop then rapid out. G87 Back boring. G89 Boring with a dwell at the bottom. G80 Cancel. G98 / G99 Retract to the initial level / to the R level. A cycle is expanded into the individual strokes it performs — approach, peck, dwell, retract — each with its own feedrate, so material removal and cycle time come out of the real motion rather than an approximation. Modal repetition and G91 incremental cycle data are resolved before the strokes are built. Polar interpolation G12.1 turns polar coordinate interpolation on and G13.1 turns it off. Inside a polar section the X word is a diameter and the C word is a hypothetical Cartesian axis in millimetres, not rotary degrees. HiNC halves X, resolves G90 / G91, writes both the polar and the derived Cartesian positions along with the machine C angle, and simulates polar linear and polar arc motion — the arc as real spiral geometry that stays continuous across ±180°. G41 / G42 compensation is resolved on the hypothetical plane, and YA / ZB axis pairs work the same way. G codes that conflict with polar mode are checked before the mode is entered. Path smoothing G05.1 Q1 enables high-precision contour control (AICC / Nano Smoothing) and Q0 disables it. The optional R precision level is preserved. M codes Code Meaning M00 / M01 Program stop / optional stop. M02 / M30 Program end. M03 / M04 / M05 Spindle clockwise / counter-clockwise / stop. M06 Tool change. The axis travel the change requires is synthesized rather than teleported. M07 / M08 / M09 Mist coolant on / flood coolant on / coolant off. M98 / M99 Subprogram call (M98 P{program} L{repeat}) and return, including M99 P{sequence} early return. M198 Subprogram call from external storage — same shape as M98, different lookup folder. Note Composite and OEM M-codes are not built in — they are declared on the machine. An M13 that means “spindle CW plus flood coolant”, an M-code that triggers a tool change, or turret T-word semantics are stated once in the machine's own M-code table and expanded into the ISO effects the rest of the pipeline already understands. A code declared with no modelled effect is voiced once as DeclaredMCode--UnmodeledEffects instead of raising an unknown-code warning on every occurrence. Note If a program states a spindle speed greater than zero but never issues a direction, HiNC assumes clockwise and reports SpindleDirection--AssumedCw. Without that assumption the cutting-force model would silently produce zero mechanics for the whole file. Fanuc Everything in the ISO core, plus: Custom Macro B. # variable assignment and arithmetic, with each range routed to the store it belongs to — #1#33 local to the macro frame, #100#499 volatile and cleared on M02 / M30, #500#999 retained and saved with the project, #3000#3999 system control. Boolean and logical operators, IF [..] GOTO n, IF [..] THEN <statement>, and WHILE [..] DO m / END m with a bounded-loop watchdog. Position and tool-offset system variables read back into expressions. Macro and subprogram calls. G65 one-shot macro call, binding arguments AZ onto #1#26; G66 / G67 modal macro, firing at every positioning block until cancelled; M98 / M198 / M99. A callee's blocks are spliced into the program at the call site, so the rest of the run treats them exactly as if they had been written in the main file. Not supported. G10 programmable data setting, G50 spindle speed clamp, G31 skip. Syntec Syntec runs the ISO core plus the Fanuc-family macro and subprogram vocabulary and polar interpolation. Not supported. Custom G macros defined on the controller, Pr parameter mapping, and twin-head / twin-turret program syntax. Mazak Mazak reads EIA/ISO with the Fanuc-family macro and subprogram vocabulary and polar interpolation. Not supported. MAZATROL conversational sections, and switching between MAZATROL and EIA/ISO inside one program. Export the EIA/ISO program from the controller. Siemens SINUMERIK Real .mpf / .spf programs replay end to end — this is not an ISO subset with a Siemens label on it. Modal vocabulary. SUPA / G153 suppress all frames for one block; G70 / G71 units; the path-smoothing family (G60x / G64x, FNORM / SOFT / FFWON / COMP* / UPATH, CYCLE832); MSG() and STOPRE; CR= and TURN= arcs. Tail comments are quote-aware, so a ; inside MSG(\"A;B\") does not truncate the block. G74 / G75 fixed-point return is claimed as a whole block, so the dummy axis values it carries never mint a rapid to those coordinates and its F never reaches the modal feedrate. Tools. T=\"NAME\" string tool calls with D cutting-edge offsets, resolved through the $TC_DP tool table — lengths and radius plus additive wear. Variables and expressions. R parameters R0R999 are held as per-project data, DEF REAL / DEF INT declarations lower into assignments, and a full expression evaluator means Z=R63+150 and X=SIN(R10)*20 drive real motion. $P_UIFR[n,axis,TR] binds both ways to the frame table. Any other $ variable is recorded with an unsupported note rather than silently dropped. Frames and five-axis. TRANS / ATRANS / ROT / AROT (with RPL=) compose into the tilt chain in Sinumerik RPY order; TRAORI is a real RTCP mode, the sibling of ISO G43.4, with TRAFOOF handing the offset back; CYCLE800 is decoded from its MODE bits across all four swivel modes. Calls and control flow. L-prefixed and named subprogram calls, inlined with their P repetition count; M17 / RET; REPEAT over a labelled slice; MCALL CYCLE81 / 82 / 83 / 85 mapped onto the shared canned-cycle machinery; PROC headers and labels. GOTOF / GOTOB, IF / ELSE / ENDIF, and WHILE / FOR / REPEAT-UNTIL / LOOP. Jumps and loop iterations are capped rather than hanging the session — over the cap the construct warns and falls through. Per-word coordinate functions. AC() / IC() / DC() / ACP() / ACN(), including on I / J / K circle centres, so G90 C=IC(360/17) is one incremental index inside an absolute program. ACP() takes the forward window, ACN() the backward one, and DC() the shortest swing. Coded positions. CAC / CIC / CDC / CACP / CACN take a 1-based indexing position number instead of a coordinate, resolved against the machine's own indexing-position tables. OEM auxiliary M-codes. The preset declares M12 / M13 / M22 / M23 and M330 / M331 as note-only, so each occurrence voices DeclaredMCode--UnmodeledEffects rather than an unknown-code warning. A machine's own table overrides the declaration once the real effects are known. Recognized, not simulated. ROTS / AROTS, SCALE / ASCALE, and MIRROR / AMIRROR — each reported as SiemensFrame--Unsupported. Not supported. SETAL. See also Heidenhain Support — klartext and Heidenhain DIN/ISO. NC Parsing Engine — the pipeline behind these codes, the brand-by-brand support matrix in one table, and how a machine's own vocabulary is added without changing HiNC."
},
"manual/setup/coolant.html": {
"href": "manual/setup/coolant.html",
"title": "Coolant | HiAPI-C# 2025",
"summary": "Coolant Models the cutting-zone cooling for the milling temperature FEM. Lives on CoolantHeatCondition(API); consumed by MillingTemperatureUtil(API) every simulation step. Pick a cooling type You do not need to know any heat-transfer numbers to set up cooling. In the Player control tree, open Equipment Setup → Coolant, click Select → Browse Resource…, and pick the ready-made .CoolantHeatCondition file for the cooling your machine uses — exactly the way a workpiece material file is picked: Shipped file Pick it when StandardForcedAir The machine only blows air at the cutter — no liquid coolant. StandardWaterSolubleCoolant Water-based emulsion coolant, the common flood coolant. (A fresh project already carries these values.) StandardOilBasedCoolant Neat-oil cutting fluid: better lubrication, noticeably less heat removal than water-based. Loading a file fills the Name / Note and every property field shown below them. For a customized setup, tune the fields directly and keep the result as your own named file with Save As… — it can be loaded back later, or from another project. That is the whole end-user setup. Everything below explains what the values mean. NC program drives the mode The parser reads M07/M08/M09 into CoolantMode(API) and carries it on every MachineMotionStep(API). The FEM picks the effective convection coefficient at run time from that mode. M-code CoolantMode Coefficient source M08 Flood CoolantConvectionCoefficient_Wdm2K (baseline of the chosen type) M07 Mist baseline × MistFloodConvectionRatio M09 Off OffConvectionCoefficient_Wdm2K Before the first M07/M08/M09 the mode is UnDefined; the FEM treats it as Off. For StandardForcedAir (dry cutting) the machine has no liquid circuit, so even M08 only means “air blast on” — its flood baseline is an air-blast coefficient, not a liquid one. What each shipped file sets Each shipped cooling type is also a static preset on CoolantHeatCondition(API) (StandardForcedAir, StandardWaterSolubleCoolant, StandardOilBasedCoolant) — the same pattern as WorkpieceMaterial.Al6061T6; the resource files are generated from them: Preset / file Flood baseline W/(m²·K) Mist ratio Off W/(m²·K) Temperature °C StandardForcedAir 100 0.5 50 25 StandardWaterSolubleCoolant 1 000 0.5 50 25 StandardOilBasedCoolant 300 0.5 50 25 The baselines are engineering defaults from the literature ranges below; when you have dynamometer / thermocouple data for your own system, tune the fields and save your own file instead. API side: ApplyPreset copies a preset in place; MatchStandardPreset maps values back to a preset name. Properties These are the fields shown under Name / Note in the Coolant panel: Property Default Notes CoolantTemperature_C 25 Room temperature inside the enclosure. CoolantConvectionCoefficient_Wdm2K 1 000 Flood baseline. Water-based emulsion ≈ 1 0003 000, oil ≈ 100500, forced air ≈ 10500. MistFloodConvectionRatio 0.5 MQL is roughly half the heat removal of flood. See below. OffConvectionCoefficient_Wdm2K 50 Forced air inside a running enclosure. Natural air ≈ 525. Name / Note — From the loaded file / preset; Save As… renames the condition after the file. Legacy projects without a name still work. Why the mist ratio defaults to 0.5 MQL removes much less heat than flood because a thin oil aerosol has a tiny thermal mass; its main value is lubrication plus evaporative cooling, not convection. Industry handbooks place it at roughly half of flood, which gives the conservative default 0.5. Override it when you have dynamometer / thermocouple data for your own MQL system. Note Further reading: UNIST MQL Handbook (source of the “about half” rule), ANEBON mist-vs-flood AISI 1045 tests, Mukesh et al. IEJ May 2023 review on sustainable machining. Use these only to dig deeper — the 0.5 default is already calibrated from them. Coolant files (WorkpieceMaterial pattern) MachiningEquipment.CoolantHeatConditionFile tracks an optional .CoolantHeatCondition side-file, exactly like Workpiece.WorkpieceMaterialFile tracks a material file: No file (default): the condition serializes inline in the .hincproj, byte-compatible with pre-pattern readers. File tracked: the project save externalizes the condition as <CoolantHeatCondition><XmlSource>relPath</XmlSource></CoolantHeatCondition> and (re)writes the side-file. Loading a file installs it in place of the current condition and records the reference (XFactory.GenByFile<CoolantHeatCondition>); a file loaded from the resource folder is copied into the project on the next save (self-contained project root). XML <CoolantHeatCondition> <Name>StandardOilBasedCoolant</Name> <Note>Oil-based cutting fluid (neat oil).</Note> <CoolantTemperature_C>25</CoolantTemperature_C> <CoolantConvectionCoefficient_Wdm2K>300</CoolantConvectionCoefficient_Wdm2K> <MistFloodConvectionRatio>0.5</MistFloodConvectionRatio> <OffConvectionCoefficient_Wdm2K>50</OffConvectionCoefficient_Wdm2K> </CoolantHeatCondition> Name/Note are optional (pre-preset files omit them); omit the last two elements to accept the defaults. The same element saved standalone is the .CoolantHeatCondition file format; inside a .hincproj it may instead appear as the <XmlSource> reference shown above."
},
"manual/setup/cutter.html": {
"href": "manual/setup/cutter.html",
"title": "Cutter Configuration Notes | HiAPI-C# 2025",
"summary": "Cutter Configuration Notes Cutter Body Settings Cutter Body Types Cutter body types include: Milling Any tool that machines by rotation is classified as milling in HiNC, including drilling and boring. Freeform Subtraction Cutting tools, EDM (electrical discharge machining) dies. Milling Tool Description Parameters Material: Shank material, cutter body material, (multi-layer) coating material and thickness. Cutting edge rotation envelope: Can use simplified parameters (APT) or a custom ZR table. Simplified (yield-equivalent) edge center rotation envelope: Solid space ratio of the cutting edge rotation envelope. Custom ZR table. Clamping end (non-cutting zone) shape: Custom ZR table. Per-tooth geometry (including side edges and bottom edges): Simplified parameters: Helix angle position, rake angle, relief angle. Custom per-Z value: Helix angle position, rake angle, relief angle, radius length. Hone radius, tool weight, insert weight, and (thermal-equivalent) thickness. For information on measuring rake angle and relief angle, refer to Radial Angle Measurement. Upper Beam (Clamping End / Shank) Geometry The upper beam is the cutter's shank / body above the flute — the non-cutting, clamping zone. It can be modeled with several geometry types; the two common choices are: Cylindroid — an explicit ZR table. You author every (Z, r) pair, so the shank radius (and any stepped / necked profile) is whatever you type in. This faithfully reproduces a known shank, but every value is data you must supply. Extended Cylinder — a cylinder whose start (bottom) profile is driven by the flute and whose only parameter is the total length. Its radius follows the cutter (flute-top) radius automatically, so it needs no shank measurements — only a length long enough to reach the holder. ⚠ FullLength is the beam's FULL length measured from Z=0 (the cutter tip), so it includes the flute span — it is not the remaining segment from the flute top to the exposed end. It must therefore be larger than the flute height: e.g. flute height 20 mm and 10 mm of shank above it → FullLength = 30, not 10. A value at or below the flute height inverts the beam solid; thermal physics then cannot build its shank shell layers and reports a Cutter-UpperBeam--BelowFluteHeight configuration error at tool change (the web editor rejects such a value outright). Convention — prefer the Extended Cylinder when the shank is not given. Most tool sheets (especially at quoting stage) list only the cutting diameter, corner radius, and stick-out; they do not give a shank diameter or a stepped/necked profile. In that case use the Extended Cylinder: it extends the flute by a length without inventing a radius the data does not support. A hand-authored Cylindroid here would bake a guessed shank radius into the model — and an over-fat guess produces false clearance / collision results, while an over-thin one understates the body. Reserve the Cylindroid (explicit ZR) for tools whose shank or neck profile is actually known or measured — e.g. stepped, necked, or back-tapered shanks where a flute-radius extension would be wrong. Tip: because the Extended Cylinder's radius tracks the flute, set its length comfortably past the exposed cutter height so the beam reaches into the holder with no gap; the overlap is harmless for clearance checks. Relief Angle Setting The relief angle setting in HiNC refers to the primary relief angle. It is used to calculate flank wear width (Flank Wear, VB). Cutter Body Weight Cutter body weight is used for thermal transfer calculations. Solid tools: Enter the weight of the solid tool as the cutter body weight. Indexable tools: Enter the total insert weight as the cutter body weight, excluding the weight of the tool body. Hone Radius The hone radius represents the sharpness of the tool and is the radius at the cutting edge tip. Typical values range from 20 to 50 um. Tools used for machining easy-to-cut materials typically have a smaller hone radius (e.g., Al6061-T6, which can be assumed as 20 um); tools used for difficult-to-cut materials typically have a larger hone radius (e.g., stainless steel, which can be assumed as 50 um). Edge Profile and Edge Grind — Bottom Edge Grind The bottom edge grind needs to be configured when the bottom edge is horizontal or concave, and it affects segments with downward cutting. Drill bits do not require bottom edge grind configuration — only the side edge grind needs to be set. This is because drill bit bottoms are not horizontal or concave. If a custom drill bit has a horizontal or concave bottom, then the bottom edge grind must be configured. Typically, only bull-nose cutters require bottom edge grind configuration. Note that flat end mills usually do not perform downward cutting and should not, but if the process does so, the bottom edge grind must be configured."
},
"manual/setup/index.html": {
"href": "manual/setup/index.html",
"title": "Setup | HiAPI-C# 2025",
"summary": "Setup Pre-simulation configuration: the physical entities and components you configure before running a simulation. Once set, these form the fixed environment of the simulation. Tip New to building a project? Start with the Project Data Checklist — the single list of data to collect (and hand to the machine owner) before configuring any of the components below. Equipment Machine Tool — Build or load a virtual machine tool Anchor — Coordinate anchors for attaching components Controllers Heidenhain Support — klartext and Heidenhain DIN/ISO code support ISO / General NC — Fanuc, Syntec, Mazak and Siemens SINUMERIK code support Cutting Tools Cutter — Milling cutter geometry and parameters APT Tool — APT-style cutter definition Insert Cutter — Insert-style cutter Smart Tool Holder — Smart holder with sensors Environment Coolant — Coolant settings for thermal simulation"
},
"manual/setup/insert-cutter.html": {
"href": "manual/setup/insert-cutter.html",
"title": "Insert Cutter | HiAPI-C# 2025",
"summary": "Insert Cutter Insert cutters can be modeled in the virtual environment. See the examples below. Z R S.Ang. R.Ang. 0 8 1 3 0.2 8 0.5 3 0.4 8 0 3 0.5 8 0 3 3 8 3 3 6 8 4 3 8 8 4 3"
},
"manual/setup/machine-tool.html": {
"href": "manual/setup/machine-tool.html",
"title": "Building Virtual Machine Tools | HiAPI-C# 2025",
"summary": "Building Virtual Machine Tools Complete the following steps to build and use virtual machine tools: Use the mechanism builder to create the topological structure. Specific Branch names in the topology structure need to be set with corresponding motion axis keywords. Linear motion axis keywords corresponding to motion modes are X, Y, Z. Rotary motion axis keywords corresponding to motion modes are A, B, C. Specific Anchor names in the topology structure need to be set with corresponding keywords. Keyword O is the ground anchor. Keyword base is the base. Keyword t is the tool-end anchor. Used for connecting tools. Keyword w is the worktable-end anchor. Used for connecting fixtures or workpieces. Note Keywords are case-sensitive. Set geometric shapes for anchors. This is optional. Save the topology structure as a machine tool file. Best Practices The most convenient approach is to assemble the machine in CAD software, position the moving elements at the machine origin1, then: Export individual main component STL files from the same coordinate system. Then set these STLs into anchors. Measure the coordinates of tool-end anchor, worktable-end anchor, and any point on the rotary motion axis pivot relative to the output coordinate system in CAD software, then input these coordinates into the topology structure. Due to relative motion, the motion axis direction settings from base to worktable-end are generally negative. Too many STL meshes will reduce software opening speed and collision detection speed. Example: Small Five-axis Vertical Milling Machine Example: B1.zip Target virtual milling machine: Topology structure: Building Horizontal Machine Tools Create topology structure according to machine tool motion axis coordinates. Lay down the machine: set rotation in the connection between ground anchor and machine base anchor, axis direction (0,1,1)(must be normalized), angle 180 degrees. Machine Origin is the position where all machine coordinates (MC, Machine Coordinate) are 0, generally the home position.↩"
},
"manual/setup/program-zero-alignment.html": {
"href": "manual/setup/program-zero-alignment.html",
"title": "Program Zero Alignment | HiAPI-C# 2025",
"summary": "Program Zero Alignment Program zero (ProgramZeroAnchor) is the point an NC program treats as X0 Y0 Z0. It is related to the machine's work-coordinate offset (G54/G55/...): when the machine coordinate equals the work offset, the spindle sits at program zero. Setting up a simulation requires relating program zero to the work offset. Which way you align depends on the scenario. Two Alignment Directions NC-file scenario (planning) — align G54 to program zero When you drive the simulation from an NC file for planning, you usually keep the workpiece and fixture wherever they are convenient and set the work offset to match. The G54 value may not be obtained yet, and the layout does not need to reflect the real machine. Keep the workpiece/fixture placement as-is. Read the machine coordinate at program zero with GetMachinePositionAtProgramZero and store it into the ISO coordinate table (IsoCoordinateTable.SetCoordinateOffset(\"G54\", ...)). CSV / real-time / online-MC scenario (high-fidelity) — align program zero to G54 When you drive the simulation from a controller CSV log (see PlayCsvFile) or a real-time / online machine coordinate feed, the data is in absolute machine coordinates. To reproduce the real cut faithfully (高還原度), the workpiece + fixture must sit at their real positions so that collisions, overcut, and engagement match reality. // Places workpiece + fixture so ProgramZeroAnchor coincides with the // world position the spindle reaches when the machine coordinate equals G54. AlignWorkpieceProgramZeroToIso(\"G54\"); The same action is available in the web UI on the Controller page's ISO Coordinate Table (Align P0 per row, with a one-shot Revert Align). AlignWorkpieceProgramZeroToIso mutates only Fixture.GeomToTableTransformer. The three buckle transformers must already be placed per the rule below. Buckle General Rule The workpiece/fixture assembly is built from buckle anchors (see Component Assembly and Anchors). A typical block-on-plate setup places them at the geometry bounding-box centers: Transformer Position Workpiece.WorkpieceGeomToFixtureBuckleTransformer bottom center of the workpiece geom Workpiece.WorkpieceGeomToProgramZeroTransformer top center of the workpiece geom (or any chosen top tip) Fixture.GeomToWorkpieceTransformer top center of the fixture geom AlignWorkpieceProgramZeroToIso then derives the final Fixture.GeomToTableTransformer from the live assembly topology (anchor-to-anchor vectors), so it works for any chain — it does not assume the buckles are at bounding-box centers. Verifying the Setup A wrong setup (incorrect work offset or workpiece position) shows up as overcut, collision, or nocut. These are observable early — typically within the first ~100 NC lines or ~1 minute — so verify with a quick, cheap pass before a full run: Set a coarse MachiningResolution ≈ 1/8 of the cutter diameter for fast feedback. Run and watch the opening Z plunge (下刀). This is where overcut/collision most often appears when the work offset or workpiece Z is wrong. Tip If the tool plunges far deeper than the programmed depth and the holder crashes into the workpiece (a visible gouge on the rendered stock), the work offset Z is almost certainly wrong — the workpiece is modeled higher (or lower) than its real position. Note Rare false positive: a roughing cut with a spiral entrance on tough material can legitimately exceed the modeled cutting conditions yet still be a correct setup. This is uncommon — in most cases early overcut/collision/nocut means the setup is wrong. High-Fidelity Caution: Work Offset Must Reflect the Real Machine In the CSV / online-MC scenario, the work offset (G54/G55/...) you align to must be the actual offset used on the machine, not a planned/nominal value. Operators frequently re-zero between setups (manual tool changes, re-cut stock), so a planned G54 can differ from the real one — by an amount you cannot assume in advance. When driving from a controller log, derive the offset from the log's own machine coordinates rather than trusting a planned value: invariants that survive operator edits — a known cutting depth, a feature span — mapped onto the recorded machine coordinates, recover the real offset on those axes. (Positions the operator may have shifted are not recoverable this way.) A work-offset Z that is wrong places the workpiece away from its true height, so the tool over- or under-plunges; if too high, the holder crashes the stock at the opening plunge — exactly the failure the rough-resolution check above catches. See Also Component Assembly and Anchors — buckle anchors (WorkpieceBuckle, TableBuckle, SpindleBuckle) Workflow: Milling Force Parameter Training — milling force training, which depends on a correct setup Workflow: Basic Machining Simulation — driving simulation from NC or CSV"
},
"manual/setup/project-data-checklist.html": {
"href": "manual/setup/project-data-checklist.html",
"title": "Project Data Checklist | HiAPI-C# 2025",
"summary": "Project Data Checklist A HiNC project (.hincproj) is a digital twin of a real machining setup: machine, spindle, workpiece, fixture, tooling, controller, and the NC program. To build one, you must first collect the data that describes the physical setup. This page is the single, canonical list of that data. Hand it to the machine owner / customer as a data-collection checklist before a project is built. It mirrors the Parameters for Analysis grouping shown on the HiNC product site. You do not need a strict form — write the items here up as a short free-text note and hand it over with the CAD and NC files; that is what a HiNC engineer needs to build the .hincproj (see the worked examples below). This page is the list to collect before a project is built. For what the engineer then does with it — build order, mission structure, and how completeness is verified — see Project Construction. Important Identifiers beat half-remembered numbers. Customers rarely have every detail. Where a value is missing, give an identifier — cutter brand + product ID, spindle/machine make + model — and the HiNC engineer sources the rest (cutter geometry from the catalog, the powertorque chart from the spindle datasheet). Capture what you can; the engineer fills the gaps. graph TD subgraph Equipment[\"Equipment (one-time, fixed)\"] M[\"Machine Configuration\"] S[\"Spindle Capability\"] E[\"Environment\"] end subgraph Job[\"Job (per part)\"] W[\"Workpiece\"] F[\"Fixture\"] T[\"Tooling\"] C[\"Controller + NC Program\"] end Equipment --> P[\".hincproj\"] Job --> P At a Glance Each item is marked: Required — a project cannot be built without it. Optional — improves realism but the project still runs without it. Conditional — only needed for a specific check beyond the core cutting-force simulation (e.g. collision detection, geometry validation, spindle-overload analysis), noted in Used for. Category Item Required? Used for Detail Machine Kinematic model & axis configuration (3-/5-axis, motion methods) Required Toolpath, collision Machine Tool Machine Simplified component CAD/STL (table, column, spindle housing…) Conditional Collision detection Machine Tool Machine Travel/stroke limits Conditional Stroke-overrun check — Machine Rapid feedrate, max spindle & rotary speeds Optional Feedrate precision → tighter optimization & physics/timing estimates — Spindle Brand/model + product description (so the chart can be sourced) Conditional Power/torque & overload analysis — a default spindle capability is applied if omitted (fine for light cuts in small/soft stock) — Spindle Speedpowertorque diagram (kW & Nm vs RPM, duty ratings) Conditional (sourced from the brand/model above) Power/torque & overload analysis Spindle Capability Environment Coolant type (other thermal values keep their defaults) Optional Thermal / wear analysis — a default is applied if omitted Coolant Workpiece Material (named or property set) Required Force, thermal — Workpiece Initial (stock) CAD + Finished CAD (STL or parametric) Required (stock) Cut simulation; finished = geometry check Geometry Validation Workpiece Program-zero position in plain words (e.g. “G54 = top centre”) Required Correct engagement Program Zero Alignment Fixture Fixture CAD/STL Optional Collision detection — Tooling Per tool: geometry + cutter & coating material (ideally via cutter brand + product ID) Required Force, deflection, geometry Cutter, APT, Insert Cutter Tooling Per tool: holder brand+ID (or rough height/radius) Conditional Collision check; how deep the tool reaches — Controller CNC brand/type (Fanuc, Heidenhain, Siemens…) Required NC interpretation Controllers Controller NC / CL program(s) Required The process to simulate ISO / General NC Controller Work offsets (G54…) and tool offset table Optional Estimated/relative values work for evaluation; HiNC can set an assumed offset Program Zero Alignment 1. Machine Configuration The machine is one-time, fixed data: collected once, reused across every job on that machine. Kinematic model & axis configuration — number of axes and how each axis moves (the motion chain from ground → table and ground → spindle). Required. On a multi-axis machine the rotary configuration matters most: name each rotary axis and its pivot location (e.g. table-C / spindle-B). The pivot defines the entire kinematic chain, rotary swings are the most collision-prone motions, and the rotary bodies' geometry makes that motion intelligible — so describe it carefully. Simplified component CAD/STL — table, column, spindle housing, and other bodies, exported from a single coordinate system. Only needed for collision detection — though on a multi-axis machine the rotary bodies (table, cradle, tilt head) are especially worth including, as their geometry also makes the machine's motion intelligible. Keep the mesh simplified; too many triangles slow loading and collision checks. Travel/stroke limits — from the machine spec sheet. Conditional. Only matters when a stroke-overrun check is the goal — and the operator has usually already confirmed the program fits the machine, so it is not needed unless that is the specific thing you want to test. Rapid feedrate, max spindle & rotary speeds — from the machine spec sheet. Optional. Real values let the simulation use a more accurate achievable feedrate, which tightens the optimization and the physics / timing estimates. Helpful but not essential — defaults still produce a valid run. See Machine Tool for how the kinematic chain and anchors are built, and Anchor for coordinate anchors. 2. Spindle Capability Spindle brand / model + product description — name the spindle (or the machine) make and model, with a short description or catalog link, so the chart can be sourced and verified by whoever builds the project. Conditional — needed only when spindle power/torque/overload could matter. Omit it and a default spindle capability is applied; light cuts in small or soft stock rarely stress the spindle, so the default is fine. Speedpowertorque diagram — the spindle's power (kW) and torque (Nm) against RPM, including duty ratings (e.g. S1 continuous / S6 / 15-minute). From the machine or spindle spec sheet. Required for power, torque, and spindle-overload analysis. This is the kind of chart needed — power and torque vs spindle speed, with the continuous (S1) and short-duration (S3) ratings: Tip Easier than transcribing: photograph the spindle motor nameplate. The same ratings are printed on the spindle motor's spec nameplate, usually attached to the machine (on the spindle or motor body). A clear photo of it is enough — the model, type, and the S1/S2/S3 rating table (kW and speeds) recover the powertorque behaviour. Example (a FANUC αiI 6/12000 plate, unit serial removed): See Spindle Capability. 3. Environment Coolant type — which coolant is used. Optional — if omitted, a default coolant setting is applied. The remaining coolant/thermal values (temperature, convection, background temperature) keep their defaults too; they only affect thermal and wear results. See Coolant. 4. Workpiece Material — a named material from the database, or its mechanical/thermal properties. Required. Raw (stock) geometry — STL or simple parametric dimensions (e.g. block 120 x 80 x 40 or round billet Ø65 x 50). Used for the starting shape and size. Required. For a casting or forging, give the as-cast shape as an STL and note its casting tolerance (the stock scatters part-to-part). Finished/design CAD is optional, used to compare the simulated shape against the target (geometry validation). Program-zero position, in plain words — where each work offset (G54, G55…) sits on the part, e.g. “G54 = top centre of the stock; Z0 at the top face, X0/Y0 on the axis”. Required. Note Describe the program zero by position on the part, not the machine-coordinate offset numbers — for evaluation/planning a relative or assumed alignment is fine and HiNC aligns it for you. See Program Zero Alignment. 5. Fixture Fixture CAD/STL — optional, only needed when the fixture participates in collision detection. 6. Tooling For each tool used by the program, collect: Cutter brand + product ID — the maker and catalog number (with datasheet/link if handy). The single most useful field, when the cutter has one: from it the engineer looks up the geometry, flute count, helix, and grade, so give it even if the geometry below is incomplete. Off-brand cutters with no brand, manual, or traceable vendor are common (it depends on the shop) — then skip this and provide the geometry below directly, measured if needed. Cutter geometry — Required (or derivable from the brand + product ID above): type (flat-end / ball / corner-radius / insert), diameter D, corner radius R flute (cuttable) length — the cutting portion overall tool length / stick-out — how far the cutter reaches from the holder to the flute tip; this sets where the holder grips and affects deflection and reach. A plain cylindrical cutter can use a small default exposed length (~5 mm); a cutter that is not a simple cylinder — a stepped or necked shank, or a body wider than the cutting diameter — needs a longer stick-out so the wider non-cutting part clears the workpiece. flute count, helix angle, rake angle (relief angle if known) Cutter & coating material — body material and coating layers. Required. Holder — give the brand + product ID, or at least a rough height + radius (e.g. Ø40 x 60 mm). Full CAD is optional and only needed for collision detection; the rough size is enough to see whether the holder would hit the workpiece and how deep the tool can reach. Where the holder grips the tool comes from the cutter's stick-out above, so the tool can be placed even without holder geometry. Tip The cutter brand + product ID (or a datasheet image) is usually faster and more reliable than transcribing every dimension — the engineer reads the geometry off the catalog. See Cutter, APT Tool, Insert Cutter, and Smart Tool Holder. 7. Controller CNC brand/type — determines how the NC code is interpreted. Required. NC / CL program(s) — the actual programs that run on the machine. Required. Work offsets (G54…) and tool offset table — not required for evaluation/planning. Relative or estimated values work; HiNC can set a workable assumed tool offset for you. Provide the real values only when a high-fidelity match is needed. Stroke limits and machine-specific configuration parameters — optional. See ISO / General NC and Heidenhain Support. Delivery Formats Data Preferred format Machine / fixture geometry STL, all exported from the same coordinate system (see Machine Tool best practices) Workpiece geometry STL (stock + finished) or parametric dimensions Cutter Brand + product ID (best), or geometry parameters / datasheet image Holder Brand + product ID, or rough height + radius Spindle capability Brand + model, plus spec-sheet table or chart image (power & torque vs RPM) NC program The original .nc / .cl files Examples The examples below show how to write it. Provide the item values together with the CAD and NC files; mark estimates, and give the spindle model and cutter brand + product ID where you can, so the engineer can fill any gap. These files include spindle chart photos, cutter catalog pages (e.g. cmtec-CEXCRSH3120005.pdf), CAD (STL/STEP), and NC programs; note the filename next to the matching item. Example 1 — Pocketed plate, 3-axis, steel # Cover plate — TMV-720A 3-axis Pocketed S50C cover plate roughed and finished on a 3-axis vertical machining center (VMC). Goal: verify spindle load on the deep pocket and trim cycle time. ## Machine Model: TongTai TMV-720A, 3-axis VMC Tool mount: (0, 0, 0) mm (where the tool is equipped; taken as the reference point) Table mount: (-450, -340, -630) mm (fixture & workpiece, relative to the tool mount) Controller: Fanuc Strokes: X720 Y420 Z460 mm ; rapid 20000 mm/min ; max spindle 8000 rpm ## Spindle Brand/model: TongTai TMV-720A standard 8000 rpm spindle (BT40) Source: TMV-720A catalog powertorque chart — attachment fanuc-at12-12000i.png (15-min rating below; with the image you need not transcribe these) Power (kW vs rpm): 0@0, 7.5@1500, 7.5@4500, 4@8000 Torque (Nm vs rpm): 50@1500, 37@2000, 30@2600, 19@4000, 12@6000, 8@8000 ## Workpiece Raw stock: block 140 x 90 x 50 mm Design: cover-plate.stl Material: S50C ## Program zero G54 = top centre of the block — Z0 at the top face, X0/Y0 at the block centre. ## Fixture Machine vise — vise.stl, clamps below the part top (collision only). ## Coolant Water-soluble emulsion (flood) ## Tools T1 face mill brand NTM, product TXE1000 (D50, exact P/N missing) D50 6 inserts flute 6 tool length 60 holder Ø60 x 50 mm stick-out 80 T2 flat end brand cmtec, product CEXCRSH3120005 (catalog: cmtec-CEXCRSH3120005.pdf) D12 R0 4 flutes helix 30° rake 10° flute 30 tool length 90 holder Ø40 x 63 stick-out 95 T3 flat end brand cmtec (no exact P/N) D6 R0 4 flutes helix 30° flute 20 tool length 70 holder Ø25 x 60 stick-out 75 ## NC Files (folder `NC/`) O0010.NC face + rough the pocket with T1/T2 — watch spindle load near the deep pocket O0020.NC profile + floor finish with T3 Example 2 — Relief part, 5-axis, aluminum # Airplane relief — 5-axis VMC Airplane + logo lettering milled from a round Al6061T6 billet on a 5-axis vertical machining center (VMC). Goal: check the 5-axis toolpath for collisions/gouges, then optimize feed. ## Machine Model: 5-axis VMC (example machine) (machine file: MachineTool/Vmc5x/Vmc5x.mt) Config: table-C / spindle-B (C rotary on the table, B tilt on the spindle head) Pivots: C at (0, 0, 0), B at (-70, -180, 220) mm (relative to the C pivot) Tool mount: (-70, 70, 175) mm (where the tool is equipped) Controller: Fanuc Strokes: unbounded for this study ; rapid 20000 mm/min ; max spindle 8000 rpm ## Spindle Brand/model: built-in 8000 rpm spindle, ~5.5 kW (BT30 class) Source: machine builder spindle datasheet (powertorque chart; attachment b1-spindle-chart.png) Power (kW vs rpm): 0@0, 5.5@1500, 5.5@4500, 3@8000 Torque (Nm vs rpm): 50@1500, 30@2000, 20@3000, 15@4000, 8@6000, 5@8000 ## Workpiece Raw stock: round billet Ø65 x 50 mm Design: airplane.stl Material: Al6061T6 ## Program zero G54 = top centre of the billet — Z0 at the top face, X0/Y0 on the axis. (G55+ unused.) ## Fixture Round fixture Ø100 x 10 mm under the billet (collision only). ## Coolant Air blast (dry) ## Tools <!-- brand given but NO product ID, so the engineer recovers the exact geometry and grade by measurement — slower and more error-prone. A brand + product ID is very helpful when the tool has one; off-brand tools without one must be measured. --> (all: brand cmtec, aluminum grade — product ID not given; carbide, 3 flutes, helix 37°, rake 15°, relief 5° [helix/rake estimated]; holder Ø25 x 60 mm, 8 mm flute-to-nose clearance) T1 flat end D6 R0 flute 20 tool length 75 T2 ball end D6 flute 20 tool length 75 T3 ball end D3 flute 20 tool length 75 T4 ball end D2 flute 8 tool length 75 ## NC Files (34 programs in folder `NC/`; actual filenames below) 01-ED6L20.NC, 02-ED6L20.NC … 10-ED6L28.NC roughing with T1 (flat D6) 11-R3L25.NC … 22-R3L25.NC semi-finish with T2 (ball D6) 23-R2L25.NC … 30-R2L25.NC finishing airplane-R1L12.NC, logo1-R1L12.NC, logo2-R1L12.NC, logo3-R1L12.NC detail airplane + logo with T4 (ball D2) (filename = seq-toolcode+cutlength; ED6 = flat end mill D6, R3/R2/R1 = ball, digit = nose radius) Note Example 2 mirrors a real .hincproj (machine name anonymized); Example 1 is representative with estimated values. The spindle model and the cutter brand + product ID are the anchors from which the engineer recovers the geometry and the powertorque chart. See Also Workflow: Basic Machining Simulation — set up and run a simulation once the data is collected Machine Tool — build the kinematic model from CAD Program Zero Alignment — how HiNC aligns the program zero Spindle Capability — the speedpowertorque model"
},
"manual/setup/smart-tool-holder.html": {
"href": "manual/setup/smart-tool-holder.html",
"title": "Smart Tool Holder | HiAPI-C# 2025",
"summary": "Smart Tool Holder A smart tool holder is a machine tool accessory equipped with sensors that can monitor force and torque data in real time during machining. To ensure simulation accuracy, the following parameters must be configured correctly: Sensor Configuration Moment Arm Height The sensor height setting has a significant impact on simulation accuracy This height defines the moment arm distance for the torque measured by the sensor If not set correctly, a constant scaling error will appear in the torque calculation Coordinate System Alignment Basic Principle The cutting edge should be aligned with the sensor's X-axis Ensure the sensor XY coordinate system is consistent with the simulation XY coordinate system The impact of coordinate system misalignment is relatively smaller compared to the moment arm setting Installation Angle Adjustment If perfect alignment is not possible, measure the offset angle Enter the measured angle in the “Installation Angle” field The maximum possible deviation is 45 degrees Factors Affecting Accuracy Coordinate Transformation Effects An installation angle deviation can cause up to a √2 factor difference in values This difference is inherently a result of coordinate transformation, not a measurement accuracy issue Even with the same smart tool holder, different installation angles will produce different measurement data Best Practices Prioritize accurate moment arm height configuration Align the cutting edge with the sensor X-axis as closely as possible If perfect alignment is not achievable, always measure and set the correct installation angle Only with these parameters correctly configured will the simulated micro-waveforms match the actual sensor measurements."
},
"product/about.html": {
"href": "product/about.html",
"title": "About Us | HiAPI-C# 2025",
"summary": "About Us Super High Technology Co., Ltd. was founded in March 2016 by Dr. Ko-Jen Mei, who holds a Ph.D. in Mechanical Engineering from National Cheng Kung University. Virtual machine tool technology will enhance machining capabilities and efficiency while reducing machining risks and operator barriers. We are dedicated to virtual machine tool and CNC machining technology. Contact Information Phone: (+886) 6-3127517 Email: service@superhightech.com.tw Address: 9F.-11, No. 3, Ln. 60, Zhongyi St., Yongkang Dist., Tainan City 710012, Taiwan (R.O.C.) Website: superhightech.com.tw"
},
"product/index.html": {
"href": "product/index.html",
"title": "Product | HiAPI-C# 2025",
"summary": "Product Product information, licensing, activation, and management. Information About — About Tech Coordinate and contact information License Terms — HiNC user terms Getting Started Windows Activation — Activate HiNC on Windows Multi-Station Setup — Run multiple HiNC stations on one machine Delegated Authorization — Delegate authorization via a sentinel host Tutorial Videos — Video tutorials System File Explorer — Project file management"
},
"product/license/index.html": {
"href": "product/license/index.html",
"title": "HiNC User Terms | HiAPI-C# 2025",
"summary": "HiNC User Terms Party A: Super High Technology Co., Ltd. Party B: User WHEREAS Party A authorizes Party B to use one set of HiNC software module, this document is hereby established, and Party B has read and agreed to the following user terms: Article 1. Subject Matter HiNC software module (hereinafter referred to as “the Module”), content and authorization period as specified in the specification sheet provided by Party A. Article 2. Intellectual Property Protection and Confidentiality Obligations The structure, organization, and code of the Module are valuable trade secrets and confidential information owned by Party A. The intellectual property rights of the Module and all related materials provided by Party A belong to Party A. The Module is for Party B's internal use only. Party B agrees to use the Module in accordance with the user terms. Party B shall not rent, lease, authorize, transfer, or sell the software, provide the Module to third parties, nor modify, translate, reverse engineer, decompile, or decode the software program. Derivative software developed by Party B, its derivative intellectual property and income belong to Party B. Article 3. Software Assurance Limitations The Module is provided “as is”, and any other express or implied representations, descriptions, or warranties are not included in the assurance. Party A and its distributors shall not be liable for any special, direct, indirect, or other damages caused by other events. All results and performance arising from the use of the Module shall be borne entirely by Party B. Article 4. Information Collection Party B agrees to provide the Module's usage count, usage time, and partial hardware information to Party A. When Party B's authorized computer is connected to the Internet, Party B agrees that the information listed in Item 1 of this Article will be transmitted by the Module to Party A via network transmission. All recorded and transmitted information is limited to use for Party A's authorization verification and software protection purposes and will not be disclosed to third parties or used by third parties. Article 5. Agreement to Terms When Party B installs Party A's software, the system will display the terms and conditions of the “User Terms”. Party B must accept the terms and conditions of the “User Terms” to use the software product. If you do not agree to the terms and conditions of the “User Terms”, please do not install, copy, use, access, or execute the software product, and immediately submit a written return notice to your point of purchase. By exercising the rights granted in the “User Terms”, Party B agrees to comply with its terms and conditions. Article 6. Breach of Contract If the user violates all or part of these User Terms, Party A has the right to make its own judgment and take measures it deems appropriate, including terminating the contract between Party A and the user, immediately suspending the user's use of the Module or other services of Party A, and does not exclude taking legal action against such users. Article 7. Partial Invalidity When part of these User Terms is deemed invalid by law, other terms shall continue to be valid. (Below blank) Party A: Super High Technology Co., Ltd. Representative: Ko-Jen Mei, Responsible Person Unified Business No.: 24921337 Address: 9F.-11, No. 3, Ln. 60, Zhongyi St., Yongkang Dist., Tainan City 710012, Taiwan (R.O.C.) Date: January 27, 2020"
},
"product/startup/delegate-auth.html": {
"href": "product/startup/delegate-auth.html",
"title": "Delegated Authorization for Multi-Host Deployment | HiAPI-C# 2025",
"summary": "Delegated Authorization for Multi-Host Deployment If multi-host licensing is enabled, download and extract DelegateAuthorization.zip, then follow the two PDF guides inside to configure the license server and the authorized clients respectively. The license server may be blocked by the Windows firewall. You can allow it through as shown below: When using a red license dongle, the win_install.bat script included in the archive must also be run for standalone operation to install the required license runtime."
},
"product/startup/multi-station.html": {
"href": "product/startup/multi-station.html",
"title": "Single-Machine Multi-Station | HiAPI-C# 2025",
"summary": "Single-Machine Multi-Station If multi-process licensing is enabled, you can use different appsettings.<profile-name>.json files to serve multiple processes. Each process can run a different project simultaneously. The following fields must be unique across all appsettings.<profile-name>.json files on the same host: Endpoints DatabasePort CacheDbId Run the following command to launch a specific profile: dotnet run HiNcServer.dll --environment <profile-name> Configuration Examples appsettings.Sub-1.json appsettings.Sub-2.json"
},
"product/startup/tutorial.html": {
"href": "product/startup/tutorial.html",
"title": "Tutorial Videos | HiAPI-C# 2025",
"summary": "Tutorial Videos Building Machine Structures and Tools https://superhightech.com.tw/download2/機構建構器建立虛擬機床.mp4 https://superhightech.com.tw/download2/建立臥式機床.mp4 https://superhightech.com.tw/download2/刀具建立-銑削與刀把.mp4 Project Setup and Execution https://superhightech.com.tw/download2/範例專案設置說明.mp4 https://superhightech.com.tw/download2/範例專案仿真說明.mp4 https://superhightech.com.tw/download2/建立專案.mp4 Sample Project Download https://superhightech-gitea.webredirect.org/HiNC-Deploy/DemoStandardPath/archive/master.zip"
},
"product/startup/windows.html": {
"href": "product/startup/windows.html",
"title": "Getting Started with HiNC | HiAPI-C# 2025",
"summary": "Getting Started with HiNC This section covers how to set up and launch the HiNC system in different environments, including basic installation on Windows, single-machine multi-station configuration, multi-host authorization setup, and tutorial videos. Single-Machine Multi-Station Configuration Multi-Host Delegated Authorization Tutorial Videos Launching HiNC on Windows Download and extract the HiNC installation package from the official website: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-Manager-Win/archive/master.zip Plug in the HiNC license dongle and run HiNC-loop-with-update.bat from the extracted folder. This script downloads or updates the HiNC software into the HiNC subfolder each time it runs. After the first run, a HiNC subfolder will be created. Except for appsettings, all other file changes within the HiNC folder will be overwritten after an update. If non-system modifications exist in the HiNC folder, the download or update may fail. In that case, manually delete the entire HiNC folder and run HiNC-loop-with-update.bat again. Demo video If the default download mirror is too slow, you can first use HiNC-update-gitcode.bat to download from the gitcode mirror, then run HiNC-loop-with-update.bat. Inside the HiNC subfolder you will find the appsettings.json file, which is used to configure HiNC settings such as the web address, user credentials, etc. The following explains the default values. By default, each time HiNC starts it connects to the license server to check for license updates. The default license update settings are shown below. To disable automatic license updates, change AutoLicenseUpdate to DoNothing. \"LicenseManager\": { //Available Command: \"DoNothing\",\"AutoLicenseUpdate\",\"GetC2V\",\"GenV2C\",\"ApplyV2C\",\"WriteInfo\" \"Command\": \"AutoLicenseUpdate\", \"Server\": { \"URI\": \"http://superhightech.com.tw:20201\", } } The appsettings.json file creates ../HiNC-Root by default as the storage location for data and projects. If HiNC repeatedly shows long error messages on startup, the operating system may be outdated or not recently updated. Please install Microsoft Visual C++. Open a web browser and navigate to the default URL: http://localhost:4330 Log in with the default credentials. Username: admin Password: 00000"
},
"product/system/file-explorer.html": {
"href": "product/system/file-explorer.html",
"title": "File Explorer | HiAPI-C# 2025",
"summary": "File Explorer File Explorer can manage files, upload and download files, and includes an editor for previewing and editing text files. Root Directory The File Explorer has several types of root directories: Administrator Directory Resource Directory Project Directory The administrator directory is above the project directory; the project directory contains the loaded project content; the resource directory is shared between projects and stores data such as material coefficients. File Renaming and Moving Click on in the File Explorer to edit the corresponding filename. To move files, you can use relative paths for renaming. You can also use ~/ at the start of the path to use the root directory as the base path. Tip File Moving Examples Renaming file1.txt to Folder/file1.txt will move the file into the Folder directory. Renaming file1.txt in the Folder directory to ../file1.txt will move the file out of the Folder directory. Note Keywords are case-sensitive."
},
"release-note/index.html": {
"href": "release-note/index.html",
"title": "Release Note | HiAPI-C# 2025",
"summary": "Release Note HiNc Packages Version 3.2.6 At a glance 3.2 is largely one piece of work: the NC interpreter that reads a controller program is now composed from configurable parts rather than written into one class, and most of this release is the brand coverage that made possible. A Siemens or Heidenhain program that 3.1.175 could not interpret past its first computed coordinate or subprogram call now replays end to end. Control-language coverage. The figure is how far our own verification has reached on that dialect — it is not the share of the language that is implemented, and it is not a guarantee for a program we have not seen: Control language Verification reached Cutter location (NX CLSF / APT source) ~90% Fanuc ~80% Siemens SINUMERIK ~60% Heidenhain (klartext and DIN/ISO) ~40% Syntec and Mazak run on the Fanuc-family vocabulary; their brand-specific syntax has not been worked through and they are not covered by the figures above. The per-construct picture — including what is recognized and deliberately not simulated — is in the brand support matrix. Failures say what went wrong. The class of defect this release spent most effort on is the silent one: a Siemens tool offset with no table row that resolved to zero and machined a whole program one tool length low, a G68 rotation that did nothing while reporting itself active, a tilted plane the machine could not reach. Each of those is now a named, searchable diagnostic rather than a plausible-looking wrong result — see the diagnostic id table. Simulation is faster and holds a bigger program. Physics moved into the native kernel (a paired play: 59.3 s / 16.1 GB allocated → 40.6 s / 3.4 GB), building the topology of a large STL is linear rather than quadratic in triangle count, and a long program no longer degrades as it plays. Figures and their conditions are under Performance and footprint. The application product moves to the web API. From 3.2 the shipped application is the web service, and its source is the same HiNC-2025-webservice sample we publish — what you read there is what the product runs. The Blazor front end is not on this line. Important Adoption status. This drop is published for review. Verification is still in progress across most areas, and the coverage figures above are the honest state of it. Do not put 3.2 NC optimization into production. It is not finished on this line. Work that depends on optimization should stay on the 3.1 line, which is serviced as 3.1.175.<patch>. The Blazor front end likewise remains on 3.1. What changed This one entry covers everything since 3.1.175. The 3.1 line is closed at the 3.1.175 package set and is serviced only as 3.1.175.<patch>; master moved all ten packages onto the 3.2 line on 2026-07-26 and restarted their build counters. So a 3.2 build number starts low — 3.2.6 is newer than 3.1.204, the two counters are not comparable, and the gap between them is expected rather than a missing upload. The versions in between were never published as a release set, which is why they are merged here rather than listed separately. Everything below therefore lands at once on a caller moving a 3.1.175 reference to 3.2. See Upgrading from 3.1.175 to 3.2 for the full detail — the summary here is the shape of the upgrade, not the whole of it. Breaking changes In the order they will bite. Full table with replacements on the upgrade page. Registration: XFactory.Generators becomes a ConcurrentDictionary (a caller declaring the old type breaks at compile time), and LocalProjectService.Reg() must still be called once at startup before any project XML is deserialized Messages: MixedProgress0, MultiTagMessage and MultiTagMessageUtil are removed; every message parameter is retyped from IProgress<object> to IProgress<IMessage>; Category.General is deleted and NcDiagnostic.Text renames to Notification Session lifetime: LocalProjectService.SessionShell is null outside a session and ShellProgress is recreated per session — hold no long-lived reference; MachiningSession takes an injected IMachiningService, and IMachiningService replaces PlayerCancellationToken / PausePlayer with one PacePlayer Play verbs: PlayNcFile / RunNcFile gain an NcKind kind = NcKind.Auto parameter and dispatch by extension; the old narrow verbs become PlayBrandNcFile / RunBrandNcFile. The “Control” vocabulary retires with them (IControlRunner → INcRunner, RunControlLines → RunNcLines, ControlKind → NcKind) Hard renames, no shim: runtime geom → meshed geom across WorkpieceService; IContourTray / UniformContourTray / FreeContourTray → IFluting / UniformFluting / FreeFluting and MillingCutter.FluteContourTray → Fluting; HiNc's Hi.Common.ResourceUtil → ResourceLayout (it was shadowing HiGeom's same-named type); the native topo-STL wrappers move to Hi.Geom.Topo; ITimeGetter → ITimecoded; ClStrip.DrawingRefreshing → DrawingRefreshed; SoftNcRunner.NcDependencyList → PipelineNcDependencyList Removals: CsvRunner0 and EnableSoftCsvRunner, RawCsvRunner, IndexedSentence, SimpleSessionCommand, LsStl; the GUI-layer types MachiningProjectDisplayee, IsoCoordinateEntryDisplayee, HeidenhainCoordinateEntryDisplayee, UserConfig, UserService and PlayerDivConfig; the managed physics kernel types FluteZData, MillingForceUtil.RuntimePack / LayerPack / AnglePack and MillingPhysicsBrief.YieldStressMinHeight_mm; CultureUtil.SupportedCultureNames and SetCurrentCulture(string); eight gl* P/Invoke declarations that had no backing export; and PostExecutionCommand's meshed-geometry output pair (use RecordMeshedGeomCommand / ExportMeshedGeomToStlCommand instead) Shapes: MachiningToolHouse derives from Dictionary<int, IMachiningTool>; MachiningStep.ActualTimecode / ActualDateTime become get-only views onto the new ActualTime; PreSettingCommand becomes a legacy bundle that expands on load into five single-setting commands and is never written back; ToPresentDto wire keys change Defaults: EnableSoftNcRunner is true — SoftNc is the NC engine and HardNcRunner is the opt-out fallback; EnableNativeMillingPhysics is true and a shipping build throws if you set it false; YieldingStressRatio reports NaN instead of 0 when it cannot be evaluated, so a caller reading 0 as “no constraint” must add a NaN branch New licence feature NcComposition (id 22) gates registering a non-built-in unit into a SoftNcRunner pipeline and executing an NC-embedded C# script. Degradation is silent and functional — the unit is skipped with one Composition--NotLicensed — so an unlicensed installation produces a different simulation, not an error Packaging: x64 only; the shipped machine-tool packages are renamed and now carry the .default marker (MachineTool/Table-B1.default, MachineTool/CT-350.default), so a project that refers to one by its earlier path must be repointed; HiNcServer pins request localization to English and HiNcRcl drops the inert HiNC:DisplayEngine:FontFile key Some results change without any code change — the pivot-transform anchor, a G68 rotation that was a silent no-op, blank lines resetting G90/G91, Heidenhain absolute arc centres, five-axis IK about 1000× tighter, and MC-linear moves stepping by euclidean tip travel. They are listed with their symptoms under Results that change on upgrade. New in this release Siemens SINUMERIK programs replay end to end — real .mpf / .spf files rather than an ISO subset: modal vocabulary and T=\"name\" tool calls, an expression evaluator over R-parameters and $-system variables, programmable frames and $P_UIFR, TRAORI RTCP and CYCLE800 swivel, subprogram and MCALL cycle calls, full control flow with iteration watchdogs, the AC() / IC() / DC() per-word coordinate functions and the coded-position family Heidenhain plays both dialects on one preset — klartext motion, datums, tool calls, arcs and cycles; Q-parameter evaluation with FN 912 conditional jumps; the PLANE / FUNCTION TCPM / M128 tilt and RTCP stack; subprogram and CALL PGM calls; post-processed spellings written without separators; and the DIN/ISO dialect with its absolute I / J / K arc centres Fanuc Custom Macro B and polar interpolation — #var expressions, IF / GOTO / WHILE, M98 / M99 subprograms and G65 / G66 macro calls; G12.1 / G13.1 polar coordinate interpolation with G41 / G42 compensation on the hypothetical plane SoftNcRunner is the default NC pipeline. See NC Parsing Engine for its architecture and the per-brand support matrix NC optimization runs on that pipeline — not finished on this line, see Adoption status above — regenerating text as anchored token edits over the verbatim source block, so lines the optimizer does not touch round-trip byte-identically. Output follows the source's decimal digits and is written back in the source file's encoding, so a GBK or Big5 program keeps its comments Cutter-location files drive a real machine chain, not only a ClMillingDevice, and a played CL program converts to Fanuc NC through ConvertClToNcFiles Milling physics moved into the native kernel — engagement, force and the sequential thermal chain — with the tool's scalar physics frozen once per session into MillingToolPhysicsPack, which also makes force waveforms reproducible between two plays of the same program Session commands declare themselves through CommandCatalogAttribute and CommandFieldAttribute, so a generic editor renders them without a hand-written form; the HTTP surface answers a no-session or no-project call with 409 and an ApiActionResult envelope carrying the call's notifications Diagnostics carry a template and its arguments, so a front end can re-render a notification in its own language, and repeats fold into one per-run summary instead of one message per block Shipped resources carry a .default marker distinguishing system territory from user files, and HiNc-Resource ships the five brand controller presets and three coolant presets so those load browsers start populated A parser configuration is a file, and it is shareable. NcRunnerSuit bundles a runner with its per-case data as one loadable unit, and per-case data now travels as proxy placeholders that resolve against the owning project — so one controller configuration is no longer welded to the job it was first built for A long program no longer degrades as it plays. A dead equality guard made the session append an NC-optimization option entry for every played act instead of only at change points, and reading the last one walked the whole map — together, quadratic. On a 2.35-million-line Siemens program the per-100,000-line rate now stays flat instead of climbing from 73 s to about 11 minutes. It applied to every runner, including sessions doing no optimization at all Performance and footprint, measured — physics in the native kernel takes a paired play from 59.3 s / 16.1 GB allocated to 40.6 s / 3.4 GB; building the topology of a large STL is linear instead of quadratic in triangle count (18.7× at 300k triangles, and it was 99.6% of the load); re-triangulating after a cut is about 2.2× faster; and a long program no longer exhausts client memory (session retention on a 25,000-block play: 406 MB → 142 MB). Every figure with its conditions — including the two things that cost more on purpose — is under Performance and footprint Stability and data integrity — the native crashes from disposing a display or geometry object still in use, the intermittent “No cut / No data for step” on freshly-simulated steps, the project-file race between a Load and a Save, and non-reproducible milling-force waveforms are all fixed; large geometry now builds its display topology off-thread instead of freezing the UI HiNc Packages Version 3.1.175 WorkpieceService file IO now takes relative paths and resolves them against a base-directory Func<string> injected by LocalProjectService — the runtime-geometry write/read no longer requires the caller to pre-combine an absolute path. WorkpieceService.ReadRuntimeGeom (now ReadMeshedGeom) now returns whether the source file existed (the not-found notice moves to the calling shell) Rename runtime-geometry mesh-export methods to the Export* convention (STL/OBJ/PLY are foreign interchange formats, not native writes): WriteRuntimeGeomToStl/Obj/Ply → ExportRuntimeGeomToStl / ExportRuntimeGeomToObj / ExportRuntimeGeomToPly; the session command WriteRuntimeGeomToStlCommand → ExportRuntimeGeomToStlCommand (now ExportMeshedGeomToStlCommand) keeps the old <WriteRuntimeGeomToStlCommand> element name as a back-compat alias so existing projects still load HiNc Packages Version 3.1.173 Improve Mrr_mm3ds precision: the material-removal-rate now sums each cut contour's signed area-vector (fan triangulation, skipping non-finite triangles) projected on the feed direction, replacing the per-contour bounding-box area that over-estimated the cut cross-section Add AlignWorkpieceProgramZeroToIso script command: resolves a G54/G55/… entry from the project ISO coordinate table and places workpiece + fixture so the program zero coincides with that machine coordinate (topology math delegated to the new AlignWorkpieceProgramZeroToIso extension) Drop gRPC plumbing from the HiNc package: remove Hi.Grpcs.* ClStrip/Player service runners and protos, MachiningProjectGrpcServer, MonitoringPlayer, and UniversalNcMonitorClient; fold CsvRunnerConfig back into CsvRunner0 (gRPC services now ship in HiNcRcl / UJoinRcl) HiNc Packages Version 3.1.172 Replace implicit XFactory registration (private static <ClassName>() constructors + _ = X.XName wake-up touches) with explicit public static void Reg(XFactory factory = null) methods across ~270 classes. XFactory becomes an instance class with a process-wide Default singleton; Generators is renamed from Regs and now an instance property; the delegate type is renamed XGeneratorDelegate from GenByXElementDelegate. Composite types chain X.Reg(factory) on dependents in place of the old wake-up touches; multi-name (legacy alias) registrations keep the current XName first and group aliases under a //legacy aliases comment. Entry points (web service, win-desktop, test fixtures) must call Reg once at startup before any project XML is deserialized — registration no longer happens by accident when the type is first touched. See XML IO. HiNc Packages Version 3.1.171 Rename RuntimeApi → SessionShell (the runtime entry point exposed to scripting); IShellCommand → ISessionCommand and RuntimeController → SessionShellController; the Hi.ShellCommands namespace moves to Hi.SessionCommands, and every command implementer's Run() parameter renames scriptApi → sessionShell Tri-state milling-physics contract: MachiningStep physics getters converge on a tri-state result, non-null MillingPhysicsBrief on no-cut steps under EnablePhysics; silently skip thermal physics on null FluteMaterial / WorkpieceMaterial; lazy first-equip warning; align relief-face null-sentinel across NoCut + producer (in NcOpt and forces) Rename IMachiningStepHost → IMachiningService (drops the ICsScriptApi seam) Fixes: rotary IK round-trip anchored to pre-FK interpolated angle; ForceAccelShot.ReadRows skips blank lines HiNc Packages Version 3.1.167 Introduce SoftNcRunner as a pluggable NC parser/runner replacing the legacy HardNcRunner, opt-in at the time via EnableSoftNcRunner. It became the default pipeline in 3.2 — see NC Parsing Engine Extend coolant model to CoolantMode Flood/Mist/Off and refactor CoolantHeatCondition / MillingTemperatureUtil for multi-mode coolant Bind session events to MachiningSession lifetime: SessionStepBuilt, SessionStepSelected, SessionSyntaxPieceRan, SessionSourcedActEntry (legacy aliases kept as [Obsolete]); add RegisterWriteSyntaxPieces / RegisterWriteSyntaxPiecesWithActs for syntax-piece debug tracing Add ProjectApiVersion carrier through XFactory deserialization for project-XML version negotiation; resolve Workpiece through a lazy Func getter in WorkpieceService HiNc Packages Version 3.1.162 Refactor message management into three independent categories: Diagnostic (IProgress<object>), UI Notification (MessageBoardUtil), App Log (ILogger); remove MessageUtil class entirely and remove ExceptionUtil.ShowException / ExceptionUtil.OnShown (see Message Management) Thread IProgress<object> through XFactory deserialization chain and MachiningProject loading; remove GenMode enum entirely (see XML IO) Add ActionProgress<T>.FromLogger to bridge IProgress<object> APIs to ILogger Rename ShowIfCatched → CatchExceptions with explicit Action<Exception> handler; remove RoutineBlocker0 Extract WorkpieceService from Workpiece for runtime geometry operations Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses IsoCoordinateEntryDisplayee with full machining chain anchor instead of table-buckle-only anchor Rename SessionMessageHost → SessionProgress on both ShellProgress and ShellProgress (SessionShell.SessionMessageHost is kept as [Obsolete]) Remove obsolete HiLog logging utility and DynamicMachiningProjectDisplayee0 HiNc Packages Version 3.1.160 Fix NC optimization R-format arc interpolation with negative R values (follow-up to v158 R-format arc fix) Fix cubetree construction defect when a triangle edge passes through a wire corner Mech Builder: geometry (STL) file picker for anchored transformation now offers Project directory in addition to Resource directory. Rename XML IO utilities: XmlSourceAndFile<T> → FileRefSource<T>, CombineAsSubDirectory → GetResourceDirectory, MakeXmlSourceWithRebaseFile → MakeXmlSourceToFileRef HiNc Packages Version 3.1.158 Fix G53.1 tool height compensation behavior: replace NcEnv.SetToolHeightCompensationOnFeatureNormal configuration with automatic detection via NC flag state Make EnableIntegerShrinkOnPositionCommand configurable via project settings (previously hard-coded by CNC brand, now defaults to false with XML IO support) Fix NC optimization splitting R-format arcs (G02/G03 with R parameter) by converting to IJK format, since R sign meaning does not apply correctly to individual fragments Fix step.csv reading crash on null or malformed values Fix XML IO sub-base directory not applied in some project file operations Improve CSV actual time parsing to support DateTime format in addition to TimeSpan (see Workflow: Basic Machining Simulation) Fix CSV title parsing to trim surrounding quotes HiNc Packages Version 3.1.156 Fix G68 coordinate rotation transformation for non-origin rotation centers Fix NC optimization arc/circle offset when splitting arc fragments across multiple lines Fix optimization rotation code jumping at ±180° cycle boundary by applying cyclic angle comparison Fix RTCP on unmatched tool offset Fix blocking issue when time-mapping file not found Fix FlagsText always null after NC parser refactoring HiNc Packages Version 3.1.150 Add cubetree geometry defect scanning (ScanRuntimeGeomInfDefect) and clearing (ClearDefectDisplayee) for detecting and visualizing geometry anomalies in workpieces (see Workflow: Geometry Validation) Upgrade internal fraction representation to float128 precision for improved cubetree geometry accuracy and numerical stability Refactor messaging system from IMessageHost to standard IProgress<T> pattern; ShellProgress (formerly SessionMessageHost) now implements IProgress<T>, and all messaging methods renamed from Add* to Report* (e.g., AddProgress → MultiTagMessageUtil.ReportProgress) Fix cubetree initialization crash Improve postprocess precision by applying sincos parameterization instead of direct angle-based formulation for rotary axis numerical solving in XyzabcSolver Add asynchronous anchor solid preparation on project load for improved startup performance HiNc Packages Version 3.1.144 Enhance Siemens Sinumerik support: Siemens CYCLE800 coordinate transform and reset Siemens MCALL CYCLE81() drilling cycle parsing Siemens TRAORI/TRAFOOF/SUPA flag parsing Fix Siemens TRAFOOF plain rotation coordinate transform issue Fix Siemens coordinate transform for successive file running Fix relief face collision floating-point precision issue Replace MongoDB with SQLite for local step data storage (significant package size reduction) Add machining and motion resolution dynamic adjustment functions HiNc Packages Version 3.1.106 Rename mapping API for clearer naming: ReadCsvByTimeInterpolation → MapSingleByCsvFile (one-to-one mapping) MapByActualTime → MapSeriesByCsvFile (one-to-many mapping) Rename CSV column prefix Spindle to Holder for sensor data mapping Unify CSV column tags to MappingUtil for consistent data mapping Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display Tune thread priority for machining parallel processing to improve UI responsiveness during simulation Various code cleanup and improvements HiNc Packages Version 3.1.102 Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution Upgrade target framework to .NET 10.0 Various code cleanup and improvements HiNc Packages Version 3.1.100 Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training Separate C++ library for code protection Add UTF-8 file path support for runtime geometry IO operations Improve CsvRunner0 with enhanced time mapping pattern Various architecture improvements and bug fixes HiNc Packages Version 3.1.91 Add NcOptimizationEmbeddedLogMode to control embedded log detail level (None/SimpleLog/FullLog) (see Embedded Log Comments). Fix bug of NcOptProc duplicated feedrate assignment HiNc Packages Version 3.1.90 Rename optimization log API EnableIndividualStepAdjustmentLog Fix crash from workpiece displaying with specific mechanical topology setting Improve .flatproc.log output to maintain step order during parallel computation Various stability improvements and bug fixes HiNc Packages Version 3.1.86 Re-build NcOptProc with stricter optimization logics Add optimization logging features (see Optimization Logs): .flatproc.log file output for optimization process analysis Embedded log comments in optimized NC file marking source lines with (src) suffix Fix cutting depth and width accuracy by bounding-box method with workpiece surface Fix collision check error during concurrent changing collidable object Various stability improvements and bug fixes HiNc Packages Version 3.1.84 Optimize memory usage by shrinking map-size of clStripPos Fix design pattern of cutting parameter training module (MillingTraining) Add LoadCuttingParaByFile function to load cutting parameters from file Improve CsvRunner0 actual time parsing: automatically calculate step duration from actual time when duration is not provided Enhance message handling in SessionShell by unifying ShellProgress usage Improve optimization performance with better task scheduling Various performance improvements and bug fixes HiNc Packages Version 3.1.75 Add actual time tracking functionality (ActualTimecode) Various stability improvements and bug fixes HiNc Packages Version 3.1.74 Rename class MillingCutterOptLimit to MillingCutterOptOption Add physics simulation function for relief face collision detection (ReliefFaceCollidingSpeed_mmds, IsReliefFaceCollided) and optimization (EnableLimitByReliefAngle) Add UpdateNcOptOption function to step processing Fix step ordering bug from concurrent processing Fix ClStrip shrinking to zero issue"
},
"release-note/upgrading-to-3.2.html": {
"href": "release-note/upgrading-to-3.2.html",
"title": "Upgrading from 3.1.175 to 3.2 | HiAPI-C# 2025",
"summary": "Upgrading from 3.1.175 to 3.2 This page is the long form of the 3.2 release-note entry. It exists because 3.2 is not an increment on the last release most callers hold — it is the accumulation of everything that landed after the 3.1.175 package set, delivered in one step. Read it in order the first time. The two sections that decide whether an upgrade is a recompile or an afternoon are Breaking changes and Results that change on upgrade; everything after them is new capability you can adopt when you need it. Important Read the Adoption status note on the release-note page before planning around this. The short version: 3.2 is published for review, verification is still in progress across most areas, and NC optimization is not finished on this line — work that depends on it should stay on 3.1, serviced as 3.1.175.<patch>. The package line master develops the 3.2 package line as of 2026-08-19. All ten packages — HiGeom, HiLicense, HiDisp, Hi.WinForm, Hi.WpfPlus, HiCbtr, HiMech, HiUniNc, HiNc, HiNc-Resource — moved to 3.2 together and restarted their build counters. Three consequences worth stating plainly: A 3.2 build number starts low. 3.2.6 is newer than 3.1.204; the two counters are not comparable, and the gap between the last 3.1 number a feed served and the first 3.2 number is expected rather than a missing upload. The 3.1 line is closed at the 3.1.175 set and is serviced only as 3.1.175.<patch>. A reference left on 3.1.175.x receives correctness fixes for that line and none of the capability on this page. The versions between — 3.1.176 through 3.1.204 — were never published as a release set. That is why the release note carries one 3.2 entry where it might have carried a dozen: for a caller moving off 3.1.175, they were never separate releases. Breaking changes In the order they will bite an upgrading host. 1. Registration, before anything else XFactory.Generators changes from a plain Dictionary to a ConcurrentDictionary, so parallel Reg() calls no longer corrupt the registration map. The property is public, so a caller that declares its type explicitly stops compiling. Carried over from 3.1.172 and still the first thing an upgrading host hits: Reg must be called once at startup, before any project XML is deserialized. Registration no longer happens by accident when a type is first touched. See XML IO. 2. The message channel Message reporting is rebuilt on a unified model. Every notification carries a Severity, a Category and a filterable id (SimpleMessage), and arrives on one of three typed sinks: ShellProgress for session-lifecycle messages, StepDiagnosticProgress for step-anchored diagnostics, and NcDiagnosticProgress for NC-parsing diagnostics. MixedProgress0, MultiTagMessage and MultiTagMessageUtil are removed. Every message parameter across the API — the XFactory deserialization chain included — is retyped from IProgress<object> to IProgress<IMessage>. Category.General is deleted, MessageUtil becomes id-first {Category}{Severity}, and NcDiagnostic.Text renames to Notification. See Message Management. 3. The session surface LocalProjectService.SessionShell is created by BeginSession() and nulled at EndSession() — it is null outside a session and no longer lazily created. ShellProgress is recreated per session, so hold no long-lived reference to either: subscribe once through OnShellMessageAdded / OnShellMessageCleared, or buffer one call's messages with MessageCollector. MachiningSession takes an injected IMachiningService host in its constructor, and IMachiningService replaces PlayerCancellationToken / PausePlayer with a single PacePlayer property. 4. The play verbs Nc becomes the umbrella term for any playable control program, and BrandNc names the famous-brand controller-code group as a sibling of Cl and Csv. Was Is now PlayNcFile(file) — brand G-code only PlayNcFile(file, NcKind kind = NcKind.Auto) RunNcFile(file) RunNcFile(file, NcKind kind = NcKind.Auto) the narrow brand-only file verbs PlayBrandNcFile / RunBrandNcFile IControlRunner Hi.Numerical.INcRunner RunControlLines RunNcLines ControlKind NcKind IsRunningControlLines / BeginControlRunner IsRunningNcLines / BeginNcRunner the interim PlayControlFile / RunControlFile mirrors removed The same rename applies on LocalProjectService, SessionShellController and MachiningSession. Only .cl / .cls / .clsf / .csv arguments change meaning — DetectByPath treats those as closed extension sets and everything else falls back to brand G-code, so an exotic brand extension can never be misrouted. 5. Renames with no shim Was Is now WorkpieceService.GetRuntimeGeom / ReadRuntimeGeom / WriteRuntimeGeom / SetRuntimeGeom / ResetRuntimeGeom / IsRuntimeGeomInit / ScanRuntimeGeomInfDefect GetOrBuildMeshedGeom / ReadMeshedGeom / WriteMeshedGeom / SetMeshedGeom / ResetMeshedGeom / IsMeshedGeomInit / ScanMeshedGeomInfDefect MachiningEquipmentCollisionIndex.WorkpieceRuntimeGeomGetter WorkpieceMeshedGeomGetter IContourTray / UniformContourTray / FreeContourTray IFluting / UniformFluting / FreeFluting MillingCutter.FluteContourTray Fluting Hi.Common.ResourceUtil (the HiNc one) ResourceLayout NativeTopoStld / NativeTopoStlfr / NativeCarveTopoStl3wfr NativeTopoStl3d / NativeTopoStl3wfr / CarveStl Solid.NativeSmoothTopoStl / Sweptable.NativeTopoStl SmoothTopoStl3d / NativeTopoStl3d ITimeGetter and its Time member Hi.Physics.ITimecoded and Timecode ClStrip.DrawingRefreshing ClStrip.DrawingRefreshed CbtrPickable.CleanLinked* CbtrPickable.CleanAttached* SoftNcRunner.NcDependencyList PipelineNcDependencyList Four notes on that table. The SessionShell script names for meshed geometry keep hidden [Obsolete] aliases so existing player scripts still run; the service-level members do not. WorkpieceService.ResetRuntimeGeom also drops its ClStrip parameter. ClStrip.DrawingRefreshed was renamed because both invocations always fired after the work — the -ing name told subscribers the opposite of when they are called. A subscriber that misses the rename silently detaches. Project and cutter files written before the fluting rename keep loading: each Reg() registers the ContourTray-era XName beside the older aliases, and the cutter element reader tries Fluting, then FluteContourTray, then FluteContourTrackTray. A cutter that nevertheless fails to resolve its fluting machines as a plain bounding shape rather than failing loudly, so verify the load rather than assuming it. SoftNcRunner.PipelineNcDependencyList is the raw list; machine-config consumers read the resolved view through GetEffectiveNcDependencyList. Legacy <NcDependencyList> XML still loads and migrates. 6. Removals CSV — CsvRunner0, LocalProjectService.EnableSoftCsvRunner, and the earlier RawCsvRunner and CsvRowSemantic. CSV playback has one path, GeneralCsvRunner, and CsvRunner returns the CSV suit's SoftNcRunner directly. Carriers — IndexedSentence (wrap a bare Sentence in your own ISentenceCarrier if you passed one as a sourceCommand), SimpleSessionCommand, HiCbtr's [Obsolete] LsStl. The packed MixedIndex file-line key is replaced by typed FileLineIndex comparison, so file and line positions compare by type rather than through a packed integer. GUI-layer composition — MachiningProjectDisplayee, IsoCoordinateEntryDisplayee, HeidenhainCoordinateEntryDisplayee, UserConfig, UserService, PlayerDivConfig. Construct LocalProjectService with the ILogger-only constructor and copy the displayees from any app project — Hi.Sample.Wpf/Disp/ ships them. They compose only public API (IDisplayee over LocalProjectService), so tailoring them is the point. Managed physics kernel types — the class FluteZData, MillingForceUtil.RuntimePack / LayerPack / AnglePack, the LayerMillingEngagement constructor that built an engagement from a z-to-dz list (the default and BinaryReader constructors stay), and MillingPhysicsBrief.YieldStressMinHeight_mm. Culture declaration — CultureUtil.SupportedCultureNames and CultureUtil.SetCurrentCulture(string), deleted outright with no [Obsolete] shim. What remains is English and SetCurrentCultureEn. A host that enumerated supported cultures must enumerate its own manual or resource folders instead. Dead P/Invoke declarations — eight gl* methods on HiDisp's public GL class (glFenceSync, glGetDoublev, glGetDoublei_v, glGetDoubleIndexedvEXT, glIglooInterfaceSGIX, glPNTrianglesfATI, glPNTrianglesiATI, and the already-commented glDebugMessageCallbackAMD). They had no backing export and threw EntryPointNotFoundException when called. NcFileListCommand — a list of NC files is just a List of Program File commands, so the dedicated type is gone. Loading a project that contains one converts it in place: each <File> entry becomes a single-file NcFileCommand (kind Auto, the same per-file extension dispatch) inside a ListCommand, and re-saving persists the converted form. Post-Execution meshed-geometry output — PostExecutionCommand loses EnableWriteMeshedGeom and MeshedGeomFileTemplate (and their pre-rename …RuntimeGeom… spellings) together with the enable-write-meshed-geom and meshed-geom-file-path routes. A geometry snapshot can be taken at any time-spot, unlike the run-derived outputs that command manages, so the carriers are now the placeable RecordMeshedGeomCommand and ExportMeshedGeomToStlCommand. Loading an old project with the pair enabled emits PostExecution--MeshedGeomOutputRetired, and re-saving drops the elements. 7. Signature and shape changes MachiningToolHouse derives from Dictionary<int, IMachiningTool>: SetToolId takes an int and CreateStickMillingTool returns KeyValuePair<int, MillingTool>. Any (int)entry.Key cast stops compiling. Siemens T=\"name\" string tool calls are unaffected — they still resolve to an int at the semantic layer. ActualTimecode and ActualDateTime become get-only views onto the new optional ActualTime (StepActualTime) — their setters are gone. AccumulatedTime is superseded by EndTimecode, kept as an [Obsolete] alias; step CSVs write the new header and still read the old. PreSettingCommand becomes a legacy bundle. A saved bundle expands on load into MachiningResolutionCommand, MachiningMotionResolutionCommand, CollisionDetectionCommand, PauseOnFailureCommand and PhysicsCommand (plus a Read-mode RecordMeshedGeomCommand), and is never written back. Anything that located the bundle element in a saved .hincproj must look for the split commands. ToPresentDto wire keys change with the obfuscation fix: geometry DTOs use Type / Min / Max / PairZrs / Z / R / SourceFile / FileIndex / LineIndex (Vec3d keeps lowercase x / y / z), transformer DTOs use Trans, Angle_deg, CosTheta / SinTheta, Axis, Pivot, Scale, Rotation, Translation, Step, Stack, Matrix. A front-end reading those payloads must be updated in lockstep. defaultFontFile changes value from \"Font/WCL06.ttf\" to \"(embedded)\". It is a public const, so an assembly compiled against 3.1.175 already carries the old literal and keeps passing it — Init still accepts it — but a rebuild changes what it passes, and no font file is extracted to the working directory any more. 8. Defaults and gates that changed EnableSoftNcRunner defaults to true. The SoftNc pipeline is the NC engine; HardNcRunner is the opt-out fallback for the shrinking set of features still bound to it. EnableNativeMillingPhysics defaults to true, and in a shipping build setting it to false throws InvalidOperationException at the setter — the managed reference implementation lives only in a non-shipping assembly. Code that flipped it off for an A/B comparison now fails at configuration time. YieldingStressRatio and YieldingStressRatio report NaN instead of 0 when no beam section qualifies. A caller treating 0 as “no yielding constraint” — as both feed solvers did — must add a NaN branch or it will pass NaN into downstream queries. New licence feature NcComposition (id 22). Registering any non-built-in processing unit into a SoftNcRunner pipeline, or executing an NC-embedded C# script, requires it. Degradation is silent and functional: external units are skipped for the session with one Composition--NotLicensed naming them, an external segmenter falls back to SingleLineSegmenter, and scripts are skipped with Script--NotLicensed. An unlicensed installation therefore produces a different simulation, not an error. Calling the public API from your own application or session script needs no extra licence; composing the interpretation pipeline does. See NC Parsing Engine. The four SnapshotSyntax entries in the Fanuc preset default to IsEnabled = false, so projects stop serializing enabled debug snapshots. A project saved by an earlier build keeps what it serialized until its pipeline list is refreshed from the current preset. Server side: HiNcServer pins request localization to English, so an Accept-Language: zh-Hant request falls back to en. HiNcRcl removes the HiNC:DisplayEngine:FontFile configuration key, which never had any effect — delete it from appsettings. FontFile remains for a custom font. Localization: HiMech's MachiningStep.zh-Hant / .zh-Hans resx are deleted. Step presentation strings now come from the HiNc-Resource present catalog (catalog.en.json, catalog.zh-Hant.json, catalog.zh-Hans.json) that a host overlays; a host that ships neither loses the localized step labels it used to get for free. Packaging is x64-only: HiDisp drops the win-x86 runtime identifier and its Sentinel payload, HiNc-Resource drops the x86 platform. The shipped machine-tool packages are renamed. They now carry the .default marker and neutral names: MachineTool/Table-B1.default and MachineTool/CT-350.default. The table-type package was renamed outright — its .mt, its .general-mech and its STL headers travel with it — and the duplicated nested STL set inside the CT-350 package is deleted. A project, script or .mt that refers to a shipped machine-tool package by its earlier path must be repointed at the name above. Results that change on upgrade None of the following breaks a build. All of them change what a simulation produces, so a byte-for-byte comparison against 3.1.175 output will differ — usually because 3.1.175 was wrong. Silent wrong geometry, now fixed. Each of these produced a plausible-looking simulation of the wrong thing. The kinematic pivot anchor. The pivot-transform chain entry was built as K(0)·K(abc)⁻¹, folding the whole machine-zero forward kinematic — its linear part included — into the pre-pivot anchor. That linear part encodes each axis' motion sense and tool/workpiece-side ownership, so it mirrored the program components of every workpiece-side linear axis before the IK ran. On a table-side chain whose machine-zero linear part is diag(1,1,-1), every program Z was mirrored and a near-180° swing amplified it into metres of machine-Z error, floating the toolpath above the workpiece. The anchor is now the translation alone, matching what HardNc has always kept. Machines whose linear axes all ride the tool side are unaffected. G68 2D coordinate rotation was a silent no-op. TiltTransformUtil judged the active mode from the current block but always took the matrix from the previous one, so every G68 activation past the first block had its freshly authored rotation overwritten with an identity that then propagated. G68 rotation did nothing at all while the block's term still read G68, and the simulation machined the unrotated pattern. Re-running an existing G68 program now gives different — correct — geometry. A blank line reset G90/G91. A piece with no parsing section — a blank line, a comment-only line, %, an O-number — left the next block's single-step lookback empty, and it fell back to the G90 default. A program that was incremental throughout silently flipped to absolute mid-file. Such pieces now carry the positioning section forward like every other modal syntax. A Siemens D offset with no $TC_DP row resolved to zero length, in silence. A whole TRAORI program machined one tool length low. The read point now falls back to the generic tool-number-keyed height and emits SiemensToolOffset--TcdpRowMissing. G43.4 with an unresolvable H word activated RTCP with a zero-length tool. It now reports Comp-ToolHeight--001 as a warning and keeps processing the block. An absent H stays silent — re-activating G43.4 on the modal offset id is legitimate input. Heidenhain DIN/ISO arc centres. I / J / K are absolute circle centres on Heidenhain — the ISO face of the klartext CC pole — not start-to-centre offsets. Reading them incrementally turned arcs into near-full phantom circles. Fixed in all three engines: the HardNc reader (IsIjkAbsolute), the SoftNc reader (IsIjkAbsolute) and the optimizer's write-back. Also delivered on the 3.1.175.x service line. A K0 word on a HardNc G02/G03 saturated the turn count. Under the default G17 plane a written-but-zero plane-normal word divided the axial travel by zero, the additional-turn count saturated to int.MaxValue, and one arc block became a spiral act of roughly 302 simulated years — the play appeared to hang on a single NC line. The reading now falls back to the closed-circle rule for a zero pace, matching the guard the SoftNc side already had. Indexed-rotary programs folded the pivot into plain moves. A block with no active G68.2 or G43.4 no longer folds the kinematic pivot transform into a plain XYZ move, which is what a real controller does with a table-side rotary program. The radius-compensation arc transient cache landed on the wrong block. Any non-motion line between the corner and the arc orphaned the cache, so the arc lost its leading linear bridge and began at the corner intersection instead of on the offset arc. The G68.2 tool-axis IK fallback probed the mirrored tool axis. Both normal-only fallbacks in IsoG68p2TiltSyntax read the transposed third column instead of the third row. On the no-hint path this only skewed a warning gate, but the explicit A/B/C path seeds its hint blend from that solve, so a machine with fewer than three rotary axes composed a mirrored tilted plane. A Fanuc WHILE forward jump bound to the wrong END. Sequential loops idiomatically reuse DO 1, so a second WHILE's falsy-condition exit bound to the first loop's END 1 and redirected execution to a point before the second WHILE — an unbounded loop the iteration watchdog cannot see, because it only ticks on END reverse jumps. The jump now uses the anchored label scan the Siemens loop family already used. Heidenhain G28 is MIRROR IMAGE, not a reference-point return. On the Heidenhain preset the shared pipeline had been reading it as the Fanuc reference return, so a G28 X block minted a phantom rapid to home while the mirror silently vanished. It is now simulated as a program-to-MC transform, ReferenceReturnSyntax leaves the Heidenhain logic list, and klartext CYCL DEF 8 records the same mirror statement so one program mirrors identically in either dialect. HardNc keeps the Fanuc reading, so the two engines are deliberately divergent on Heidenhain G28 files and any parity comparison must account for it. MathUtil.Convert_inchdmin_To_mmds returned mm/min, not mm/s. The body multiplied by 25.4 and never divided by 60, so a caller trusting the name got a 60× feedrate; the sibling Convert_mmdmin_To_mmds divides as its name demands. No shipped path called it — the CL/APT feedrate route converts inches-per-minute to mm/min itself — so this changes nothing inside the product, but a caller who had compensated for the old behaviour must remove that compensation. GetRByZ(List<PairZr>) never interpolated. The list overload looked up its ceiling node with the floor lookup, so floor equalled ceiling and the method degenerated into a step function. For a sharp cone whose inner-beam ZR list has no node between apex and rim, that pinned the inner radius to 0 across the whole cone face and produced NaN flute vertices — the root cause of the transparent cone-tip flute that 3.1.180 addressed at the display layer. It affects every consumer of radius-by-Z interpolation, force geometry included. Numerical results move even where nothing was renamed. Five-axis IK is roughly 1000× tighter. The rotary solver behind XyzabcSolver now runs coarse→polish: the coarse stage keeps the original dot residual so solve success and failure semantics are unchanged, then a [dot, cross, rr-per-axis] system polishes. The dot criterion is quadratically blind to angle error — an envelope of about 1.4e-3 rad, and the resulting tip error is that envelope times the tool length — so adding the cross term restores quadratic convergence and drops the envelope to about 1e-6 rad. Failed solves no longer pollute the implicit seed, and the measure-zero perfect-saddle case is escaped by a deterministic retry offset instead of by leftover seed pollution. ActMcXyzLinearContour steps by euclidean tip travel instead of the largest per-axis component, so LinearResolution_mm now caps actual tool-tip travel per step and a diagonal move produces up to √3× more steps at the same setting. The SoftNc pipeline is the default engine. Executed SyntaxPieces freeze to UTF-8 (below), so their JsonObject is a fresh read-only snapshot per call rather than a retained live graph. SyntaxPiece.SentenceIndex becomes a session-global execution-order counter and is no longer contiguous per file. Repeated NC diagnostics fold into per-run summaries at the run boundaries. HardNc tool changes fire on M06 / Heidenhain TOOL CALL rather than on a changed T word — a bare T is magazine pre-selection, and a same-tool M06 still runs the changer cycle — and unset HardNcEnv tooling defaults become the three-axis shape (XYZ = NaN, NaN, 0; ABC all NaN). The old defaults swung all three rotary axes home on every M06, which no post expects. Brand NC language coverage The SoftNc pipeline is the default NC engine, and this is where most of the release went. Siemens SINUMERIK Real .mpf / .spf programs replay end to end, not an ISO subset. At 3.1.175 a program that declared its tool as T=\"NAME\", shifted with SUPA, computed with R-parameters, called L-subprograms or looped with WHILE was not interpreted past that point. Modal vocabulary — SUPA / G153 suppress all frames for one block; T=\"NAME\" string tool calls with D cutting-edge offsets resolved through SiemensToolOffsetTable ($TC_DP lengths and radius plus additive wear); G70 / G71 units; path smoothing (G60x / G64x, FNORM / SOFT / FFWON / COMP* / UPATH, CYCLE832); MSG() and STOPRE; CR= and TURN= arcs. Tail comments became quote-aware, so a ; inside MSG(\"A;B\") no longer truncates the block, and the preset stops misreading L and G74 as Fanuc-family codes. Evaluation — SiemensExpressionParser feeds the shared expression engine, so Z=R63+150 and X=SIN(R10)*20 drive motion. SiemensRParameterTable holds R0R999 as per-case project data, DEF REAL/INT declarations lower into assignments, and $P_UIFR[n,axis,TR] binds both ways to SiemensFrameTable. Any other $-variable is recorded with an unsupported note rather than dropped. Five axis — SiemensProgrammableFrameSyntax simulates TRANS / ATRANS / ROT / AROT (with RPL=) into the tilt-transform chain in Sinumerik RPY order; SiemensTraoriSyntax makes TRAORI a real RTCP mode, the sibling of ISO G43.4, with TRAFOOF handing the offset back; SiemensCycle800TiltSyntax decodes CYCLE800's MODE bits for all four swivel modes. ROTS / SCALE / MIRROR are recognized and reported, not simulated. Calls — L-prefixed and named subprogram calls resolve against SubProgramFolderConfig ({name}.SPF, then .MPF, then the bare name) and inline with their P repetition count; M17 / RET pop a frame; REPEAT re-runs a labelled slice; MCALL CYCLE81/82/83/85 maps onto the shared canned-cycle machinery; PROC headers and labels are claimed whole. Control flow — GOTOF / GOTOB, IF / ELSE / ENDIF, and WHILE / FOR / REPEAT-UNTIL / LOOP. Runaway programs are bounded rather than hanging the session: SiemensGotoIterationDependency caps jumps per (file, label) and SiemensLoopIterationDependency caps iterations per (file, loop-entry line); over the cap the construct warns and falls through. Per-word coordinate functions — AC() / IC() / DC() / ACP() / ACN(), including on I / J / K circle centres. G90 C=IC(360/17) is one incremental index inside an absolute program. Direction resolution lives in McAbcCyclicPathSyntax: ACP() takes the [anchor, anchor+360) window, ACN() the (anchor-360, anchor] window, DC() the shortest swing, with the exact 180° tie going negative. Coded positions — CAC / CIC / CDC / CACP / CACN take a 1-based indexing position number rather than a coordinate, resolved against IIndexingPositionConfig, implemented by SiemensMachineDataTable from the real machine data (the MD30500 axis assignment, the MD10910 / MD10930 position tables, the equidistant MD3050130503 definition). G74 / G75 fixed-point return is claimed as a whole block, so its dummy axis values no longer mint a rapid to the coordinates written in the block and its F never reaches the modal feedrate. OEM auxiliary M-codes — the preset declares M12 / M13 / M22 / M23 and M330 / M331 note-only, so each occurrence voices DeclaredMCode--UnmodeledEffects instead of an unknown-code warning, without inventing simulated effects. A machine's own table overrides a declaration when the real effects are known. Heidenhain Both dialects play on one preset, HeidenhainNcRunner. Klartext motion and setup — the L statement and its axis words, FMAX, M91 as a one-shot machine-coordinate move, TOOL CALL wired to tool change and spindle speed with the table height and DL. Datum handling follows TNC semantics: CYCL DEF 247 sets the preset and CYCL DEF 7 is an additive shift on top of it, composing as separate transform-chain entries instead of replacing each other, resolved against HeidenhainDatumTable. Arcs (CC pole plus C statement, DR- = CW, implicit centre, closed arc = full circle), RL / RR / R0 radius compensation, the M126 / M127 rotary-wrap state, M140 MB retract, and CYCL DEF 32 TOLERANCE. Q-parameters — HeidenhainExpressionParser lexes Q / QR / QL / QS, the DIV keyword of FN 4 and the prefix SQRT of FN 5, so FQ1 reaches the feedrate, L X+Q2 reaches the program XYZ and TOOL CALL SQ3 reaches the spindle speed. HeidenhainQParameterTable holds Q0Q99 free and QR0QR499 permanent parameters as per-case project data. Unimplemented opcodes (FN 14 / 16 / 18…) are claimed and reported rather than half-read, so an FN 18 SYSREAD target stays vacant instead of taking a fabricated value. FN 912 conditional jumps execute, with a (file, label)-keyed iteration cap. Tilt and RTCP — PLANE (SPATIAL fully composed with SEQ / COORD ROT / TABLE ROT and STAY / MOVE / TURN positioning; VECTOR structurally captured; EULER / POINTS / RELATIV / AXIAL / PROJECTED consumed and warned with the previous tilt retained, so a PLANE AXIAL B+45 B word can never be mistaken for a rotary axis command), FUNCTION TCPM, and real M128 / M129 tool-centre-point control. Cycles and calls — CYCL DEF 2xx bodies with their Q parameters mirrored into the block assignments, cycles 200 / 232 / 251 / 252 / 253 mapped onto the shared G81 / G82 / G83 slots, CYCL CALL / CYCL CALL POS / M99 / M89 splitting call-once from modal firing, CALL LBL inlining up to LBL 0, CALL LBL n REP m as a section repeat, and CALL PGM resolved by file name. The multi-line tilde continuation form is joined at segmentation (JoinTildeContinuations, on by default). Post-processed spellings — some post-processors write a whole klartext body with no separators at all, which used to yield zero motion. Glued line shapes (LX-26.3Y+43.1, FMAXM03M08, …R0FMAX) and the detached feed spelling (F 20000) now parse, with M140, M128 and PLANE MOVE widening their own F capture so a retract or feed-limit value cannot leak into the modal feedrate. BLK FORM is recorded as a brand-neutral stock declaration without replacing the project workpiece setup, and the klartext STOP word joins M00 / M01. DIN/ISO dialect — % tape header, N block numbers, T + M06, absolute I / J / K arc centres with the modal pole carried forward, the ISO label family (G98 L<n> definitions and the head-anchored L<n>,<m> call mapping the comma count onto REP), G247 Q339 stamping the same datum preset as CYCL DEF 247, G54 with axis words read as a datum-shift declaration, and G70 / G71. Fanuc and ISO common Polar coordinate interpolation — G12.1 / G13.1 on the SoftNc pipeline. Before this a polar section parsed silently wrong: the X word (a diameter) and the C word (a hypothetical Cartesian axis in mm) were consumed as ordinary XYZ and rotary degrees. ProgramRxczSyntax halves X from diameter, resolves G90/G91, writes the polar and derived Cartesian positions and the machine C angle, and classifies motion into polar linear and polar arc — the latter emitting ActMcPolarSpiralContour, which keeps spiral geometry in central polar coordinates and stays continuous across ±180°. G41 / G42 compensation is resolved on the hypothetical plane, a C-axis speed clamp applies, and YA / ZB axis pairs are supported. PolarGCodeCheckSyntax scans for incompatible G codes before the mode syntaxes consume them. Custom Macro B — #var assignment with range-routed stores (#1#33 local per macro frame, #100#499 volatile cleared on M02/M30, #500#999 retained and persisted in the project, #3000#3999 system-control), boolean and logical operators, IF[..]GOTO n, IF[..]THEN <stmt>, WHILE[..]DO m / END m with a bounded-loop watchdog, and position and tool-offset system variables. M98 P_ L_, M198 external call, M99 return and M99 P{seq} early return; G65 one-shot macro call with AZ → #1#26 argument binding, and G66 / G67 modal macro. Cross-brand A shared DwellSyntax consumes G4 and G04 with the dialect held on the instance: Fanuc-family X / U seconds, P milliseconds, S spindle revolutions; the Siemens instance reads F seconds and S revolutions. Capturing the G04 spelling fixes a real defect — the un-captured spelling fell through to the flag and axis syntaxes, where a Fanuc G04 X0.5 dwell time became a ghost X motion word. Machine-declared M-codes — IMCodeDeclarationConfig and MCodeEffects let a machine state what its own OEM codes do (composite spindle+coolant codes, a tool-change trigger, turret T-word semantics), and MCodeExpansionSyntax expands a declared code into the canonical ISO flags the shared consumers already understand. Custom spindle M-codes drive the spindle direction through a machine-level ISpindleControlConfig; ISO M03 / M04 / M05 remain the built-in fallback. An S greater than zero with no direction ever issued assumes clockwise and emits SpindleDirection--AssumedCw, so the physics gate no longer silently produces zero mechanics for a whole file. Tool changes synthesize their axis travel. ToolChangeMotionSyntax overlays the per-axis tooling position from IToolingMcConfig onto the current pose (a NaN or missing axis stays put) and stamps a one-item rapid compound motion, and ToolChangeSemantic moves behind CompoundMotionSemantic so the tooling step lands at the tooling point. Programs that retract on their own overlay to a zero-length move and emit nothing extra. Per-brand pivot gates. PivotTransformationSyntax reverts to the ISO/Fanuc vocabulary (G43.4 plus the G68.x family), SiemensPivotTransformationSyntax gates TRAORI / CYCLE800, and HeidenhainPivotTransformationSyntax gates the M128 / PLANE vocabulary. All three compose the identical entry through the shared PivotTransformUtil. Exactly one brand gate belongs in a pipeline list — never register two. Controller presets are writable and shipped. A controller resource file is one serialized SoftNcRunner — the whole pipeline that decides how a brand's NC code is interpreted. ControllerPresetWriter serializes the built-in brand presets (CreateBrandPreset, WriteBrandPresetFile, WriteAllBrandPresetFiles) under Resource/Controller/ with the .Controller extension, and HiNc-Resource ships all five so the load browser starts populated. The static brand properties remain the source of truth; the files are regenerable snapshots. Writing needs no XFactory registration — reading one back does, because the loader drops unregistered pipeline entries silently rather than failing the load. Saved pipelines back-fill their system-wired dependencies on load. A project saved before a system-wired dependency existed never self-healed by round-tripping, because re-saving stamped a fresh API version on the same incomplete list. The SoftNcRunner XML constructor now appends the missing ones after the legacy version patches. A runner rehydrated from an older file still keeps the syntax list it was saved with, though — take the regenerated preset, or a fresh NcRunnerSuit built from it, rather than expecting an old file to grow new syntaxes. Machine-coordinate and tilted-plane failures report. G53 and G53.1 record their source G-code on the parsed block and emit Coord-MachCoord--005 / --006 / --007 on paths that used to fail silently. A G68.2 tilted plane the machine cannot reach emits Coord-Tilt--001 / --002, with a tool-axis-only IK retry that avoids a spurious warning on a machine with fewer than three rotary axes. Session-global sentence indexing. SyntaxPiece.SentenceIndex used to be assigned by two independent sequences, so indices collided as soon as a call was inlined mid-stream. The new SentenceIndexCounterDependency supplies every index at one chokepoint, so values are session-globally unique and strictly increasing in execution order, including nested and repeated calls. Inline plays can loop and jump, and playing a file no longer holds it open. Inline NC-code plays stamp their pieces with the command title as a pseudo-path, and every control-flow re-segmentation re-read the host file by that path — the existence check always failed, so loops fell through without looping. RunNc now registers the raw lines on NcLineSourceDependency and LabelScanUtil reads memory first, disk second. NC optimization and writeback Important NC optimization is not finished on the 3.2 line. What follows describes the leg as it stands, and it is published for review, not for production. Work that depends on optimized output should stay on the 3.1 line, serviced as 3.1.175.<patch>. The optimizer runs on the SoftNc pipeline by default. OptimizeToFiles keeps its signature, its script snippet and its HTTP route, but when EnableSoftNcRunner is on and the session holds played SyntaxPieceLayers, it delegates to the new OptimizeNcFiles; otherwise the frozen HardNc path runs unchanged. The new leg classifies the final SyntaxPiece layer, solves the per-step feed adjustments from milling physics, and regenerates text as anchored token edits over the verbatim source block — lines the optimizer does not touch round-trip byte-identically instead of being re-synthesized. Per-file results are retained in NcOptimizations. EnableIndividualStepAdjustmentLog drives both legs. Depth splition re-interpolates through a planned fragment path, with separate modal chains for the pre-build feed and the emission endpoint, per-step machine-to-program-frame inversion, and arc IJK recomputation including R-to-IJK conversion. Two cases where the frozen HardNc optimizer is silently wrong are downgraded to a non-split rewrite rather than reproduced: a G91 incremental block (the old fragment rewrite always emitted absolute coordinates), and a Heidenhain klartext block (the rewrite would splice ISO-shaped I/J/K words into a block whose arc centre comes from a preceding modal block). The compensation stage is no longer dead on the SoftNc leg. The HardNc baseline wrote the compensation into the step contexts while its output read the piece packs, so it never emitted a compensated coordinate at all. Each fragment endpoint is now offset — XYZ only, rotary words untouched — by the tool-tip deflection rotated into the leaf program frame the endpoint lives in, so a G68.2 tilted setup is compensated in the right direction. It is consumed on re-interpolated splition fragments only, and CompensationMask defaults to 0, so with no mask set the stage is a strict no-op. Output follows the source's decimal digits. Both legs used to write coordinates through a fixed F4 and every F word through F2, so a program stated to three decimals could come back with a fourth — an alarm on controllers strict about their least input increment. Digit counts are now scanned per word family over the played source texts with comment spans masked, floored at 3/3/0 and capped at 9, and threaded through the whole write path. The word-suppression tolerances and the F comparison grid derive from the resolved digits instead of the old fixed literals. Optimized NC is written back in the source file's encoding. NC play reads and optimized writes go through DetectRoundTripEncoding — BOM, then strict UTF-8, then Latin-1 — so an ANSI-family file (GBK, Big5, Shift-JIS) re-encodes to its original bytes instead of having every undecodable byte replaced. Comments in those encodings survive the round trip. A feed change no longer mints a one-step carrier fragment. Under an arc split that fragment is a degenerate arc whose start and end nearly coincide, which an incremental-IJK reader — or a control that treats begin == end as a full turn — expands into a full circle. An F re-statement is now handed to the feed run's next emitted fragment, the one that actually runs at that feed. A splition fragment at the head of the stream writes only the axis words the source stated, so it can no longer invent a Z0. whose value under the source's silence is just the home-fallback modal. Unparsable NC lines survive. A line the parser could not read used to be dropped from the runner's line list, so the optimized file silently lost it. HardNcRunner now rebuilds a parse-failed line as an opaque no-op — the empty-text parse inherits modal state like a blank line, and the raw text is restored for writers — and the optimizer mirrors the fallback, so IF blocks, #-variable macros, G68 R# and GOTO come through verbatim. A BuildNcLines--ParseFailed diagnostic still reports the line, and the line stays un-simulated. The output writer is also closed in a finally, so an exception can no longer leave a half-written file locked. First delivered on the 3.1.175.x service line. A Siemens CYCLE800 swivel counts as a macro line in the piece classifier, so it is preserved rather than treated as an optimizable motion block. The host key HiNC:OptCoreNum governs both legs again. It used to set only the legacy NcOptProc.CoreNum; once the SoftNc optimizer became the default path the key silently stopped governing anything. It now assigns both (0 = derive from the processor count). NC text writeback regenerates NC from a program that has already been played, in two stages over the session's finished syntax pieces: a converter turns the source piece stream into a destination stream plus a bidirectional source↔destination map keyed by sentence index, and a reverse segmenter serializes that stream back to lines. The data→text seam is a brand-agnostic sentence composer, first implemented for Fanuc. A patch-mode writer performs positional token edits — NaN deletes a word absorbing one separator space, insertion follows conventional order, trailing zeros trim keeping the dot — and refuses to rewrite variable, bracket and keyword values rather than corrupting them, reporting Writeback-Patch--VariableValue, --KeywordValue, --CommentOnlyText and --EditUnmatched. A second diagnostic home. NcManipulationDiagnosticProgress is a sibling of the play-time NcDiagnosticProgress, dedicated to NC-rework operations — writeback conversion and optimization — so a play reset never discards manipulation results and vice versa. Milling physics, training and measured data Physics runs in the native kernel. The per-step milling physics migrated into core.dll in stages: the engagement is scan-converted natively at the substraction completion point, the force kernel is reached through the same handle with no managed marshal, and the sequential cutting-temperature and wear chain runs from a native thermal session held per (tool, cutting parameter) pack. The switch is EnableNativeMillingPhysics, surfaced runtime-only (not persisted to project XML) as EnableNativeMillingPhysics and EnableNativeMillingPhysics, and it now defaults to true. Public entry points that used to reach the managed kernel still work: without a session pack they build an ad-hoc physics pack per live (cutting parameter, tool) pair and run natively. MillingToolPhysicsPack is an immutable record holding one tool's scalar derivations for one cutting-parameter set — spindle-buckle-to-tip length, observation height, effective cutting diameter, the bending/Z-deflection pair, the simplified rake angle, the minimum uncut chip thickness. MachiningSession owns the packs keyed by tool id (GetToolPhysicsPack) and invalidation is explicit at the points that know the state changed: every run-op start and the tool-change act, plus InvalidateToolPhysicsPacks. The corresponding MillingTool / MillingCutter members are now deliberately uncached pure computations. Milling-force waveforms are reproducible again. The parallel per-step force build read lazily built scalar caches on the shared tool objects; a thread could pass a cache guard and then read a value a concurrent writer had stored in between, so two plays of the same NC exported different forces in the thin-chip window of each tooth pass. The caches were first republished as single immutable references and then removed in favour of the frozen session pack. Thermal gating and seeding. The sequential cutting-temperature and wear build now checks EnablePhysics (spindle temperature deliberately keeps running), and the tool-change thermal seeding re-arms whenever the incoming chain state has no flute temperature list — which covers fault and cancel re-seeds, stop-then-replay residue, and EnablePhysics being switched on mid-session. The shank temperature list is seeded to the exact node count the thermal FEM builds, so trailing shank nodes no longer sit at 0 K after a tool change. Cutter geometry is validated up front. GetUpperBeamGeometryIssues collects upper-beam and shank configuration problems as keyed messages — for example an extended-cylinder beam whose full length sits below the flute height (Cutter-UpperBeam--BelowFluteHeight), which inverts the shank solid and makes the shank thermal model unbuildable. They are reported once per tool at BeginSession and at each tool change, instead of surfacing later as a null-reference cascade inside the thermal physics with nothing naming the beam. RakeFaceCuttingPara3d no longer throws on a six-field parameter string (the guard read the seventh element behind a >= 6 check), and the published coefficient index mappings are corrected: the LocalProfileMillingPara(Vec3d, Vec3d) constructor maps (x,y,z) to (Ksr, Kst, Ksa) / (Kpr, Kpt, Kpa), and the 2d element index range is 03 with 0=Ksc, 1=Ksn, 2=Kpc, 3=Kpn. Training diagnostics name their cause. The per-step warnings split into Train-StepLuggage--Unreadable (the step luggage row could not be read back) and Train-StepEngagement--Missing (the row is present but the engagement was never built because physics was inactive at simulation time). The gather pass counts both against the eligible steps: silent at zero, one summary warning at or below MissingEngagementAbortRatio (default 0.25), and a configuration error above it. A gather pass that produces no samples at all now reports immediately rather than throwing inside the SVD solve, separating “not one step touched the workpiece” from “touched steps whose mapped force data yielded no usable shots”. New training knobs. EnableDesignMatrixSolver (default false) solves the least squares on a thin QR of the design matrix instead of forming the normal equations, which square the condition number; DesignMatrixSvdRelativeTol is its truncation cutoff. EnableCwePhasePairing (default false) determines each step's rotation phase with a cutter-workpiece-engagement block-pairing detector instead of the self-bootstrapped lead parameter, for one-flute and symmetric two-flute cutters in light radial side cuts. ReTrainAnchorOutputScale exposes the virtual anchor weight. LastMillingParaTrainResult captures the outcome — kind, sample flags, outlier ratio, success, output file, parameter name and note, correlation R, filtered sample count, parameter XML, timestamp — so a caller reads it without re-opening the .mp file. Time mapping is reworked around absolute wall-clock time. AddTimeDataByFile accepts DateTime windows, stored as IFileTimeSection forms, and the project-scoped MappingAnchorDateTime — seeded set-once from the date of the first controller instant seen — converts controller timestamps onto one run-relative axis. EndTimecode replaces AccumulatedTime as the canonical end-of-step time. CSV timing survives midnight. Step durations derive from full date-bearing instants, so a multi-day recording no longer produces negative durations and a negative chart time axis, and a non-physical duration from a spliced recording is clamped with a validation warning instead of stalling physics evaluation. Wall-clock time is dense. The trio moved into one optional sub-object, StepActualTime (Timecode / Instant / IsInterpolated), reached through ActualTime. On CSV plays every built step is stamped: steps built from a controller row re-anchor, and the steps between extrapolate along the machine timeline and are marked interpolated, which makes the actual-time mapper window per-step exact instead of sparse-anchor scaled. Pure NC plays keep null stamps. An empty step-shot pairing window is a data gap, not something to interpolate across. The window builder used to expand outward to the rows bracketing the gap, silently pairing such steps with force values that were never measured — a training run over a file whose transients had been carved out produced a plausible correlation and a full set of coefficients derived entirely from fabricated rows. Such a window now skips its step and one Map-ShotGap--StepsSkipped warning per mapping call carries the count; a window-edge row is interpolated only when its bracketing rows span at most two spindle revolutions. “No cut / No data for step” on freshly-simulated steps is fixed. The bulk step-data readers cached the absence of rows the writer had not committed yet, so a step that had just been simulated could report no data until the program was re-run. A covered-but-missing index now drops the stale segment and re-reads. New end-of-play warnings, each once per session: Play-Touch--None (the play finished without any step touching the workpiece), Tool-FluteCount--Zero (physics is on and a milling cutter resolves to zero flutes, so feed per tooth is undefined), and Play-Physics--None (physics is on and at least one step touched the workpiece but no touched step carries a physics brief — naming the three things that gate it: a tool bound to the spindle, the spindle actually rotating, and the workpiece cutting parameter). That last state previously surfaced one process later, as a training run gathering zero samples. Performance is collected in its own section below. Cutter-location (CL) playback and CL-to-NC Replay an NX CLSF / APT-source toolpath directly. PlayClFile reads MSYS / FROM / GOTO / CIRCLE / RAPID / FEDRAT / SPINDL / COOLNT / TLDATA / LOAD. The parser is the NxClRunner preset — a SoftNcRunner composition — and the project holds a third runner suit ClsfRunnerSuit beside the NC and CSV suits. A TLDATA record creates the tool geometry when the tool house has no matching id. Run-ops are first class: ClRunner, MachiningSession.PlayClFile / RunClFile. See Cutter-Location (CL) Playback. A CL file can now drive a machine-tool chain, not only a ClMillingDevice. When the pipeline's kinematics dependency resolves to a live solver, ClToMcTransformSyntax inverse-solves every CLSF motion endpoint at parse time and expresses the result in the same ProgramToMcTransform vocabulary the NC pipeline uses — a tool-height entry from the active tool, a pivot entry anchored to the workpiece frame, and the solved rotary axes in raw degrees for the cyclic wrap tail-pass — so McLinear and the wrap are reused unchanged. Played onto a ClMillingDevice the same file is still pure cutter-location motion, which is what you want for verifying a CAM toolpath before any post-processor is involved. CL moves resample along the true path. GetClSteps walks IClPath.At for each intermediate step rather than linearly interpolating between the path's begin and end, so a CL arc actually curves and the tool axis rotates along the path instead of through it. ClLinear gained two guards on the same path: the near-parallel begin/end normal case short-circuits instead of falling into a degenerate cross product that yielded a NaN rotation axis, and the interpolation reads its rotation delta through the lazily-built property rather than a still-null backing field. CL tool changes teleport instead of stepping. A stepping change stamps collision detection and volume removal at the chain's current pose, and at CL session start that pose is identity — the tool sitting at program zero inside the workpiece. The CSV pipeline's teleporting semantic is promoted to the shared ToolingTeleportSemantic (the old CsvToolingTeleportSemantic element name is kept as a load-only alias), and the first GOTO after a LOAD / TOOL is forced into a reposition so a new tool never sweeps a cut from the previous operation's endpoint. Convert a played CL program into Fanuc NC files. ConvertClToNcFiles, its HTTP action, and the LocalProjectService / MachiningSession entry points walk the session's final syntax-piece layer, group pieces per source file and write one NC file per source, template-substituting [NcName] (default Output/[NcName].nc). It requires a prior play on a machine chain — a pure-CL device leaves no machine-solved sections to serialize — and reports ConvertClToNc--NoPlay otherwise. Stage-one results are retained in NcConversions as the hook for source↔output cross-navigation. A mission can declare the writeback through EnableConvertClToNcFiles and ClToNcFileTemplate. CL→MC hardening. Tool-offset resolution walked back to the distant LOAD block for every motion (O(N²) on production-scale files) and is now O(1) through a modal active-tool section; the documentary program-to-Pn stamp is stamped once per run rather than walked per motion; the program-zero query no longer deep-clones the whole equipment assembly per motion block; the warned-tool-id set is run-scoped, so the ClToMc--NoToolOffset warning is no longer suppressed on every run after the first; and MachineAxisConfig gains a public Clear() so a machine switch rebuilds the axis table instead of accumulating stale rotary axes. Session, project and command model A parser and its per-case data travel as one file. NcRunnerSuit bundles a runner with the dependency data a particular job needs, as a single file-loadable unit. The project holds three suits — NcRunnerSuit, CsvRunnerSuit and ClsfRunnerSuit — and ReadNcRunnerSuit / WriteNcRunnerSuit switch the active parser mid-project from a suit file. A switch attempted while a program is playing is refused with ReadNcRunnerSuit--Refused. One NC runner configuration is shareable across projects. Per-case data — tool offsets, work-coordinate offsets, Siemens frames, Heidenhain datums, retained macro variables, seeded brand parameter tables — travels as proxy placeholders inside SoftNcRunner and resolves against the owning project's per-case list, so a controller configuration is no longer welded to the job it was first built for. Machine-config consumers read the resolved view through GetEffectiveNcDependencyList; legacy <NcDependencyList> XML and NcEnv-based projects still load and migrate automatically. HTTP guards and one envelope. RequireActiveSessionAttribute answers a session-scoped action with HTTP 409 and an ApiActionResult.NoActiveSession() body when no session is active, instead of the previous null-reference 500; RequireLoadedProjectAttribute does the same for the project-level controller. Both are applied at the controller level and honour opt-out markers (AllowNoActiveSessionAttribute, AllowNoLoadedProjectAttribute). Mutating actions inject a fresh MessageCollector and return the collected notifications inline in the shared ApiActionResult envelope, so a REST or AI caller sees progress, success and error messages in the response instead of only out of band. LocalProjectServiceController exposes the project-level (session-independent) surface parallel to SessionShellController. Session commands declare themselves. CommandCatalogAttribute marks an ISessionCommand as user-addable and places it in a CommandCategory (Setup / Program / Optimization / Output / Flow, declaration order = display order) with an Order sort key and an optional wire kind (default: the class name minus the Command suffix, lower-cased). CommandFieldAttribute marks a bool / int / double / string property as a directly editable scalar with an optional label, unit and physics-licence flag, so a generic editor renders and updates it without a hand-written form. A command without the catalog attribute stays loadable from project files but is not offered for creation. Program File dispatches by kind. NcFileCommand gains an NcKind property (XML element NcKind, absent = Auto for legacy projects) and its mission label becomes “Program File”; each command resolves its own file, so a List of Program Files can mix brand NC, CL and CSV. Two session commands saved but could never be read back. ListCommand.Reg chained every type except NcOptOptionCommand and RecordMeshedGeomCommand, so any XML round-trip of an entry holding one threw KeyNotFoundException out of the XFactory generator lookup — reloading a saved project containing an NC Optimization Config command failed. Both are now chained. Naming. Title is an optional name shown in place of the type name, so nested command lists can be named in the mission tree. PreSettingCommand displays as “General Config” and NcOptOptionCommand as “NC Optimization Config” — display strings only, so serialization and endpoints are untouched. A bare non-list PlayerCommand root is normalized on read into a single enabled entry of the default ListCommand. Command titles, catalog categories and field labels are now localized, and a zh-Hans resource set was created (none existed before). Default-script template keys stay untranslated on purpose — they compose the C# comments and script title written into the user's .hincproj, which travels to other machines. Script faults are keyed errors. A CompilationErrorException or a faulted script task used to surface as an anonymous warning; ScriptCommand now reports ScriptCommand-Compile--Failed with the full diagnostic list and ScriptCommand-Run--Fault with the exception, both at Error severity. A fresh session re-homes the machining chain. ResetRuntime wrote the configured XYZ home but hard-coded ABC to 0, and it only ran on project switch or pace-player reset — never before a plain Play. A freshly loaded project therefore started from whatever pose the .mt happened to serialize, while the act stream interpolated from the home seed, so the first contour swept from a pose the machine was never at and cut along the way. The re-home now reads the rotary homes from the same home configuration and also runs at BeginSession; a mid-session replay is untouched. What a reset actually resets. ResetRuntime now also rewinds the NC-runner session state, so the next play restarts file and line indexing from scratch the way PowerReset does, and it resets the CL device pose to identity. It no longer clobbers MachiningResolution_mm: the runtime resolution is seeded from the workpiece's initial resolution only when a project loads, so an explicit override survives a runtime reset and a workpiece swap. Mixed runner kinds in one session are refused. NcRunnerSessionState remembers the runner that initialised it and RunNcLines refuses a different one with RunNcLines--RunnerMismatch — reachable now that NcKind.Auto makes mixed-kind missions a first-class flow. Stale state on a chain or project switch. Building the coordinate converter nulls the rotary solver when the chain is not an IXyzabcChain, so a solver built for the old machine no longer keeps converting after a switch to a CL device; and ClearCache now also calls ClearIdealGeomCache, so loading another project stops rendering the previous project's target geometry. Project-file operations are serialized through a zero-wait gate. A New / Load / Save / Reload arriving while another is in progress throws ProjectFileBusyException immediately instead of racing into a file-in-use IOException. AlignWorkpieceProgramZeroToIso computes in the machine-zero state. It reflects the assembly and zeroes every dynamic axis before querying displacements, so the alignment is correct even when the live machine's axes are displaced. RunCount counts runs started, incremented synchronously before the run's task launches and never reset. Pairing it with IsFinished in one snapshot lets a polling client distinguish “the run I started has finished” from a stale Finished left by a previous run. Geometry, rendering and native stability Disposing a display or geometry object still in use no longer crashes the process. A client disconnect, a meshed-geometry reset or an app shutdown could take the process down with an access violation. DispEngine and CubeTree native calls are now gated against a concurrent dispose, and disposals run serialized on a single background chain — IsDisposed reports the state and DisposeBackground enqueues a tree, or a collection of its attachments, onto that chain. Large geometry no longer freezes the UI. Solid builds its display topology off-thread and draws a wire bounding box with a “Loading” mark until it is ready. ClStrip raises a Cleared event after Clear, pairing with the existing PosAdded. A P/Invoke correctness sweep reconciled the managed declarations against the real export table. It fixed a non-existent export (substraction_ExpandToBox3d), two void natives declared as struct returns (a garbage register read), two ToString marshals that made the CLR free foreign memory, and a log-callback delegate nothing rooted against GC — native could call a dead thunk long after the P/Invoke returned. These are the crashes a user reports as “it crashes randomly”. Milled step colours no longer go stale at random. Step colours are baked into the native cube-tree attachment, but the refresh only flagged the strip while the display cache was freed immediately, so a frame landing in that window rebuilt the cache from stale colours and nothing cleaned it again. The service now cleans the cache once more after the re-stamp. A paired fix stops an empty strip display window swallowing a pending recolor indefinitely. The dimension bar reads on any background. It was a single hard-coded near-black stroke left over from the light-host era, invisible once the front end went dark. It is now drawn as a wider dark halo under a white main stroke, with the halo pushed back whole depth steps rather than the white pass nudged forward by half a depth LSB — which intermittently lost the depth test. New geometry API. CarveStl is the managed face of the native exact triangle-CSG container. Add is the boolean-union counterpart of Substract, returning UnmanagedAddition, and AddBySweepingVolume mirrors RemoveBySweepingVolume — the geometry-layer symmetric point for additive processes. There is no deposition step in the machining runner yet, so this is a geometry-level API only. FreeformBottomContour is the user-editable point-list bottom contour, mirroring the side contour with the key axis switched to radius. Performance and footprint Every figure below is a measurement with its conditions stated, and where a change cost time to buy correctness that is said too. Read the ratios rather than the absolute times: several campaigns were run on Debug builds or on small machines, deliberately, because a paired A/B on one machine answers “did this get faster” far more reliably than an unpaired Release number on a fast one. Milling physics in the native kernel The per-step physics moved into core.dll in stages — engagement scan conversion, the force kernel, then the sequential temperature and wear chain. Measured as a same-day paired A/B, managed leg against native leg, on one circular test program: Per touched step managed native Engagement build 46.0 ms 5.03 ms ~9× Force (GetMillingFoce) 17.1 ms 0.75 ms ~20× Temperature and wear chain 3.97 ms 0.24 ms ~16× Whole play 59.3 s / 16.1 GB allocated 40.6 s / 3.4 GB allocated 32% wall, 79% allocation Allocation is where the migration bites hardest: engagement construction alone fell from about 5.2 GB to 29 MB per step. Conditions. Debug x64, EnablePhysics on, collision off, one force worker, a two-core / four-thread laptop, ±10% thermal-throttle noise, single paired run per leg. Absolute times are not representative of a customer machine — the ratios are the claim. Numerical parity. Engagement, force and brief are bit-identical between the two legs on Windows. The Linux build is not bit-identical (different libm), so a cross-platform comparison should use a tolerance, not equality. Playing a long program stays linear NcOptOption.Equals ended on a null-propagating comparison of a dictionary that is created on demand and is null on virtually every option, so the whole comparison collapsed to false — an option compared unequal even to a copy of itself. Both record-on-change guards built on it were therefore dead: the session appended an option-map entry for every played act instead of only at change points, and the step rewrote unchanged entries. Reading the last recorded option through a LINQ LastOrDefault over a SortedList<,> — which has no indexed fast path — then walked the whole map each time, so the two defects together made a long play quadratic. Measured on a 2.35-million-line Siemens program: the option map now holds 1 entry instead of one per line, and the per-100,000-line rate stays flat instead of degrading from 73 s at the start of the file to about 11 minutes by 1.9 million lines. This applies to every runner and to sessions doing no optimization at all, because the call site is the session-level play loop. GetHashCode drops the dictionary in the same change, since it hashed by reference and would otherwise disagree with Equals — relevant if you use NcOptOption as a dictionary key. Where the time actually goes Worth knowing before you tune anything. After the migration, on the measured workload the whole parallel physics stage is about 3.3% of wall time, while the single-worker volume subtraction is about 77% — and that subtraction is single-worker as a correctness requirement, not as an oversight. Raising the force-worker count therefore buys nothing on any machine; the bottleneck moved rather than disappearing. What did change in the worker derivation is narrower than it sounds. An unmeasured six-core ceiling was removed, but it only ever governed the sweep workers, and only machines with nine or more logical processors see a different count; force workers are unchanged everywhere. The throughput benefit on such a machine has not been measured — the development machines are smaller — so this is a ceiling removal, not a claimed speedup. Queue depths became fixed item budgets (120 geometry, 3840 physics) rather than scaling with the core count, because those queues bound per-item memory: uncapped, a 64-core machine would have been handed 40,960-deep physics queues. On machines with fewer than six cores this is a small increase in bounded-queue memory (from 80 / 2560), which is the honest cost of the change. Loading a large STL workpiece Building the topology from an STL was quadratic in triangle count — a pointer-derived hash collapsed into a handful of buckets, so lookups degenerated into linear scans. On one 935,000-triangle binary STL, topology construction was 99.6% of the entire load; reading the file off disk was 0.16% of it. With a multiplicative hash mix the build is linear: Triangles before after worst bucket 100,000 8,711 ms 1,305 ms 6.7× 2,245 → 21 300,000 89,036 ms 4,750 ms 18.7× 6,593 → 23 Per-triangle cost is now flat (0.013 → 0.016 ms/tri across a 3× size increase), which is the real result: the cost grows with the mesh instead of with its square. Extrapolated to the full 935,000-triangle mesh that is roughly 14 minutes → 15 seconds. Deduplication and the resulting topology are unchanged — the equality predicate was not touched, and the 300,000-triangle case produces an identical 899,997 lines before and after. Separately, the managed-to-native STL handoff dropped from three full copies of the buffer (about 86 MB each, plus around twenty doubling reallocations) to two. Conditions. Native test harness, debug CRT — which inflates container-operation constants, so the absolute milliseconds are an upper bound. The composition breakdown and the complexity change are build-configuration independent. The full-mesh figure is an extrapolation, not a measured run. Re-triangulating after a cut The marching-cubes step gained a lookup table, and produces fewer triangles for the same surface: Tree before after triangles 17 MB diagnostic 0.63 s 0.29 s 2.17× 35% 30 MB demo 1.29 s 0.60 s 2.15× 35% 309 MB customer part 14.68 s 6.51 s 2.25× 43% Scope. This lands on the rebuild burst after a cut invalidates cached geometry, not on steady-state rendering, which draws from the display cache and is unchanged. It is also an approximation change, not purely a speedup: a non-finite cut drops its triangles, so a sub-voxel feature vanishes at that level of detail instead of being capped. That is what fixed the broken-face slabs seen on RTCP paths. The contact-loop extraction used by milling physics deliberately still uses the previous walk, so physics results are untouched. Session memory: a long program no longer exhausts the client A session retains every executed NC block for its whole lifetime. Once a block leaves the executing window its piece is now frozen to compact UTF-8. Measured on a 25,018-block play: session retention 406 MB → 142 MB, about 2.9×. The encoding itself is smaller than that ratio suggests — roughly 12 KB per line live against 1.6 KB frozen, about 12.9× — because a retained piece carries more than its JSON. The 2.9× is the figure that matters for whether a program fits in memory. The trade is explicit: after the freeze the JsonObject getter re-parses on every call and returns a fresh read-only snapshot, with no caching and no write-back. Code that reads the same piece repeatedly should hold the snapshot in a local. The switch is FreezeExecutedPieces, on by default. Sizing a meshed workpiece A cube tree costs roughly 3.2× its file size in RAM while loaded — a 10 GB .wct at 0.125 mm resolution is about 95 million nodes, holding around 25 GB of tree plus 6 GB of index. Tearing down a tree that size used to block the caller for over two minutes; disposal now runs serialized on a background chain, so the thread that dropped it does not wait. The remaining cost is genuine work: the live renderer must not be left showing geometry that no longer exists. Cutter-location files at production scale Three costs were removed from the CL-to-machine path, and on a production-scale file they are the difference between replaying and appearing to hang: tool-offset resolution walked back to the distant LOAD block for every motion (O(N²), now O(1) through a modal section), the documentary program-to-Pn stamp did the same walk (now stamped once per run), and the program-zero query deep-cloned the whole equipment assembly on every motion block (now a cached per-run matrix over the live assembly). These are complexity changes; they have not been separately timed. Smaller footprint The embedded default font is handed to the display engine from memory, so an 11 MB .ttf is no longer written into the process working directory on startup. The packages are x64-only, and HiNc-Resource no longer ships a duplicated nested copy of the CT-350 STL set. Things that cost more, on purpose Five-axis inverse kinematics. Tightening the orientation envelope from about 1.4e-3 rad to about 1e-6 rad — measured maxima 1.5e-8 rad on the hot path and 2.1e-8 on teleport, a tip deviation of 0.05 µm on a 50 mm tool — costs roughly eleven solver iterations where one used to do, so a posture-changing call went from about 23 µs to about 251 µs, and a teleport from 418 µs to 1607 µs. Only posture-changing RTCP and arc steps pay it: three-axis programs and constant-posture segments are exempt through the McLinear downgrade. In absolute terms a 1,432-step five-axis replay spends about 0.36 s in the solver. (Debug build including measurement overhead, so those microseconds are an upper bound.) Machine-coordinate linear stepping. ActMcXyzLinearContour derives its step count from the euclidean length of the machine XYZ delta rather than the largest single-axis component, so LinearResolution_mm caps actual tool-tip travel per step. A diagonal move therefore produces up to √3× more steps than before at the same setting — more work, for a sampling density that now means what the setting says. Lower the resolution if the old step count was what you were budgeting for. A tuning cliff worth knowing about MillingCycleDivisionNum saturates. Raising it past roughly 180 buys no additional training accuracy while the cost keeps climbing: a training run that takes about four minutes at 180 takes hours at 720 and needs on the order of 100 GB of RAM to do it. The default of 36 is for ordinary simulation; raise it for training, but not past the point where the curve flattens. Packaging, resources and hosting Shipped resources carry an ownership marker. ResourceDefaultMarker introduces the .default convention: files carry the marker before the final extension (AlTiBN.default.CoatingMaterial) and machine-tool packages carry it on the folder (MachineTool/Table-B1.default/). Marked items are system territory the seeder may refresh or delete; unmarked items belong to the user and are never touched. Seed copies the shipped defaults into the admin resource root at startup — anchored on the application base directory rather than the process working directory, version-stamped so steady-state boots do no work. A save-as flow must strip the marker so a user file cannot masquerade as a shipped default. HiNc-Resource ships more presets: Resource/Controller/<Brand>.default.Controller for all five brands, and StandardForcedAir / StandardWaterSolubleCoolant / StandardOilBasedCoolant coolant conditions, so those load browsers start populated instead of empty. CoolantHeatCondition gains name/note, the three static presets, preset find/match/apply, and side-file IO following the workpiece-material pattern — CoolantHeatConditionFile externalizes the condition to a .CoolantHeatCondition file. Obfuscation-safe DTOs. Obfuscar renames compiler-generated anonymous types and strips their constructor parameter names, so System.Text.Json threw on every ToPresentDto serialization in released assemblies — the geometry, cutter and transformer editors all returned HTTP 500 while Debug builds were fine. Every implementation now returns Dictionary<string, object> with nameof keys, which compile to string literals obfuscation cannot touch, and IToPresentDto documents the rule. See the wire-key list under Signature and shape changes. The embedded default font is Noto Sans CJK TC (SIL OFL 1.1) in place of the Big5-only HanWang WCL06, fed to the native engine from memory instead of writing an 11 MB Font/WCL06.ttf into the process working directory. Traditional, simplified and kana render from one face with zh-Hant glyph conventions. Explicit font paths still go through the file route. Third-party notices ship with the two packages that actually redistribute third-party bits: HiDisp (the native files under runtimes/ and the embedded font) and HiNc-Resource (the offline documentation site among its content files). HiLicense gained a real package description. Dependency updates — SQLitePCLRaw.bundle_e_sqlite3 is pinned to 3.0.3 (SQLite CVE-2025-6965), Microsoft.Data.Sqlite to 10.0.9 and Dapper to 2.1.79. Small public additions — DetectRoundTripEncoding, CompactNanOptions and named float literals in GetDouble, CycleUpperInclusive (the (l,u] cyclic window the existing overloads could not express), and AddAndGetIndex. IndexSegment no longer leaves an open run end when the match sits at either edge of the list. New diagnostics you may now see Several failure modes that used to be silent now report. These ids are searchable and filterable — they are the fastest way to find out what a run actually did. Id Means Play-Touch--None the play finished without any step touching the workpiece Play-Physics--None physics is on and steps touched, but no touched step carries a physics brief Tool-FluteCount--Zero physics is on and a milling cutter resolves to zero flutes SpindleDirection--AssumedCw an S word greater than zero with no direction ever issued Composition--NotLicensed external pipeline units were skipped for this session Script--NotLicensed an NC-embedded C# script was skipped SiemensToolOffset--TcdpRowMissing a Siemens (T, D) pair had no $TC_DP row; the generic tool height was used Comp-ToolHeight--001 a G43.4 H word could not be resolved Coord-MachCoord--005 / --006 / --007 a G53 or G53.1 machine-coordinate move failed on a path that used to fail silently Coord-Tilt--001 / --002 a G68.2 tilted plane the machine cannot reach BuildNcLines--ParseFailed a line could not be parsed; it survives verbatim but is not simulated RunNcLines--RunnerMismatch a second runner kind was attempted inside one session ReadNcRunnerSuit--Refused a suit switch was attempted while a program was playing PostExecution--MeshedGeomOutputRetired an old project still carries the retired meshed-geom output pair ConvertClToNc--NoPlay CL-to-NC conversion ran with no prior play on a machine chain ClToMc--NoToolOffset a CL motion resolved no tool offset Map-ShotGap--StepsSkipped steps were skipped because their shot pairing window held no measured row Train-StepEngagement--Missing a step's row is present but its engagement was never built Train-StepLuggage--Unreadable a step's luggage row could not be read back Writeback-Patch--* a writeback edit refused a variable, keyword or comment-only value, or matched nothing HeidenhainPlane--Unsupported / SiemensFrame--Unsupported / HeidenhainCycl--Unsupported the construct is recognized and consumed safely, but not simulated DeclaredMCode--UnmodeledEffects a machine-declared OEM M-code occurred; no effects are simulated for it"
},
"sample/Sample.Common.DemoSessionMessage.html": {
"href": "sample/Sample.Common.DemoSessionMessage.html",
"title": "Class DemoSessionMessage | HiAPI-C# 2025",
"summary": "Class DemoSessionMessage Namespace Sample.Common Assembly Hi.Sample.dll public static class DemoSessionMessage Inheritance object DemoSessionMessage Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using System; using System.Collections.Generic; using System.IO; using System.Linq; using Hi.Common.FileLines; using Hi.Common.Messages; using Hi.HiNcKits; using Hi.MachiningProcs; using Hi.MachiningSteps; using Hi.NcParsers; namespace Sample.Common; /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Common/DemoSessionMessage.cs)] /// </remarks> public static class DemoSessionMessage { #region Demo_UseSessionMessageHost internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService) { // 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. 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 (NcDiagnostic diagnostic in localProjectService.NcDiagnosticProgress.Diagnostics.ToList()) { 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\", shellMessages.Select(m => $\"[{m.GetSeverity()}] {m.GetId()}: {m.GetNotification()}\")); } #endregion #region ShowStepPresent internal static void ShowStepPresent( UserService userEnv, MachiningStep machiningStep) { foreach (var entry in userEnv.DisplayedStepPresentAccessList) { var present = entry.Value.Present; var valueText = string.Format(\"{0:\" + present.DataFormatString + \"}\", entry.Value.GetValueFunc.Invoke(machiningStep)); Console.WriteLine($\"{present.ShortName}: {valueText} {present.TailUnitString} ({present.Name} [{entry.Key}])\"); } } #endregion }"
},
"sample/Sample.Common.PlayerDivConfig.html": {
"href": "sample/Sample.Common.PlayerDivConfig.html",
"title": "Class PlayerDivConfig | HiAPI-C# 2025",
"summary": "Class PlayerDivConfig Namespace Sample.Common Assembly Hi.Sample.dll Per-user visibility flags for the Player page's divisions (charts and info panels), flattened into a single all-boolean config persisted through UserConfig. 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() 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"
},
"sample/Sample.Common.UserConfig.html": {
"href": "sample/Sample.Common.UserConfig.html",
"title": "Class UserConfig | HiAPI-C# 2025",
"summary": "Class UserConfig Namespace Sample.Common Assembly Hi.Sample.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() Remarks Sample-owned copy of the per-GUI user configuration, kept so the DemoSessionMessage step-present demo still compiles. Each GUI/APP keeps its own version; the core engine package (HiNc) no longer carries any GUI configuration type. 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<string> DisplayedStepPresentKeyList { get; set; } Property Value List<string> 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). Persisted alongside the rest of this UserConfig. 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"
},
"sample/Sample.Common.UserService.html": {
"href": "sample/Sample.Common.UserService.html",
"title": "Class UserService | HiAPI-C# 2025",
"summary": "Class UserService Namespace Sample.Common Assembly Hi.Sample.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() Remarks Sample-owned copy, kept so the DemoSessionMessage step-present demo still compiles. Each GUI/APP keeps its own version; the core engine package (HiNc) no longer carries this GUI service type. Constructors UserService(ILogger) Initializes a new instance of the UserService class. public UserService(ILogger logger) Parameters logger ILogger The logger instance. 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. Properties AdditionalStepPresentAccess Gets or sets additional step presentation access configurations. public Dictionary<string, PresentAccess> AdditionalStepPresentAccess { get; set; } Property Value Dictionary<string, PresentAccess> CandidateStepPresentKeyList Candidate Step Present Key List for display. Read only. public List<string> CandidateStepPresentKeyList { get; } Property Value List<string> DisplayedStepPresentAccessList StepPresentAccessList for display. Read only. public List<KeyValuePair<string, PresentAccess>> DisplayedStepPresentAccessList { get; } Property Value List<KeyValuePair<string, PresentAccess>> 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<string, PresentAccess> StepPresentAccessDictionary { get; } Property Value Dictionary<string, PresentAccess> 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()"
},
"sample/Sample.Common.html": {
"href": "sample/Sample.Common.html",
"title": "Namespace Sample.Common | HiAPI-C# 2025",
"summary": "Namespace Sample.Common Classes DemoSessionMessage PlayerDivConfig Per-user visibility flags for the Player page's divisions (charts and info panels), flattened into a single all-boolean config persisted through UserConfig. UserConfig User Configuration. UserService User Service."
},
"sample/Sample.Disp.DemoCylindroid.html": {
"href": "sample/Sample.Disp.DemoCylindroid.html",
"title": "Class DemoCylindroid | HiAPI-C# 2025",
"summary": "Class DemoCylindroid Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates the creation and visualization of Cylindroid objects. Includes examples of building a Cylindroid programmatically with PairZr points and serializing/deserializing via XML. public static class DemoCylindroid Inheritance object DemoCylindroid Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Disp; using Hi.Geom; using System; namespace Sample.Disp { /// <summary> /// Demonstrates the creation and visualization of <see cref=\"Cylindroid\"/> objects. /// Includes examples of building a <see cref=\"Cylindroid\"/> programmatically with /// <see cref=\"PairZr\"/> points and serializing/deserializing via XML. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoCylindroid.cs)] /// </remarks> public static class DemoCylindroid { internal static void BuildCylindorid() { Cylindroid cylindroid = new Cylindroid( new PairZr(0, 1), new PairZr(1, 1), new PairZr(1, 2), new PairZr(2, 2), new PairZr(8, 3)); DispEngine.Init(); DemoUtil.RunApplication(\"BuildCylindorid\", cylindroid.ToFaceDrawing()); } internal static void TestCylindoridXml() { Cylindroid cylindroid = new Cylindroid( new PairZr(0, 1), new PairZr(1, 1), new PairZr(1, 2), new PairZr(2, 2), new PairZr(4, 3)); var xmlElement = cylindroid.MakeXmlSource(null, null, true); Console.WriteLine(\"XML:\" + xmlElement); cylindroid = new Cylindroid(xmlElement); DispEngine.Init(); DemoUtil.RunApplication(\"BuildCylindorid\", cylindroid.ToFaceDrawing()); } static void Main() { BuildCylindorid(); //TestCylindoridXml(); } } }"
},
"sample/Sample.Disp.DemoDiscreteRgb.html": {
"href": "sample/Sample.Disp.DemoDiscreteRgb.html",
"title": "Class DemoDiscreteRgb | HiAPI-C# 2025",
"summary": "Class DemoDiscreteRgb Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates the use of discrete RGB colors for rendering multiple objects. Shows how to apply different colors to similar geometric shapes using the GetDiscreteRGB_Env(double, double) method from ColorUtil class. public class DemoDiscreteRgb : IDisplayee, IExpandToBox3d Inheritance object DemoDiscreteRgb Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Disp; using Hi.Disp.Flag; using Hi.Geom; using Hi.Coloring; namespace Sample.Disp { /// <summary> /// Demonstrates the use of discrete RGB colors for rendering multiple objects. /// Shows how to apply different colors to similar geometric shapes using the /// <see cref=\"ColorUtil.GetDiscreteRGB_Env\"/> method from <see cref=\"ColorUtil\"/> class. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoDiscreteRgb.cs)] /// </remarks> public class DemoDiscreteRgb : IDisplayee { /// <inheritdoc/> public void Display(Bind bind) { bind.Rgb = ColorUtil.GetDiscreteRGB_Env(); new Box3d(0, 0, 0, 1, 1, 1).ToDraw_Face().Display(bind); bind.Rgb = ColorUtil.GetDiscreteRGB_Env(); new Box3d(1, 0, 0, 2, 1, 1).ToDraw_Face().Display(bind); bind.Rgb = ColorUtil.GetDiscreteRGB_Env(); new Box3d(2, 0, 0, 3, 1, 1).ToDraw_Face().Display(bind); } /// <inheritdoc/> public void ExpandToBox3d(Box3d dst) { dst.Expand(new Vec3d(0, 0, 0)); dst.Expand(new Vec3d(3, 1, 1)); } static void Main() { DemoUtil.RunApplication(\"Demo Discrete I\", new DispList(new CoordinateDrawing(), new DemoDiscreteRgb())); } } } 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"
},
"sample/Sample.Disp.DemoDrawing.html": {
"href": "sample/Sample.Disp.DemoDrawing.html",
"title": "Class DemoDrawing | HiAPI-C# 2025",
"summary": "Class DemoDrawing Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates various drawing techniques using the HiAPI graphics system. Provides examples of primitive drawing, attribute specification, and rendering options. Includes methods for drawing lines, points, triangles, and other geometric primitives. public static class DemoDrawing Inheritance object DemoDrawing Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Geom; using Hi.Disp; using System.Collections.Generic; using Hi.Disp.Treat; using Hi.Coloring; namespace Sample.Disp { /// <summary> /// Demonstrates various drawing techniques using the HiAPI graphics system. /// Provides examples of primitive drawing, attribute specification, and rendering options. /// Includes methods for drawing lines, points, triangles, and other geometric primitives. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoDrawing.cs)] /// </remarks> public static class DemoDrawing { /// <summary> /// Demonstrates simple line drawing using raw vertex coordinates. /// Creates a basic line strip from three vertices and displays it using DemoUtil. /// </summary> public static void FreeDrawing() { #region DocSite.FreeDrawing double[] vs = {0,0,0 ,1,0,0 ,0,0,1}; DemoUtil.RunApplication(\"EasyDraw\" , new Drawing(vs, Stamp.V, GL.GL_LINE_STRIP)); #endregion } /// <summary> /// Demonstrates various types of line drawing techniques. /// Shows how to create points, line strips, line strips with normals, and colored line strips. /// Illustrates different ways to specify vertex attributes like position, color, and normal. /// </summary> public static void DrawLines() { List<Vec3d> ps; double[] vs; int n = 10; //vertex num ////create drawPoints ps = new List<Vec3d>(n); for (int i = 0; i < n; i++) ps.Add(new Vec3d(i, 0, 0)); vs = new double[ps.Count * 3]; for (int i = 0; i < ps.Count; i++) { vs[3 * i] = ps[i].x; vs[3 * i + 1] = ps[i].y; vs[3 * i + 2] = ps[i].z; } //V means Vertex Drawing drawPoints = new Drawing(vs, Stamp.V, GL.GL_POINTS); ////create drawLineStrip vs = new double[ps.Count * 3]; for (int i = 0; i < ps.Count; i++) { vs[3 * i] = i; vs[3 * i + 1] = 0; vs[3 * i + 2] = 1; } Drawing drawLineStrip = new Drawing(vs, Stamp.V, GL.GL_LINE_STRIP); ////create drawLineStripWithNormal //the content of vs is Nx,Ny,Nz,Vx,Vy,Vz, Nx,Ny,Nz,Vx,Vy,Vz, ... vs = new double[n * 6]; for (int i = 0; i < n; i++) { //nx,ny,nz vs[6 * i] = 1; vs[6 * i + 1] = 0; vs[6 * i + 2] = 0; //x,y,z vs[6 * i + 3] = i; vs[6 * i + 4] = 0; vs[6 * i + 5] = 2; } //V means Vertex; N means Normal Drawing drawLineStripWithNormal = new Drawing(vs, Stamp.NV, GL.GL_LINE_STRIP); ////create drawColorLines vs = new double[n * 6]; for (int i = 0; i < n; i++) { //the rgb values set casually. //r,g,b vs[6 * i] = i % 3 / 2D; vs[6 * i + 1] = i % 5 / 4D; vs[6 * i + 2] = i % 7 / 6D; //x,y,z vs[6 * i + 3] = i; vs[6 * i + 4] = 0; vs[6 * i + 5] = 3; } //V means Vertex; C means Color Drawing drawLineStripWithColor = new Drawing(vs, Stamp.CV, GL.GL_LINE_STRIP); DemoUtil.RunApplication(\"DrawLines\", new DispList(drawPoints, drawLineStrip , drawLineStripWithNormal, drawLineStripWithColor)); } /// <summary> /// Demonstrates drawing triangles using OpenGL primitives. /// Shows how to create colored triangles (CV) and colored triangles with normals (CNV). /// Illustrates packing of vertex attributes (color, normal, position) into arrays for rendering. /// </summary> public static void DrawTrianglesByPrimitives() { int n = 10;// triangle num double[] vs; ////create drawTrisCV //each triangle has 3 point; each point has r,g,b,x,y,z, totally 6 doubles. vs = new double[n * 3 * 6]; for (int i = 0, k = 0; i < n; i++) { //the rgb values set as casual. Vec3d rgb = ColorUtil.GetDiscreteRgb(i); Tri3d tri = new Tri3d(new Vec3d(i, 0, 0), new Vec3d(i + 1, 0, 0), new Vec3d(i + 0.5, 0, 1)); for (int j = 0; j < 3; j++) { vs[k++] = rgb.x; vs[k++] = rgb.y; vs[k++] = rgb.z; vs[k++] = tri.ps[j].x; vs[k++] = tri.ps[j].y; vs[k++] = tri.ps[j].z; } } //V means Vertex; C means Color Drawing drawTrisCV = new Drawing(vs, Stamp.CV, GL.GL_TRIANGLES); ////create drawTrisCNV /////each triangle has 3 point; each point has r,g,b,nx,ny,nz,x,y,z, totally 6 doubles. vs = new double[n * 3 * 9]; for (int i = 0, k = 0; i < n; i++) { //the rgb values set as casual. Vec3d rgb = ColorUtil.GetDiscreteRgb(i); Tri3d tri = new Tri3d(new Vec3d(i, 0, 3), new Vec3d(i + 1, 0, 3), new Vec3d(i + 0.5, 0, 4)); Vec3d nn = tri.GetNormal(); for (int j = 0; j < 3; j++) { vs[k++] = rgb.x; vs[k++] = rgb.y; vs[k++] = rgb.z; vs[k++] = nn.x; vs[k++] = nn.y; vs[k++] = nn.z; vs[k++] = tri.ps[j].x; vs[k++] = tri.ps[j].y; vs[k++] = tri.ps[j].z; } } //V means Vertex; C means Color; N means Normal Drawing drawTrisCNV = new Drawing(vs, Stamp.CNV, GL.GL_TRIANGLES); //the color of colorTrisDraw is not influence by outer color setting. DemoUtil.RunApplication(\"DrawTrianglesByPrimitives\", new DispList(new RgbTreat(1, 0, 0), drawTrisCV, drawTrisCNV)); } /// <summary> /// Demonstrates drawing 3D triangles using the Tri3d helper class. /// Creates a series of triangles and renders them as both face (filled) and line (wireframe) drawings. /// Shows how to apply different colors to faces and lines of the same geometry. /// </summary> public static void DrawTri3d() { int n = 10; List<Tri3d> tris = new List<Tri3d>(n); for (int i = 0; i < n; i++) tris.Add(new Tri3d(new Vec3d(i, 0, 0), new Vec3d(i + 1, 0, 0), new Vec3d(i + 0.5, 0, 1))); Drawing faceDraw = tris.GetFaceDrawing(); Drawing linesDraw = tris.ToLineDrawing(); DemoUtil.RunApplication(\"DrawTri3d\", new DispList(new RgbTreat(0, 0, 1), linesDraw , new RgbTreat(1, 0, 0), faceDraw)); } static void Main() { //FreeDrawing(); //DrawLines(); //DrawTrianglesByPrimitives(); DrawTri3d(); } } } Methods DrawLines() Demonstrates various types of line drawing techniques. Shows how to create points, line strips, line strips with normals, and colored line strips. Illustrates different ways to specify vertex attributes like position, color, and normal. public static void DrawLines() DrawTri3d() Demonstrates drawing 3D triangles using the Tri3d helper class. Creates a series of triangles and renders them as both face (filled) and line (wireframe) drawings. Shows how to apply different colors to faces and lines of the same geometry. public static void DrawTri3d() DrawTrianglesByPrimitives() Demonstrates drawing triangles using OpenGL primitives. Shows how to create colored triangles (CV) and colored triangles with normals (CNV). Illustrates packing of vertex attributes (color, normal, position) into arrays for rendering. public static void DrawTrianglesByPrimitives() FreeDrawing() Demonstrates simple line drawing using raw vertex coordinates. Creates a basic line strip from three vertices and displays it using DemoUtil. public static void FreeDrawing()"
},
"sample/Sample.Disp.DemoPick1.html": {
"href": "sample/Sample.Disp.DemoPick1.html",
"title": "Class DemoPick1 | HiAPI-C# 2025",
"summary": "Class DemoPick1 Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates basic object picking with mouse interaction in the HiAPI system. Shows how to create a pickable 3D object that responds to mouse events by changing its appearance. Implements the Pickable base class to enable mouse event handling. public class DemoPick1 : Pickable, IGetPickable, IDisposable, IDisplayee, IExpandToBox3d Inheritance object Pickable DemoPick1 Implements IGetPickable IDisposable IDisplayee IExpandToBox3d 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(bool) Pickable.Dispose() object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Geom; using Hi.Disp; using Hi.Native; namespace Sample.Disp { /// <summary> /// Demonstrates basic object picking with mouse interaction in the HiAPI system. /// Shows how to create a pickable 3D object that responds to mouse events by changing its appearance. /// Implements the Pickable base class to enable mouse event handling. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoPick1.cs)] /// </remarks> public class DemoPick1 : Pickable, IDisplayee { bool isMouseOver = false; /// <inheritdoc/> public void Display(Bind bind) { bind.PickID = PickingID; bind.Rgb = new Vec3d(isMouseOver ? 0 : 1, 1, 1); new Box3d(0, 0, 0, 1, 1, 1).DisplayFace(bind); bind.PickID = 0; } /// <inheritdoc/> public void ExpandToBox3d(Box3d dst) { dst.Expand(new Vec3d(0, 0, 0)); dst.Expand(new Vec3d(1, 1, 1)); } /// <inheritdoc/> public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) { isMouseOver = true; } /// <inheritdoc/> public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) { isMouseOver = false; } /// <summary> /// Entry point for the DemoPick1 example. /// Creates and displays a simple pickable object that changes color on mouse hover. /// </summary> static void Main() { DemoUtil.RunApplication(\"DemoPick1\", new DemoPick1()); } } } 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 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"
},
"sample/Sample.Disp.DemoPick2.html": {
"href": "sample/Sample.Disp.DemoPick2.html",
"title": "Class DemoPick2 | HiAPI-C# 2025",
"summary": "Class DemoPick2 Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates advanced object picking with multiple pickable objects. Shows how to create and manage multiple pickable objects with different visual appearances. Implements proper resource cleanup through the IDisposable interface. public class DemoPick2 : IDisplayee, IExpandToBox3d, IDisposable Inheritance object DemoPick2 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() Remarks Source Code using Hi.Geom; using Hi.Disp; using System; using Hi.Coloring; namespace Sample.Disp { /// <summary> /// Demonstrates advanced object picking with multiple pickable objects. /// Shows how to create and manage multiple pickable objects with different visual appearances. /// Implements proper resource cleanup through the IDisposable interface. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoPick2.cs)] /// </remarks> public class DemoPick2 : IDisplayee, IDisposable { readonly Pickable pickableA = new ShowEventPickable { Tag = \"A\" }; readonly Pickable pickableB = new ShowEventPickable { Tag = \"B\" }; readonly Pickable pickableC = new ShowEventPickable { Tag = \"C\" }; /// <inheritdoc/> public void Display(Bind bind) { bind.PickID = pickableA.PickingID; bind.Rgb = ColorUtil.GetDiscreteRgb(1); new Box3d(0, 0, 0, 1, 1, 1).DisplayFace(bind); bind.PickID = pickableB.PickingID; bind.Rgb = ColorUtil.GetDiscreteRgb(2); new Box3d(0, 0, 1, 1, 1, 2).DisplayFace(bind); bind.PickID = pickableC.PickingID; bind.Rgb = ColorUtil.GetDiscreteRgb(3); new Box3d(0, 0, 2, 1, 1, 3).DisplayFace(bind); bind.PickID = 0; } /// <inheritdoc/> public void ExpandToBox3d(Box3d dst) { dst.Expand(new Vec3d(0, 0, 0)); dst.Expand(new Vec3d(1, 1, 3)); } #region IDisposable Support private bool disposedValue = false; // To detect redundant calls /// <inheritdoc/> protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { pickableA.Dispose(); pickableB.Dispose(); pickableC.Dispose(); } disposedValue = true; } } /// <inheritdoc/> public void Dispose() { Dispose(true); } #endregion /// <summary> /// Entry point for the DemoPick2 example. /// Creates and displays multiple pickable objects with distinct colors and positions. /// Demonstrates separation of picking behavior from visual representation. /// </summary> static void Main() { DemoUtil.RunApplication(\"DemoPick2\", new DemoPick2()); } } } 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"
},
"sample/Sample.Disp.DemoPickable.html": {
"href": "sample/Sample.Disp.DemoPickable.html",
"title": "Class DemoPickable | HiAPI-C# 2025",
"summary": "Class DemoPickable Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates creation of pickable 3D geometry at the primitive level. Shows how to assign picking IDs directly to geometry vertices and create interactive triangles. Uses a lower-level approach than the Pickable base class for more precise control. public class DemoPickable : IDisplayee, IExpandToBox3d Inheritance object DemoPickable Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Disp; using Hi.Geom; using System; namespace Sample.Disp; /// <summary> /// Demonstrates creation of pickable 3D geometry at the primitive level. /// Shows how to assign picking IDs directly to geometry vertices and create interactive triangles. /// Uses a lower-level approach than the Pickable base class for more precise control. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoPickable.cs)] /// </remarks> public class DemoPickable : IDisplayee { private readonly Drawing draw; private readonly ShowEventPickable pickable; /// <summary> /// Initializes a new instance of DemoPickable. /// Creates a pickable triangle with a specific picking ID for user interaction. /// </summary> public DemoPickable() { pickable = new ShowEventPickable(); double pid = pickable.PickingID; double[] vs = new double[] { //pickID, x,y,z pid, 0,0.1,0.1, pid, 0.1,0,0, pid, 0.1,0,0.1 }; draw = new Drawing(vs, Stamp.PV, GL.GL_TRIANGLES); } /// <inheritdoc/> public void Display(Bind bind) { draw.Display(bind); } /// <inheritdoc/> public void ExpandToBox3d(Box3d dst) { draw.ExpandToBox3d(dst); } /// <summary> /// Entry point for the DemoPickable example. /// Creates and displays a pickable triangle that can respond to mouse events. /// Demonstrates integration of picking functionality with geometric primitives. /// </summary> [STAThread] public static void Main() { DemoUtil.RunApplication(\"DemoPickable\", new DemoPickable()); } } Constructors DemoPickable() Initializes a new instance of DemoPickable. Creates a pickable triangle with a specific picking ID for user interaction. public DemoPickable() 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 Main() Entry point for the DemoPickable example. Creates and displays a pickable triangle that can respond to mouse events. Demonstrates integration of picking functionality with geometric primitives. [STAThread] public static void Main()"
},
"sample/Sample.Disp.DemoSatellite.html": {
"href": "sample/Sample.Disp.DemoSatellite.html",
"title": "Class DemoSatellite | HiAPI-C# 2025",
"summary": "Class DemoSatellite Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates a simple solar system animation using IDisplayee interface. Shows how to create a hierarchical transform structure with sun, earth and moon using Mat4d matrices and model matrix stack transformations. public class DemoSatellite : IDisplayee, IExpandToBox3d Inheritance object DemoSatellite Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Geom; using Hi.Disp; namespace Sample.Disp { /// <summary> /// Demonstrates a simple solar system animation using <see cref=\"IDisplayee\"/> interface. /// Shows how to create a hierarchical transform structure with sun, earth and moon using /// <see cref=\"Mat4d\"/> matrices and model matrix stack transformations. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoSatellite.cs)] /// </remarks> public class DemoSatellite : IDisplayee { Drawing sun; Drawing earth; Drawing moon; double angle_earth; double angle_moon; DemoSatellite() { sun = Box3d.CenterUnitBox.ScaleFromCenter(4).ToDraw_Face(); earth = Box3d.CenterUnitBox.ScaleFromCenter(2).ToDraw_Face(); moon = Box3d.CenterUnitBox.ToDraw_Face(); } /// <inheritdoc/> public void Display(Bind bind) { sun.Display(bind); bind.ModelMatStack.Push(); bind.ModelMatStack.Mul(new Mat4d(new AxisAngle4d(new Vec3d(0, 0, 1), angle_earth += 0.03))); bind.ModelMatStack.Mul(new Mat4d(new Vec3d(12, 0, 0))); earth.Display(bind); bind.ModelMatStack.Push(); bind.ModelMatStack.Mul(new Mat4d(new AxisAngle4d(new Vec3d(0, 0, 1), angle_moon += 0.02))); bind.ModelMatStack.Mul(new Mat4d(new Vec3d(4, 0, 0))); moon.Display(bind); bind.ModelMatStack.Pop(); bind.ModelMatStack.Pop(); } /// <inheritdoc/> public void ExpandToBox3d(Box3d dst) { dst.Expand(new Vec3d(-14, -14, -2)); dst.Expand(new Vec3d(14, 14, 2)); } static void Main() { DemoUtil.RunApplication(\"DemoSatellite\", new DemoSatellite()); } } } 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"
},
"sample/Sample.Disp.DemoStl.html": {
"href": "sample/Sample.Disp.DemoStl.html",
"title": "Class DemoStl | HiAPI-C# 2025",
"summary": "Class DemoStl Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Demonstrates the loading, manipulation, and display of STL (stereolithography) files in HiAPI. Shows operations like loading STL data, transforming geometries, and basic visualization. public static class DemoStl Inheritance object DemoStl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Disp; using Hi.Geom; using Hi.WpfPlus.Disp; using System; namespace Sample.Disp { /// <summary> /// Demonstrates the loading, manipulation, and display of STL (stereolithography) files in HiAPI. /// Shows operations like loading STL data, transforming geometries, and basic visualization. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoStl.cs)] /// </remarks> public static class DemoStl { internal static void TransformStl() { #region DocSite.TransformStl Stl stl; stl = new Stl(\"Demo/cubic.stl\"); //scale the stl to 100x. stl.Transform(new Mat4d(100)); //create a new stl file. stl.WriteBin(\"big_cubic.stl\"); stl = new Stl(\"Demo/cubic.stl\"); //move the stl by (100,0,0) stl.Transform(new Mat4d(new Vec3d(100, 0, 0))); //create a new stl file. stl.WriteBin(\"offset_x100_cubic.stl\"); #endregion } internal static void DemoCommonUsage() { #region DocSite.CommonUsage Stl stl = new Stl(\"Disp/cubic.stl\"); Box3d bouindingbox = new Box3d(stl); Console.WriteLine(\"bouindingbox.Min: \" + bouindingbox.Min); Console.WriteLine(\"bouindingbox.Max: \" + bouindingbox.Max); Console.WriteLine(\"bouindingbox.Center: \" + bouindingbox.Center); DispFrameUtil.Call(\"DemoForm\", stl.ToFaceDrawing()); #endregion } static void Main() { DemoCommonUsage(); } } }"
},
"sample/Sample.Disp.DemoUtil.html": {
"href": "sample/Sample.Disp.DemoUtil.html",
"title": "Class DemoUtil | HiAPI-C# 2025",
"summary": "Class DemoUtil Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Provides utility functions for running HiAPI display examples in a WPF environment. Contains helper methods that simplify the setup and execution of WPF applications with HiAPI rendering. Handles common initialization and cleanup tasks for visualization examples. public static class DemoUtil Inheritance object DemoUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Disp; using Hi.HiNcKits; using Hi.Licenses; using Hi.WpfPlus.Disp; using Microsoft.Extensions.Logging; using System.Windows; namespace Sample.Disp; /// <summary> /// Provides utility functions for running HiAPI display examples in a WPF environment. /// Contains helper methods that simplify the setup and execution of WPF applications with HiAPI rendering. /// Handles common initialization and cleanup tasks for visualization examples. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoUtil.cs)] /// </remarks> public static class DemoUtil { /// <summary> /// Creates and runs a WPF application with a RenderingWindow to display 3D content. /// Handles proper initialization and cleanup of HiAPI resources including MongoDB server, /// display engine, and licensing. /// </summary> /// <param name=\"title\">The title for the application window</param> /// <param name=\"displayee\">The object that implements IDisplayee to be rendered</param> public static void RunApplication(string title, IDisplayee displayee) { using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample.Wpf\")); Application app = new Application(); app.Exit += (o, e) => { LocalApp.AppEnd(); }; app.Run(new RenderingWindow() { Title = title, Displayee = displayee }); } } Methods RunApplication(string, IDisplayee) Creates and runs a WPF application with a RenderingWindow to display 3D content. Handles proper initialization and cleanup of HiAPI resources including MongoDB server, display engine, and licensing. public static void RunApplication(string title, IDisplayee displayee) Parameters title string The title for the application window displayee IDisplayee The object that implements IDisplayee to be rendered"
},
"sample/Sample.Disp.HeidenhainCoordinateEntryDisplayee.html": {
"href": "sample/Sample.Disp.HeidenhainCoordinateEntryDisplayee.html",
"title": "Class HeidenhainCoordinateEntryDisplayee | HiAPI-C# 2025",
"summary": "Class HeidenhainCoordinateEntryDisplayee Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Displayee for Heidenhain coordinate entry visualization. public class HeidenhainCoordinateEntryDisplayee : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inheritance object HeidenhainCoordinateEntryDisplayee Implements 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() Constructors HeidenhainCoordinateEntryDisplayee(Func<HardNcEnv>, Func<IMachiningEquipment>) Initializes a new instance. public HeidenhainCoordinateEntryDisplayee(Func<HardNcEnv> ncEnvFunc, Func<IMachiningEquipment> millingEquipmentSource) Parameters ncEnvFunc Func<HardNcEnv> The function that provides the NcEnv instance. millingEquipmentSource Func<IMachiningEquipment> The function that provides the machining equipment. Properties HeidenhainCycleDef247Q339 Gets or sets the Heidenhain Cycle Def 247 Q339 value. public int HeidenhainCycleDef247Q339 { get; set; } Property Value int HeidenhainCycleDef7Arg Gets or sets the Heidenhain Cycle Def 7 arguments. public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; } Property Value HeidenhainCycleDef7Arg MillingEquipmentFunc Gets or sets the function that provides the machining equipment. public Func<IMachiningEquipment> MillingEquipmentFunc { get; set; } Property Value Func<IMachiningEquipment> NcEnvFunc Gets or sets the function that provides the NcEnv instance. public Func<HardNcEnv> NcEnvFunc { get; set; } Property Value Func<HardNcEnv> ShowHeidenhainDatumPreset Gets or sets whether to show Heidenhain datum preset information. public bool ShowHeidenhainDatumPreset { get; set; } Property Value bool ShowHeidenhainDatumShift Gets or sets whether to show Heidenhain datum shift information. public bool ShowHeidenhainDatumShift { get; set; } 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. 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"
},
"sample/Sample.Disp.IsoCoordinateEntryDisplayee.html": {
"href": "sample/Sample.Disp.IsoCoordinateEntryDisplayee.html",
"title": "Class IsoCoordinateEntryDisplayee | HiAPI-C# 2025",
"summary": "Class IsoCoordinateEntryDisplayee Namespace Sample.Disp Assembly Hi.Sample.Wpf.dll Displayee for ISO coordinate entry visualization. public class IsoCoordinateEntryDisplayee : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inheritance object IsoCoordinateEntryDisplayee Implements 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() Constructors IsoCoordinateEntryDisplayee(Func<HardNcEnv>, Func<IMachiningEquipment>) Initializes a new instance of the IsoCoordinateEntryDisplayee class. public IsoCoordinateEntryDisplayee(Func<HardNcEnv> ncEnvFunc, Func<IMachiningEquipment> millingEquipmentSource) Parameters ncEnvFunc Func<HardNcEnv> The function that provides the NcEnv instance. millingEquipmentSource Func<IMachiningEquipment> The function that provides the machining equipment. Properties IsoCoordinateId Gets or sets the ISO coordinate key (e.g. “G54”, “G59.2”). public string IsoCoordinateId { get; set; } Property Value string MillingEquipmentFunc Gets or sets the function that provides the machining equipment. public Func<IMachiningEquipment> MillingEquipmentFunc { get; set; } Property Value Func<IMachiningEquipment> NcEnvFunc Gets or sets the function that provides the NcEnv instance. public Func<HardNcEnv> NcEnvFunc { get; set; } Property Value Func<HardNcEnv> 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"
},
"sample/Sample.Disp.MachiningProjectDisplayee.html": {
"href": "sample/Sample.Disp.MachiningProjectDisplayee.html",
"title": "Class MachiningProjectDisplayee | HiAPI-C# 2025",
"summary": "Class MachiningProjectDisplayee Namespace Sample.Disp Assembly Hi.Sample.Wpf.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() 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"
},
"sample/Sample.Disp.html": {
"href": "sample/Sample.Disp.html",
"title": "Namespace Sample.Disp | HiAPI-C# 2025",
"summary": "Namespace Sample.Disp Classes DemoCylindroid Demonstrates the creation and visualization of Cylindroid objects. Includes examples of building a Cylindroid programmatically with PairZr points and serializing/deserializing via XML. DemoDiscreteRgb Demonstrates the use of discrete RGB colors for rendering multiple objects. Shows how to apply different colors to similar geometric shapes using the GetDiscreteRGB_Env(double, double) method from ColorUtil class. DemoDrawing Demonstrates various drawing techniques using the HiAPI graphics system. Provides examples of primitive drawing, attribute specification, and rendering options. Includes methods for drawing lines, points, triangles, and other geometric primitives. DemoPick1 Demonstrates basic object picking with mouse interaction in the HiAPI system. Shows how to create a pickable 3D object that responds to mouse events by changing its appearance. Implements the Pickable base class to enable mouse event handling. DemoPick2 Demonstrates advanced object picking with multiple pickable objects. Shows how to create and manage multiple pickable objects with different visual appearances. Implements proper resource cleanup through the IDisposable interface. DemoPickable Demonstrates creation of pickable 3D geometry at the primitive level. Shows how to assign picking IDs directly to geometry vertices and create interactive triangles. Uses a lower-level approach than the Pickable base class for more precise control. DemoSatellite Demonstrates a simple solar system animation using IDisplayee interface. Shows how to create a hierarchical transform structure with sun, earth and moon using Mat4d matrices and model matrix stack transformations. DemoStl Demonstrates the loading, manipulation, and display of STL (stereolithography) files in HiAPI. Shows operations like loading STL data, transforming geometries, and basic visualization. DemoUtil Provides utility functions for running HiAPI display examples in a WPF environment. Contains helper methods that simplify the setup and execution of WPF applications with HiAPI rendering. Handles common initialization and cleanup tasks for visualization examples. HeidenhainCoordinateEntryDisplayee Displayee for Heidenhain coordinate entry visualization. IsoCoordinateEntryDisplayee Displayee for ISO coordinate entry visualization. MachiningProjectDisplayee Represents a displayable wrapper for a machining project."
},
"sample/Sample.Geom.DemoBuildGeom.html": {
"href": "sample/Sample.Geom.DemoBuildGeom.html",
"title": "Class DemoBuildGeom | HiAPI-C# 2025",
"summary": "Class DemoBuildGeom Namespace Sample.Geom Assembly Hi.Sample.dll Demonstrates the creation and manipulation of geometric objects in HiAPI. Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. public static class DemoBuildGeom Inheritance object DemoBuildGeom Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using System; using System.Collections.Generic; using Hi.Geom; using Hi.Mech.Topo; namespace Sample.Geom; /// <summary> /// Demonstrates the creation and manipulation of geometric objects in HiAPI. /// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] /// </remarks> public static class DemoBuildGeom { /// <summary> /// Generates a collection of geometric objects for demonstration purposes. /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. /// </summary> /// <returns>A list of geometries implementing the IGetStl interface</returns> public static List<IGetStl> GenGeoms() { Box3d box = new Box3d(0, 0, -50, 70, 50, 0); Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]); Stl stl = new Stl(\"geom.stl\"); StlFile stlFile = new StlFile(\"geom.stl\"); TransformationGeom transformationGeom = new TransformationGeom() { Transformer = new GeneralTransform(1, new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), new StaticTranslation(new Vec3d(0, 0, 0))), Geom = stl }; GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); return new List<IGetStl>([box, cylindroid, stl, stlFile, transformationGeom]); } } Methods GenGeoms() Generates a collection of geometric objects for demonstration purposes. Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. public static List<IGetStl> GenGeoms() Returns List<IGetStl> A list of geometries implementing the IGetStl interface"
},
"sample/Sample.Geom.DemoIExpandToBox3d.html": {
"href": "sample/Sample.Geom.DemoIExpandToBox3d.html",
"title": "Class DemoIExpandToBox3d | HiAPI-C# 2025",
"summary": "Class DemoIExpandToBox3d Namespace Sample.Geom Assembly Hi.Sample.dll Demonstrates how to create and calculate bounding boxes for different geometric objects. Shows the use of Box3d to encompass multiple geometric elements with a single boundary. public static class DemoIExpandToBox3d Inheritance object DemoIExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Geom; using System; namespace Sample.Geom; /// <summary> /// Demonstrates how to create and calculate bounding boxes for different geometric objects. /// Shows the use of Box3d to encompass multiple geometric elements with a single boundary. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoIExpandToBox3d.cs)] /// </remarks> public static class DemoIExpandToBox3d { static void Main() { #region DocSite.CountBoundingBox Box3d objA = new Box3d(0, 0, 0, 1, 1, 1); Box3d objB = new Box3d(-1, -2, -3, 3, 2, 1); Vec3d objC = new Vec3d(-2, 3, -5); Box3d boundingbox = new Box3d(objA, objB, objC); Console.WriteLine(\"boundingbox: \" + boundingbox); #endregion } }"
},
"sample/Sample.Geom.html": {
"href": "sample/Sample.Geom.html",
"title": "Namespace Sample.Geom | HiAPI-C# 2025",
"summary": "Namespace Sample.Geom The Sample.Geom namespace provides examples for using the Hi.Geom API to create and manipulate geometric objects. This namespace demonstrates how to create basic geometric shapes (like Box3d and Cylindroid), apply transformations with TransformationGeom, and work with Stl files. These examples serve as practical reference code for developers who need to understand the basic usage of HiAPI's geometry module. Classes DemoBuildGeom Demonstrates the creation and manipulation of geometric objects in HiAPI. Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. DemoIExpandToBox3d Demonstrates how to create and calculate bounding boxes for different geometric objects. Shows the use of Box3d to encompass multiple geometric elements with a single boundary."
},
"sample/Sample.HelloHiAPI.html": {
"href": "sample/Sample.HelloHiAPI.html",
"title": "Class HelloHiAPI | HiAPI-C# 2025",
"summary": "Class HelloHiAPI Namespace Sample Assembly Hi.Sample.dll A sample class demonstrating initialization and usage of the HiAPI framework. Shows the basic setup of display engine, MongoDB server, licensing, and other core functionality. public static class HelloHiAPI Inheritance object HelloHiAPI Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks This example serves as an entry point for those getting started with HiAPI. It demonstrates proper initialization and teardown of key components. Source Code using Hi.HiNcKits; using Microsoft.Extensions.Logging; using System; namespace Sample { /// <summary> /// A sample class demonstrating initialization and usage of the HiAPI framework. /// Shows the basic setup of display engine, MongoDB server, licensing, and other core functionality. /// </summary> /// <remarks> /// This example serves as an entry point for those getting started with HiAPI. /// It demonstrates proper initialization and teardown of key components. /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/HelloHiAPI.cs)] /// </remarks> public static class HelloHiAPI { static int Main(string[] args) { Console.WriteLine(\"HiAPI starting.\"); using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample\")); Console.WriteLine(\"Hello World! HiAPI.\"); LocalApp.AppEnd(); Console.WriteLine(\"HiAPI exited.\"); return 0; } } }"
},
"sample/Sample.MachineTool.DemoBuildMachineTool.html": {
"href": "sample/Sample.MachineTool.DemoBuildMachineTool.html",
"title": "Class DemoBuildMachineTool | HiAPI-C# 2025",
"summary": "Class DemoBuildMachineTool Namespace Sample.MachineTool Assembly Hi.Sample.dll Provides access to the Table-B1 machine tool model. public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool Inheritance object DemoBuildMachineTool Implements IGetCodeXyzabcMachineTool Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.XmlUtils; using Hi.Geom; using Hi.Mech; using Hi.Mech.Topo; using Hi.NcMech; using Hi.NcMech.Solids; using Hi.NcMech.Xyzabc; using Hi.Numerical.Xyzabc; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Linq; namespace Sample.MachineTool { /// <summary> /// Provides access to the Table-B1 machine tool model. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/MachineTool/DemoBuildMachineTool.cs)] /// </remarks> public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool { /// <summary> /// Registers this type's deserializer with the given <see cref=\"XFactory\"/> /// (or <see cref=\"XFactory.Default\"/> when <paramref name=\"factory\"/> is /// <c>null</c>). Idempotent. /// </summary> public static void Reg(XFactory factory = null) { factory ??= XFactory.Default; factory.Generators.TryAdd(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool()); } /// <summary> /// Generates an XYZ-ABC machine tool instance from embedded resources. /// </summary> /// <returns>A configured machine tool model.</returns> public static CodeXyzabcMachineTool GenXyzabcMachineTool() { CodeXyzabcChain chain = new CodeXyzabcChain(\"[O][Y][X][C][w];[O][Z][B][S][t]\"); if (chain.ToolBuckleTransformer is StaticTranslation st) st.Trans = new Vec3d(-72.40, 72.40, 176.44); chain.TransformerB.Pivot = new Vec3d(-72.4, -177.4, 225.94); Dictionary<string, Solid> solidMap = new Dictionary<string, Solid>() { [\"O\"] = new Solid(new Stl(\"MachineTool/base.stl\")), [\"X\"] = new Solid(new Stl(\"MachineTool/X.stl\")), [\"Y\"] = new Solid(new Stl(\"MachineTool/Y.stl\")), [\"Z\"] = new Solid(new Stl(\"MachineTool/Z.stl\")), [\"B\"] = new Solid(new Stl(\"MachineTool/B.stl\")), [\"C\"] = new Solid(new Stl(\"MachineTool/C.stl\")), [\"S\"] = new Solid(new Stl(\"MachineTool/spindle.stl\")), }; chain.AnchorToSolid.BuildAnchorToSolid( chain.Asmb.GetDescendantAnchors(), solidMap); CodeXyzabcMachineTool dst = new CodeXyzabcMachineTool(chain); dst.GenerateCollisionIndexPairs(); return dst; } /// <summary> /// The cached machine tool instance. /// </summary> CodeXyzabcMachineTool MachineTool { get; } /// <summary> /// Default constructor that initializes the machine tool model. /// </summary> public DemoBuildMachineTool() { MachineTool = GenXyzabcMachineTool(); } #region XML IO /// <summary> /// XML element name for serialization. /// </summary> public static string XName = nameof(DemoBuildMachineTool); /// <inheritdoc/> public XElement ToXElement() => new XElement(XName); #endregion /// <inheritdoc/> public CodeXyzabcMachineTool GetXyzabcMachineTool() => MachineTool; /// <inheritdoc/> public IMachiningChain GetMachiningChain() => MachineTool; } } Constructors DemoBuildMachineTool() Default constructor that initializes the machine tool model. public DemoBuildMachineTool() Fields XName XML element name for serialization. public static string XName Field Value string Methods GenXyzabcMachineTool() Generates an XYZ-ABC machine tool instance from embedded resources. public static CodeXyzabcMachineTool GenXyzabcMachineTool() Returns CodeXyzabcMachineTool A configured machine tool model. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetXyzabcMachineTool() Get CodeXyzabcMachineTool. public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool. Reg(XFactory) Registers this 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() public XElement ToXElement() Returns XElement"
},
"sample/Sample.MachineTool.DemoBuildMachineToolWithoutGeometrys.html": {
"href": "sample/Sample.MachineTool.DemoBuildMachineToolWithoutGeometrys.html",
"title": "Class DemoBuildMachineToolWithoutGeometrys | HiAPI-C# 2025",
"summary": "Class DemoBuildMachineToolWithoutGeometrys Namespace Sample.MachineTool Assembly Hi.Sample.dll Demo Build Machine Tool without gemetries setting. public static class DemoBuildMachineToolWithoutGeometrys Inheritance object DemoBuildMachineToolWithoutGeometrys Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Geom; using Hi.Mech.Topo; using Hi.NcMech.Xyzabc; using Hi.Numerical.Xyzabc; namespace Sample.MachineTool; /// <summary> /// Demo Build Machine Tool without gemetries setting. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/MachineTool/DemoBuildMachineToolWithoutGeometrys.cs)] /// </remarks> public static class DemoBuildMachineToolWithoutGeometrys { /// <summary> /// Generates an empty machine tool with basic configuration. /// </summary> /// <returns>A configured but empty machine tool without solids.</returns> public static CodeXyzabcMachineTool GenEmptyMachineTool() { CodeXyzabcChain chain = new CodeXyzabcChain(\"[O][C][w];[O][X][Y][Z][B][S][t]\"); if (chain.ToolBuckleTransformer is StaticTranslation st) st.Trans = new Vec3d(-200, 200, 400); CodeXyzabcMachineTool xyzabcMachineTool = new CodeXyzabcMachineTool(chain); return xyzabcMachineTool; } } Methods GenEmptyMachineTool() Generates an empty machine tool with basic configuration. public static CodeXyzabcMachineTool GenEmptyMachineTool() Returns CodeXyzabcMachineTool A configured but empty machine tool without solids."
},
"sample/Sample.MachineTool.html": {
"href": "sample/Sample.MachineTool.html",
"title": "Namespace Sample.MachineTool | HiAPI-C# 2025",
"summary": "Namespace Sample.MachineTool The Sample.MachineTool namespace provides examples for creating and configuring machine tool models using the Hi.NcMech.Xyzabc API for CNC verification and simulation. This namespace contains complete examples for building XYZ-ABC type machine tools, including coordinate chain definition, geometry loading, and collision detection configuration. These examples demonstrate how to load machine components from STL files, configure kinematic chains, and integrate machine models for verification systems, offering a comprehensive guide for developers building custom machine tool configurations for accurate CNC simulation and verification. Classes DemoBuildMachineTool Provides access to the Table-B1 machine tool model. DemoBuildMachineToolWithoutGeometrys Demo Build Machine Tool without gemetries setting."
},
"sample/Sample.Machining.DemoBuildGeomOnlyMachiningProject.html": {
"href": "sample/Sample.Machining.DemoBuildGeomOnlyMachiningProject.html",
"title": "Class DemoBuildGeomOnlyMachiningProject | HiAPI-C# 2025",
"summary": "Class DemoBuildGeomOnlyMachiningProject Namespace Sample.Machining Assembly Hi.Sample.dll public static class DemoBuildGeomOnlyMachiningProject Inheritance object DemoBuildGeomOnlyMachiningProject Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.XmlUtils; using Hi.Geom; using Hi.MachiningProcs; using Hi.Mech.Topo; using Hi.Milling.Apts; using Hi.Milling.Cutters; using Hi.NcMech.Fixtures; using Hi.NcMech.Workpieces; using Hi.NcMech.Xyzabc; using System.Collections.Generic; using System.IO; using System; using Hi.NcMech.Holders; using Hi.Machining; using Hi.HiNcKits; using Hi.Milling.MillingTools; using Microsoft.Extensions.Logging; namespace Sample.Machining; /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Machining/DemoBuildGeomOnlyMachiningProject.cs)] /// </remarks> public static class DemoBuildGeomOnlyMachiningProject { internal static MillingCutter CreateGeomOnlyMillingCutter() { MillingCutter millingCutter = new MillingCutter() { UpperBeamGeom = new Cylindroid( [new PairZr(40, 6), new PairZr(90, 6)]), ShaperProfile = new AptProfile( new ColumnApt() { Diameter_mm = 12, FluteHeight_mm = 40 }) }; return millingCutter; } static void Main() { using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample\")); LocalProjectService localProjectService = new LocalProjectService(); var projectPath = \"C:/HiNC-Projects/NewProject/Main.hincproj\"; var projectDirectory = Path.GetDirectoryName(projectPath); Console.WriteLine($\"Directory of the New Project: {projectDirectory}\"); localProjectService.LoadProject(projectPath); MachiningProject machiningProject = localProjectService.MachiningProject; CylindroidHolder cylindroidHolder = new CylindroidHolder() { Note = \"BT40\", Cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]) }; localProjectService.MachiningToolHouse = new MachiningToolHouse() { [1] = new MillingTool() { Note = \"T1\", PreservedDistanceBetweenFluteAndSpindleNose_mm = 8, Holder = cylindroidHolder, Cutter = CreateGeomOnlyMillingCutter() }, }; localProjectService.Fixture = new Fixture() { Geom = new Box3d(new Vec3d(-40, -40, 0), new Vec3d(40, 40, 10)), GeomToWorkpieceTransformer = new StaticTranslation(new Vec3d(0, 0, 10)), }; localProjectService.Workpiece = new Workpiece() { InitResolution = 0.25, InitGeom = new Box3d(0, 0, -50, 70, 50, 0), IdealGeom = null, WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)), }; IProgress<object> progress = null; localProjectService.MachiningChain = XFactory.GenByFile<CodeXyzabcMachineTool>( \"Resource\", \"MachineTool/Table-B1.default/Table-B1.mt\", progress); localProjectService.MachiningChainFile = \"Table-B1.default/Table-B1.mt\"; localProjectService.SaveProject(); machiningProject.Dispose(); LocalApp.AppEnd(); } }"
},
"sample/Sample.Machining.DemoBuildMachiningProject.html": {
"href": "sample/Sample.Machining.DemoBuildMachiningProject.html",
"title": "Class DemoBuildMachiningProject | HiAPI-C# 2025",
"summary": "Class DemoBuildMachiningProject Namespace Sample.Machining Assembly Hi.Sample.dll Demonstrates how to create and configure a MachiningProject programmatically. This sample shows how to set up MillingCutter, CylindroidHolder, MillingTool, Fixture, Workpiece, and save the project configuration to a file. public static class DemoBuildMachiningProject Inheritance object DemoBuildMachiningProject Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using System; using Hi.Milling.Apts; using Hi.Common.XmlUtils; using Hi.Geom; using Hi.Machining; using Hi.Mech.Topo; using Hi.Milling.Cutters; using Hi.Milling.FluteContours; using Hi.MillingForces.Fittings; using Hi.NcMech.Fixtures; using Hi.NcMech.Holders; using Hi.NcMech.Workpieces; using Hi.NcMech.Xyzabc; using Hi.NcOpt; using Hi.Physics; using Hi.MachiningProcs; using System.IO; using Hi.HiNcKits; using Hi.Milling.MillingTools; using Microsoft.Extensions.Logging; namespace Sample.Machining; /// <summary> /// Demonstrates how to create and configure a <see cref=\"MachiningProject\"/> programmatically. /// This sample shows how to set up <see cref=\"MillingCutter\"/>, <see cref=\"CylindroidHolder\"/>, /// <see cref=\"MillingTool\"/>, <see cref=\"Fixture\"/>, <see cref=\"Workpiece\"/>, /// and save the project configuration to a file. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Machining/DemoBuildMachiningProject.cs)] /// </remarks> public static class DemoBuildMachiningProject { internal static CylindroidHolder CreateCylindroidHolder() { #region ConfigureHolder CylindroidHolder cylindroidHolder = new CylindroidHolder() { Note = \"BT40\", Cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]) }; #endregion return cylindroidHolder; } #region CreateMillingCutter1 internal static MillingCutter CreateMillingCutter1() { double diameter_mm = 12; double roundRadius_mm = 0.5; MillingCutter millingCutter = new MillingCutter() { ShaperProfile = new AptProfile( new ColumnApt() { Diameter_mm = diameter_mm, Rc_mm = roundRadius_mm, FluteHeight_mm = 40 }), UpperBeamGeom = new ExtendedCylinder(90), InnerBeamProfile = new FluteDependentRatioProfile(), MillingCutterOptLimit = new MillingCutterOptOption(), }; //build Fluting property double helixAngle_deg = 50; double radialRakeAngle_deg = 15; double bottomOuterRadius_mm = diameter_mm / 2 - roundRadius_mm; millingCutter.Fluting = new UniformFluting() { TrackNum = 3, BaselineOneContour = new FluteContour() { BaseSideContour = new ConstHelixSideContour(millingCutter) { Helix_deg = helixAngle_deg, RadialRakeAngle_deg = radialRakeAngle_deg }, BaseBottomContour = new SlideBottomContour() { //In most case, helix angle from side equal to rake angle from bottom. AxialRakeAngle_deg = MathUtil.ToDeg(helixAngle_deg), DiskAngle_deg = 1.5, //In most case, rake angle from side equal to eccentric angle from bottom. EccentricAngle_deg = radialRakeAngle_deg, CutterLengthOnBottomProjection_mm = bottomOuterRadius_mm * 0.9, OuterRadius_mm = bottomOuterRadius_mm } } }; return millingCutter; } #endregion #region CreateMillingCutter2 internal static MillingCutter CreateMillingCutter2() { MillingCutter millingCutter = new MillingCutter() { ShaperProfile = new AptProfile(new ColumnApt() { Diameter_mm = 12, FluteHeight_mm = 40 }), UpperBeamGeom = new Cylindroid( [new PairZr(40, 6), new PairZr(90, 6)]), InnerBeamProfile = new FluteDependentRatioProfile(), MillingCutterOptLimit = new MillingCutterOptOption() }; //build Fluting property double helixAngle_deg = 50; double radialRakeAngle_deg = 15; millingCutter.Fluting = new UniformFluting() { TrackNum = 3, BaselineOneContour = new FluteContour() { BaseSideContour = new ConstHelixSideContour(millingCutter) { Helix_deg = helixAngle_deg, RadialRakeAngle_deg = radialRakeAngle_deg }, //since no bottom cut, set bottom contour to null. BaseBottomContour = null } }; return millingCutter; } #endregion internal static CustomSpinningProfile CreateCustomSpinningProfile() { return new CustomSpinningProfile( new Cylindroid(new PairZr(0, 4), new PairZr(50, 4))); } #region TestMethod [STAThread] static void Main() { using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample\")); LocalProjectService localProjectService = new LocalProjectService(); var projectPath = \"C:/HiNC-Projects/NewProject/Main.hincproj\"; var projectDirectory = Path.GetDirectoryName(projectPath); Console.WriteLine($\"Directory of the New Project: {projectDirectory}\"); localProjectService.LoadProject(projectPath); MachiningProject machiningProject = localProjectService.MachiningProject; IProgress<object> progress = null; #region ConfigureMachiningToolHouse localProjectService.MachiningToolHouse = new MachiningToolHouse() { [1] = new MillingTool() { Note = \"T1\", PreservedDistanceBetweenFluteAndSpindleNose_mm = 8, Holder = CreateCylindroidHolder(), Cutter = CreateMillingCutter1() }, [2] = new MillingTool() { Note = \"T2\", PreservedDistanceBetweenFluteAndSpindleNose_mm = 8, Holder = CreateCylindroidHolder(), Cutter = CreateMillingCutter2() }, [3] = new MillingTool() { Note = \"T3\", PreservedDistanceBetweenFluteAndSpindleNose_mm = 8, Holder = CreateCylindroidHolder(), Cutter = CreateMillingCutter1() }, }; #endregion #region ConfigureFixture localProjectService.Fixture = new Fixture() { Geom = new Box3d(new Vec3d(-40, -40, 0), new Vec3d(40, 40, 10)), GeomToWorkpieceTransformer = new StaticTranslation(new Vec3d(0, 0, 10)), }; #endregion #region ConfigureWorkpiece localProjectService.Workpiece = new Workpiece() { InitResolution = 0.25, InitGeom = new Box3d(0, 0, -50, 70, 50, 0), IdealGeom = null, WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)), CuttingPara = XFactory.GenByFile<ICuttingPara>( \"Resource/CuttingParameter\", \"Al6061T6.default.mp\", progress), WorkpieceMaterial = XFactory.GenByFile<WorkpieceMaterial>( \"Resource/WorkpieceMaterial\", \"Al6061T6.default.WorkpieceMaterial\", progress), }; #endregion #region ConfigureMachineChain localProjectService.MachiningChain = XFactory.GenByFile<CodeXyzabcMachineTool>( \"Resource\", \"MachineTool/Table-B1.default/Table-B1.mt\", progress); #endregion machiningProject.MakeXmlSourceToFile(projectPath); machiningProject.Dispose(); LocalApp.AppEnd(); } #endregion }"
},
"sample/Sample.Machining.DemoMillingByCutterLocation.html": {
"href": "sample/Sample.Machining.DemoMillingByCutterLocation.html",
"title": "Class DemoMillingByCutterLocation | HiAPI-C# 2025",
"summary": "Class DemoMillingByCutterLocation Namespace Sample.Machining Assembly Hi.Sample.Wpf.dll public static class DemoMillingByCutterLocation Inheritance object DemoMillingByCutterLocation Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.Messages; using Hi.Disp; using Hi.Geom; using Hi.Geom.Resolution; using Hi.HiNcKits; using Hi.MachiningProcs; using Hi.Numerical.Acts; using Hi.WpfPlus.Disp; using HiMachining.Milling; using Microsoft.Extensions.Logging; using System; using System.IO; using System.Threading.Tasks; using System.Windows; using Sample.Disp; namespace Sample.Machining { /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Machining/DemoMillingByCutterLocation.cs)] /// </remarks> public static class DemoMillingByCutterLocation { [STAThread] static void Main() { int h = 2; string stlFile_CylinderR20 = $\"Cache/CylinderH{h}R20.stl\"; string stlFile_CylinderR19 = $\"Cache/CylinderH{h}R19.stl\"; string stlFile_CylinderR18 = $\"Cache/CylinderH{h}R18.stl\"; new Cylindroid(new PairZr(-h, 20), new PairZr(0, 20)) .GenStl(new PolarResolution2d(1, MathUtil.ToRad(15))).WriteBin(stlFile_CylinderR20); new Cylindroid(new PairZr(-h, 19), new PairZr(0, 19)) .GenStl(new PolarResolution2d(1, MathUtil.ToRad(15))).WriteBin(stlFile_CylinderR19); new Cylindroid(new PairZr(-h, 18), new PairZr(0, 18)) .GenStl(new PolarResolution2d(1, MathUtil.ToRad(15))).WriteBin(stlFile_CylinderR18); using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample.Wpf\")); LocalProjectService localProjectService = new LocalProjectService(); #region ProjectLoading //var projectPath = \"C:/HiNC-Projects/DemoStandardPath/Main.hincproj\"; var projectPath = \"C:/HiNC-Projects/demo-test-1/Main.hincproj\"; Console.WriteLine($\"Load Project: {projectPath}\"); localProjectService.LoadProject(projectPath); var project = localProjectService.MachiningProject; #endregion var projectDisplayee = new MachiningProjectDisplayee(localProjectService); var device = new ClMillingDevice(); localProjectService.MachiningEquipment.MachiningChain = device; localProjectService.ClStrip.IsShowDot = true; double resolution_mm = 0.5; var projectDir = Path.GetDirectoryName(projectPath); localProjectService.WorkpieceService.InitGeom = new StlFile(stlFile_CylinderR20, projectDir); localProjectService.WorkpieceService.IdealGeom = new StlFile(stlFile_CylinderR19, projectDir); localProjectService.Workpiece.InitResolution = resolution_mm; SessionShell runtimeApi = localProjectService.SessionShell; runtimeApi.SetNcResolutionFixed(9999, 15); runtimeApi.EnableCollisionDetection = false; runtimeApi.EnablePhysics = false; runtimeApi.MachiningResolution_mm = resolution_mm; //RunConsole(project, projectDisplayee, resolution_mm); RunWindow(localProjectService, projectDisplayee, resolution_mm); } static void RunConsole(LocalProjectService projectService, MachiningProjectDisplayee projectDisplayee, double resolution_mm) { RunSession(projectService, resolution_mm); DispEngine dispEngine = new DispEngine(projectDisplayee); dispEngine.SetViewToIsometricView(); dispEngine.SketchView = projectService.ClStrip.GetFittingView(dispEngine.SketchView); dispEngine.SketchView = dispEngine.SketchView.Scale(0.5); dispEngine.Snapshot($\"Cache/result.bmp\", 1000, 1000); projectService.GetLocalProjectService().CloseProject(); LocalApp.AppEnd(); Console.WriteLine($\"App exit.\"); } static void RunWindow(LocalProjectService projectService, MachiningProjectDisplayee projectDisplayee, double resolution_mm) { var task = Task.Run(() => { RunSession(projectService, resolution_mm); Console.WriteLine($\"task done.\"); }).CatchExceptions(ex => Console.WriteLine(ex)); #region Create and Run WPF Application Application app = new Application { ShutdownMode = ShutdownMode.OnMainWindowClose }; app.Exit += (o, e) => { projectService.GetLocalProjectService().CloseProject(); LocalApp.AppEnd(); Console.WriteLine($\"App exit.\"); }; app.Run(new RenderingWindow() { Title = \"Demo\", Displayee = projectDisplayee }); #endregion } static void RunSession(LocalProjectService localProjectService, double resolution_mm) { var project=localProjectService.MachiningProject; SessionShell runtimeApi = localProjectService.SessionShell; localProjectService.BeginSession(); double radius = 20; double z = -1; localProjectService.Act(new ActToolingTeleport(1));//equip tool localProjectService.Act(new ActClTeleport(new DVec3d(radius, 0, z, 0, 0, 1)));//goto initial position //run an arbitrary contour. int divNum = 36; for (int i = 0; i <= divNum; i++) { var cl = new DVec3d( radius * Math.Cos(i * Math.PI * 2 / divNum), radius * Math.Sin(i * Math.PI * 2 / divNum), z, 0, 0, 1); Console.WriteLine($\"{cl.Point.CsvText},{cl.Normal.CsvText},\"); localProjectService.Act(new ActClStep(cl)); } double diffLimit_mm = resolution_mm * 2; runtimeApi.Diff(resolution_mm * 2); Console.WriteLine($\"IsDifferenceAceptable: {IsDifferenceAceptable(localProjectService, diffLimit_mm)}\"); localProjectService.EndSession(); } static bool IsDifferenceAceptable(LocalProjectService localProjectService, double diffLimit) { foreach (var attachment in localProjectService.WorkpieceService.DiffAttachmentBag) { if (double.IsNaN(attachment.Diff) || Math.Abs(attachment.Diff) > diffLimit) { Console.WriteLine($\"Diff: {attachment.Diff}\"); return false; } } return true; } } }"
},
"sample/Sample.Machining.DemoRenderingMachiningProcessAndStripPosSelection.html": {
"href": "sample/Sample.Machining.DemoRenderingMachiningProcessAndStripPosSelection.html",
"title": "Class DemoRenderingMachiningProcessAndStripPosSelection | HiAPI-C# 2025",
"summary": "Class DemoRenderingMachiningProcessAndStripPosSelection Namespace Sample.Machining Assembly Hi.Sample.Wpf.dll Demonstrates integration of machining process visualization with interactive strip position selection. Shows how to load a machining project, configure rendering options, and implement user interaction. Provides a complete example of a 3D visualization application with HiAPI and WPF. public static class DemoRenderingMachiningProcessAndStripPosSelection Inheritance object DemoRenderingMachiningProcessAndStripPosSelection Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.WpfPlus.Disp; using System; using Hi.MachiningProcs; using Hi.Common.FileLines; using System.Windows; using Hi.MachiningSteps; using Hi.HiNcKits; using Microsoft.Extensions.Logging; using Sample.Disp; namespace Sample.Machining { /// <summary> /// Demonstrates integration of machining process visualization with interactive strip position selection. /// Shows how to load a machining project, configure rendering options, and implement user interaction. /// Provides a complete example of a 3D visualization application with HiAPI and WPF. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Machining/DemoRenderingMachiningProcessAndStripPosSelection.cs)] /// </remarks> public static class DemoRenderingMachiningProcessAndStripPosSelection { [STAThread] static void Main(string[] args) { using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample.Wpf\")); LocalProjectService localProjectService = new LocalProjectService(); #region Load Machining Project var projectPath = \"C:/HiNC-Projects/DemoStandardPath/Main.hincproj\"; Console.WriteLine($\"Load Project: {projectPath}\"); localProjectService.LoadProject(projectPath); MachiningProject machiningProject = localProjectService.MachiningProject; localProjectService.SessionShell.SessionStepSelected += (MachiningStep step) => { var sourceCommand = step.SourceCommand; var indexedFileLine = sourceCommand.GetSentence().FirstIndexedFileLine; Console.WriteLine($\"Step Selected: MRR = {step.Mrr_mm3ds} At \\\"{indexedFileLine?.FilePath}\\\" (Line {indexedFileLine?.GetLineNo()}) \\\"{indexedFileLine?.Line}\\\"\"); }; localProjectService.PacePlayer.Start(); #endregion #region Configure Rendering Options var projectDisplayee = new MachiningProjectDisplayee(localProjectService); projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.Mech] = true; projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.Fixture] = true; projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.WorkpieceGeom] = true; projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.Tool] = true; projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.ClStrip] = true; projectDisplayee.RenderingFlagBitArray[(int)RenderingFlag.DimensionBar] = true; #endregion #region Create and Run WPF Application Application app = new Application { ShutdownMode = ShutdownMode.OnMainWindowClose }; app.Exit += (o, e) => { machiningProject.Dispose(); LocalApp.AppEnd(); Console.WriteLine($\"App exit.\"); }; app.Run(new RenderingWindow() { Title = \"Demo\", Displayee = projectDisplayee }); #endregion } } }"
},
"sample/Sample.Machining.DemoUseMachiningProject.html": {
"href": "sample/Sample.Machining.DemoUseMachiningProject.html",
"title": "Class DemoUseMachiningProject | HiAPI-C# 2025",
"summary": "Class DemoUseMachiningProject Namespace Sample.Machining Assembly Hi.Sample.dll Demonstrates how to load and use an existing MachiningProject instance. This sample shows how to set up event handlers for messages and machining step objects, execute NC files, and properly manage project resources using Dispose(). public static class DemoUseMachiningProject Inheritance object DemoUseMachiningProject Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.FileLines; using Hi.Common.Messages; using Hi.HiNcKits; using Hi.MachiningProcs; using Hi.NcParsers; using Microsoft.Extensions.Logging; using System; using System.IO; namespace Sample.Machining; /// <summary> /// Demonstrates how to load and use an existing <see cref=\"MachiningProject\"/> instance. /// This sample shows how to set up event handlers for messages and machining step objects, /// execute NC files, and properly manage project resources using /// <see cref=\"IDisposable.Dispose\"/>. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Machining/DemoUseMachiningProject.cs)] /// </remarks> public static class DemoUseMachiningProject { static void Main() { using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole()); LocalApp.AppBegin(loggerFactory.CreateLogger(\"Hi.Sample\")); LocalProjectService localProjectService = new LocalProjectService(); #region ProjectLoading var projectPath = \"C:/HiNC-Projects/DemoStandardPath/Main.hincproj\"; Console.WriteLine($\"Load Project: {projectPath}\"); localProjectService.LoadProject(projectPath); MachiningProject machiningProject = localProjectService.MachiningProject; #endregion #region EventHandling Console.WriteLine($\"Set message event.\"); using StreamWriter writer = new StreamWriter(\"msg.txt\"); //show message if something abnormal, from each partitioned message sink: //shell (session lifecycle), NC diagnostics, and step-anchored diagnostics. void LogIfAbnormal(IMessage message, ISentenceCarrier sentenceCarrier) { var severity = message.GetSeverity(); if (severity != Severity.Warning && severity != Severity.Error) return; var ncLine = sentenceCarrier?.GetSentence()?.FirstIndexedFileLine; writer.WriteLine($\"{message.GetNotification()} At \\\"{ncLine?.FilePath}\\\" (Line {ncLine?.GetLineNo()}) \\\"{ncLine?.Line}\\\"\"); } localProjectService.OnShellMessageAdded += (index, message) => LogIfAbnormal(message, null); localProjectService.NcDiagnosticProgress.MessageAdded += (index, diagnostic) => LogIfAbnormal(diagnostic, diagnostic.SentenceCarrier); localProjectService.StepDiagnosticProgress.MessageAdded += (index, diagnostic) => LogIfAbnormal(diagnostic, diagnostic.SentenceCarrier); Console.WriteLine($\"Set machining step event.\"); //show MRR. localProjectService.SessionShell.SessionStepBuilt += (preStep, curStep) => { var sourceCommand = curStep.SourceCommand; var indexedFileLine=sourceCommand?.GetSentence()?.FirstIndexedFileLine; if (curStep.Mrr_mm3ds > 500) //show only the step that contains large MRR. Console.WriteLine($\"MRR = {curStep.Mrr_mm3ds} At \\\"{indexedFileLine?.FilePath}\\\" (Line {indexedFileLine?.GetLineNo()}) \\\"{indexedFileLine?.Line}\\\"\"); }; #endregion #region MachiningExecution Console.WriteLine($\"Reset runtime status.\"); localProjectService.ResetRuntime(); Console.WriteLine($\"Session begin.\"); localProjectService.BeginSession(); localProjectService.SessionShell.MachiningResolution_mm = 1; localProjectService.SessionShell.EnableCollisionDetection = true; localProjectService.SessionShell.EnablePauseOnFailure = false; localProjectService.SessionShell.EnablePhysics = false; //the path from Shell-API is relative by project directory. localProjectService.SessionShell.PlayNcFile(\"NC/side.ptp\"); localProjectService.SessionShell.PlayNcFile(\"NC/circle.ptp\"); localProjectService.EndSession(); Console.WriteLine($\"Session end.\"); #endregion #region CleanupResources Console.WriteLine($\"Close Project: {projectPath}\"); machiningProject.Dispose(); LocalApp.AppEnd(); Console.WriteLine($\"Program end.\"); #endregion } }"
},
"sample/Sample.Machining.html": {
"href": "sample/Sample.Machining.html",
"title": "Namespace Sample.Machining | HiAPI-C# 2025",
"summary": "Namespace Sample.Machining The Sample.Machining namespace contains comprehensive examples for creating and managing machining verification and optimization projects using the Hi.Machining and Hi.MachiningProcs APIs. This namespace demonstrates the complete workflow of building verification projects from scratch, including defining cutting tool geometries with Hi.Milling.Cutters, configuring tool holders with Hi.NcMech.Holders, setting up tool libraries, defining fixture and workpiece geometries, configuring machine kinematics, and setting material properties. These examples are particularly valuable for developers who need to programmatically create complete verification and optimization projects without relying on the HiNC GUI, providing reference code for implementing advanced CNC verification and simulation functionality. Classes DemoBuildGeomOnlyMachiningProject DemoBuildMachiningProject Demonstrates how to create and configure a MachiningProject programmatically. This sample shows how to set up MillingCutter, CylindroidHolder, MillingTool, Fixture, Workpiece, and save the project configuration to a file. DemoMillingByCutterLocation DemoRenderingMachiningProcessAndStripPosSelection Demonstrates integration of machining process visualization with interactive strip position selection. Shows how to load a machining project, configure rendering options, and implement user interaction. Provides a complete example of a 3D visualization application with HiAPI and WPF. DemoUseMachiningProject Demonstrates how to load and use an existing MachiningProject instance. This sample shows how to set up event handlers for messages and machining step objects, execute NC files, and properly manage project resources using Dispose()."
},
"sample/Sample.Mech.DemoTopo1.html": {
"href": "sample/Sample.Mech.DemoTopo1.html",
"title": "Class DemoTopo1 | HiAPI-C# 2025",
"summary": "Class DemoTopo1 Namespace Sample.Mech Assembly Hi.Sample.dll Demonstrates the creation and visualization of mechanical assemblies with kinematic linkages. Shows how to build coordinate systems, establish kinematic relationships, and capture visual output. public static class DemoTopo1 Inheritance object DemoTopo1 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using System; using System.Collections.Generic; using Hi.Disp; using Hi.Geom; using Hi.Mech.Topo; namespace Sample.Mech; /// <summary> /// Demonstrates the creation and visualization of mechanical assemblies with kinematic linkages. /// Shows how to build coordinate systems, establish kinematic relationships, and capture visual output. /// </summary> /// <remarks> /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Mech/DemoTopo1.cs)] /// </remarks> public static class DemoTopo1 { /// <summary> /// Creates a demonstration assembly with kinematic linkages. /// Builds a mechanical assembly with multiple anchors and branches, including both static and dynamic transformations. /// </summary> /// <returns>A tuple containing the assembly and root anchor</returns> static (Asmb asmb, Anchor root) GetDemoAsmb() { #region DocSite.DemoTopo1 //build coordinate systems and the assembly. Asmb asmb = new Asmb { Name = \"Mech\" }; Anchor O = new Anchor(asmb, \"O\"); Anchor O1 = new Anchor(asmb, \"O1\"); Anchor X = new Anchor(asmb, \"X\"); Anchor Z = new Anchor(asmb, \"Z\"); Anchor B = new Anchor(asmb, \"B\"); //build kinematic link Branch.Attach(O, O1, new StaticTranslation(new Vec3d(0, 0, 80))); Branch brnX = Branch.Attach(O1, X, new DynamicTranslation(new Vec3d(1, 0, 0))); Branch brnZ = Branch.Attach(X, Z, new DynamicTranslation(new Vec3d(0, 0, 1))); Branch brnB = Branch.Attach(Z, B, new DynamicRotation(new Vec3d(0, 1, 0), 0, new Vec3d(-100, 0, 0))); //drive the dynamic transformation by single value for each branch. brnX.Step = 200; brnZ.Step = 100; brnB.Step = MathUtil.ToRad(-60); //Get and show the transform matrices relative to O. Dictionary<Anchor, Mat4d> matMap = asmb.GetMat4dMap(O); Console.WriteLine(\"Transform Matrix relative to O:\"); foreach (KeyValuePair<Anchor, Mat4d> keyValue in matMap) Console.WriteLine($\"{keyValue.Key.Name} : {keyValue.Value}\"); #endregion return (asmb, O); } /// <summary> /// Captures the assembly visualization and saves it to a file. /// Initializes the display engine, sets up the assembly visualization with an isometric view, and saves a snapshot to a bitmap file. /// </summary> /// <param name=\"src\">A tuple containing the assembly and root anchor for visualization</param> static void SnapshotToFile((Asmb asmb, Anchor root) src) { //all the drawing function has to call DispEngine.Init() before using. DispEngine.Init(); DispEngine.EnableSuppressDefaultLogo = true; using (DispEngine dispEngine = new DispEngine( src.asmb.GetAsmbDraw(src.root))) { dispEngine.SetViewToIsometricView(); dispEngine.Snapshot(\"DemoTopo1.bmp\", 680, 480); } Console.WriteLine(\"Snapshot file output.\"); DispEngine.FinishDisp(); } static void Main() { SnapshotToFile(GetDemoAsmb()); } }"
},
"sample/Sample.Mech.html": {
"href": "sample/Sample.Mech.html",
"title": "Namespace Sample.Mech | HiAPI-C# 2025",
"summary": "Namespace Sample.Mech Classes DemoTopo1 Demonstrates the creation and visualization of mechanical assemblies with kinematic linkages. Shows how to build coordinate systems, establish kinematic relationships, and capture visual output."
},
"sample/Sample.html": {
"href": "sample/Sample.html",
"title": "Namespace Sample | HiAPI-C# 2025",
"summary": "Namespace Sample Classes HelloHiAPI A sample class demonstrating initialization and usage of the HiAPI framework. Shows the basic setup of display engine, MongoDB server, licensing, and other core functionality."
},
"workflows/basic-simulation.html": {
"href": "workflows/basic-simulation.html",
"title": "Workflow: Basic Machining Simulation | HiAPI-C# 2025",
"summary": "Workflow: Basic Machining Simulation This workflow walks through setting up and running a machining simulation from scratch, including project configuration, option tuning, NC execution, and result inspection. For the method of assembling one — build order, how to shape the mission, and the replay-and-read-the-messages acceptance test that says the project is finished — see Project Construction. flowchart TD Equipment[\"Set machine tool &<br>controller brand/type\"] Job[\"Set workpiece, fixture,<br>tool house, NC files,<br>controller offsets\"] Option[\"Tune simulation options<br>(resolution, physics, etc.)\"] Run[\"Run simulation\"] View[\"View results\"] Equipment --> Job --> Option --> Run --> View Starting from Client Deliverables A real project usually starts from a bundle a customer hands over: NC programs, part/blank CAD, a tool sheet, sometimes a machine model and a few words about how the part is clamped and zeroed. Before building anything, reconcile that bundle against the Project Data Checklist, then map each item to the steps below: Client deliverable Maps to Setup page NC programs (.nc, .anc, …) NC files + controller brand General NC Code Support Tool sheet (diameters, corner radius, flute count, stick-out) Tool House Cutter, APT Part CAD + blank/stock CAD Workpiece IdealGeom + InitGeom Anchor Machine model + axis layout (3-axis, 3+1, 5-axis) Machine tool kinematic chain Machine Tool “Where is program zero?” notes, work-offset list Program zero + work-offset table Program Zero Alignment Material name Workpiece material + cutting parameters Project Data Checklist Note CAD geometry commonly arrives as STEP (.step / .stp). The workpiece and machine bodies are consumed as STL (or parametric primitives), so convert STEP to STL before import. The tool sheet's diameter and corner radius are authoritative; flute length, tooth count, helix, and stick-out are often missing and may have to be estimated from the spec string and confirmed with the client. Tip When deliverables are incomplete (no blank CAD, unknown work offsets, unverified machine model), you can still stand up a rough project: use the NC tool diameters, the named material, a placeholder stock box that encloses the tool path, and an identity work offset — then run a coarse pass (see §3.1) to catch gross overcut/collision while you wait for the missing data. Record every assumed value so it can be confirmed later. 1. Set Machine Tool and Controller The machine tool and controller are fixed equipment that define the physical simulation environment. Machine Tool The machine tool (.mt file) provides the kinematic model and STL bodies. Once selected it rarely changes between simulations. Controller Select the controller brand and type (e.g., Fanuc, Heidenhain, Siemens). This determines how NC code is interpreted. See Heidenhain Support and General NC Code Support for details. GUI Operation Open or create a project in the HiNC application and configure machine tool and controller through the corresponding panels before setting up the job. 2. Set Job Components With equipment fixed, configure the job-specific components that change between simulations. Tip For the full list of data to collect before building a project (and a customer-facing checklist), see Project Data Checklist. Job Components Component Description Workpiece Geometry (STL or parametric), material, and coordinate frame Fixture (optional) Fixture geometry that participates in collision detection Tool House One or more cutting tools with geometry and flute definitions NC Files The NC programs to simulate Controller Offsets Tool offset tables, work offset tables, and other controller-specific presets Tip All file paths used in script commands are relative to the project directory unless an absolute path is given. Script Access The workpiece and fixture objects are available through Workpiece(API) and Fixture(API). var workpiece = Workpiece; var fixture = Fixture; GUI Operation Configure each component through the corresponding panels (Workpiece, Fixture, Tool House windows). 3. Tune Simulation Options Simulation options control the trade-off between accuracy and speed. 3.1 Workpiece Entity Resolution MachiningResolution_mm(API) sets the smallest cube width of the workpiece mesh. MachiningResolution_mm = 0.125; Valid values are powers of 2 (e.g., 4, 2, 1, 0.5, 0.25, 0.125). If you supply a non-power-of-2 value the system rounds to the nearest power of 2. Warning Each halving of mesh width can increase computation time and RAM by up to 8x. Start with a coarser resolution and refine only when needed. Note Going finer is what costs the 8x — and at the fine resolutions real NC machining needs, geometry removal is usually the bottleneck. Going coarser only saves time while geometry removal is the bottleneck. Once the mesh is coarse enough that geometry removal is already cheap (12 mm is already very coarse for NC), the fixed per-step costs dominate and raising MachiningResolution_mm further barely changes total time (this is why 1.0 mm and 2.0 mm can run at nearly the same speed). To speed up in that regime, reduce the step count via Machining Motion Resolution. See CPU Usage During Simulation. 3.2 Display Cache DispCache_Mb = 260; The display resolution depends on the cache size. Recommended value should not exceed 1000 Mb. 3.3 Machining Motion Resolution Machining motion resolution determines the interval of each simulation step. Options: Mode Command Description Feed Per Cycle MachiningMotionResolution = FeedPerCycle; One step per spindle revolution (default) Scaled Feed Per Cycle MachiningMotionResolution = ScaledFeedPerCycle(2); One step per (revolution × scale): scale > 1 → fewer steps (faster); scale < 1 → more steps (finer) Feed Per Tooth MachiningMotionResolution = FeedPerTooth; One step per tooth pass (revolution ÷ flute count) Fixed Pace MachiningMotionResolution = FixedPace(1, 15); Fixed linear (mm) and rotary (deg) resolution; cuts by sweeping between steps Important Total simulation time is governed by whichever is slower: geometry removal or the per-step fixed costs. Geometry-removal cost is set by mesh resolution; the per-step fixed costs (physics, thermal/wear, per-step bookkeeping) are set by the number of steps — the motion-resolution mode plus the spindle revolutions along the toolpath, independent of mesh resolution and of workpiece size. At the fine resolutions real NC machining needs, geometry removal is usually the bottleneck (finer = much slower). Only once the mesh is coarse enough that geometry removal is already cheap do the fixed per-step costs dominate — then raising MachiningResolution_mm further will not speed things up (this is why 1.0 mm and 2.0 mm can run at nearly the same speed); reduce the step count instead — e.g. ScaledFeedPerCycle(2) takes one step per 2 revolutions, halving the steps, at the cost of sparser force-curve sampling. See CPU Usage During Simulation. Warning Do not use scaled model dimensions as a substitute for adjusting mesh width. Scaling model dimensions causes internal algorithm thresholds (minimum cuttable amount, floating-point-to-fraction range) to become invalid, producing irregular geometry artifacts. Adjust resolution settings instead. 3.4 XML Configuration Resolution can also be set in the .hincproj file or changed mid-simulation via NC code comments: T01 M06 (;@MachiningResolution_mm=0.03125;) 4. Run Simulation There are four ways to drive the simulation, plus player controls. 4.1 PlayNcFile — Execute from a File PlayNcFile(API) reads and executes an NC file. PlayNcFile(\"NC/file1.nc\"); 4.2 PlayNc — Execute from a String PlayNc(API) executes NC code directly from a string, useful for programmatic or dynamically generated commands. double x = 10.0; PlayNc($\"G01 X{x} Y20 F100\", \"Generated Command\"); 4.3 PlayCsvFile — Drive from CSV Data PlayCsvFile(API) drives the simulation from a CSV file containing axis positions, spindle speed, and feed rate. PlayCsvFile(\"Data/file1.csv\"); Required CSV columns (default headers): MC.X, MC.Y, MC.Z, ToolId, SpindleSpeed_rpm, Feedrate_mmdmin. Optional: MC.A, MC.B, MC.C, ActualTime, StepDuration. Headers and timestamp values may be wrapped in double quotes; the parser strips them. ActualTime accepts either HH:mm:ss.fff or an absolute yyyy-MM-dd HH:mm:ss.ffffff form (the absolute form is required when chaining with MapSeriesByCsvFile(API), which matches by TimeTag): \"ActualTime\",\"Feedrate_mmdmin\",\"MC.X\",\"MC.Y\",\"MC.Z\",\"SpindleSpeed_rpm\",\"ToolId\" \"2026-03-16 15:57:45.559000\",10000.0,-351.745,-244.799,-215.799,1270,1 \"2026-03-16 15:57:45.705000\",10000.0,-351.745,-244.799,-215.799,1270,1 When a real-world controller log includes extra columns (e.g., t_receive, cnc_delay_s, status) or uses alternative column names (X/Y/Z, feedrate, spindle_speed), preprocess the file to drop or rename columns before passing it to PlayCsvFile(API). Tip CSV files exported by WriteStepFiles(API) can be directly read back with PlayCsvFile(API). 4.4 PlayClFile — Drive from a Cutter-Location File PlayClFile(API) replays an NX cutter-location file (CLSF / APT-source, .cls) directly as tool motion — the machine-independent CAM toolpath, before it is post-processed for a specific machine. PlayClFile(\"CL/part-op10.cls\"); Note Unlike the file players above, CL playback drives a ClMillingDevice chain — the cutter location is applied straight to the tool — not the machine-tool chain from §1. Use it to verify the programmed path itself, independent of machine and post-processor. See Cutter-Location (CL) Playback for the supported record set, tool creation from TLDATA, and the chain requirement. 4.5 Player Control Command Purpose Pace()(API) Insert a pausable checkpoint Pause()(API) Pause execution Reset()(API) Reset player state PlayNcFile(\"NC/file1.nc\"); if (someCondition) Pause(); 5. View Results 5.1 Meshed Geometry After simulation the workpiece geometry is a Meshed Geometry (cubic mesh). You can save and reload it to avoid re-computing the initial shape: WriteMeshedGeom(\"Cache/file1.wct\"); ExportMeshedGeomToStl(\"Output/file1.stl\"); To reload a saved geometry for a subsequent run: ReadMeshedGeom(\"Cache/init.wct\"); PlayNcFile(\"NC/file1.nc\"); 5.2 Step Data Inspection Each simulation step carries rich data (force, torque, power, thermal, wear). Access individual steps: var step = GetMillingStep(100); Message($\"ToolId={step.ToolId}, Force={step.MaxAbsForce_N} N\"); Total step count: var total = StepCount; Message($\"Total steps: {total}\"); 5.3 Export Data Export step-level CSV: WriteStepFiles(\"Output/[NcName].step.csv\"); Export waveform (shot) CSV: WriteShotFiles(\"Output/[NcName].shot.csv\", 1); 5.4 Messages Use messages to log and track simulation progress: Message(\"Simulation complete\"); AppendMessagesToFile(\"Output/messages.txt\"); Troubleshooting Symptom Likely Cause Fix Very slow simulation, large pink trail behind the tool Geometry removal is the bottleneck (mesh too fine) Increase MachiningResolution_mm (coarser mesh) Very slow simulation, but a coarser mesh doesn't help Limited by step count (per-step physics) Reduce steps via MachiningMotionResolution (e.g. ScaledFeedPerCycle(2)) Irregular bumps on geometry Scaled model dimensions instead of resolution Use resolution settings only; see warning above Display lag DispCache_Mb too large Reduce display cache (< 1000 Mb recommended) Empty step data Simulation not run or tool not engaging workpiece Verify tool path intersects the workpiece See Also Heidenhain Support — controller configuration General NC Code Support — ISO NC support Cutter-Location (CL) Playback — replay a CAM cutter-location file with PlayClFile Step — what a step is, accessing and outputting step data Step Field Reference — step field reference Glossary: Script Commands — script command basics Glossary: SessionShell Quick-Reference — SessionShell quick-reference"
},
"workflows/dynamometer-experiment-sop.html": {
"href": "workflows/dynamometer-experiment-sop.html",
"title": "Dynamometer Experiment SOP | HiAPI-C# 2025",
"summary": "Dynamometer Experiment SOP Capture three-axis force data using a dynamometer and calculate the milling force coefficients. Dynamometer Setup Photography After setting up the experimental equipment, push in the X, Y, and Z directions by hand while observing whether the dynamometer output is correct. This process must be photographed or recorded on video. The frame should simultaneously show the dynamometer output and the hand pushing. Ensure the dynamometer wiring is correct and the sign conventions are correct, so the experimental setup can be traced back later. Tool Use a square-end (non-corner-radius) end mill. Recommended tool parameters: D10 Flute4 Helix35 There are no specific restrictions on the number of flutes, helix angle, or rake angle, but these must be accurately recorded along with the tool brand and model. A 10 mm diameter is used to avoid tool breakage when cutting difficult materials. The 10 mm standard was established based on Inconel 718 as the safety baseline for this experiment. Workpiece / Toolpath Workpiece dimensions: dynamometer length × width × convenient clamping height (50 mm) Cutting depth is 0.5 mm. Toolpath categories are identified by keywords: low, high, through. “low” denotes low spindle speed, “high” denotes high spindle speed, and “through” denotes a through-pass. There are 8 cuts in total: low1, low2, low3, high1, high2, high3, through1, through2. If material is limited, low2 and low3 alone are sufficient to complete the training. low1 intentionally cuts along the edge so that through1 can smoothly enter the cutting zone. The high series uses the same feed per tooth as the low series but at different spindle speeds, primarily to observe whether spindle speed affects cutting forces. If constrained by material, machine, or other factors, high2 and high3 can be omitted first. through1 and through2 maintain a constant CWE and serve as validation passes. If the material is too hard, the cutting depth can be reduced for the experiment. Experiment Results The dynamometer data must be retained."
},
"workflows/examples/index.html": {
"href": "workflows/examples/index.html",
"title": "Example Projects | HiAPI-C# 2025",
"summary": "Example Projects Complete project-level examples demonstrating full workflows with real data. Dynamometer Milling Training — Train milling coefficients using Kistler dynamometer measurements on S50C material Cascading Controller & Sensor Data — Cascade controller and sensor data into the simulation toolpath and update milling coefficients"
},
"workflows/examples/mapping-demo.html": {
"href": "workflows/examples/mapping-demo.html",
"title": "Example Project: Mapping Controller and Sensor Data to Simulated NC Toolpaths and Updating Milling Coefficients | HiAPI-C# 2025",
"summary": "Example Project: Mapping Controller and Sensor Data to Simulated NC Toolpaths and Updating Milling Coefficients The example project can be downloaded here: https://superhightech-gitea.webredirect.org/HiNC-Deploy/DemoMapping This project uses MapSingleByCsvFile(API) and MapSeriesByCsvFile(API) to map controller data and sensor data to the virtual environment, and then update the milling coefficients. Related Pages Workflow: Sensor Data Mapping — sensor data mapping workflow Workflow: Milling Force Parameter Training — milling force parameter training workflow"
},
"workflows/examples/milling-training-dynamometer.html": {
"href": "workflows/examples/milling-training-dynamometer.html",
"title": "Example Project: Training Milling Coefficients with a Dynamometer | HiAPI-C# 2025",
"summary": "Example Project: Training Milling Coefficients with a Dynamometer The example project for training milling coefficients using a dynamometer can be downloaded here: https://superhightech-gitea.webredirect.org/HiNC-Deploy/Demo-Para-Training-S50C-202501 This project uses Kistler dynamometer measurement data to train milling coefficients for S50C material via the one-to-many local mapping (anchor-based) method. Tip The toolpath and cutting conditions can be freely modified to suit your specific setup. Related Pages Workflow: Milling Force Parameter Training — milling force parameter training workflow Workflow: Sensor Data Mapping — sensor data mapping workflow"
},
"workflows/force-training.html": {
"href": "workflows/force-training.html",
"title": "Workflow: Milling Force Parameter Training | HiAPI-C# 2025",
"summary": "Workflow: Milling Force Parameter Training This workflow covers the end-to-end process of training milling force coefficients from sensor data, including data mapping, coefficient training, quality evaluation, and application of the trained parameters. Milling coefficients are essential parameters for calculating milling forces. Training derives these coefficients from experimental sensor data (dynamometer or smart tool holder) mapped to simulated toolpaths. flowchart TD Prereq[\"Prerequisites<br>(sensor data, project setup)\"] Resolution[\"Configure resolution & enable physics\"] Mapping[\"Configure data mapping\"] Simulate[\"Run simulation with NC file\"] Export[\"Export simulation data<br>(WriteShotFiles, WriteStepFiles)\"] Map[\"Map sensor data to simulation\"] Train[\"Train milling parameters\"] Evaluate[\"Evaluate training quality\"] Apply[\"Load trained parameters\"] Prereq --> Resolution --> Mapping --> Simulate --> Export Simulate --> Map --> Train --> Evaluate --> Apply 1. Prerequisites Tip For the complete data-collection checklist behind a project, see Project Data Checklist. Before training you need: Item Description HiNC project Machine tool, workpiece, fixture, tool house configured NC file The NC program used during the physical cutting experiment Sensor data CSV Time-stamped force/torque data from a dynamometer or smart tool holder Controller data CSV (optional) Machine controller log with FileNo, LineNo, ActualTime for two-layer mapping Important Before training, the workpiece + fixture must be correctly placed relative to the work offset, otherwise the simulated engagement (and therefore the trained coefficients) is wrong. See Program Zero Alignment — particularly the high-fidelity caution that the G54 used must reflect the real machine offset, and the rough-resolution check for catching a wrong setup at the opening plunge. Sensor Data File Format The CSV must contain a header row with ActualTime and at least one force/torque channel: Source Headers Dynamometer Fx (or Workpiece.Fx), Fy, Fz Smart tool holder Mx (or Holder.Mx), My, Mz Accelerometer (optional) Ax, Ay, Az ActualTime,CH1,CH2,Mx,My,Mz 18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409 18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448 ... Tip Keep the completed training project archived. When the HiNC training algorithm is updated, you can re-run training from the same project. 2. Configure Resolution and Enable Physics Resolution Use a finer resolution than normal operation for training accuracy: MachiningResolution_mm = 0.0625; // half or less of production resolution MachiningMotionResolution = FeedPerTooth; Tip Training resolution should be ≤ 0.5× the production resolution for better accuracy. Enable Physics EnablePhysics must be enabled for force calculation: EnablePhysics = true; Milling Force Cycle Division MillingCycleDivisionNum is the number of angular divisions per spindle revolution used by the force evaluation. The default is 36, which is intended for normal simulation — force playback does not benefit from a finer division, and raising it only slows the physics down. Training is the exception: phase alignment and coefficient quality improve with a finer division, so set it in the training script: MillingCycleDivisionNum = 180; // training only; default 36 is for normal simulation Note This must be set before the simulation run that TrainMillingPara consumes. How much is enough — measured (2-flute D8, Al6061-T6, MachiningResolution_mm 0.03125, sensor series sampled at 0.1 ms): MillingCycleDivisionNum R Fc error @ t=0.2 Fn error @ t=0.2 ploughing coefficients 36 (default) 91.5 % 6.7 % 8.8 % badly off (Kpc +40 %) 180 95.2 % 6.6 % 6.1 % Kpc +10 % 720 95.2 % 6.9 % 6.3 % Kpc +11 % 180 is the sweet spot: the default 36 is genuinely too coarse for training (the ploughing coefficients degrade badly), and 720 buys nothing while costing 4× the physics. Do not assume “larger is always better”. Warning The value is process-wide, not per-project: it is not saved into the .hincproj, and it survives ResetRuntime() and project switches. Two consequences: (a) a training script must always set it explicitly — a fresh service instance starts at 36; (b) after training, the same instance keeps the large value, so subsequent normal simulations run slower until you set it back (or restart the instance). 3. Configure Data Mapping Depending on your data, choose one of the mapping strategies below. 3.1 Local Mapping (Anchor-Based) For mapping sensor data to specific NC path segments: Step A — Specify input data: ClearTimeMappingData(); AddTimeDataByFile(\"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile(\"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); Step B — Specify NC paths (embedded in NC code comments): X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); Anchor options: LineBegin, LineEnd, FirstTouch, LastTouch. Offset options: null, ShiftTime_s(<seconds>), ShiftDistance_mm(<mm>). 3.2 Two-Layer Chained Mapping (Controller + Sensor) When you have both controller data and sensor data: PlayNcFile(\"NC/machining.nc\"); MapSingleByCsvFile(\"Data/controller.csv\"); // maps FileNo/LineNo → ActualTime MapSeriesByCsvFile(\"Data/sensor.csv\"); // ActualTime → sensor series Note Why two-layer mapping? Running the NC through the system interpreter produces more accurate simulation paths than direct CSV playback. The controller data bridges simulation steps to real time via FileNo/LineNo, and the sensor data bridges real time to force/torque readings. ⚠ Train on the steady part of the cut — it is the largest single lever MapSeriesByCsvFile pairs each step with a window of sensor samples. The window is anchored at the step's end time and runs forward for one cycle period, so the samples a step is fitted against are the ones its neighbours produced, never its own. While the cut is steady, that costs nothing. A neighbouring step cutting the same arc at the same chip load produces, at a given rotation angle, the same force this step would have produced, so the borrowed samples are extra data rather than extra error. The pairing turns into a systematic bias only where the cutterworkpiece engagement changes across the window — cutter entry, pass exit, corners, depth changes. Measured on the D8 2-flute Al6061-T6 case (one source file at a 1 ms sampling period; only the training set and the CycleSamplingMode window vary): training set window Fc error @ t=0.2 Fn error @ t=0.2 R whole path (1076 cutting steps) SpindleCycle (default) 9.3 % 9.9 % 94.3 % whole path FluteCycle 7.1 % 8.1 % 95.7 % steady part only (~800 steps) SpindleCycle (default) 3.3 % 2.3 % 98.5 % steady part only (~800 steps) FluteCycle 3.2 % 2.4 % 98.6 % Two things to read off it. First, restricting training to the steady part is worth more than any other setting — here it more than halved the error, and did so at the coarsest sampling period. Second, once the transient is gone the window choice stops mattering (0.06 percentage points between the two modes, versus 2.2 on the whole path): FluteCycle's advantage on the whole path was only ever a shorter exposure to the entry and exit ramps. Keep the SpindleCycle default and its larger sample count. In this case the transient was 272 of the 1076 cutting steps: the entry ramp, where the radial engagement builds from 0.09 mm to the nominal 2 mm, and the pass exit, where it climbs to 5 mm as the cutter runs off the far corner. Select the training section by requiring the engagement to be constant — CuttingWidth_mm and CuttingDepth_mm steady across neighbouring steps — rather than by eyeballing the toolpath. Note Gaps in the sensor data are handled. A step whose pairing window contains no measured row — an acquisition dropout, or rows removed to keep the steady section only — is excluded from the mapping, and a single Map-ShotGap--StepsSkipped warning reports how many steps were skipped. A window-edge row is only interpolated when the rows bracketing the edge span at most two spindle revolutions; rows farther apart sit across a gap, and no value is fabricated from them. Watch for that warning after mapping measured data: a large count means the acquisition and the play do not overlap the way you think they do. Warning MachiningResolution_mm must not be too coarse for training: at 1/16 of the cutter diameter and coarser (D8 case: 0.0625 and 0.125), usable samples dropped by half and the phase pairing degraded badly — at 0.0625 it failed to recognise one of the six cutting passes outright, and coefficients came out wildly wrong (Fc 12 % to 33 %). Around 1/256 of the diameter (0.03125 here) the result saturates; refining further showed no benefit. 4. Run Simulation PlayNcFile(\"NC/file1.nc\"); Warning During training, do not: Adjust workpiece, tool, or controller resolution settings Use the NC player reset button (close the project instead) Save the project (system training configuration may overwrite tool resolution settings) 5. Export Simulation Data Export step data and waveform data for analysis: WriteStepFiles(\"Output/[NcName].step.csv\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 0.1); // 2nd arg = sampling period in ms The shot file contains time-resolved force columns: Tool.Fx/Fy/Fz, Workpiece.Fx/Fy/Fz, Spindle.Mx/My/Mz. ⚠ The shot sampling period is the dominant accuracy lever The second argument of WriteShotFiles is the sampling period in milliseconds, and when a simulated shot file is fed back into training it — not the angular division count, not the machining resolution — sets the accuracy ceiling. Each row is interpolated from the per-division force waveform, so the information per revolution is min(MillingCycleDivisionNum, samples per revolution), where samples per revolution = 60000 / (rpm × samplingPeriod_ms) Measured on the same case (2-flute D8, Al6061-T6, MachiningResolution_mm 0.03125, S1270 → one revolution = 47.2 ms): sampling period samples / rev R Fc error @ t=0.2 Fn error @ t=0.2 1 ms 47 94.2 % 9.3 % 9.9 % 0.1 ms 472 95.2 % 6.6 % 6.1 % At 1 ms the waveform is sampled only ~47×/rev, and raising MillingCycleDivisionNum from 180 to 720 changes nothing because the extra grid points are pure interpolation of the same data. Pick the sampling period first: for training on simulated data use a period at or below the division period (60000 / (rpm × MillingCycleDivisionNum) ms); when comparing against a real measurement, match the sampling period to the physical DAQ rate, otherwise the two sides carry different information densities and the comparison is biased. Note A fine period makes large files — the case above went from 13 MB at 1 ms to 128 MB at 0.1 ms for a 6-cut program. Budget disk accordingly, and do not commit such files to a repository. For coordinate system explanations, see Milling Physics Coordinates. 6. Train Milling Parameters TrainMillingPara (New Training) TrainMillingPara trains new coefficients independently of any existing workpiece parameters. TrainMillingPara(Fx|Fy|Fz, \"StainlessSteel.mp\"); ReTrainMillingPara (Calibration) ReTrainMillingPara calibrates existing coefficients (10% original weight, 90% new sample weight). ReTrainMillingPara(Fz|Mx|My|Mz, \"StainlessSteel.mp\"); Sample Flag Requirements Command Minimum Data Types Feed Per Tooth Requirement TrainMillingPara Fx\\|Fy\\|Fz (dynamometer) or Fz\\|Mx\\|My\\|Mz (smart tool holder) At least one sample with different feed per tooth ReTrainMillingPara No restriction No restriction Warning Using only Mx|My|Mz without Fz loses one degree of freedom (torque = r × F loses the r-direction), making coefficient training unreliable. Always include Fz when using torque data. Training Conditions Samples should have stable, repeatable waveforms for at least two spindle revolutions Under unstable conditions, plowing coefficients tend to be over-estimated Any NC path shape (slot milling, side milling, any tool shape) is acceptable when samples are stable 7. Evaluate Training Quality After training, the system reports three quality metrics: Correlation Coefficient (R) A single value for the overall result. Ranges from 0 to 1; for new tools, expect 0.950.999. Training Error Ratio (TrainingErrRatio) A per-step variable registered automatically after training. Lower values indicate better step-level quality: \\[ \\text{TrainingErrRatio} = \\sqrt{\\frac{\\sum_{i} e_i^2}{\\sqrt{\\sum_{i} y_i^2 \\cdot \\sum_{i} \\hat{y}_i^2}}} \\] Angle Offset (AngleOffset) A per-step variable representing the cutter rotation phase difference between measured and simulated data: \\[ \\theta_{offset} = \\frac{2\\pi \\cdot i_{min}}{N_{div}} \\] Tip If AngleOffset varies significantly across segments in the same training batch, the spindle may have experienced speed changes, data gaps, or the system could not accurately analyze the samples. 8. Load Trained Parameters After training, load the new coefficients into the workpiece: LoadCuttingParaByFile(\"StainlessSteel.mp\"); Warning If the training output file path is the same as the tool's existing cutting parameter file, reload the project after training to ensure the new parameters take effect. XML Configuration (GUI Workflow) When using the GUI-based training workflow, configure the .hincproj file: <MillingParaGridTrainingDestinationFile>MillingPara/trainedPara.mp</MillingParaGridTrainingDestinationFile> <MillingParaTraining> <IsMzEnabled>false</IsMzEnabled> <ForceOutlierRatio>2</ForceOutlierRatio> <LeadParaTemplate> <RakeFaceCuttingParaMap> <FluteFormNum>1</FluteFormNum> <NAngleDivisionNum>0</NAngleDivisionNum> <EcAngleDivisionNum>0</EcAngleDivisionNum> </RakeFaceCuttingParaMap> </LeadParaTemplate> <ResultParaTemplate> <RakeFaceCuttingParaMap> <FluteFormNum>1</FluteFormNum> <NAngleDivisionNum>0</NAngleDivisionNum> <EcAngleDivisionNum>0</EcAngleDivisionNum> </RakeFaceCuttingParaMap> </ResultParaTemplate> </MillingParaTraining> Set IsMzEnabled to true if mapped data contains axial spindle torque from a smart tool holder. Complete Script Example MachiningResolution_mm = 0.0625; EnablePhysics = true; MillingCycleDivisionNum = 180; // training only; default 36 suits normal simulation, 720 buys nothing ClearTimeMappingData(); AddTimeDataByFile(\"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile(\"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\"); TrainMillingPara(Fx|Fy|Fz, \"MillingPara/trained.mp\"); LoadCuttingParaByFile(\"MillingPara/trained.mp\"); WriteStepFiles(\"Output/[NcName].step.csv\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 0.1); See Also Milling Physics Coordinates — coordinate system reference Sensor Mapping Workflow — detailed mapping workflow Workflow: Basic Machining Simulation — basic simulation setup Workflow: NC Optimization — optimization after training Step — step data reference Glossary: SessionShell Quick-Reference — SessionShell quick-reference Training with a Dynamometer (Example) Cascading Mapping (Example)"
},
"workflows/geometry-validation.html": {
"href": "workflows/geometry-validation.html",
"title": "Workflow: Geometry Validation | HiAPI-C# 2025",
"summary": "Workflow: Geometry Validation This workflow covers the suite of tools for validating machining geometry after simulation, including collision detection, geometry difference comparison, defect scanning, and flying piece removal. flowchart TD Simulate[\"Run simulation\"] Collision[\"Collision detection\"] Diff[\"Geometry difference comparison\"] Defect[\"Geometry defect scanning\"] FlyPiece[\"Flying piece removal\"] Simulate --> Collision Simulate --> Diff Simulate --> Defect Simulate --> FlyPiece 1. Collision Detection Collision detection monitors whether the tool, holder, or spindle collides with the workpiece, fixture, or machine during simulation. Enable it before running the simulation. Script Commands EnableCollisionDetection = true; EnablePauseOnCollision = false; // set true to pause on collision Property Description EnableCollisionDetection Enables collision checking during simulation EnablePauseOnCollision Pauses execution when a collision is detected Combined with Pause on Failure EnablePauseOnFailure provides a broader pause-on-error mechanism: EnablePauseOnFailure = true; EnableCollisionDetection = true; PlayNcFile(\"NC/file1.nc\"); // pauses if a collision occurs GUI Operation Enable collision detection in the main options panel before simulation. Tip Collision detection adds computation overhead. For exploratory simulations where speed matters, you can disable it and re-enable for final validation. 2. Geometry Difference Comparison The Diff command compares the simulated workpiece shape against a target (design) shape to identify over-cut and under-cut regions. Script Command Diff(<DetectionRadius_mm>); Detection Radius is the surface extension distance for the target shape. Deviations beyond this distance are not computed. Larger values take longer. Diff(1); // detection radius = 1 mm Interpreting Results After comparison, the workpiece surface is color-coded: Green: Within tolerance Red (positive): Over-cut exceeding the threshold Blue (positive): Under-cut exceeding the threshold Note The path index on the workpiece surface is invalidated after running Diff. If you need to inspect individual step paths, do so before calling Diff. Case Study: Reciprocating Slope Interference CAM-generated NC code may contain subtle errors that are invisible without geometric comparison. Common issues found through Diff: Issue Description Right-angle wall under-cut Under-cut near walls where target geometry has sharp corners Inconsistent Z plunging Over-cut from inconsistent Z values in reciprocating plunge regions Insufficient radius clearance Under-cut at reciprocating edges where the tool hasn't moved out by its radius Zebra-pattern under-cut Under-cut stripes from excessive reciprocating path spacing Tip Without software comparison, these issues can only be discovered after physical machining, significantly impacting precision manufacturing. 3. Geometry Defect Scanning Geometry defect scanning helps debug abnormal workpiece or tool geometry. This is typically used only when geometry construction problems are suspected. ScanMeshedGeomInfDefect ScanMeshedGeomInfDefect scans for infinite edge cut defects in the meshed geometry. After scanning, defect areas are rendered with colored markers. ScanMeshedGeomInfDefect(); Return values: true — defects detected false — no defects null — unable to execute (e.g., workpiece does not exist) Workflow: Scan Before Simulation ScanMeshedGeomInfDefect(); Pause(); // visually inspect defects ClearDefectDisplayee(); // clear markers PlayNcFile(\"NC/file1.nc\"); ClearDefectDisplayee ClearDefectDisplayee removes defect markers from the workpiece: ClearDefectDisplayee(); Note Defect markers are automatically cleared when the workpiece is reloaded or the meshed geometry is reset. During workpiece initialization, if construction defects are detected, markers are automatically displayed. 4. Flying Piece Removal During five-axis cutting, small disconnected residual material fragments (“flying pieces”) may appear. Use RemoveFlyPiece to clean them up. Script Command RemoveFlyPiece(); Tip Run RemoveFlyPiece after simulation and before geometry export (ExportMeshedGeomToStl) to produce a clean output. Combined Validation Script Example // Configure and run simulation with collision detection EnableCollisionDetection = true; EnablePauseOnCollision = false; EnablePhysics = true; MachiningResolution_mm = 0.125; PlayNcFile(\"NC/file1.nc\"); // Remove any flying pieces RemoveFlyPiece(); // Compare against target geometry (1 mm detection radius) Diff(1); // Scan for geometry defects var hasDefects = ScanMeshedGeomInfDefect(); if (hasDefects == true) { WarningMessage(\"Geometry defects detected\"); } // Export final geometry ExportMeshedGeomToStl(\"Output/final.stl\"); WriteStepFiles(\"Output/[NcName].step.csv\"); See Also Workflow: Basic Machining Simulation — basic simulation setup Glossary: SessionShell Quick-Reference — SessionShell quick-reference"
},
"workflows/nc-optimization.html": {
"href": "workflows/nc-optimization.html",
"title": "Workflow: NC Optimization | HiAPI-C# 2025",
"summary": "Workflow: NC Optimization This workflow describes how to generate optimized NC files from a physics-based simulation. The optimizer adjusts feed rates to keep physical quantities (spindle power, torque, thermal stress, cutting force) within specified safety limits while maximizing machining efficiency. flowchart TD Prereq[\"Prerequisites<br>(simulation with physics,<br>cutting parameters)\"] Config[\"Configure optimization options\"] Simulate[\"Run simulation\"] Output[\"Generate optimized NC files\"] Verify[\"Verify optimization results\"] Prereq --> Config --> Simulate --> Output --> Verify 1. Prerequisites NC optimization requires a simulation environment with physics enabled and valid cutting parameters: EnablePhysics = true; LoadCuttingParaByFile(\"Material.mp\"); Prerequisite Description Physics enabled EnablePhysics must be true Cutting parameters Workpiece must have loaded milling coefficients (see Workflow: Milling Force Parameter Training) Valid tool definitions Tool geometry, flute count, and material properties configured Note Optimization is based on an ideal geometric model. If the workpiece is a casting or has installation errors, configure a conservatively larger workpiece geometry to prevent misidentification of cutting vs. non-cutting regions. 2. Configure Optimization Options Feed Rate Control Property Description Default OptEnableFeedrate Enable sequential feed rate optimization true OptEnableInterpolation Re-interpolation for smoother acceleration/deceleration — OptRapidFeed_mmdmin Feed rate for non-cutting regions (mm/min) — OptMinFeedrate_mmdmin Minimum cutting-region feed rate (mm/min) — OptMaxFeedrate_mmdmin Maximum cutting-region feed rate (mm/min) — OptMaxAcceleration_mmds2 Acceleration/deceleration limit (mm/s²) — OptFeedrateAssignmentRatio Re-interpolation trigger threshold — Extended Distance Property Description OptExtendedPreDistance_mm Pre-distance for equivalent calculation of cutting regions (mm) OptExtendedPostDistance_mm Post-distance for equivalent calculation of cutting regions (mm) Safety Factors (Physics-Based Constraints) Property Description OptSpindlePowerSafetyFactor Spindle power safety factor (0 = ignore) OptSpindleTorqueSafetyFactor Spindle torque safety factor (0 = ignore) OptThermalYieldSafetyFactor Thermal yield safety factor (0 = ignore) OptPreferedForce_N Target cutting force (N) Note Target value = 100% / Safety factor. For example, a safety factor of 1.5 means the physical quantity targets ~67% of the limit. Constraint Priority In cutting regions, constraints are applied in this order: Direct feed rate constraints (min/max feed rate, min/max feed per tooth from tool settings) Acceleration/deceleration constraints (OptMaxAcceleration_mmds2) Physics-based constraints (spindle power, torque, thermal yield, preferred force) When constraints at the same priority conflict, the lowest feed rate is used. Script Command Example OptEnableFeedrate = true; OptEnableInterpolation = true; OptRapidFeed_mmdmin = 4000; OptMinFeedrate_mmdmin = 100; OptMaxFeedrate_mmdmin = 4000; OptMaxAcceleration_mmds2 = 10; OptExtendedPreDistance_mm = 3; OptExtendedPostDistance_mm = 2; OptSpindlePowerSafetyFactor = 1.5; OptSpindleTorqueSafetyFactor = 1.5; OptThermalYieldSafetyFactor = 0; OptPreferedForce_N = double.PositiveInfinity; XML Configuration (NC Code Inline) Optimization settings can be embedded in NC code comments: N0110 X-3.064 Y6.378 (;@OptMaxAcceleration_mmds2=10;) N0150 G01 X-3.068 Y40.776 (;@OptMaxAcceleration_mmds2=100; OptMaxFeedrate_mmdmin=12000;) 3. Run Simulation Configuration can be interleaved between NC files. Settings apply to the files that follow: OptRapidFeed_mmdmin = 4000; PlayNcFile(\"NC/file1.nc\"); OptRapidFeed_mmdmin = 8000; PlayNcFile(\"NC/file2.nc\"); Excluding Lines from Optimization To preserve specific NC lines unchanged: N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();) To exclude a range: N0140 G03 X-2.66 Y38.193 (;@BeginPreserve();) N0150 G01 X-3.068 Y40.776 N0160 X-3.555 Y43.338 (;@EndPreserve();) Warning Do not combine UpdateNcOptOption inside the SessionStepBuilt event with NC-embedded optimization commands. This may cause undefined behavior due to parallel computation. 4. Generate Optimized NC Files OptimizeToFiles writes the optimized NC programs: OptimizeToFiles(\"Cache/Opt-[NcName]\"); The [NcName] template is replaced with each input NC file name. 5. Verify Optimization Results Optimization Logs Enable the per-step log to see which constraint limited each step: EnableIndividualStepAdjustmentLog = true; The .IndependentStepAdjustment.log file records per-step calculations including: FrtByPreferedForce_mm — feed per tooth from target force FrtByYieldingStressRatio_mm — feed per tooth from yielding stress FrtBySpindleTorqueRatio_mm — feed per tooth from spindle torque FrtBySpindlePowerRatio_mm — feed per tooth from spindle power FrtByThermalYieldingRatio_mm — feed per tooth from thermal yield Embedded Log Comments Control embedded log verbosity with EmbeddedLogMode: Mode Description None No log comments SimpleLog StepIndex on re-interpolated lines; LineNo on last interpolated line per original line FullLog StepIndex and LineNo on all lines Example output: G01 X10.0 Y20.0 F500 (src(LineNo: 140, StepIndex: 256)) Tracking Individual Step Constraints To isolate which physical quantity limits each step, disable smoothing: OptMaxAcceleration_mmds2 = double.PositiveInfinity; OptFeedrateAssignmentRatio = 0; OptExtendedPreDistance_mm = 0; OptExtendedPostDistance_mm = 0; EnableIndividualStepAdjustmentLog = true; EmbeddedLogMode = NcOptimizationEmbeddedLogMode.FullLog; Post-Optimization Simulation Differences Optimized feed rates produce different interpolation points, causing: Different simulation mesh errors Surface morphology changes at the surface roughness level (more pronounced at corners) Simulated physical quantities after optimization may be slightly above target values due to these differences. Tip For abnormally low optimized feed rates at corners, refer to Corner Feed Rate Optimization. Tool Breakage Solutions If the simulation shows yielding stress ratio, max spindle torque ratio, or max spindle power ratio above 100%, consider: Modify the toolpath to reduce cutting width/depth Use HiNC optimization to adjust feed rates, bringing these ratios below 100% For thermal edge chipping, reduce the spindle speed to allow heat dissipation. Complete Script Example EnablePhysics = true; LoadCuttingParaByFile(\"Material.mp\"); OptEnableFeedrate = true; OptEnableInterpolation = true; OptRapidFeed_mmdmin = 4000; OptMinFeedrate_mmdmin = 100; OptMaxFeedrate_mmdmin = 4000; OptMaxAcceleration_mmds2 = 10; OptExtendedPreDistance_mm = 3; OptExtendedPostDistance_mm = 2; OptSpindlePowerSafetyFactor = 1.5; OptSpindleTorqueSafetyFactor = 1.5; OptThermalYieldSafetyFactor = 0; OptPreferedForce_N = double.PositiveInfinity; PlayNcFile(\"NC/file1.nc\"); OptimizeToFiles(\"Cache/Opt-[NcName]\"); WriteStepFiles(\"Output/[NcName].step.csv\"); See Also NC Optimization (Concepts) — theory and objectives Corner Feed Rate Optimization Workflow: Milling Force Parameter Training — prerequisite: training cutting parameters Workflow: Basic Machining Simulation — basic simulation setup Glossary: SessionShell Quick-Reference — SessionShell quick-reference"
},
"workflows/project-construction.html": {
"href": "workflows/project-construction.html",
"title": "Workflow: Constructing a Project through the Web API | HiAPI-C# 2025",
"summary": "Workflow: Constructing a Project through the Web API Basic Simulation describes what a project contains. This page describes how to build one so that it is actually finished — the ordering that avoids rework, how to shape the mission, and the acceptance test that tells you the project is complete rather than merely populated. It is written for whoever assembles a .hincproj from a customer's deliverables — a person driving the browser UI, or an agent driving the same operations over the HTTP API. flowchart TD New[\"1 · New project<br>(self-contained root)\"] Assets[\"2 · Place assets<br>NC, STL, resource files\"] Equip[\"3 · Equipment<br>chain, spindle\"] Job[\"4 · Job<br>stock, ideal geom, material\"] Ctrl[\"5 · Controller<br>brand + its own tables\"] Tools[\"6 · Tool house\"] Mission[\"7 · Mission<br>grouped, per-group resolution\"] Replay[\"8 · Replay and read<br>every message\"] Cross[\"9 · Numeric cross-checks\"] Assume[\"10 · Record every assumption\"] New --> Assets --> Equip --> Job --> Ctrl --> Tools --> Mission --> Replay --> Cross --> Assume Replay -->|any warning| Ctrl Build through the API, not by editing the XML Create and modify projects through the service's HTTP API. It is the same code path the UI uses, so a project built that way is on the supported create/load/save route. Hand-authoring the .hincproj XML is a fallback for fields the API cannot yet reach — and when you hit one, the better fix is to add the endpoint. 1. One self-contained root The .hincproj and every asset it references live under one folder — the project's own directory — and every reference is relative to it with no ../. <project>/ ├── <name>.hincproj ├── NC/ the programs, copied in ├── Geom/ workpiece / fixture STL ├── MachineTool/ the kinematic chain ├── SpindleCapability/ ├── WorkpieceMaterial/ ├── CuttingParameter/ ├── CutterMaterial/ └── README.md what was assumed, and why Two things do not move themselves, so bring them in by hand before you wire anything: NC files. A program-file command stores a plain relative path; nothing copies the file. Machine-tool side files. A chain that externalises its mechanism references the side file and its STL bodies by bare name, relative to the .mt's own folder — keep the whole folder together. Resource files (chain, spindle, cutting parameters, workpiece material, cutter material) are pre-prepared data loaded by reference. Stage a copy inside the project and load it from there, so the saved reference points inside the project rather than at a shared library. 2. Order the build to avoid rework Later steps read earlier ones, so this order costs the least: New project at its final path. Machine tool, then spindle capability. Workpiece: stock geometry, ideal (target) geometry, resolution, the geometry-to-program-zero and geometry-to-fixture transforms, then material and cutting parameters. Controller: brand first — switching brand later resets brand-specific tables — then the controller's own tables (§4). Tool house: per tool, shaper profile → fluting → exposed height → holder → upper beam → cutter material. Then refresh the offset tables from the tool house. Program zero: with the workpiece placed and the chain loaded, derive the work offset from the model rather than typing a number. See Program Zero Alignment. Mission (§3). Save, then load the saved file back and re-check. A project that cannot be reloaded cleanly is not built. Important Verify the axis set after loading a machine tool. A kinematic chain binds each axis transformer by branch name (X/Y/Z/A/B/C); a branch left at its authoring default name yields no transformer, and that axis silently does not exist. The trap is that the controller preset already seeds the linear axes, so a chain missing its Z branch still reports a Z — only a missing rotary gives it away. Compare the reported axes against the mechanism you expect. 3. Shape the mission around the process, not the file list A flat list of program files runs correctly but reads badly and gives you one knob for the whole job. Group the programs into one List command per operation family, in the order the process actually runs: Machining Motion Resolution Collision Detection [Off] Pause on Failure [Off] Physics [On] ▸ 1 · Drilling Machining Resolution 0.5 mm centre drill, drill ▸ 2 · Outside roughing Machining Resolution 0.5 mm roughing 1 … 5 ▸ 3 · Outside finishing Machining Resolution 0.2 mm finishing 1 … 7 ▸ 4 · Pocket roughing Machining Resolution 0.5 mm ▸ 5 · Pocket finishing Machining Resolution 0.2 mm ▸ 6 · Rest milling Machining Resolution 0.2 mm ▸ 7 · Rib machining Machining Resolution 0.2 mm ▸ 8 · Deburring Machining Resolution 0.2 mm Post-Execution geometry diff on Why this shape: Grouping must not reorder. The stock evolves from one operation to the next, so the sequence is load-bearing. Group adjacent operations; never sort the list into tidy families if that moves an operation past another one. Each group carries its own machining resolution. Roughing is about force, not surface, so a coarse resolution is enough and runs quickly. Finishing, rib and deburring passes leave the final surface with small and ball cutters and deserve a finer one. Setting the resolution mid-mission only changes the value the act runner cuts with — the workpiece is not rebuilt, and the geometry container is adaptive — so alternating coarse and fine between groups is safe. A group is a switch. Disabling one List skips a whole phase, which is how you re-run just the finishing passes without deleting anything. Budget the fine groups. Machining resolution drives the cost of subtracting material, not the number of simulation steps — the step count follows the motion resolution and does not change. On one 33-operation job, refining the finishing groups from 0.5 mm to 0.2 mm left the step count identical and multiplied wall-clock time by about 2.8. Decide the finish resolution with that trade-off in view, and say what it costs in the project's README so nobody is surprised. Setup commands are granular. Machining resolution, motion resolution, collision detection, pause-on-failure and physics are separate commands, so each can sit exactly where it should take effect — global ones at the top, per-phase ones inside a group. Tip A project that loads an ideal (target) geometry and never compares against it is unfinished. Turn on the geometry diff in the Post-Execution command so a full replay ends by measuring the machined stock against the finished part. 4. Fill the controller's own tables The tool house describes the physical tool. The controller has its own record of the same tool, and the NC program reads the controller's copy. Both must exist. For a Siemens-style controller that is two tables: Table Holds If empty Tool name → tool number the names a T=\"…\" call uses the tool never mounts, and the program produces no machining steps at all Tool edge offsets per (tool, edge): length along the tool axis, radius every edge call falls back to the generic offset table and logs a warning Take the values from the tool house and assert they match before writing. When the warning disappears and the cut does not move at all, that is the proof the rows carry the right numbers — if the geometry shifts, one of the two tables was wrong. Note Not every controller parameter has a consumer. Some, such as the maximum spindle speed, are recorded machine data that nothing in the pipeline reads today. Filling them is good hygiene, but do not report it as fixing a defect, and remember that copying a guessed value (an assumed spindle, say) into a second place means both must move when the real datum arrives. 5. The finish line is a clean replay, not a filled form Replay the whole mission and inventory the messages by id. Every warning is an item on the to-do list. Resist writing one up as an acceptable fallback: a fallback firing means the project never supplied the data the fallback exists to cover. Read messages at a low severity so nothing hides. The severities are Message, Success, Progress, Warning, Error — note there is no Info, and an unrecognised name is rejected in the response body rather than by an HTTP error, which reads exactly like “no messages”. Stop when only declared informational messages remain — the ones that state a known, deliberate limitation. Typical survivors: one per NC file, reporting the line count; machine M-codes that the runner recognises and consumes but does not model (OEM auxiliary functions such as coolant valves), which are announced rather than silently ignored. Anything else is work. 6. Two numeric cross-checks — and what they do not prove Messages catch what the runner noticed. These two catch datum errors that produce no message at all. Depth of cut against the programmed layer depth. On a roughing pass whose step-down you can read from the NC, the peak cutting depth must equal it. This pins the Z datum: if program zero is wrong, the tool cuts a different amount and the peak does not land on the programmed number. Cycle time against the post-processor's own estimate. Many post-processors write a per-operation machining time into the program as a comment. Sum them and compare with the simulated time. Warning Scope the cycle-time check honestly. It confirms that feed rates and path length are consumed correctly. It is not a comparison against the real machine, because both sides ignore the same things: there is no acceleration model (time is path length over feed rate, with no ramps — which costs the most on finishing passes made of thousands of short segments), tool-change time defaults to zero, and the tool-change and home positions come from the chain rather than from machine data. For the same reason, a customer's “total machining time” running well above the sum of the per-operation comments is usually not a contradiction — the comments are cutting time, the total is wall clock including tool changes and inter-operation moves. Two different quantities. 7. Record every assumption Real deliverables are incomplete. Build with sensible values, and write each one down in a README.md beside the .hincproj — what was assumed, what it was inferred from, and what changes when the real value arrives. Recurring items: work offsets, blank size and material, tool helix angle, stick-out, holder dimensions, the spindle's powertorque curve, fixture geometry, and the cycle-time inputs above. Cross-reference: Project Data Checklist is the list to hand the customer before building; this section is what you hand back after."
},
"workflows/sensor-mapping.html": {
"href": "workflows/sensor-mapping.html",
"title": "Workflow: Sensor Data Mapping | HiAPI-C# 2025",
"summary": "Workflow: Sensor Data Mapping This workflow covers mapping external sensor data (dynamometer, smart tool holder, accelerometer) to simulation toolpaths so that simulation steps can index real-world measurement data. flowchart TD Prepare[\"Prepare sensor CSV data\"] Configure[\"Configure time mapping\"] Simulate[\"Run simulation\"] Map[\"Map data to simulation steps\"] View[\"View mapped results\"] Prepare --> Configure --> Simulate --> Map --> View Overview Data mapping associates external sensor measurements with simulated machining steps. After mapping, each step can reference real-world force, torque, and acceleration data for: Inspecting machining states Training milling coefficients (see Workflow: Milling Force Parameter Training) Calibrating milling coefficients Comparing simulated vs. measured forces Depending on data volume and application, mapping is either one-to-one (each step maps to one data point) or one-to-many (each step maps to multiple data points from high-sampling-rate sensors). 1. Prepare Sensor CSV Data Sensor Data Format The CSV file must have a header row with ActualTime and sensor channels: Source Headers Aliases Dynamometer Fx, Fy, Fz Workpiece.Fx, Workpiece.Fy, Workpiece.Fz Smart tool holder Mx, My, Mz Holder.Mx, Holder.My, Holder.Mz Accelerometer Ax, Ay, Az — ActualTime,Mx,My,Mz 18:23:54.703,-0.02923,0.10733,0.00409 18:23:54.704,0.04155,-0.04457,0.00448 ... The time format is <hours>:<minutes>:<seconds>.<fractional seconds>. Additional fields (e.g., CH1, CH2) may be included and will be available after mapping. Controller Data Format (for Two-Layer Mapping) The controller CSV must contain at least FileNo, LineNo, and ActualTime: FileNo,LineNo,ActualTime,MC.X,MC.Y,MC.Z,... 1,6,00:00:00.030,0,0,0.37,... 2. Configure Time Mapping Strategy A: One-to-One Mapping (MapSingleByCsvFile) MapSingleByCsvFile reads a CSV file and uses time interpolation to map each data point to one simulation step. PlayNcFile(\"NC/file1.nc\"); MapSingleByCsvFile(\"Data/sensor.csv\"); Strategy B: One-to-One via PlayCsvFile PlayCsvFile can drive the simulation directly from CSV data, where each row becomes one step. Custom fields in the CSV are automatically available on each step. PlayCsvFile(\"Data/controller.csv\"); Strategy C: One-to-Many Global Mapping (MapSeriesByCsvFile) For high-sampling-rate data, first establish ActualTime via one-to-one mapping, then map the series: PlayNcFile(\"NC/file1.nc\"); MapSingleByCsvFile(\"Data/controller.csv\"); // establishes ActualTime MapSeriesByCsvFile(\"Data/sensor.csv\"); // maps high-rate series Strategy D: One-to-Many Local Mapping (Anchor-Based) For mapping sensor data to specific NC path segments using anchors. Step 1 — Specify input data and time ranges: ClearTimeMappingData(); AddTimeDataByFile(\"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile(\"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); Step 2 — Specify NC path anchors (embedded in NC code): X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); For range mapping across multiple NC lines, use BeginSelection / EndSelection: ;@BeginSelection(\"region1\", LineBegin, null); ... ;@EndSelection(\"region1\", LineEnd, null); Anchor Flags: Flag Description LineBegin Motion start point of the line LineEnd Motion end point of the line FirstTouch First contact with the workpiece LastTouch Last contact with the workpiece Offset Options: Offset Description null No offset ShiftTime_s(<seconds>) Time-based offset (positive = forward) ShiftDistance_mm(<mm>) Distance-based offset (positive = forward) Note For FANUC controllers that do not support ; as a comment character, enclose the script command in a comment block: X13. F20 (;@LineSelection(\"lineA\", FirstTouch, null, LineEnd, null);) Map on Selection End EnableMapOnSelectionEnd controls automatic mapping when a selection ends (default: true): EnableMapOnSelectionEnd = true; // EndSelection triggers Map automatically Clearing Mapping Data Mapping data persists across player resets. To clear: ClearTimeMappingData(); 3. Run Simulation PlayNcFile(\"NC/file1.nc\"); Note Why interpret NC code instead of playing CSV directly? The system NC interpreter produces more accurate simulation paths than direct controller CSV playback, which has limited sampling resolution that distorts tool paths. 4. Map Data After simulation, apply the mapping strategy chosen in step 2. For the two-layer chained approach: // Chain 1: Controller data → simulation steps (via FileNo/LineNo → ActualTime) MapSingleByCsvFile(\"Data/controller.csv\"); // Chain 2: Sensor data → simulation steps (via ActualTime → sensor readings) MapSeriesByCsvFile(\"Data/sensor.csv\"); The chaining works because: Simulation steps and controller data share FileNo/LineNo anchors Controller data and sensor data share ActualTime anchors After chaining, simulation steps can index sensor data Tip Due to machine acceleration/deceleration, simulation time and actual time diverge over longer durations. Anchor-based linear projection corrects for this drift. 5. View Mapped Results After mapping, sensor data is available on each step. Use the UI to: View color gradient maps on the workpiece geometry Inspect time-series charts Click-to-track specific data channels Export mapped results: WriteStepFiles(\"Output/[NcName].step.csv\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 1); Complete Two-Layer Mapping Example // Configure resolution MachiningResolution_mm = 0.125; EnablePhysics = true; // Clear any previous mapping data ClearTimeMappingData(); // Run simulation using NC interpreter for accurate paths PlayNcFile(\"NC/machining.nc\"); // Map controller data (contains FileNo, LineNo, ActualTime) MapSingleByCsvFile(\"Data/controller.csv\"); // Map high-rate sensor data (contains ActualTime and force/torque) MapSeriesByCsvFile(\"Data/sensor.csv\"); // Export results WriteStepFiles(\"Output/[NcName].step.csv\"); See Also Workflow: Milling Force Parameter Training — using mapped data for coefficient training Workflow: Basic Machining Simulation — basic simulation setup Step — step data model Glossary: SessionShell Quick-Reference — SessionShell quick-reference Example Project: Mapping Controller and Sensor Data to Simulated NC Toolpaths and Updating Milling Coefficients — mapping demo example project Example Project: Training Milling Coefficients with a Dynamometer — dynamometer training example project"
},
"workflows/simulation-report.html": {
"href": "workflows/simulation-report.html",
"title": "Workflow: Building a Simulation Report | HiAPI-C# 2025",
"summary": "Workflow: Building a Simulation Report After a simulation has run, a report communicates the result: what the finished part looks like, how the machining loads evolved over the program, and whether the run was clean. This workflow covers how to turn a completed player session into a focused set of report captures — keeping the panels that carry result information and leaving out the navigation chrome. flowchart TD Build[\"Build project<br>(equipment, job, options)\"] Run[\"Run simulation\"] Capture[\"Capture focused views<br>(canvas · strip charts · messages)\"] Assemble[\"Assemble report\"] Build --> Run --> Capture --> Assemble 1. Build and Run Stand up and run the project first — see Basic Machining Simulation for equipment, job, options, and the Play* run commands. A report is built from a completed run: the workpiece geometry is final and the strip charts span the whole program. 2. What to Capture — and What to Leave Out The player screen carries more panels than a report needs. A good report keeps the panels that hold result information and drops the navigation chrome: Panel In a report? Why Main 3D canvas Keep The finished part — the headline image Strip Charts Keep Machining loads / availability over the whole program Session Messages Keep (optional) The run log — proof the run was clean Control Tree column Drop Navigation only; no result content Selected-Step Info column Drop Single-step detail; not a whole-run summary Use the three region quick-toggles in the top toolbar to collapse the columns you are not capturing, so each kept panel gets the full width/height. 3. Main 3D Canvas — Several Views Capture the finished part from several angles. Use the View menu on the Rendering Canvas Tool Bar to switch between the orthographic and isometric presets (Isometric, Front, Back, Left, Right, Top, Bottom). Isometric + Top are the most informative for most parts. Add Front / Right for thin or shallow parts, where the side profile carries the wall thickness. Tip The tool-path overlay carries information too — capture both. The machined tool-path overlay (the CL strip) shows the machining coverage and the retract/plunge motion, but it can be dense enough to obscure the part shape underneath. It is worth capturing each view both ways: with the tool path on (machining coverage) and off (clean part). Toggle it with the Tool Path button on the Player Extended Rendering-Canvas Tool Bar (and Path Points off with it). The workpiece geometry is a separate display flag, so it stays visible when the tool path is off. 4. Strip Charts — Capture Wide The strip charts read best wide: at full width the whole-program time axis is legible and the per-series peaks are distinct. Before capturing, widen the right dock (drag its divider, or collapse the Selected-Step Info column so the charts fill the dock). See Strip Charts for the chart types (Availability, Roughness, Color-Index) and their legends. 5. Session Messages — the Run Log The Session Messages panel's Shell / NC / Step tabs are the run log. Zero errors across all three tabs is the single strongest piece of report evidence that the run was clean. Use the panel's Export action to save the full log alongside the report. 6. Assemble Combine the captures into the report: a multi-view montage of the finished part, the wide strip charts, and (optionally) the session log. Pair each with a one-line caption stating what it shows (part geometry, load history, clean run). See Also Basic Machining Simulation — build and run the project first Strip Charts — chart types and legends Player Extended Rendering-Canvas Tool Bar — the Tool Path / Path Points toggles Session Message Panel — Shell / NC / Step tabs and Export Glossary: SessionShell Quick-Reference — SessionShell quick-reference"
}
}