deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 deletions
@@ -191,8 +191,8 @@ Class CachedTris
<a id="Hi_Cbtr_CachedTris__ctor_" data-uid="Hi.Cbtr.CachedTris.#ctor*"></a>
<h3 id="Hi_Cbtr_CachedTris__ctor_Hi_Geom_NativeTopoStld_Hi_Geom_Mat4d_System_Double_" data-uid="Hi.Cbtr.CachedTris.#ctor(Hi.Geom.NativeTopoStld,Hi.Geom.Mat4d,System.Double)">
CachedTris(NativeTopoStld, Mat4d, double)
<h3 id="Hi_Cbtr_CachedTris__ctor_Hi_Geom_Topo_NativeTopoStl3d_Hi_Geom_Mat4d_System_Double_" data-uid="Hi.Cbtr.CachedTris.#ctor(Hi.Geom.Topo.NativeTopoStl3d,Hi.Geom.Mat4d,System.Double)">
CachedTris(NativeTopoStl3d, Mat4d, double)
</h3>
@@ -202,12 +202,12 @@ only available for geometry that does not contains near point or points on the s
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CachedTris(NativeTopoStld stl, Mat4d mat, double fractionTolerance)</code></pre>
<pre><code class="lang-csharp hljs">public CachedTris(NativeTopoStl3d stl, Mat4d mat, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stl</code> <a class="xref" href="Hi.Geom.NativeTopoStld.html">NativeTopoStld</a></dt>
<dt><code>stl</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd><p>stl</p>
</dd>
<dt><code>mat</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
@@ -231,8 +231,8 @@ only available for geometry that does not contains near point or points on the s
<a id="Hi_Cbtr_CachedTris__ctor_" data-uid="Hi.Cbtr.CachedTris.#ctor*"></a>
<h3 id="Hi_Cbtr_CachedTris__ctor_Hi_Geom_NativeTopoStld_Hi_Geom_NativeTopoStlfr_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_Hi_Cbtr_CachedTris_SweepingMode_" data-uid="Hi.Cbtr.CachedTris.#ctor(Hi.Geom.NativeTopoStld,Hi.Geom.NativeTopoStlfr,Hi.Geom.Mat4d,Hi.Geom.Mat4d,System.Double,Hi.Cbtr.CachedTris.SweepingMode)">
CachedTris(NativeTopoStld, NativeTopoStlfr, Mat4d, Mat4d, double, SweepingMode)
<h3 id="Hi_Cbtr_CachedTris__ctor_Hi_Geom_Topo_NativeTopoStl3d_Hi_Geom_Topo_NativeTopoStl3wfr_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_Hi_Cbtr_CachedTris_SweepingMode_" data-uid="Hi.Cbtr.CachedTris.#ctor(Hi.Geom.Topo.NativeTopoStl3d,Hi.Geom.Topo.NativeTopoStl3wfr,Hi.Geom.Mat4d,Hi.Geom.Mat4d,System.Double,Hi.Cbtr.CachedTris.SweepingMode)">
CachedTris(NativeTopoStl3d, NativeTopoStl3wfr, Mat4d, Mat4d, double, SweepingMode)
</h3>
@@ -242,15 +242,15 @@ The sweeping is from the transformation of <code class="paramref">pre</code> to
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CachedTris(NativeTopoStld tstl, NativeTopoStlfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto)</code></pre>
<pre><code class="lang-csharp hljs">public CachedTris(NativeTopoStl3d tstl, NativeTopoStl3wfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tstl</code> <a class="xref" href="Hi.Geom.NativeTopoStld.html">NativeTopoStld</a></dt>
<dt><code>tstl</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd><p>Topo Stl</p>
</dd>
<dt><code>tstlfr</code> <a class="xref" href="Hi.Geom.NativeTopoStlfr.html">NativeTopoStlfr</a></dt>
<dt><code>tstlfr</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd><p>Topo Stl with fraction tolerance</p>
</dd>
<dt><code>pre</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
@@ -324,6 +324,42 @@ NAN is the lowest priority. the smaller number is the lower priority.</p>
<a id="Hi_Cbtr_CbtrPickable_IsColorTableCovered_" data-uid="Hi.Cbtr.CbtrPickable.IsColorTableCovered*"></a>
<h3 id="Hi_Cbtr_CbtrPickable_IsColorTableCovered" data-uid="Hi.Cbtr.CbtrPickable.IsColorTableCovered">
IsColorTableCovered
</h3>
<div class="markdown level1 summary"><p>True when this attachment's color is served by the native attachment
color table, i.e. a <a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Rgb">Rgb</a> 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
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache">CleanAttachedCbtrNodesDrawingCache()</a> after a recolor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsColorTableCovered { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CbtrPickable_Rgb_" data-uid="Hi.Cbtr.CbtrPickable.Rgb*"></a>
<h3 id="Hi_Cbtr_CbtrPickable_Rgb" data-uid="Hi.Cbtr.CbtrPickable.Rgb">
@@ -360,20 +396,20 @@ NAN is the lowest priority. the smaller number is the lower priority.</p>
</h2>
<a id="Hi_Cbtr_CbtrPickable_CleanLinkedCbtrNodesDrawingCache_" data-uid="Hi.Cbtr.CbtrPickable.CleanLinkedCbtrNodesDrawingCache*"></a>
<a id="Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache_" data-uid="Hi.Cbtr.CbtrPickable.CleanAttachedCbtrNodesDrawingCache*"></a>
<h3 id="Hi_Cbtr_CbtrPickable_CleanLinkedCbtrNodesDrawingCache" data-uid="Hi.Cbtr.CbtrPickable.CleanLinkedCbtrNodesDrawingCache">
CleanLinkedCbtrNodesDrawingCache()
<h3 id="Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache" data-uid="Hi.Cbtr.CbtrPickable.CleanAttachedCbtrNodesDrawingCache">
CleanAttachedCbtrNodesDrawingCache()
</h3>
<div class="markdown level1 summary"><p>CleanLinkedNodesDrawingCache.
<div class="markdown level1 summary"><p>CleanAttachedNodesDrawingCache.
Not thread safe with substraction process.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void CleanLinkedCbtrNodesDrawingCache()</code></pre>
<pre><code class="lang-csharp hljs">public void CleanAttachedCbtrNodesDrawingCache()</code></pre>
</div>
@@ -192,8 +192,8 @@ including both defect data and visualization drawings.</p>
<a id="Hi_Cbtr_ConstructionDefectDisplayee__ctor_" data-uid="Hi.Cbtr.ConstructionDefectDisplayee.#ctor*"></a>
<h3 id="Hi_Cbtr_ConstructionDefectDisplayee__ctor_System_Collections_Generic_List_Hi_Cbtr_CubeTree_DefectNodeInfo__System_IProgress_System_Object__" data-uid="Hi.Cbtr.ConstructionDefectDisplayee.#ctor(System.Collections.Generic.List{Hi.Cbtr.CubeTree.DefectNodeInfo},System.IProgress{System.Object})">
ConstructionDefectDisplayee(List&lt;DefectNodeInfo&gt;, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_ConstructionDefectDisplayee__ctor_System_Collections_Generic_List_Hi_Cbtr_CubeTree_DefectNodeInfo__System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.ConstructionDefectDisplayee.#ctor(System.Collections.Generic.List{Hi.Cbtr.CubeTree.DefectNodeInfo},System.IProgress{Hi.Common.Messages.IMessage})">
ConstructionDefectDisplayee(List&lt;DefectNodeInfo&gt;, IProgress&lt;IMessage&gt;)
</h3>
@@ -202,7 +202,7 @@ including both defect data and visualization drawings.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ConstructionDefectDisplayee(List&lt;CubeTree.DefectNodeInfo&gt; defectNodeInfos, IProgress&lt;object&gt; progress = null)</code></pre>
<pre><code class="lang-csharp hljs">public ConstructionDefectDisplayee(List&lt;CubeTree.DefectNodeInfo&gt; defectNodeInfos, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -210,7 +210,7 @@ including both defect data and visualization drawings.</p>
<dt><code>defectNodeInfos</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a>.<a class="xref" href="Hi.Cbtr.CubeTree.DefectNodeInfo.html">DefectNodeInfo</a>&gt;</dt>
<dd><p>Defect node infos from cube tree construction.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for user-facing messages.</p>
</dd>
</dl>
@@ -173,6 +173,9 @@ Class CubeTree
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.SweptableUtil.html#Hi_Machining_SweptableUtil_AddBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_">SweptableUtil.AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.SweptableUtil.html#Hi_Machining_SweptableUtil_RemoveBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_">SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)</a>
</div>
@@ -493,6 +496,39 @@ Errors relative to the input geometry are distributed at sharp edges and curved
<a id="Hi_Cbtr_CubeTree_IsDisposed_" data-uid="Hi.Cbtr.CubeTree.IsDisposed*"></a>
<h3 id="Hi_Cbtr_CubeTree_IsDisposed" data-uid="Hi.Cbtr.CubeTree.IsDisposed">
IsDisposed
</h3>
<div class="markdown level1 summary"><p>Gets a value indicating whether this tree has been disposed.
All native-backed members become no-ops afterwards (value getters return neutral defaults).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsDisposed { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Resolution_" data-uid="Hi.Cbtr.CubeTree.Resolution*"></a>
<h3 id="Hi_Cbtr_CubeTree_Resolution" data-uid="Hi.Cbtr.CubeTree.Resolution">
@@ -595,6 +631,144 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
</h2>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Cbtr_CachedTris_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Cbtr.CachedTris,System.Double,System.Boolean,System.Boolean)">
Add(CachedTris, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Boolean-union counterpart of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_Substract_Hi_Cbtr_CachedTris_System_Double_System_Boolean_System_Boolean_">Substract(CachedTris, double, bool, bool)</a>.
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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(CachedTris adderBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>adderBufferedTris</code> <a class="xref" href="Hi.Cbtr.CachedTris.html">CachedTris</a></dt>
<dd><p>Addition geometry</p>
</dd>
<dt><code>preferredCubeWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The preferred cube width for the operation.</p>
</dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, the returned Addition contains contour groups of the newly created surface, which can be used for further analysis.</p>
</dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive adding mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Cbtr_GeomBoolCache_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Cbtr.GeomBoolCache,System.Boolean,System.Boolean)">
Add(GeomBoolCache, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Adds (boolean union) a geometry to the cube tree using a geometry boolean cache.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>geomBoolCache</code> <a class="xref" href="Hi.Cbtr.GeomBoolCache.html">GeomBoolCache</a></dt>
<dd><p>The geometry boolean cache containing the geometry to add.</p>
</dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, the returned Addition will contain the contours of the newly created surface.</p>
</dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive adding mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd><p>The result of the addition operation.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Geom_NativeStl_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Geom.NativeStl,System.Double,System.Boolean,System.Boolean)">
Add(NativeStl, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Boolean-union counterpart of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_Substract_Hi_Geom_NativeStl_System_Double_System_Boolean_System_Boolean_">Substract(NativeStl, double, bool, bool)</a>.
Same functionality as Add(CachedTris,...). Less efficient due to the additional step of converting to <a class="xref" href="Hi.Cbtr.CachedTris.html">CachedTris</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(NativeStl adderStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>adderStl</code> <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd></dd>
<dt><code>preferredCubeWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_CleanCache_" data-uid="Hi.Cbtr.CubeTree.CleanCache*"></a>
<h3 id="Hi_Cbtr_CubeTree_CleanCache" data-uid="Hi.Cbtr.CubeTree.CleanCache">
@@ -682,10 +856,78 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<a id="Hi_Cbtr_CubeTree_DetachAttachments_" data-uid="Hi.Cbtr.CubeTree.DetachAttachments*"></a>
<h3 id="Hi_Cbtr_CubeTree_DetachAttachments" data-uid="Hi.Cbtr.CubeTree.DetachAttachments">
DetachAttachments()
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DetachAttachments()</code></pre>
</div>
<a id="Hi_Cbtr_CubeTree_DetachUnderWriteGate_" data-uid="Hi.Cbtr.CubeTree.DetachUnderWriteGate*"></a>
<h3 id="Hi_Cbtr_CubeTree_DetachUnderWriteGate_System_Collections_Generic_IReadOnlyCollection_Hi_Cbtr_CbtrPickable__" data-uid="Hi.Cbtr.CubeTree.DetachUnderWriteGate(System.Collections.Generic.IReadOnlyCollection{Hi.Cbtr.CbtrPickable})">
DetachUnderWriteGate(IReadOnlyCollection&lt;CbtrPickable&gt;)
</h3>
<div class="markdown level1 summary"><p>Targeted detach: under the write gate (render barrier), nulls node-&gt;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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DetachUnderWriteGate(IReadOnlyCollection&lt;CbtrPickable&gt; attachments)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>attachments</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Diff_" data-uid="Hi.Cbtr.CubeTree.Diff*"></a>
<h3 id="Hi_Cbtr_CubeTree_Diff_Hi_Geom_NativeStl_System_Double_Hi_Coloring_RangeColorRule_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.Diff(Hi.Geom.NativeStl,System.Double,Hi.Coloring.RangeColorRule,System.IProgress{System.Object})">
Diff(NativeStl, double, RangeColorRule, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_Diff_Hi_Geom_NativeStl_System_Double_Hi_Coloring_RangeColorRule_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.Diff(Hi.Geom.NativeStl,System.Double,Hi.Coloring.RangeColorRule,System.IProgress{Hi.Common.Messages.IMessage})">
Diff(NativeStl, double, RangeColorRule, IProgress&lt;IMessage&gt;)
</h3>
@@ -694,7 +936,7 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ConcurrentBag&lt;DiffAttachment&gt; Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress&lt;object&gt; progress = null)</code></pre>
<pre><code class="lang-csharp hljs">public ConcurrentBag&lt;DiffAttachment&gt; Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -708,7 +950,7 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<dt><code>diffRangeColorRule</code> <a class="xref" href="Hi.Coloring.RangeColorRule.html">RangeColorRule</a></dt>
<dd><p>The color rule for visualizing differences.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for the operation.</p>
</dd>
</dl>
@@ -821,6 +1063,82 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<a id="Hi_Cbtr_CubeTree_DisposeBackground_" data-uid="Hi.Cbtr.CubeTree.DisposeBackground*"></a>
<h3 id="Hi_Cbtr_CubeTree_DisposeBackground" data-uid="Hi.Cbtr.CubeTree.DisposeBackground">
DisposeBackground()
</h3>
<div class="markdown level1 summary"><p>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 <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_WaitForPendingDisposals">WaitForPendingDisposals()</a> to drain).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Task DisposeBackground()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_DisposeBackground_" data-uid="Hi.Cbtr.CubeTree.DisposeBackground*"></a>
<h3 id="Hi_Cbtr_CubeTree_DisposeBackground_System_Collections_Generic_IReadOnlyCollection_System_IDisposable__" data-uid="Hi.Cbtr.CubeTree.DisposeBackground(System.Collections.Generic.IReadOnlyCollection{System.IDisposable})">
DisposeBackground(IReadOnlyCollection&lt;IDisposable&gt;)
</h3>
<div class="markdown level1 summary"><p>Enqueues disposal of objects retired alongside a tree (typically its attachments) on
the SAME serialized chain as <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DisposeBackground">DisposeBackground()</a>, so there is a single
drain point (<a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_WaitForPendingDisposals">WaitForPendingDisposals()</a>). Disposing a <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a>
now clears its (possibly huge) attached node map — O(nodes) — which must not run on the
hot path. Enqueue the owning tree's <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DisposeBackground">DisposeBackground()</a> <em>first</em> so the
gated tree teardown (which waits out in-flight renders) runs before its attachments are freed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Task DisposeBackground(IReadOnlyCollection&lt;IDisposable&gt; disposables)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposables</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a>&gt;</dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_ExpandToBox3d_" data-uid="Hi.Cbtr.CubeTree.ExpandToBox3d*"></a>
<h3 id="Hi_Cbtr_CubeTree_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Cbtr.CubeTree.ExpandToBox3d(Hi.Geom.Box3d)">
@@ -1069,8 +1387,8 @@ A triangle take 15 double.</p>
<a id="Hi_Cbtr_CubeTree_NewWithDefectInfos_" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos*"></a>
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.NativeStl,System.Double,System.Threading.CancellationToken,System.IProgress{System.Object})">
NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.NativeStl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.Messages.IMessage})">
NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress&lt;IMessage&gt;)
</h3>
@@ -1079,7 +1397,7 @@ A triangle take 15 double.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;IMessage&gt; messageProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1090,7 +1408,7 @@ A triangle take 15 double.</p>
<dd></dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
@@ -1112,8 +1430,8 @@ A triangle take 15 double.</p>
<a id="Hi_Cbtr_CubeTree_NewWithDefectInfos_" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos*"></a>
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_Stl_System_Double_System_Threading_CancellationToken_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.Stl,System.Double,System.Threading.CancellationToken,System.IProgress{System.Object})">
NewWithDefectInfos(Stl, double, CancellationToken, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_Stl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.Stl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.Messages.IMessage})">
NewWithDefectInfos(Stl, double, CancellationToken, IProgress&lt;IMessage&gt;)
</h3>
@@ -1122,7 +1440,7 @@ A triangle take 15 double.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;IMessage&gt; messageProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1133,7 +1451,7 @@ A triangle take 15 double.</p>
<dd></dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
@@ -1536,6 +1854,39 @@ This function put <code class="paramref">src</code> to the nodes that contain nu
<a id="Hi_Cbtr_CubeTree_WaitForPendingDisposals_" data-uid="Hi.Cbtr.CubeTree.WaitForPendingDisposals*"></a>
<h3 id="Hi_Cbtr_CubeTree_WaitForPendingDisposals" data-uid="Hi.Cbtr.CubeTree.WaitForPendingDisposals">
WaitForPendingDisposals()
</h3>
<div class="markdown level1 summary"><p>A task that completes when all queued background disposals have finished.
Await this at application shutdown before the native dll is unloaded.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Task WaitForPendingDisposals()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_WriteFile_" data-uid="Hi.Cbtr.CubeTree.WriteFile*"></a>
<h3 id="Hi_Cbtr_CubeTree_WriteFile_System_String_" data-uid="Hi.Cbtr.CubeTree.WriteFile(System.String)">
@@ -512,7 +512,7 @@ Since the folder can be moving with the configuration file.</p>
</h3>
<div class="markdown level1 summary"><p>Convert to presentation DTO (Data Transfer Object) for JSON serialization.
<div class="markdown level1 summary"><p>Convert CubeTreeFile to presentation DTO (Data Transfer Object) for JSON serialization.
The returned object includes type metadata for web API presentation.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -525,7 +525,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type and object properties</p>
<dd><p>DTO dictionary with Type and SourceFile keys</p>
</dd>
</dl>
@@ -133,6 +133,9 @@ Class DiffAttachment
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Rgb">CbtrPickable.Rgb</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_IsColorTableCovered">CbtrPickable.IsColorTableCovered</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_AttachmentPriority">CbtrPickable.AttachmentPriority</a>
</div>
@@ -140,7 +143,7 @@ Class DiffAttachment
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Highlight_System_Boolean_">CbtrPickable.Highlight(bool)</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanLinkedCbtrNodesDrawingCache">CbtrPickable.CleanLinkedCbtrNodesDrawingCache()</a>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache">CbtrPickable.CleanAttachedCbtrNodesDrawingCache()</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_ShrinkToFitNodeMap">CbtrPickable.ShrinkToFitNodeMap()</a>
@@ -453,8 +453,8 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Cbtr_InfDefectDisplayee_ReportTo_" data-uid="Hi.Cbtr.InfDefectDisplayee.ReportTo*"></a>
<h3 id="Hi_Cbtr_InfDefectDisplayee_ReportTo_System_IProgress_System_Object__" data-uid="Hi.Cbtr.InfDefectDisplayee.ReportTo(System.IProgress{System.Object})">
ReportTo(IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_InfDefectDisplayee_ReportTo_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.InfDefectDisplayee.ReportTo(System.IProgress{Hi.Common.Messages.IMessage})">
ReportTo(IProgress&lt;IMessage&gt;)
</h3>
@@ -463,12 +463,12 @@ This function is usually used to compute the bounding box of elements.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ReportTo(IProgress&lt;object&gt; messageHost)</code></pre>
<pre><code class="lang-csharp hljs">public void ReportTo(IProgress&lt;IMessage&gt; messageProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>messageHost</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
@@ -134,6 +134,9 @@ For initailizing purpose by <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Rgb">CbtrPickable.Rgb</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_IsColorTableCovered">CbtrPickable.IsColorTableCovered</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_AttachmentPriority">CbtrPickable.AttachmentPriority</a>
</div>
@@ -141,7 +144,7 @@ For initailizing purpose by <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Highlight_System_Boolean_">CbtrPickable.Highlight(bool)</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanLinkedCbtrNodesDrawingCache">CbtrPickable.CleanLinkedCbtrNodesDrawingCache()</a>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache">CbtrPickable.CleanAttachedCbtrNodesDrawingCache()</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_ShrinkToFitNodeMap">CbtrPickable.ShrinkToFitNodeMap()</a>
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Class MachiningProjectDisplayee | HiAPI-C# 2025 </title>
<title>Class UnmanagedAddition | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MachiningProjectDisplayee | HiAPI-C# 2025 ">
<meta name="title" content="Class UnmanagedAddition | HiAPI-C# 2025 ">
<meta name="description" content="Represents a displayable wrapper for a machining project.">
<meta name="description" content="Data about the adding behavior of . The dual of .">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,25 +84,26 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.MachiningProcs.MachiningProjectDisplayee">
<article data-uid="Hi.Cbtr.UnmanagedAddition">
<h1 id="Hi_MachiningProcs_MachiningProjectDisplayee" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee" class="text-break">
Class MachiningProjectDisplayee
<h1 id="Hi_Cbtr_UnmanagedAddition" data-uid="Hi.Cbtr.UnmanagedAddition" class="text-break">
Class UnmanagedAddition
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.MachiningProcs.html">MachiningProcs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Cbtr.html">Cbtr</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiCbtr.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a displayable wrapper for a machining project.</p>
<div class="markdown summary"><p>Data about the adding behavior of <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a>.
The dual of <a class="xref" href="Hi.Cbtr.UnmanagedSubstraction.html">UnmanagedSubstraction</a>.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MachiningProjectDisplayee : IDisplayee, IExpandToBox3d, IGetAnchor, IGetTopoIndex</code></pre>
<pre><code class="lang-csharp hljs">public class UnmanagedAddition : IDisplayee, IExpandToBox3d, IDisposable</code></pre>
</div>
@@ -112,7 +113,7 @@ Class MachiningProjectDisplayee
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">MachiningProjectDisplayee</span></div>
<div><span class="xref">UnmanagedAddition</span></div>
</dd>
</dl>
@@ -121,8 +122,7 @@ Class MachiningProjectDisplayee
<dd>
<div><a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetTopoIndex.html">IGetTopoIndex</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
@@ -165,6 +165,9 @@ Class MachiningProjectDisplayee
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Disp.DispUtil.html#Hi_Disp_DispUtil_Display_Hi_Disp_IDisplayee_Hi_Disp_Bind_Hi_Geom_Mat4d_">DispUtil.Display(IDisplayee, Bind, Mat4d)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
@@ -183,28 +186,30 @@ Class MachiningProjectDisplayee
<h2 class="section" id="constructors">Constructors
<h2 class="section" id="fields">Fields
</h2>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee__ctor_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.#ctor*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee__ctor_Hi_MachiningProcs_LocalProjectService_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.#ctor(Hi.MachiningProcs.LocalProjectService)">
MachiningProjectDisplayee(LocalProjectService)
<h3 id="Hi_Cbtr_UnmanagedAddition_preserveCount" data-uid="Hi.Cbtr.UnmanagedAddition.preserveCount">
preserveCount
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.MachiningProcs.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> class with default rendering flags.</p>
<div class="markdown level1 summary"><p>The count of preservations to prevent disposal.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProjectDisplayee(LocalProjectService localProjectService)</code></pre>
<pre><code class="lang-csharp hljs">public int preserveCount</code></pre>
</div>
<h4 class="section">Parameters</h4>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><code>localProjectService</code> <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
@@ -216,26 +221,25 @@ Class MachiningProjectDisplayee
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_HeidenhainCoordinateEntryDisplayee_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.HeidenhainCoordinateEntryDisplayee*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_ContactContours_" data-uid="Hi.Cbtr.UnmanagedAddition.ContactContours*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_HeidenhainCoordinateEntryDisplayee" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.HeidenhainCoordinateEntryDisplayee">
HeidenhainCoordinateEntryDisplayee
<h3 id="Hi_Cbtr_UnmanagedAddition_ContactContours" data-uid="Hi.Cbtr.UnmanagedAddition.ContactContours">
ContactContours
</h3>
<div class="markdown level1 summary"><p>Gets the Heidenhain coordinate entry displayee for Heidenhain-based coordinate systems.</p>
<div class="markdown level1 summary"><p>Contours of the newly created surface
(the dual of the substraction's newly exposed surface).</p>
<p>Each contour is composed by 3~12 points.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainCoordinateEntryDisplayee HeidenhainCoordinateEntryDisplayee { get; }</code></pre>
<pre><code class="lang-csharp hljs">public List&lt;List&lt;Vec3d&gt;&gt; ContactContours { get; }</code></pre>
</div>
@@ -244,7 +248,7 @@ Class MachiningProjectDisplayee
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html">HeidenhainCoordinateEntryDisplayee</a></dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a>&gt;&gt;</dt>
<dd></dd>
</dl>
@@ -255,19 +259,19 @@ Class MachiningProjectDisplayee
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_IsoCoordinateEntryDisplayee_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.IsoCoordinateEntryDisplayee*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_ContactContoursArea_" data-uid="Hi.Cbtr.UnmanagedAddition.ContactContoursArea*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_IsoCoordinateEntryDisplayee" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.IsoCoordinateEntryDisplayee">
IsoCoordinateEntryDisplayee
<h3 id="Hi_Cbtr_UnmanagedAddition_ContactContoursArea" data-uid="Hi.Cbtr.UnmanagedAddition.ContactContoursArea">
ContactContoursArea
</h3>
<div class="markdown level1 summary"><p>Gets the ISO coordinate entry displayee for ISO-based coordinate systems.</p>
<div class="markdown level1 summary"><p>Gets the area of the contact contours.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateEntryDisplayee IsoCoordinateEntryDisplayee { get; }</code></pre>
<pre><code class="lang-csharp hljs">public double ContactContoursArea { get; }</code></pre>
</div>
@@ -276,7 +280,7 @@ Class MachiningProjectDisplayee
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.IsoCoordinateEntryDisplayee.html">IsoCoordinateEntryDisplayee</a></dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
@@ -287,19 +291,19 @@ Class MachiningProjectDisplayee
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_LocalProjectService_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.LocalProjectService*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_IsTouched_" data-uid="Hi.Cbtr.UnmanagedAddition.IsTouched*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_LocalProjectService" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.LocalProjectService">
LocalProjectService
<h3 id="Hi_Cbtr_UnmanagedAddition_IsTouched" data-uid="Hi.Cbtr.UnmanagedAddition.IsTouched">
IsTouched
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the machining project.</p>
<div class="markdown level1 summary"><p>Is the adder and workpiece touched (any material actually added).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public LocalProjectService LocalProjectService { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public bool IsTouched { get; }</code></pre>
</div>
@@ -308,71 +312,7 @@ Class MachiningProjectDisplayee
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_MachiningProject_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.MachiningProject*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_MachiningProject" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.MachiningProject">
MachiningProject
</h3>
<div class="markdown level1 summary"><p>Gets the current milling course from the host function.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProject MachiningProject { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_RenderingFlagBitArray_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.RenderingFlagBitArray*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_RenderingFlagBitArray" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.RenderingFlagBitArray">
RenderingFlagBitArray
</h3>
<div class="markdown level1 summary"><p>Gets or sets the bit array that controls which elements are rendered.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public BitArray RenderingFlagBitArray { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.bitarray">BitArray</a></dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
@@ -387,9 +327,9 @@ Class MachiningProjectDisplayee
</h2>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_Display_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.Display*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_Display_" data-uid="Hi.Cbtr.UnmanagedAddition.Display*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_Display_Hi_Disp_Bind_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.Display(Hi.Disp.Bind)">
<h3 id="Hi_Cbtr_UnmanagedAddition_Display_Hi_Disp_Bind_" data-uid="Hi.Cbtr.UnmanagedAddition.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
@@ -420,9 +360,100 @@ Class MachiningProjectDisplayee
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_ExpandToBox3d_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.ExpandToBox3d*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_DisplayContours_" data-uid="Hi.Cbtr.UnmanagedAddition.DisplayContours*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.ExpandToBox3d(Hi.Geom.Box3d)">
<h3 id="Hi_Cbtr_UnmanagedAddition_DisplayContours_Hi_Disp_Bind_" data-uid="Hi.Cbtr.UnmanagedAddition.DisplayContours(Hi.Disp.Bind)">
DisplayContours(Bind)
</h3>
<div class="markdown level1 summary"><p>Display <a class="xref" href="Hi.Cbtr.UnmanagedAddition.html#Hi_Cbtr_UnmanagedAddition_ContactContours">ContactContours</a> by lines.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DisplayContours(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>bind</p>
</dd>
</dl>
<a id="Hi_Cbtr_UnmanagedAddition_Dispose_" data-uid="Hi.Cbtr.UnmanagedAddition.Dispose*"></a>
<h3 id="Hi_Cbtr_UnmanagedAddition_Dispose" data-uid="Hi.Cbtr.UnmanagedAddition.Dispose">
Dispose()
</h3>
<div class="markdown level1 summary"><p>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Dispose()</code></pre>
</div>
<a id="Hi_Cbtr_UnmanagedAddition_Dispose_" data-uid="Hi.Cbtr.UnmanagedAddition.Dispose*"></a>
<h3 id="Hi_Cbtr_UnmanagedAddition_Dispose_System_Boolean_" data-uid="Hi.Cbtr.UnmanagedAddition.Dispose(System.Boolean)">
Dispose(bool)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual void Dispose(bool disposing)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_UnmanagedAddition_ExpandToBox3d_" data-uid="Hi.Cbtr.UnmanagedAddition.ExpandToBox3d*"></a>
<h3 id="Hi_Cbtr_UnmanagedAddition_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Cbtr.UnmanagedAddition.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
@@ -454,30 +485,81 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_MachiningProcs_MachiningProjectDisplayee_GetAnchor_" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.GetAnchor*"></a>
<a id="Hi_Cbtr_UnmanagedAddition_Finalize_" data-uid="Hi.Cbtr.UnmanagedAddition.Finalize*"></a>
<h3 id="Hi_MachiningProcs_MachiningProjectDisplayee_GetAnchor" data-uid="Hi.MachiningProcs.MachiningProjectDisplayee.GetAnchor">
GetAnchor()
<h3 id="Hi_Cbtr_UnmanagedAddition_Finalize" data-uid="Hi.Cbtr.UnmanagedAddition.Finalize">
~UnmanagedAddition()
</h3>
<div class="markdown level1 summary"><p>Get key anchor. (i.e. root anchor)</p>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected ~UnmanagedAddition()</code></pre>
</div>
<a id="Hi_Cbtr_UnmanagedAddition_PreserveBegin_" data-uid="Hi.Cbtr.UnmanagedAddition.PreserveBegin*"></a>
<h3 id="Hi_Cbtr_UnmanagedAddition_PreserveBegin" data-uid="Hi.Cbtr.UnmanagedAddition.PreserveBegin">
PreserveBegin()
</h3>
<div class="markdown level1 summary"><p>Preserve the object from arising <a class="xref" href="Hi.Cbtr.UnmanagedAddition.html#Hi_Cbtr_UnmanagedAddition_Dispose">Dispose()</a>.
Add preserve count for 1.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetAnchor()</code></pre>
<pre><code class="lang-csharp hljs">public void PreserveBegin()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>key anchor</p>
</dd>
<dl class="typelist seealso">
<dt>See Also</dt>
<dd>
<div><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html#Hi_Cbtr_UnmanagedAddition_PreserveEnd">PreserveEnd()</a></div>
</dd>
</dl>
<a id="Hi_Cbtr_UnmanagedAddition_PreserveEnd_" data-uid="Hi.Cbtr.UnmanagedAddition.PreserveEnd*"></a>
<h3 id="Hi_Cbtr_UnmanagedAddition_PreserveEnd" data-uid="Hi.Cbtr.UnmanagedAddition.PreserveEnd">
PreserveEnd()
</h3>
<div class="markdown level1 summary"><p>Minus preserve count for 1.
If preserve count is eqaul or lower than 0, call <a class="xref" href="Hi.Cbtr.UnmanagedAddition.html#Hi_Cbtr_UnmanagedAddition_Dispose">Dispose()</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PreserveEnd()</code></pre>
</div>
@@ -488,6 +570,16 @@ This function is usually used to compute the bounding box of elements.</p>
<dl class="typelist seealso">
<dt>See Also</dt>
<dd>
<div><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html#Hi_Cbtr_UnmanagedAddition_PreserveBegin">PreserveBegin()</a></div>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
@@ -321,6 +321,41 @@ Class UnmanagedSubstraction
<a id="Hi_Cbtr_UnmanagedSubstraction_SubstractionPtr_" data-uid="Hi.Cbtr.UnmanagedSubstraction.SubstractionPtr*"></a>
<h3 id="Hi_Cbtr_UnmanagedSubstraction_SubstractionPtr" data-uid="Hi.Cbtr.UnmanagedSubstraction.SubstractionPtr">
SubstractionPtr
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public nint SubstractionPtr { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
+6 -5
View File
@@ -159,11 +159,6 @@ including defect boxes, edge segments, and flag drawings.</p>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Cbtr.InitStickConvex.html">InitStickConvex</a></dt>
<dd><p>Represents a stick convex initialization object.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Cbtr.LsStl.html">LsStl</a></dt>
<dd><p>Linear Sweptable Stl.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -175,6 +170,12 @@ including defect boxes, edge segments, and flag drawings.</p>
<dt><a class="xref" href="Hi.Cbtr.UnhighlightablePickable.html">UnhighlightablePickable</a></dt>
<dd><p>Cbtr un-highlightable pickable.
For initailizing purpose by <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_RebuildAttach_Hi_Cbtr_CbtrPickable_">RebuildAttach(CbtrPickable)</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd><p>Data about the adding behavior of <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a>.
The dual of <a class="xref" href="Hi.Cbtr.UnmanagedSubstraction.html">UnmanagedSubstraction</a>.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -255,8 +255,8 @@ Class AnchoredCollidablePair
<a id="Hi_Collision_AnchoredCollidablePair__ctor_" data-uid="Hi.Collision.AnchoredCollidablePair.#ctor*"></a>
<h3 id="Hi_Collision_AnchoredCollidablePair__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Object___" data-uid="Hi.Collision.AnchoredCollidablePair.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Object[])">
AnchoredCollidablePair(XElement, string, IProgress&lt;object&gt;, object[])
<h3 id="Hi_Collision_AnchoredCollidablePair__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___" data-uid="Hi.Collision.AnchoredCollidablePair.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Object[])">
AnchoredCollidablePair(XElement, string, IProgress&lt;IMessage&gt;, object[])
</h3>
@@ -265,7 +265,7 @@ Class AnchoredCollidablePair
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, object[] res)</code></pre>
<pre><code class="lang-csharp hljs">public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, object[] res)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -276,7 +276,7 @@ Class AnchoredCollidablePair
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
@@ -216,8 +216,8 @@ Class CollisionIndexPair
<a id="Hi_Collision_CollisionIndexPair__ctor_" data-uid="Hi.Collision.CollisionIndexPair.#ctor*"></a>
<h3 id="Hi_Collision_CollisionIndexPair__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Object___" data-uid="Hi.Collision.CollisionIndexPair.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Object[])">
CollisionIndexPair(XElement, string, IProgress&lt;object&gt;, object[])
<h3 id="Hi_Collision_CollisionIndexPair__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___" data-uid="Hi.Collision.CollisionIndexPair.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Object[])">
CollisionIndexPair(XElement, string, IProgress&lt;IMessage&gt;, object[])
</h3>
@@ -226,7 +226,7 @@ Class CollisionIndexPair
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionIndexPair(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, object[] res)</code></pre>
<pre><code class="lang-csharp hljs">public CollisionIndexPair(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, object[] res)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -237,7 +237,7 @@ Class CollisionIndexPair
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
@@ -349,6 +349,47 @@ Class ColorUtil
</h2>
<a id="Hi_Coloring_ColorUtil_FromDualHexString_" data-uid="Hi.Coloring.ColorUtil.FromDualHexString*"></a>
<h3 id="Hi_Coloring_ColorUtil_FromDualHexString_System_String_" data-uid="Hi.Coloring.ColorUtil.FromDualHexString(System.String)">
FromDualHexString(string)
</h3>
<div class="markdown level1 summary"><p>Parses an <code>RRGGBB</code> hexadecimal string (optionally prefixed with
<code>#</code>) back to an RGB color vector with channels in 0~1.
Inverse of <a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_ToDualHexString_Hi_Geom_Vec3d_">ToDualHexString(Vec3d)</a> up to 8-bit rounding.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Vec3d FromDualHexString(string hex)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>hex</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The hexadecimal color string, e.g. <code>#3fa0c8</code>.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>RGB color vector.</p>
</dd>
</dl>
<a id="Hi_Coloring_ColorUtil_GetDiscreteRGBWithoutPurpleAndRed_" data-uid="Hi.Coloring.ColorUtil.GetDiscreteRGBWithoutPurpleAndRed*"></a>
<h3 id="Hi_Coloring_ColorUtil_GetDiscreteRGBWithoutPurpleAndRed_System_Int32_System_Double_System_Double_" data-uid="Hi.Coloring.ColorUtil.GetDiscreteRGBWithoutPurpleAndRed(System.Int32,System.Double,System.Double)">
@@ -536,6 +577,61 @@ This function is good to auto set color for lot of components.</p>
<a id="Hi_Coloring_ColorUtil_GetGloomyColor_" data-uid="Hi.Coloring.ColorUtil.GetGloomyColor*"></a>
<h3 id="Hi_Coloring_ColorUtil_GetGloomyColor_System_Guid_System_Double_System_Double_" data-uid="Hi.Coloring.ColorUtil.GetGloomyColor(System.Guid,System.Double,System.Double)">
GetGloomyColor(Guid, double, double)
</h3>
<div class="markdown level1 summary"><p>Gloomy color (blue tune by default) seeded by a persisted identity.
The same <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a> always yields the same color — across loads,
threads, processes and platforms — unlike
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">GetGloomyColor(object, double, double)</a>, whose identity-hash
seed is stable only within one thread's allocation order.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Vec3d GetGloomyColor(this Guid seed, double hueMin = 0.5, double hueMax = 0.7)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>seed</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd><p>Persisted identity, e.g. an anchor's Guid.</p>
</dd>
<dt><code>hueMin</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The beginning of the hue range.</p>
</dd>
<dt><code>hueMax</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The end of the hue range.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>RGB color vector.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Coloring_ColorUtil_GetGloomyColor_System_Guid_System_Double_System_Double__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Uses an FNV-1a hash over <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid.tobytearray#system-guid-tobytearray">ToByteArray()</a> rather than
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid.gethashcode">GetHashCode()</a> or <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string.gethashcode#system-string-gethashcode">GetHashCode()</a>:
the latter are not guaranteed stable across runtimes, and string hashing
is randomized per process on .NET Core.</p>
</div>
<a id="Hi_Coloring_ColorUtil_GetGloomyColor_" data-uid="Hi.Coloring.ColorUtil.GetGloomyColor*"></a>
<h3 id="Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_" data-uid="Hi.Coloring.ColorUtil.GetGloomyColor(System.Object,System.Double,System.Double)">
@@ -573,6 +669,14 @@ This function is good to auto set color for lot of components.</p>
<h4 class="section" id="Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The hue is seeded by <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">GetHashCode()</a>. 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
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Guid_System_Double_System_Double_">GetGloomyColor(Guid, double, double)</a>.</p>
</div>
@@ -248,8 +248,8 @@ Class DictionaryColorGuide
<a id="Hi_Coloring_DictionaryColorGuide__ctor_" data-uid="Hi.Coloring.DictionaryColorGuide.#ctor*"></a>
<h3 id="Hi_Coloring_DictionaryColorGuide__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Collections_Generic_Dictionary_System_String_System_Object__" data-uid="Hi.Coloring.DictionaryColorGuide.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Collections.Generic.Dictionary{System.String,System.Object})">
DictionaryColorGuide(XElement, string, IProgress&lt;object&gt;, Dictionary&lt;string, object&gt;)
<h3 id="Hi_Coloring_DictionaryColorGuide__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Collections_Generic_Dictionary_System_String_System_Object__" data-uid="Hi.Coloring.DictionaryColorGuide.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Collections.Generic.Dictionary{System.String,System.Object})">
DictionaryColorGuide(XElement, string, IProgress&lt;IMessage&gt;, Dictionary&lt;string, object&gt;)
</h3>
@@ -258,7 +258,7 @@ Class DictionaryColorGuide
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DictionaryColorGuide(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, Dictionary&lt;string, object&gt; colorGuideCtorArgDictionary)</code></pre>
<pre><code class="lang-csharp hljs">public DictionaryColorGuide(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, Dictionary&lt;string, object&gt; colorGuideCtorArgDictionary)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -269,7 +269,7 @@ Class DictionaryColorGuide
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
<dt><code>colorGuideCtorArgDictionary</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
@@ -215,8 +215,8 @@ Class FilteredColorGuide
<a id="Hi_Coloring_FilteredColorGuide__ctor_" data-uid="Hi.Coloring.FilteredColorGuide.#ctor*"></a>
<h3 id="Hi_Coloring_FilteredColorGuide__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Collections_Generic_Dictionary_System_String_System_Object__" data-uid="Hi.Coloring.FilteredColorGuide.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Collections.Generic.Dictionary{System.String,System.Object})">
FilteredColorGuide(XElement, string, IProgress&lt;object&gt;, Dictionary&lt;string, object&gt;)
<h3 id="Hi_Coloring_FilteredColorGuide__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Collections_Generic_Dictionary_System_String_System_Object__" data-uid="Hi.Coloring.FilteredColorGuide.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Collections.Generic.Dictionary{System.String,System.Object})">
FilteredColorGuide(XElement, string, IProgress&lt;IMessage&gt;, Dictionary&lt;string, object&gt;)
</h3>
@@ -225,7 +225,7 @@ Class FilteredColorGuide
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public FilteredColorGuide(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, Dictionary&lt;string, object&gt; colorGuideCtorArgDictionary)</code></pre>
<pre><code class="lang-csharp hljs">public FilteredColorGuide(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, Dictionary&lt;string, object&gt; colorGuideCtorArgDictionary)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -236,7 +236,7 @@ Class FilteredColorGuide
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
<dt><code>colorGuideCtorArgDictionary</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
@@ -576,6 +576,46 @@ Class SynList&lt;T&gt;
<a id="Hi_Common_Collections_SynList_1_AddAndGetIndex_" data-uid="Hi.Common.Collections.SynList`1.AddAndGetIndex*"></a>
<h3 id="Hi_Common_Collections_SynList_1_AddAndGetIndex__0_" data-uid="Hi.Common.Collections.SynList`1.AddAndGetIndex(`0)">
AddAndGetIndex(T)
</h3>
<div class="markdown level1 summary"><p>Atomically appends <code class="paramref">item</code> and returns the index it was inserted at.
Use this instead of <a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_Add__0_">Add(T)</a> + <a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_Count">Count</a> when the caller needs the
position of the just-added item under concurrent appends (computing <code>Count - 1</code>
after <a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_Add__0_">Add(T)</a> would race with other writers).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int AddAndGetIndex(T item)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <span class="xref">T</span></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Collections_SynList_1_Clear_" data-uid="Hi.Common.Collections.SynList`1.Clear*"></a>
<h3 id="Hi_Common_Collections_SynList_1_Clear" data-uid="Hi.Common.Collections.SynList`1.Clear">
@@ -0,0 +1,460 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CultureTextAttribute | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CultureTextAttribute | HiAPI-C# 2025 ">
<meta name="description" content="Declares one culture&#39;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 ), and a culture left undeclared is not an error — lookups fall back toward the English key. The key defaults to the member&#39;s own display name: its value when present, otherwise the member name spaced into words (). Set to declare a word the member does not itself name (a shared switch word, a mode label). Apply the attribute once per culture.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.CultureTextAttribute">
<h1 id="Hi_Common_CultureTextAttribute" data-uid="Hi.Common.CultureTextAttribute" class="text-break">
Class CultureTextAttribute
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>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
<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a>), and a culture left undeclared
is not an error — lookups fall back toward the English key.</p>
<p>
The key defaults to the member's own display name: its
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.displaynameattribute">DisplayNameAttribute</a> value when
present, otherwise the member name spaced into words
(<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_SpacePascalWords_System_String_">SpacePascalWords(string)</a>). Set <a class="xref" href="Hi.Common.CultureTextAttribute.html#Hi_Common_CultureTextAttribute_Key">Key</a> to declare
a word the member does not itself name (a shared switch word, a mode
label). Apply the attribute once per culture.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface, AllowMultiple = true, Inherited = false)]
public sealed class CultureTextAttribute : Attribute</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute">Attribute</a></div>
<div><span class="xref">CultureTextAttribute</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.equals">Attribute.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type)">Attribute.GetCustomAttribute(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type-system-boolean)">Attribute.GetCustomAttribute(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type)">Attribute.GetCustomAttribute(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type-system-boolean)">Attribute.GetCustomAttribute(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type)">Attribute.GetCustomAttribute(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type-system-boolean)">Attribute.GetCustomAttribute(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type)">Attribute.GetCustomAttribute(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.GetCustomAttribute(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly)">Attribute.GetCustomAttributes(Assembly)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-boolean)">Attribute.GetCustomAttributes(Assembly, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type)">Attribute.GetCustomAttributes(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type-system-boolean)">Attribute.GetCustomAttributes(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo)">Attribute.GetCustomAttributes(MemberInfo)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-boolean)">Attribute.GetCustomAttributes(MemberInfo, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type)">Attribute.GetCustomAttributes(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type-system-boolean)">Attribute.GetCustomAttributes(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module)">Attribute.GetCustomAttributes(Module)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-boolean)">Attribute.GetCustomAttributes(Module, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type)">Attribute.GetCustomAttributes(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type-system-boolean)">Attribute.GetCustomAttributes(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo)">Attribute.GetCustomAttributes(ParameterInfo)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-boolean)">Attribute.GetCustomAttributes(ParameterInfo, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type)">Attribute.GetCustomAttributes(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.GetCustomAttributes(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.gethashcode">Attribute.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefaultattribute">Attribute.IsDefaultAttribute()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type)">Attribute.IsDefined(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type-system-boolean)">Attribute.IsDefined(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type)">Attribute.IsDefined(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type-system-boolean)">Attribute.IsDefined(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type)">Attribute.IsDefined(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type-system-boolean)">Attribute.IsDefined(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type)">Attribute.IsDefined(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.IsDefined(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.match">Attribute.Match(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.typeid">Attribute.TypeId</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Common_CultureTextAttribute__ctor_" data-uid="Hi.Common.CultureTextAttribute.#ctor*"></a>
<h3 id="Hi_Common_CultureTextAttribute__ctor_System_String_System_String_" data-uid="Hi.Common.CultureTextAttribute.#ctor(System.String,System.String)">
CultureTextAttribute(string, string)
</h3>
<div class="markdown level1 summary"><p>Declares <code class="paramref">text</code> as the wording of this member's
vocabulary key in the culture named <code class="paramref">cultureName</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CultureTextAttribute(string cultureName, string text)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cultureName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Culture name the text is written in (e.g. <code>zh-Hant</code>).</p>
</dd>
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The text in that culture.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_CultureTextAttribute_CultureName_" data-uid="Hi.Common.CultureTextAttribute.CultureName*"></a>
<h3 id="Hi_Common_CultureTextAttribute_CultureName" data-uid="Hi.Common.CultureTextAttribute.CultureName">
CultureName
</h3>
<div class="markdown level1 summary"><p>Culture name the text is written in (e.g. <code>zh-Hant</code>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string CultureName { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_CultureTextAttribute_Key_" data-uid="Hi.Common.CultureTextAttribute.Key*"></a>
<h3 id="Hi_Common_CultureTextAttribute_Key" data-uid="Hi.Common.CultureTextAttribute.Key">
Key
</h3>
<div class="markdown level1 summary"><p>Explicit vocabulary key. Default (null): the member's display name as
described on the class summary.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Key { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_CultureTextAttribute_Text_" data-uid="Hi.Common.CultureTextAttribute.Text*"></a>
<h3 id="Hi_Common_CultureTextAttribute_Text" data-uid="Hi.Common.CultureTextAttribute.Text">
Text
</h3>
<div class="markdown level1 summary"><p>The text in that culture.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Text { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CultureUtil | HiAPI-C# 2025 ">
<meta name="description" content="Utility class for managing culture and localization settings.">
<meta name="description" content="The English culture the engine formats and parses with, and the one call that pins a thread to it.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,7 +97,8 @@ Class CultureUtil
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Utility class for managing culture and localization settings.</p>
<div class="markdown summary"><p>The English culture the engine formats and parses with, and the one call
that pins a thread to it.</p>
</div>
<div class="markdown conceptual"></div>
@@ -153,19 +154,20 @@ Class CultureUtil
</h2>
<a id="Hi_Common_CultureUtil_SupportedCultureNames_" data-uid="Hi.Common.CultureUtil.SupportedCultureNames*"></a>
<a id="Hi_Common_CultureUtil_English_" data-uid="Hi.Common.CultureUtil.English*"></a>
<h3 id="Hi_Common_CultureUtil_SupportedCultureNames" data-uid="Hi.Common.CultureUtil.SupportedCultureNames">
SupportedCultureNames
<h3 id="Hi_Common_CultureUtil_English" data-uid="Hi.Common.CultureUtil.English">
English
</h3>
<div class="markdown level1 summary"><p>Gets the array of supported culture names.</p>
<div class="markdown level1 summary"><p>English, with <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.numberformatinfo.nansymbol">NaNSymbol</a> forced to
<code>&ldquo;NaN&rdquo;</code> so a non-finite value round-trips through text.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string[] SupportedCultureNames { get; }</code></pre>
<pre><code class="lang-csharp hljs">public static CultureInfo English { get; }</code></pre>
</div>
@@ -174,13 +176,19 @@ Class CultureUtil
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo">CultureInfo</a></dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_Common_CultureUtil_English_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Read-only, and safe to hand to APIs that keep the reference: ASP.NET
request localization matches by name and returns
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.readonly">ReadOnly(CultureInfo)</a> clones, which preserve
the patched symbol.</p>
</div>
@@ -189,39 +197,6 @@ Class CultureUtil
</h2>
<a id="Hi_Common_CultureUtil_SetCurrentCulture_" data-uid="Hi.Common.CultureUtil.SetCurrentCulture*"></a>
<h3 id="Hi_Common_CultureUtil_SetCurrentCulture_System_String_" data-uid="Hi.Common.CultureUtil.SetCurrentCulture(System.String)">
SetCurrentCulture(string)
</h3>
<div class="markdown level1 summary"><p>Sets the current thread culture to the specified culture code.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetCurrentCulture(string cultureCode)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cultureCode</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The culture code to set (e.g., &ldquo;en&rdquo;, &ldquo;zh-Hant&rdquo;)</p>
</dd>
</dl>
<a id="Hi_Common_CultureUtil_SetCurrentCultureEn_" data-uid="Hi.Common.CultureUtil.SetCurrentCultureEn*"></a>
<h3 id="Hi_Common_CultureUtil_SetCurrentCultureEn" data-uid="Hi.Common.CultureUtil.SetCurrentCultureEn">
@@ -229,7 +204,7 @@ Class CultureUtil
</h3>
<div class="markdown level1 summary"><p>Sets the current culture to English.</p>
<div class="markdown level1 summary"><p>Pins the calling thread to <a class="xref" href="Hi.Common.CultureUtil.html#Hi_Common_CultureUtil_English">English</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -161,18 +161,15 @@ All indices are 0-based.</p>
<div>
<a class="xref" href="Hi.Geom.MathUtil.html#Hi_Geom_MathUtil_Clamp__1___0___0___0_">MathUtil.Clamp&lt;T&gt;(T, T, T)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
@@ -102,7 +102,7 @@ Class FileLineIndex
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable&lt;IFileLineIndex&gt;, IMakeXmlSource, IToXElement, IToPresentDto</code></pre>
<pre><code class="lang-csharp hljs">public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable&lt;IFileLineIndex&gt;, IComparable&lt;FileLineIndex&gt;, IMakeXmlSource, IToXElement, IToPresentDto</code></pre>
</div>
@@ -122,6 +122,7 @@ Class FileLineIndex
<div><a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html">IFileLineIndex</a></div>
<div><a class="xref" href="Hi.Common.FileLines.IGetFileLineIndex.html">IGetFileLineIndex</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.icomparable-1">IComparable</a>&lt;<a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html">IFileLineIndex</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.icomparable-1">IComparable</a>&lt;<a class="xref" href="Hi.Common.FileLines.FileLineIndex.html">FileLineIndex</a>&gt;</div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IToXElement.html">IToXElement</a></div>
<div><a class="xref" href="Hi.Common.IToPresentDto.html">IToPresentDto</a></div>
@@ -161,18 +162,15 @@ Class FileLineIndex
<div>
<a class="xref" href="Hi.Geom.MathUtil.html#Hi_Geom_MathUtil_Clamp__1___0___0___0_">MathUtil.Clamp&lt;T&gt;(T, T, T)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
@@ -503,6 +501,46 @@ Start on 0.</p>
</h2>
<a id="Hi_Common_FileLines_FileLineIndex_CompareTo_" data-uid="Hi.Common.FileLines.FileLineIndex.CompareTo*"></a>
<h3 id="Hi_Common_FileLines_FileLineIndex_CompareTo_Hi_Common_FileLines_FileLineIndex_" data-uid="Hi.Common.FileLines.FileLineIndex.CompareTo(Hi.Common.FileLines.FileLineIndex)">
CompareTo(FileLineIndex)
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int CompareTo(FileLineIndex other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="Hi.Common.FileLines.FileLineIndex.html">FileLineIndex</a></dt>
<dd><p>An object to compare with this instance.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>A value that indicates the relative order of the objects being compared. The return value has these meanings:</p>
<table><thead><tr><th class="term"> Value</th><th class="description"> Meaning</th></tr></thead><tbody><tr><td class="term"> Less than zero</td><td class="description"> This instance precedes <code class="paramref">other</code> in the sort order.</td></tr><tr><td class="term"> Zero</td><td class="description"> This instance occurs in the same position in the sort order as <code class="paramref">other</code>.</td></tr><tr><td class="term"> Greater than zero</td><td class="description"> This instance follows <code class="paramref">other</code> in the sort order.</td></tr></tbody></table>
</dd>
</dl>
<a id="Hi_Common_FileLines_FileLineIndex_CompareTo_" data-uid="Hi.Common.FileLines.FileLineIndex.CompareTo*"></a>
<h3 id="Hi_Common_FileLines_FileLineIndex_CompareTo_Hi_Common_FileLines_IFileLineIndex_" data-uid="Hi.Common.FileLines.FileLineIndex.CompareTo(Hi.Common.FileLines.IFileLineIndex)">
@@ -706,7 +744,7 @@ Since the folder can be moving with the configuration file.</p>
</h3>
<div class="markdown level1 summary"><p>Convert to presentation DTO (Data Transfer Object) for JSON serialization.
<div class="markdown level1 summary"><p>Convert FileLineIndex to presentation DTO (Data Transfer Object) for JSON serialization.
The returned object includes type metadata for web API presentation.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -719,7 +757,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type and object properties</p>
<dd><p>DTO dictionary with Type, FileIndex, LineIndex keys</p>
</dd>
</dl>
@@ -153,6 +153,47 @@ Class FileLineUtil
</h2>
<a id="Hi_Common_FileLines_FileLineUtil_CompareFileLine_" data-uid="Hi.Common.FileLines.FileLineUtil.CompareFileLine*"></a>
<h3 id="Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.CompareFileLine(Hi.Common.FileLines.IFileLineIndex,Hi.Common.FileLines.IFileLineIndex)">
CompareFileLine(IFileLineIndex, IFileLineIndex)
</h3>
<div class="markdown level1 summary"><p>Orders two file-line positions by <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_FileIndex">FileIndex</a>
then <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_LineIndex">LineIndex</a>. Both operands must be
non-null; callers decide how a missing (null) position sorts.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static int CompareFileLine(this IFileLineIndex a, IFileLineIndex b)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>a</code> <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html">IFileLineIndex</a></dt>
<dd></dd>
<dt><code>b</code> <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html">IFileLineIndex</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_FileLines_FileLineUtil_GetFileNo_" data-uid="Hi.Common.FileLines.FileLineUtil.GetFileNo*"></a>
<h3 id="Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.GetFileNo(Hi.Common.FileLines.IFileLineIndex)">
@@ -231,128 +272,6 @@ Class FileLineUtil
<a id="Hi_Common_FileLines_FileLineUtil_GetMixedIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.GetMixedIndex*"></a>
<h3 id="Hi_Common_FileLines_FileLineUtil_GetMixedIndex_System_Int32_System_Int32_" data-uid="Hi.Common.FileLines.FileLineUtil.GetMixedIndex(System.Int32,System.Int32)">
GetMixedIndex(int, int)
</h3>
<div class="markdown level1 summary"><p>Creates a mixed index from file index and line index.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static int GetMixedIndex(int fileIndex, int lineIndex)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>fileIndex</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The file index (0-based).</p>
</dd>
<dt><code>lineIndex</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The line index (0-based).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>A mixed index combining file and line indices.</p>
</dd>
</dl>
<a id="Hi_Common_FileLines_FileLineUtil_MixedIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.MixedIndex*"></a>
<h3 id="Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.MixedIndex(Hi.Common.FileLines.IFileLineIndex)">
MixedIndex(IFileLineIndex)
</h3>
<div class="markdown level1 summary"><p>Mix <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_FileIndex">FileIndex</a> and <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_LineIndex">LineIndex</a>.
Return <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_FileIndex">FileIndex</a>* 10_000_000 + <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_LineIndex">LineIndex</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static int MixedIndex(this IFileLineIndex src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html">IFileLineIndex</a></dt>
<dd><p>src</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Mixed number</p>
</dd>
</dl>
<a id="Hi_Common_FileLines_FileLineUtil_MixedIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.MixedIndex*"></a>
<h3 id="Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_" data-uid="Hi.Common.FileLines.FileLineUtil.MixedIndex(Hi.Common.FileLines.IGetFileLineIndex)">
MixedIndex(IGetFileLineIndex)
</h3>
<div class="markdown level1 summary"><p>Mix <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_FileIndex">FileIndex</a> and <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_LineIndex">LineIndex</a>.
Return <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_FileIndex">FileIndex</a>* 10_000_000 + <a class="xref" href="Hi.Common.FileLines.IFileLineIndex.html#Hi_Common_FileLines_IFileLineIndex_LineIndex">LineIndex</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static int MixedIndex(this IGetFileLineIndex src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Common.FileLines.IGetFileLineIndex.html">IGetFileLineIndex</a></dt>
<dd><p>src</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Mixed number</p>
</dd>
</dl>
</article>
@@ -265,6 +265,58 @@ Class FileUtil
<a id="Hi_Common_FileLines_FileUtil_DetectRoundTripEncoding_" data-uid="Hi.Common.FileLines.FileUtil.DetectRoundTripEncoding*"></a>
<h3 id="Hi_Common_FileLines_FileUtil_DetectRoundTripEncoding_System_String_" data-uid="Hi.Common.FileLines.FileUtil.DetectRoundTripEncoding(System.String)">
DetectRoundTripEncoding(string)
</h3>
<div class="markdown level1 summary"><p>Detects a text encoding for <code class="paramref">filePath</code> that survives a
read-modify-write round trip byte for byte on untouched lines.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Encoding DetectRoundTripEncoding(string filePath)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>filePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path of the file to sniff.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.encoding">Encoding</a></dt>
<dd><p>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.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Common_FileLines_FileUtil_DetectRoundTripEncoding_System_String__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>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 &lsquo;;&rsquo; and &lsquo;(&rsquo; 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.</p>
</div>
<a id="Hi_Common_FileLines_FileUtil_EnsureDirectory_" data-uid="Hi.Common.FileLines.FileUtil.EnsureDirectory*"></a>
<h3 id="Hi_Common_FileLines_FileUtil_EnsureDirectory_System_String_" data-uid="Hi.Common.FileLines.FileUtil.EnsureDirectory(System.String)">
@@ -138,18 +138,15 @@ All indices are 0-based.</p>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
@@ -125,24 +125,21 @@ Interface IFileLineIndex
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
@@ -118,9 +118,6 @@ Interface IGetFileLineIndex
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
@@ -137,18 +137,15 @@ Interface IIndexedFileLine
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
@@ -148,18 +148,15 @@ Class IndexedFileLine
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
@@ -148,18 +148,15 @@ Analogous to <a class="xref" href="Hi.Common.FileLines.IndexedFileLine.html">Ind
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_CompareFileLine_Hi_Common_FileLines_IFileLineIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetFileNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetFileNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_GetLineNo_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.GetLineNo(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IFileLineIndex_">FileLineUtil.MixedIndex(IFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
@@ -0,0 +1,221 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface ICommandTextSource | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface ICommandTextSource | HiAPI-C# 2025 ">
<meta name="description" content="A culture-bearing vocabulary commands compose their titles and labels from: it maps a vocabulary key — the English default text — onto that culture&#39;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 ([CultureText] declarations overlaid by registrations).">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.ICommandTextSource">
<h1 id="Hi_Common_ICommandTextSource" data-uid="Hi.Common.ICommandTextSource" class="text-break">
Interface ICommandTextSource
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>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
<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_GenTextSource_System_Globalization_CultureInfo_System_Type___">GenTextSource(CultureInfo, params Type[])</a> ([CultureText] declarations
overlaid by <a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a> registrations).</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface ICommandTextSource</code></pre>
</div>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_ICommandTextSource_Item_" data-uid="Hi.Common.ICommandTextSource.Item*"></a>
<h3 id="Hi_Common_ICommandTextSource_Item_System_String_" data-uid="Hi.Common.ICommandTextSource.Item(System.String)">
this[string]
</h3>
<div class="markdown level1 summary"><p>The text of <code class="paramref">key</code> in this source's culture; the key
itself when the source carries no entry — the key doubles as the
English default.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string this[string key] { get; }</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Vocabulary key — the English default text.</p>
</dd>
</dl>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The culture's text, or the key itself.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -140,6 +140,16 @@ Interface IToPresentDto
<h2 id="Hi_Common_IToPresentDto_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>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 <code>System.Text.Json</code> throw
<code>NotSupportedException</code> when serializing it. Return a
<code>Dictionary&lt;string, object&gt;</code> instead — its keys are emitted verbatim as
the JSON property names. Key by <code>nameof</code> of the mirrored member where one
exists (<code>nameof</code> compiles to a string literal, so obfuscation cannot touch
it); use a literal for marker keys such as <code>&ldquo;Type&rdquo;</code>.</p>
</div>
<h2 class="section" id="methods">Methods
@@ -767,17 +767,19 @@ Used for defining segment of data in collections or arrays.</p>
<a id="Hi_Common_IndexSegment_GetIndexSegment_" data-uid="Hi.Common.IndexSegment.GetIndexSegment*"></a>
<h3 id="Hi_Common_IndexSegment_GetIndexSegment__1_System_Collections_Generic_IList___0__System_Int32_System_Int32_System_Func___0_System_Nullable_System_Int32___" data-uid="Hi.Common.IndexSegment.GetIndexSegment``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,System.Func{``0,System.Nullable{System.Int32}})">
GetIndexSegment&lt;TData&gt;(IList&lt;TData&gt;, int, int, Func&lt;TData, int?&gt;)
<h3 id="Hi_Common_IndexSegment_GetIndexSegment__2_System_Collections_Generic_IList___0__System_Int32___1_System_Func___0___1____1_" data-uid="Hi.Common.IndexSegment.GetIndexSegment``2(System.Collections.Generic.IList{``0},System.Int32,``1,System.Func{``0,``1},``1)">
GetIndexSegment&lt;TData, TKey&gt;(IList&lt;TData&gt;, int, TKey, Func&lt;TData, TKey&gt;, TKey)
</h3>
<div class="markdown level1 summary"><p>Gets an index segment from a list of data items by the specific group index.</p>
<div class="markdown level1 summary"><p>Finds the contiguous run of items whose key equals
<code class="paramref">targetGroupKey</code>, scanning outward from
<code class="paramref">seekingStartListIndex</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IndexSegment GetIndexSegment&lt;TData&gt;(IList&lt;TData&gt; steps, int seekingStartListIndex, int targetGroupIndex, Func&lt;TData, int?&gt; dataToGroupIndexFunc)</code></pre>
<pre><code class="lang-csharp hljs">public static IndexSegment GetIndexSegment&lt;TData, TKey&gt;(IList&lt;TData&gt; steps, int seekingStartListIndex, TKey targetGroupKey, Func&lt;TData, TKey&gt; keyFunc, TKey seekStartFallbackKey = null) where TKey : class, IComparable&lt;TKey&gt;</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -788,11 +790,14 @@ Used for defining segment of data in collections or arrays.</p>
<dt><code>seekingStartListIndex</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The start step index for seeking.</p>
</dd>
<dt><code>targetGroupIndex</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The target segment key.</p>
<dt><code>targetGroupKey</code> <span class="xref">TKey</span></dt>
<dd><p>The key of the segment to locate.</p>
</dd>
<dt><code>dataToGroupIndexFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;TData, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>?&gt;</dt>
<dd><p>A function that extracts a segmentkey from a data item.</p>
<dt><code>keyFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;TData, TKey&gt;</dt>
<dd><p>Extracts the ordering key from a data item; may return null for an item with no key.</p>
</dd>
<dt><code>seekStartFallbackKey</code> <span class="xref">TKey</span></dt>
<dd><p>Key used when the seeking-start item has none (a null cache lands in the equality branch).</p>
</dd>
</dl>
@@ -807,6 +812,9 @@ Used for defining segment of data in collections or arrays.</p>
<dl class="parameters">
<dt><code>TData</code></dt>
<dd><p>The type of data items.</p>
</dd>
<dt><code>TKey</code></dt>
<dd><p>The ordering key type (e.g. a file-line position).</p>
</dd>
</dl>
@@ -149,6 +149,47 @@ Class JsonUtil
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_JsonUtil_CompactNanOptions_" data-uid="Hi.Common.JsonUtil.CompactNanOptions*"></a>
<h3 id="Hi_Common_JsonUtil_CompactNanOptions" data-uid="Hi.Common.JsonUtil.CompactNanOptions">
CompactNanOptions
</h3>
<div class="markdown level1 summary"><p>Compact (single-line) serializer options supporting NaN / Infinity /
-Infinity as quoted literal strings. This is the exact leaf encoding
<a class="xref" href="Hi.Common.JsonUtil.html#Hi_Common_JsonUtil_ToLeafCompactJsonString_System_Text_Json_Nodes_JsonNode_System_Text_Json_JsonSerializerOptions_">ToLeafCompactJsonString(JsonNode, JsonSerializerOptions)</a> 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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static JsonSerializerOptions CompactNanOptions { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.jsonserializeroptions">JsonSerializerOptions</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -247,7 +288,12 @@ Creates missing intermediate objects as needed.</p>
</h3>
<div class="markdown level1 summary"><p>Gets a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a> from a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode">JsonNode</a> that may hold
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a>, or <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>.</p>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a>, or <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>.
Also maps the named floating-point literal strings <code>&ldquo;NaN&rdquo;</code>,
<code>&ldquo;Infinity&rdquo;</code> and <code>&quot;-Infinity&quot;</code> — the quoted form
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.serialization.jsonnumberhandling#system-text-json-serialization-jsonnumberhandling-allownamedfloatingpointliterals">AllowNamedFloatingPointLiterals</a> writes
for those values — back to their <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a> constants, so a
node re-parsed from serialized JSON reads the same as the live value.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -236,8 +236,8 @@ and invokes the handler synchronously on the caller's thread.</p>
</h3>
<div class="markdown level1 summary"><p>Creates an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> that routes
<a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> to the appropriate <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger">ILogger</a> level.</p>
<div class="markdown level1 summary"><p>Creates an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> that routes an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>
(or a raw <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception">Exception</a>) to the appropriate <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger">ILogger</a> level.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Enum NcDiagnosticCategory | HiAPI-C# 2025 </title>
<title>Enum Category | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Enum NcDiagnosticCategory | HiAPI-C# 2025 ">
<meta name="title" content="Enum Category | HiAPI-C# 2025 ">
<meta name="description" content="Diagnostic category of an NC diagnostic. + Error → exception/bug, unconsidered case + Warning → known unsupported, likely harmless + Error → known unsupported, likely matters + Warning → manufacturing/physics may be unfeasible + Error → manufacturing/physics is unfeasible + Message → dependency/config applied, informational event (e.g. a block skipped by an enabled IBlockSkipConfig layer) + Warning → dependency/config missing, using fallback + Error → dependency/config missing, cannot proceed">
<meta name="description" content="Classification of an — the &amp;ldquo;what kind of concern&amp;rdquo; axis, orthogonal to the importance axis it pairs with. Applies to every on the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …), not only NC messages.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,27 +84,29 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.NcParsers.NcDiagnosticCategory">
<article data-uid="Hi.Common.Messages.Category">
<h1 id="Hi_NcParsers_NcDiagnosticCategory" data-uid="Hi.NcParsers.NcDiagnosticCategory" class="text-break">
Enum NcDiagnosticCategory
<h1 id="Hi_Common_Messages_Category" data-uid="Hi.Common.Messages.Category" class="text-break">
Enum Category
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcParsers.html">NcParsers</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Diagnostic category of an NC diagnostic.</p>
<ul><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_System">System</a> + Error → exception/bug, unconsidered case</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Unsupported">Unsupported</a> + Warning → known unsupported, likely harmless</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Unsupported">Unsupported</a> + Error → known unsupported, likely matters</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Validation">Validation</a> + Warning → manufacturing/physics may be unfeasible</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Validation">Validation</a> + Error → manufacturing/physics is unfeasible</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Configuration">Configuration</a> + Message → dependency/config applied, informational event (e.g. a block skipped by an enabled <code>IBlockSkipConfig</code> layer)</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Configuration">Configuration</a> + Warning → dependency/config missing, using fallback</li><li><a class="xref" href="Hi.NcParsers.NcDiagnosticCategory.html#Hi_NcParsers_NcDiagnosticCategory_Configuration">Configuration</a> + Error → dependency/config missing, cannot proceed</li></ul>
<div class="markdown summary"><p>Classification of an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> — the &ldquo;what kind of concern&rdquo; axis, orthogonal to the
<a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a> importance axis it pairs with. Applies to every <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> on
the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …),
not only NC messages.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public enum NcDiagnosticCategory</code></pre>
<pre><code class="lang-csharp hljs">public enum Category</code></pre>
</div>
@@ -146,27 +148,31 @@ Enum NcDiagnosticCategory
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="Hi_NcParsers_NcDiagnosticCategory_Configuration"><code>Configuration = 3</code></dt>
<dt id="Hi_Common_Messages_Category_Configuration"><code>Configuration = 3</code></dt>
<dd><p>End-user XML configuration issue: missing or misconfigured
<a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a> (e.g., coordinate table,
<dd><p>Missing or misconfigured end-user dependency / configuration (e.g. coordinate table,
tool offset table, machine axis config, rapid feedrate config).</p>
</dd>
<dt id="Hi_NcParsers_NcDiagnosticCategory_System"><code>System = 0</code></dt>
<dt id="Hi_Common_Messages_Category_System"><code>System = 0</code></dt>
<dd><p>Pipeline infrastructure, lifecycle, internal exceptions.</p>
<dd><p>General program / pipeline output — lifecycle, progress, infrastructure, internal exceptions.
The default when no more-specific category applies.</p>
</dd>
<dt id="Hi_NcParsers_NcDiagnosticCategory_Unsupported"><code>Unsupported = 1</code></dt>
<dt id="Hi_Common_Messages_Category_Unsupported"><code>Unsupported = 1</code></dt>
<dd><p>Recognized but unimplemented G-code or feature.</p>
<dd><p>Recognized but unimplemented feature.</p>
</dd>
<dt id="Hi_NcParsers_NcDiagnosticCategory_Validation"><code>Validation = 2</code></dt>
<dt id="Hi_Common_Messages_Category_Validation"><code>Validation = 2</code></dt>
<dd><p>Manufacturing/physics feasibility check.</p>
<dd><p>Manufacturing / physics feasibility check.</p>
</dd>
</dl>
<h2 id="Hi_Common_Messages_Category_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Representative (Category × <a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a>) combinations:</p>
<ul><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a> + Message / Progress → lifecycle, progress, general program output</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a> + Error → exception / bug, unconsidered case</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Unsupported">Unsupported</a> + Warning → known unsupported, likely harmless</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Unsupported">Unsupported</a> + Error → known unsupported, likely matters</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Validation">Validation</a> + Warning → manufacturing / physics may be unfeasible</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Validation">Validation</a> + Error → manufacturing / physics is unfeasible</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Configuration">Configuration</a> + Message → dependency / config applied, informational</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Configuration">Configuration</a> + Warning → dependency / config missing, using fallback</li><li><a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_Configuration">Configuration</a> + Error → dependency / config missing, cannot proceed</li></ul>
</div>
</article>
@@ -0,0 +1,417 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface IMessage | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IMessage | HiAPI-C# 2025 ">
<meta name="description" content="Common contract for a single reportable item on an 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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.IMessage">
<h1 id="Hi_Common_Messages_IMessage" data-uid="Hi.Common.Messages.IMessage" class="text-break">
Interface IMessage
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Common contract for a single reportable item on an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a>
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. <code>NcDiagnostic</code> by
<code>NcDiagnosticProgress</code>, <code>ClStripPos</code> by <code>ClStrip</code>) rather than being mixed
into one shared collection.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IMessage</code></pre>
</div>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_Messages_IMessage_GetArgs_" data-uid="Hi.Common.Messages.IMessage.GetArgs*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetArgs" data-uid="Hi.Common.Messages.IMessage.GetArgs">
GetArgs()
</h3>
<div class="markdown level1 summary"><p>Gets the values interpolated into <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetFormat">GetFormat()</a>; null when
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetFormat">GetFormat()</a> is null, possibly empty for a hole-less template.
Default interface method so external implementers are unaffected.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">object[] GetArgs()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd><p>The interpolation arguments, or null when untemplated.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetCategory_" data-uid="Hi.Common.Messages.IMessage.GetCategory*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetCategory" data-uid="Hi.Common.Messages.IMessage.GetCategory">
GetCategory()
</h3>
<div class="markdown level1 summary"><p>Gets the classification — see <a class="xref" href="Hi.Common.Messages.Category.html">Category</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Category GetCategory()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd><p>The category of this message.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetDetail_" data-uid="Hi.Common.Messages.IMessage.GetDetail*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetDetail" data-uid="Hi.Common.Messages.IMessage.GetDetail">
GetDetail()
</h3>
<div class="markdown level1 summary"><p>Gets the optional detail payload or exception; null when not applicable.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">object GetDetail()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>The detail object, or null.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetFormat_" data-uid="Hi.Common.Messages.IMessage.GetFormat*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetFormat" data-uid="Hi.Common.Messages.IMessage.GetFormat">
GetFormat()
</h3>
<div class="markdown level1 summary"><p>Gets the composite-format template behind <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetNotification">GetNotification()</a> — a
<code>{0}</code>-style .NET format string — when this message was produced from an
interpolated template; null when the notification has no structured template.
Together with <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetArgs">GetArgs()</a> this lets a consumer re-render the message
in another language without losing the interpolated live values, while
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetNotification">GetNotification()</a> stays the invariant English rendering.
Default interface method so external implementers are unaffected.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string GetFormat()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The composite format string, or null when untemplated.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetId_" data-uid="Hi.Common.Messages.IMessage.GetId*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetId" data-uid="Hi.Common.Messages.IMessage.GetId">
GetId()
</h3>
<div class="markdown level1 summary"><p>Gets the structured id used for filtering / suppression; may be null.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string GetId()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message id, or null when not applicable.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetNotification_" data-uid="Hi.Common.Messages.IMessage.GetNotification*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetNotification" data-uid="Hi.Common.Messages.IMessage.GetNotification">
GetNotification()
</h3>
<div class="markdown level1 summary"><p>Gets the end-user friendly notification text.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string GetNotification()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The notification text.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_IMessage_GetSeverity_" data-uid="Hi.Common.Messages.IMessage.GetSeverity*"></a>
<h3 id="Hi_Common_Messages_IMessage_GetSeverity" data-uid="Hi.Common.Messages.IMessage.GetSeverity">
GetSeverity()
</h3>
<div class="markdown level1 summary"><p>Gets the importance level — see <a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Severity GetSeverity()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd><p>The severity of this message.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,203 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface IProgressMessage | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IProgressMessage | HiAPI-C# 2025 ">
<meta name="description" content="Marker for an 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 simply treats the composite as an opaque .">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.IProgressMessage">
<h1 id="Hi_Common_Messages_IProgressMessage" data-uid="Hi.Common.Messages.IProgressMessage" class="text-break">
Interface IProgressMessage
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Marker for an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> that is itself a <b>container</b> 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.</p>
<p>
Empty by design: the contract is purely the marker. The children are exposed by the concrete
type (e.g. <code>StepScopedProgress.MessageList</code>) and drained at the point that owns the
ordering guarantee, so a consumer that does not recognize <a class="xref" href="Hi.Common.Messages.IProgressMessage.html">IProgressMessage</a> simply
treats the composite as an opaque <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IProgressMessage : IMessage</code></pre>
</div>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetSeverity">IMessage.GetSeverity()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetCategory">IMessage.GetCategory()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetId">IMessage.GetId()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetNotification">IMessage.GetNotification()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetDetail">IMessage.GetDetail()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetFormat">IMessage.GetFormat()</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetArgs">IMessage.GetArgs()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,363 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class MessageCollector | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MessageCollector | HiAPI-C# 2025 ">
<meta name="description" content="A minimal of that buffers every reported message into . Intended as a per-call / per-request sink: a caller injects it into a have-both function (one that takes an IProgress&amp;lt;IMessage&amp;gt; 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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.MessageCollector">
<h1 id="Hi_Common_Messages_MessageCollector" data-uid="Hi.Common.Messages.MessageCollector" class="text-break">
Class MessageCollector
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>A minimal <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> of <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> that buffers every
reported message into <a class="xref" href="Hi.Common.Messages.MessageCollector.html#Hi_Common_Messages_MessageCollector_Messages">Messages</a>. Intended as a per-call / per-request
sink: a caller injects it into a have-both function (one that takes an
<code>IProgress&lt;IMessage&gt; messageProgress</code>), 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.</p>
<p>Unlike the session / strip sinks (<code>SessionProgress</code>, <code>StepDiagnosticProgress</code>) 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.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class MessageCollector : IProgress&lt;IMessage&gt;</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">MessageCollector</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationError_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.ConfigurationError(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationErrorFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.ConfigurationErrorFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationMessage_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.ConfigurationMessage(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationMessageFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.ConfigurationMessageFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationWarning_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.ConfigurationWarning(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ConfigurationWarningFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.ConfigurationWarningFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemError_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.SystemError(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemErrorFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.SystemErrorFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemMessage_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.SystemMessage(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemMessageFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.SystemMessageFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemProgress_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.SystemProgress(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemProgressFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.SystemProgressFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemSuccess_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.SystemSuccess(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemSuccessFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.SystemSuccessFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemWarning_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.SystemWarning(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_SystemWarningFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.SystemWarningFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedError_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.UnsupportedError(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedErrorFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.UnsupportedErrorFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedMessage_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.UnsupportedMessage(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedMessageFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.UnsupportedMessageFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedWarning_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.UnsupportedWarning(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_UnsupportedWarningFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.UnsupportedWarningFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ValidationError_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.ValidationError(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ValidationErrorFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.ValidationErrorFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ValidationWarning_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_String_System_Object_">MessageUtil.ValidationWarning(IProgress&lt;IMessage&gt;, string, string, object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Messages.MessageUtil.html#Hi_Common_Messages_MessageUtil_ValidationWarningFmt_System_IProgress_Hi_Common_Messages_IMessage__System_String_System_FormattableString_System_Object_">MessageUtil.ValidationWarningFmt(IProgress&lt;IMessage&gt;, string, FormattableString, object)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_Messages_MessageCollector_Messages_" data-uid="Hi.Common.Messages.MessageCollector.Messages*"></a>
<h3 id="Hi_Common_Messages_MessageCollector_Messages" data-uid="Hi.Common.Messages.MessageCollector.Messages">
Messages
</h3>
<div class="markdown level1 summary"><p>The messages reported so far, in arrival order.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;IMessage&gt; Messages { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_Messages_MessageCollector_Report_" data-uid="Hi.Common.Messages.MessageCollector.Report*"></a>
<h3 id="Hi_Common_Messages_MessageCollector_Report_Hi_Common_Messages_IMessage_" data-uid="Hi.Common.Messages.MessageCollector.Report(Hi.Common.Messages.IMessage)">
Report(IMessage)
</h3>
<div class="markdown level1 summary"><p>Reports a progress update.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Report(IMessage value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a></dt>
<dd><p>The value of the updated progress.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -1,595 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class MultiTagMessage | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MultiTagMessage | HiAPI-C# 2025 ">
<meta name="description" content="Represents a message with multiple tags for categorization and filtering.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.MultiTagMessage">
<h1 id="Hi_Common_Messages_MultiTagMessage" data-uid="Hi.Common.Messages.MultiTagMessage" class="text-break">
Class MultiTagMessage
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a message with multiple tags for categorization and filtering.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MultiTagMessage</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">MultiTagMessage</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Common_Messages_MultiTagMessage__ctor_" data-uid="Hi.Common.Messages.MultiTagMessage.#ctor*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage__ctor_System_Object_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.#ctor(System.Object,System.String[])">
MultiTagMessage(object, params string[])
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> class with the specified message and tags.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MultiTagMessage(object message, params string[] tags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>tags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>The tags to associate with this message</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_Messages_MultiTagMessage_Message_" data-uid="Hi.Common.Messages.MultiTagMessage.Message*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Message" data-uid="Hi.Common.Messages.MultiTagMessage.Message">
Message
</h3>
<div class="markdown level1 summary"><p>Gets or sets the message content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object Message { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Tags_" data-uid="Hi.Common.Messages.MultiTagMessage.Tags*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Tags" data-uid="Hi.Common.Messages.MultiTagMessage.Tags">
Tags
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collection of tags associated with this message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HashSet&lt;string&gt; Tags { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.hashset-1">HashSet</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_Messages_MultiTagMessage_Error_" data-uid="Hi.Common.Messages.MultiTagMessage.Error*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Error_System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Error(System.String,System.String[])">
Error(string, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Error">Error</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Error(string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Error">Error</a></p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Exception_" data-uid="Hi.Common.Messages.MultiTagMessage.Exception*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Exception_System_Exception_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Exception(System.Exception,System.String[])">
Exception(Exception, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Exception">Exception</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Exception(Exception exception, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>exception</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception">Exception</a></dt>
<dd><p>The exception to log</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Exception">Exception</a></p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Info_" data-uid="Hi.Common.Messages.MultiTagMessage.Info*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Info_System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Info(System.String,System.String[])">
Info(string, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Info">Info</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Info(string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Info">Info</a></p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Progress_" data-uid="Hi.Common.Messages.MultiTagMessage.Progress*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Progress_System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Progress(System.String,System.String[])">
Progress(string, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Progress">Progress</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Progress(string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Progress">Progress</a></p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Success_" data-uid="Hi.Common.Messages.MultiTagMessage.Success*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Success_System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Success(System.String,System.String[])">
Success(string, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Success">Success</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Success(string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Success">Success</a></p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_ToString_" data-uid="Hi.Common.Messages.MultiTagMessage.ToString*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_ToString" data-uid="Hi.Common.Messages.MultiTagMessage.ToString">
ToString()
</h3>
<div class="markdown level1 summary"><p>Returns a string that represents the current object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A string that represents the current object.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessage_Warning_" data-uid="Hi.Common.Messages.MultiTagMessage.Warning*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessage_Warning_System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessage.Warning(System.String,System.String[])">
Warning(string, params string[])
</h3>
<div class="markdown level1 summary"><p>Creates a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Warning">Warning</a> message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static MultiTagMessage Warning(string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>A new <a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a> tagged with <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Warning">Warning</a></p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -1,453 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class MultiTagMessageUtil | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MultiTagMessageUtil | HiAPI-C# 2025 ">
<meta name="description" content="Utility methods for working with IProgress implementations.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.MultiTagMessageUtil">
<h1 id="Hi_Common_Messages_MultiTagMessageUtil" data-uid="Hi.Common.Messages.MultiTagMessageUtil" class="text-break">
Class MultiTagMessageUtil
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Utility methods for working with IProgress implementations.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class MultiTagMessageUtil</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">MultiTagMessageUtil</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportError_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportError*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportError_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportError(System.IProgress{System.Object},System.String,System.String[])">
ReportError(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds an <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Error">Error</a> message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportError(this IProgress&lt;object&gt; host, string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportException_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportException*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportException_System_IProgress_System_Object__System_Exception_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportException(System.IProgress{System.Object},System.Exception,System.String[])">
ReportException(IProgress&lt;object&gt;, Exception, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds an <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Exception">Exception</a> message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportException(this IProgress&lt;object&gt; host, Exception exception, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>exception</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception">Exception</a></dt>
<dd><p>The exception to log</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportInfo_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportInfo*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportInfo_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportInfo(System.IProgress{System.Object},System.String,System.String[])">
ReportInfo(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds an <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Info">Info</a> message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportInfo(this IProgress&lt;object&gt; host, string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportMessage_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportMessage*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportMessage_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportMessage(System.IProgress{System.Object},System.String,System.String[])">
ReportMessage(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds a message with the specified tags to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportMessage(this IProgress&lt;object&gt; host, string msg, params string[] tags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>msg</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>tags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>The tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportProgress_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportProgress*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportProgress_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportProgress(System.IProgress{System.Object},System.String,System.String[])">
ReportProgress(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Progress">Progress</a> message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportProgress(this IProgress&lt;object&gt; host, string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportSuccess_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportSuccess*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportSuccess_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportSuccess(System.IProgress{System.Object},System.String,System.String[])">
ReportSuccess(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds a <a class="xref" href="Hi.Common.Messages.MessageFlag.html#Hi_Common_Messages_MessageFlag_Success">Success</a> message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportSuccess(this IProgress&lt;object&gt; host, string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
<a id="Hi_Common_Messages_MultiTagMessageUtil_ReportWarning_" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportWarning*"></a>
<h3 id="Hi_Common_Messages_MultiTagMessageUtil_ReportWarning_System_IProgress_System_Object__System_String_System_String___" data-uid="Hi.Common.Messages.MultiTagMessageUtil.ReportWarning(System.IProgress{System.Object},System.String,System.String[])">
ReportWarning(IProgress&lt;object&gt;, string, params string[])
</h3>
<div class="markdown level1 summary"><p>Adds a warning message to the message host.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ReportWarning(this IProgress&lt;object&gt; host, string message, params string[] otherTags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>host</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host</p>
</dd>
<dt><code>message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message content</p>
</dd>
<dt><code>otherTags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd><p>Additional tags to associate with the message</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Enum FileTimeSection.TimeOption | HiAPI-C# 2025 </title>
<title>Enum Severity | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Enum FileTimeSection.TimeOption | HiAPI-C# 2025 ">
<meta name="title" content="Enum Severity | HiAPI-C# 2025 ">
<meta name="description" content="Defines options for representing time values.">
<meta name="description" content="Importance level of an . Combined with 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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,26 +84,29 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Mappings.FileTimeSection.TimeOption">
<article data-uid="Hi.Common.Messages.Severity">
<h1 id="Hi_Mappings_FileTimeSection_TimeOption" data-uid="Hi.Mappings.FileTimeSection.TimeOption" class="text-break">
Enum FileTimeSection.TimeOption
<h1 id="Hi_Common_Messages_Severity" data-uid="Hi.Common.Messages.Severity" class="text-break">
Enum Severity
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Mappings.html">Mappings</a></dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Defines options for representing time values.</p>
<div class="markdown summary"><p>Importance level of an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>. Combined with <a class="xref" href="Hi.Common.Messages.Category.html">Category</a> to form
the full meaning (e.g. <code>Validation + Warning</code>). Promoted from the former
<code>NcDiagnosticSeverity</code> so non-NC messages (simple notices, progress fractions) share a
single scale.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public enum FileTimeSection.TimeOption</code></pre>
<pre><code class="lang-csharp hljs">public enum Severity</code></pre>
</div>
@@ -145,13 +148,25 @@ Enum FileTimeSection.TimeOption
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="Hi_Mappings_FileTimeSection_TimeOption_TimeSpan"><code>TimeSpan = 1</code></dt>
<dt id="Hi_Common_Messages_Severity_Error"><code>Error = 4</code></dt>
<dd><p>Represent time as a TimeSpan.</p>
<dd><p>Definite issue — result may be incorrect.</p>
</dd>
<dt id="Hi_Mappings_FileTimeSection_TimeOption_TotalSeconds"><code>TotalSeconds = 0</code></dt>
<dt id="Hi_Common_Messages_Severity_Message"><code>Message = 0</code></dt>
<dd><p>Represent time as total seconds.</p>
<dd><p>Informational status.</p>
</dd>
<dt id="Hi_Common_Messages_Severity_Progress"><code>Progress = 2</code></dt>
<dd><p>Ongoing progress / fraction update.</p>
</dd>
<dt id="Hi_Common_Messages_Severity_Success"><code>Success = 1</code></dt>
<dd><p>Completed successfully.</p>
</dd>
<dt id="Hi_Common_Messages_Severity_Warning"><code>Warning = 3</code></dt>
<dd><p>Potential issue — processing continues.</p>
</dd>
</dl>
@@ -0,0 +1,810 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class SimpleMessage | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class SimpleMessage | HiAPI-C# 2025 ">
<meta name="description" content="A plain 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 to add the StepIndex / SentenceCarrier without the producer needing to know it.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.Messages.SimpleMessage">
<h1 id="Hi_Common_Messages_SimpleMessage" data-uid="Hi.Common.Messages.SimpleMessage" class="text-break">
Class SimpleMessage
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a>.<a class="xref" href="Hi.Common.Messages.html">Messages</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>A plain <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> 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 <a class="xref" href="Hi.Common.Messages.SimpleMessage.html">SimpleMessage</a>
to add the <code>StepIndex</code> / <code>SentenceCarrier</code> without the producer needing to know it.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class SimpleMessage : IMessage</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">SimpleMessage</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Common_Messages_SimpleMessage__ctor_" data-uid="Hi.Common.Messages.SimpleMessage.#ctor*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage__ctor_Hi_Common_Messages_Severity_System_FormattableString_Hi_Common_Messages_Category_System_String_System_Object_" data-uid="Hi.Common.Messages.SimpleMessage.#ctor(Hi.Common.Messages.Severity,System.FormattableString,Hi.Common.Messages.Category,System.String,System.Object)">
SimpleMessage(Severity, FormattableString, Category, string, object)
</h3>
<div class="markdown level1 summary"><p>Initializes a templated instance: the interpolated template and its values are kept on
<a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Format">Format</a> / <a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Args">Args</a> and <a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Notification">Notification</a> becomes the
culture-invariant English rendering. An interpolated string literal passed to the
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a> constructor is NOT captured here — call sites opt in through the
<code>*Fmt</code> helpers on <a class="xref" href="Hi.Common.Messages.MessageUtil.html">MessageUtil</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SimpleMessage(Severity severity, FormattableString notification, Category category = Category.System, string id = null, object detail = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>severity</code> <a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd><p>Importance level.</p>
</dd>
<dt><code>notification</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.formattablestring">FormattableString</a></dt>
<dd><p>Interpolated notification template.</p>
</dd>
<dt><code>category</code> <a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd><p>Classification; defaults to <a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a>.</p>
</dd>
<dt><code>id</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Optional structured id.</p>
</dd>
<dt><code>detail</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>Optional detail payload or exception.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage__ctor_" data-uid="Hi.Common.Messages.SimpleMessage.#ctor*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage__ctor_Hi_Common_Messages_Severity_System_String_Hi_Common_Messages_Category_System_String_System_Object_" data-uid="Hi.Common.Messages.SimpleMessage.#ctor(Hi.Common.Messages.Severity,System.String,Hi.Common.Messages.Category,System.String,System.Object)">
SimpleMessage(Severity, string, Category, string, object)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Common.Messages.SimpleMessage.html">SimpleMessage</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SimpleMessage(Severity severity, string notification, Category category = Category.System, string id = null, object detail = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>severity</code> <a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd><p>Importance level.</p>
</dd>
<dt><code>notification</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>End-user friendly notification text.</p>
</dd>
<dt><code>category</code> <a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd><p>Classification; defaults to <a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a>.</p>
</dd>
<dt><code>id</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Optional structured id.</p>
</dd>
<dt><code>detail</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>Optional detail payload or exception.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Common_Messages_SimpleMessage_Args_" data-uid="Hi.Common.Messages.SimpleMessage.Args*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Args" data-uid="Hi.Common.Messages.SimpleMessage.Args">
Args
</h3>
<div class="markdown level1 summary"><p>Gets the values interpolated into <a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Format">Format</a>; null when untemplated.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object[] Args { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Category_" data-uid="Hi.Common.Messages.SimpleMessage.Category*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Category" data-uid="Hi.Common.Messages.SimpleMessage.Category">
Category
</h3>
<div class="markdown level1 summary"><p>Gets the classification.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Category Category { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Detail_" data-uid="Hi.Common.Messages.SimpleMessage.Detail*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Detail" data-uid="Hi.Common.Messages.SimpleMessage.Detail">
Detail
</h3>
<div class="markdown level1 summary"><p>Gets the optional detail payload or exception; null when not applicable.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object Detail { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Format_" data-uid="Hi.Common.Messages.SimpleMessage.Format*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Format" data-uid="Hi.Common.Messages.SimpleMessage.Format">
Format
</h3>
<div class="markdown level1 summary"><p>Gets the composite-format template behind <a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Notification">Notification</a>; null when the
message was built from a plain string (untemplated).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Format { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Id_" data-uid="Hi.Common.Messages.SimpleMessage.Id*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Id" data-uid="Hi.Common.Messages.SimpleMessage.Id">
Id
</h3>
<div class="markdown level1 summary"><p>Gets the structured id for filtering / suppression; may be null.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Id { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Notification_" data-uid="Hi.Common.Messages.SimpleMessage.Notification*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Notification" data-uid="Hi.Common.Messages.SimpleMessage.Notification">
Notification
</h3>
<div class="markdown level1 summary"><p>Gets the end-user friendly notification text.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Notification { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_Severity_" data-uid="Hi.Common.Messages.SimpleMessage.Severity*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_Severity" data-uid="Hi.Common.Messages.SimpleMessage.Severity">
Severity
</h3>
<div class="markdown level1 summary"><p>Gets the importance level.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Severity Severity { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_Messages_SimpleMessage_GetArgs_" data-uid="Hi.Common.Messages.SimpleMessage.GetArgs*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetArgs" data-uid="Hi.Common.Messages.SimpleMessage.GetArgs">
GetArgs()
</h3>
<div class="markdown level1 summary"><p>Gets the values interpolated into <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetFormat">GetFormat()</a>; null when
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetFormat">GetFormat()</a> is null, possibly empty for a hole-less template.
Default interface method so external implementers are unaffected.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object[] GetArgs()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd><p>The interpolation arguments, or null when untemplated.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetCategory_" data-uid="Hi.Common.Messages.SimpleMessage.GetCategory*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetCategory" data-uid="Hi.Common.Messages.SimpleMessage.GetCategory">
GetCategory()
</h3>
<div class="markdown level1 summary"><p>Gets the classification — see <a class="xref" href="Hi.Common.Messages.Category.html">Category</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Category GetCategory()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd><p>The category of this message.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetDetail_" data-uid="Hi.Common.Messages.SimpleMessage.GetDetail*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetDetail" data-uid="Hi.Common.Messages.SimpleMessage.GetDetail">
GetDetail()
</h3>
<div class="markdown level1 summary"><p>Gets the optional detail payload or exception; null when not applicable.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object GetDetail()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>The detail object, or null.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetFormat_" data-uid="Hi.Common.Messages.SimpleMessage.GetFormat*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetFormat" data-uid="Hi.Common.Messages.SimpleMessage.GetFormat">
GetFormat()
</h3>
<div class="markdown level1 summary"><p>Gets the composite-format template behind <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetNotification">GetNotification()</a> — a
<code>{0}</code>-style .NET format string — when this message was produced from an
interpolated template; null when the notification has no structured template.
Together with <a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetArgs">GetArgs()</a> this lets a consumer re-render the message
in another language without losing the interpolated live values, while
<a class="xref" href="Hi.Common.Messages.IMessage.html#Hi_Common_Messages_IMessage_GetNotification">GetNotification()</a> stays the invariant English rendering.
Default interface method so external implementers are unaffected.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string GetFormat()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The composite format string, or null when untemplated.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetId_" data-uid="Hi.Common.Messages.SimpleMessage.GetId*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetId" data-uid="Hi.Common.Messages.SimpleMessage.GetId">
GetId()
</h3>
<div class="markdown level1 summary"><p>Gets the structured id used for filtering / suppression; may be null.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string GetId()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The message id, or null when not applicable.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetNotification_" data-uid="Hi.Common.Messages.SimpleMessage.GetNotification*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetNotification" data-uid="Hi.Common.Messages.SimpleMessage.GetNotification">
GetNotification()
</h3>
<div class="markdown level1 summary"><p>Gets the end-user friendly notification text.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string GetNotification()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The notification text.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_GetSeverity_" data-uid="Hi.Common.Messages.SimpleMessage.GetSeverity*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_GetSeverity" data-uid="Hi.Common.Messages.SimpleMessage.GetSeverity">
GetSeverity()
</h3>
<div class="markdown level1 summary"><p>Gets the importance level — see <a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Severity GetSeverity()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd><p>The severity of this message.</p>
</dd>
</dl>
<a id="Hi_Common_Messages_SimpleMessage_ToString_" data-uid="Hi.Common.Messages.SimpleMessage.ToString*"></a>
<h3 id="Hi_Common_Messages_SimpleMessage_ToString" data-uid="Hi.Common.Messages.SimpleMessage.ToString">
ToString()
</h3>
<div class="markdown level1 summary"><p>Returns a string that represents the current object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A string that represents the current object.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -118,13 +118,68 @@ and invokes the handler synchronously on the caller's thread.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessage.html">MultiTagMessage</a></dt>
<dd><p>Represents a message with multiple tags for categorization and filtering.</p>
<dt><a class="xref" href="Hi.Common.Messages.MessageCollector.html">MessageCollector</a></dt>
<dd><p>A minimal <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> of <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> that buffers every
reported message into <a class="xref" href="Hi.Common.Messages.MessageCollector.html#Hi_Common_Messages_MessageCollector_Messages">Messages</a>. Intended as a per-call / per-request
sink: a caller injects it into a have-both function (one that takes an
<code>IProgress&lt;IMessage&gt; messageProgress</code>), 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.</p>
<p>Unlike the session / strip sinks (<code>SessionProgress</code>, <code>StepDiagnosticProgress</code>) 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.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.MultiTagMessageUtil.html">MultiTagMessageUtil</a></dt>
<dd><p>Utility methods for working with IProgress implementations.</p>
<dt><a class="xref" href="Hi.Common.Messages.MessageUtil.html">MessageUtil</a></dt>
<dd><p>Extension helpers for reporting <a class="xref" href="Hi.Common.Messages.SimpleMessage.html">SimpleMessage</a> records onto an
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> of <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> sink — the <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>-channel
counterpart of <code>NcDiagnosticProgress</code>'s shorthand methods. Every helper is named
<code>{Category}{Severity}</code> and is id-first; the structured <code>id</code> is used for
filtering / suppression. All overloads are null-safe on <code>host</code>.</p>
<p>
Each helper has a <code>{Category}{Severity}Fmt</code> sibling taking a
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.formattablestring">FormattableString</a>: it keeps the interpolated template and values
(<a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Format">Format</a> / <a class="xref" href="Hi.Common.Messages.SimpleMessage.html#Hi_Common_Messages_SimpleMessage_Args">Args</a>) 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 <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a> helper binds to <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a> and is not captured.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.SimpleMessage.html">SimpleMessage</a></dt>
<dd><p>A plain <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> 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 <a class="xref" href="Hi.Common.Messages.SimpleMessage.html">SimpleMessage</a>
to add the <code>StepIndex</code> / <code>SentenceCarrier</code> without the producer needing to know it.</p>
</dd>
</dl>
<h3 id="interfaces">
Interfaces
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a></dt>
<dd><p>Common contract for a single reportable item on an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a>
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. <code>NcDiagnostic</code> by
<code>NcDiagnosticProgress</code>, <code>ClStripPos</code> by <code>ClStrip</code>) rather than being mixed
into one shared collection.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.IProgressMessage.html">IProgressMessage</a></dt>
<dd><p>Marker for an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> that is itself a <b>container</b> 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.</p>
<p>
Empty by design: the contract is purely the marker. The children are exposed by the concrete
type (e.g. <code>StepScopedProgress.MessageList</code>) and drained at the point that owns the
ordering guarantee, so a consumer that does not recognize <a class="xref" href="Hi.Common.Messages.IProgressMessage.html">IProgressMessage</a> simply
treats the composite as an opaque <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>.
</p>
</dd>
</dl>
<h3 id="enums">
@@ -133,11 +188,27 @@ Enums
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.BootstrapTheme.html">BootstrapTheme</a></dt>
<dd><p>Bootstrap theme colors for UI styling.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.Category.html">Category</a></dt>
<dd><p>Classification of an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> — the &ldquo;what kind of concern&rdquo; axis, orthogonal to the
<a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a> importance axis it pairs with. Applies to every <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> on
the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …),
not only NC messages.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.MessageFlag.html">MessageFlag</a></dt>
<dd><p>Enumeration of common message types used for system notifications.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Messages.Severity.html">Severity</a></dt>
<dd><p>Importance level of an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>. Combined with <a class="xref" href="Hi.Common.Messages.Category.html">Category</a> to form
the full meaning (e.g. <code>Validation + Warning</code>). Promoted from the former
<code>NcDiagnosticSeverity</code> so non-NC messages (simple notices, progress fractions) share a
single scale.</p>
</dd>
</dl>
<h3 id="delegates">
@@ -268,6 +268,49 @@ or falling back to the type name.</p>
<a id="Hi_Common_NameUtil_SpacePascalWords_" data-uid="Hi.Common.NameUtil.SpacePascalWords*"></a>
<h3 id="Hi_Common_NameUtil_SpacePascalWords_System_String_" data-uid="Hi.Common.NameUtil.SpacePascalWords(System.String)">
SpacePascalWords(string)
</h3>
<div class="markdown level1 summary"><p>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 <code>MachiningResolution_mm</code> becomes
&ldquo;Machining Resolution&rdquo; and <code>ReadOnFirstOrWrite</code> becomes
&ldquo;Read On First Or Write&rdquo;. Consecutive capitals stay one word.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string SpacePascalWords(string name)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>name</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The member name to space.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The spaced display words.</p>
</dd>
</dl>
</article>
@@ -416,6 +416,43 @@ The property is true if a task started and the task has not yet finished and <a
<a id="Hi_Common_PacePlayer_RunCount_" data-uid="Hi.Common.PacePlayer.RunCount*"></a>
<h3 id="Hi_Common_PacePlayer_RunCount" data-uid="Hi.Common.PacePlayer.RunCount">
RunCount
</h3>
<div class="markdown level1 summary"><p>Monotonically increasing count of runs started by <a class="xref" href="Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_Start">Start()</a>,
incremented synchronously before the run's task launches (never reset).
Serves as the run identity for status pollers: pairing this with
<a class="xref" href="Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_IsFinished">IsFinished</a> in one snapshot lets a client distinguish
&ldquo;the run I started has finished&rdquo; from a stale Finished left by a
previous run. <code>0</code> until the first run starts.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long RunCount { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -193,8 +193,8 @@ Manages reading data in parallel with forward and backward caching to optimize p
<a id="Hi_Common_ParallelBulkUtils_ParallelBulkReader_1__ctor_" data-uid="Hi.Common.ParallelBulkUtils.ParallelBulkReader`1.#ctor*"></a>
<h3 id="Hi_Common_ParallelBulkUtils_ParallelBulkReader_1__ctor_System_Int32_System_Int32_System_Int32_Hi_Common_ParallelBulkUtils_ReadBulkDelegate__0__System_Func__0_System_Nullable_System_Int32___System_Func_System_Int32__System_Action_System_Exception__" data-uid="Hi.Common.ParallelBulkUtils.ParallelBulkReader`1.#ctor(System.Int32,System.Int32,System.Int32,Hi.Common.ParallelBulkUtils.ReadBulkDelegate{`0},System.Func{`0,System.Nullable{System.Int32}},System.Func{System.Int32},System.Action{System.Exception})">
ParallelBulkReader(int, int, int, ReadBulkDelegate&lt;TData&gt;, Func&lt;TData, int?&gt;, Func&lt;int&gt;, Action&lt;Exception&gt;)
<h3 id="Hi_Common_ParallelBulkUtils_ParallelBulkReader_1__ctor_System_Int32_System_Int32_System_Int32_Hi_Common_ParallelBulkUtils_ReadBulkDelegate__0__System_Func__0_System_Nullable_System_Int32___System_Action_System_Exception__" data-uid="Hi.Common.ParallelBulkUtils.ParallelBulkReader`1.#ctor(System.Int32,System.Int32,System.Int32,Hi.Common.ParallelBulkUtils.ReadBulkDelegate{`0},System.Func{`0,System.Nullable{System.Int32}},System.Action{System.Exception})">
ParallelBulkReader(int, int, int, ReadBulkDelegate&lt;TData&gt;, Func&lt;TData, int?&gt;, Action&lt;Exception&gt;)
</h3>
@@ -203,7 +203,7 @@ Manages reading data in parallel with forward and backward caching to optimize p
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate&lt;TData&gt; readBulkFunc, Func&lt;TData, int?&gt; getIndexFunc, Func&lt;int&gt; countFunc, Action&lt;Exception&gt; exceptionAction = null)</code></pre>
<pre><code class="lang-csharp hljs">public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate&lt;TData&gt; readBulkFunc, Func&lt;TData, int?&gt; getIndexFunc, Action&lt;Exception&gt; exceptionAction = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -222,9 +222,6 @@ Manages reading data in parallel with forward and backward caching to optimize p
</dd>
<dt><code>getIndexFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;TData, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>?&gt;</dt>
<dd><p>The function used to extract an index from a data item.</p>
</dd>
<dt><code>countFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>&gt;</dt>
<dd><p>The function that returns the total count of available data items.</p>
</dd>
<dt><code>exceptionAction</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-1">Action</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception">Exception</a>&gt;</dt>
<dd><p>Optional action invoked when an exception occurs in cache operations.</p>
@@ -187,8 +187,8 @@ Unlike <a class="xref" href="Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.ht
<a id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1__ctor_" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.#ctor*"></a>
<h3 id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1__ctor_System_Int32_System_Int32_Hi_Common_ParallelBulkUtils_ReadBulkDelegate__0__System_Func__0_System_Nullable_System_Int32___System_Func_System_Int32__" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.#ctor(System.Int32,System.Int32,Hi.Common.ParallelBulkUtils.ReadBulkDelegate{`0},System.Func{`0,System.Nullable{System.Int32}},System.Func{System.Int32})">
SequentialBulkReader(int, int, ReadBulkDelegate&lt;TData&gt;, Func&lt;TData, int?&gt;, Func&lt;int&gt;)
<h3 id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1__ctor_System_Int32_System_Int32_Hi_Common_ParallelBulkUtils_ReadBulkDelegate__0__System_Func__0_System_Nullable_System_Int32___" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.#ctor(System.Int32,System.Int32,Hi.Common.ParallelBulkUtils.ReadBulkDelegate{`0},System.Func{`0,System.Nullable{System.Int32}})">
SequentialBulkReader(int, int, ReadBulkDelegate&lt;TData&gt;, Func&lt;TData, int?&gt;)
</h3>
@@ -197,7 +197,7 @@ Unlike <a class="xref" href="Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.ht
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate&lt;TData&gt; readBulkFunc, Func&lt;TData, int?&gt; getIndexFunc, Func&lt;int&gt; countFunc)</code></pre>
<pre><code class="lang-csharp hljs">public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate&lt;TData&gt; readBulkFunc, Func&lt;TData, int?&gt; getIndexFunc)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -213,9 +213,6 @@ Unlike <a class="xref" href="Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.ht
</dd>
<dt><code>getIndexFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;TData, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>?&gt;</dt>
<dd><p>The function used to extract an index from a data item.</p>
</dd>
<dt><code>countFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>&gt;</dt>
<dd><p>The function that returns the total count of available data items.</p>
</dd>
</dl>
@@ -234,38 +231,6 @@ Unlike <a class="xref" href="Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.ht
</h2>
<a id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1_CountFunc_" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.CountFunc*"></a>
<h3 id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1_CountFunc" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.CountFunc">
CountFunc
</h3>
<div class="markdown level1 summary"><p>Gets the function that returns the total count of available data items.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;int&gt; CountFunc { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1_GetIndexFunc_" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.GetIndexFunc*"></a>
<h3 id="Hi_Common_ParallelBulkUtils_SequentialBulkReader_1_GetIndexFunc" data-uid="Hi.Common.ParallelBulkUtils.SequentialBulkReader`1.GetIndexFunc">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ProgressFraction | HiAPI-C# 2025 ">
<meta name="description" content="Represents a progress report implementation.">
<meta name="description" content="Represents a progress report implementation. Also exposes an view (explicitly implemented) so a progress fraction can ride the unified message channel uniformly alongside SimpleMessage / NcDiagnostic: + , with as the notification and as the detail payload.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,12 +97,16 @@ Class ProgressFraction
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a progress report implementation.</p>
<div class="markdown summary"><p>Represents a progress report implementation. Also exposes an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> view
(explicitly implemented) so a progress fraction can ride the unified message channel uniformly
alongside <code>SimpleMessage</code> / <code>NcDiagnostic</code>: <a class="xref" href="Hi.Common.Messages.Severity.html#Hi_Common_Messages_Severity_Progress">Progress</a> +
<a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a>, with <a class="xref" href="Hi.Common.ProgressFraction.html#Hi_Common_ProgressFraction_Msg">Msg</a> as the notification and <a class="xref" href="Hi.Common.ProgressFraction.html#Hi_Common_ProgressFraction_Detail">Detail</a>
as the detail payload.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ProgressFraction : IProgressFraction</code></pre>
<pre><code class="lang-csharp hljs">public class ProgressFraction : IProgressFraction, IMessage</code></pre>
</div>
@@ -120,6 +124,7 @@ Class ProgressFraction
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.Common.IProgressFraction.html">IProgressFraction</a></div>
<div><a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a></div>
</dd>
</dl>
@@ -0,0 +1,383 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ResourceDefaultMarker | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ResourceDefaultMarker | HiAPI-C# 2025 ">
<meta name="description" content="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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.ResourceDefaultMarker">
<h1 id="Hi_Common_ResourceDefaultMarker" data-uid="Hi.Common.ResourceDefaultMarker" class="text-break">
Class ResourceDefaultMarker
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>File-name convention that marks a shipped resource item as a system-owned
default: a file carries the token before its final extension
(<code>AlTiBN.default.CoatingMaterial</code>), a folder-shaped resource carries it
as a folder-name suffix (<code>MachineTool/Table-B1.default/</code>) with the
files inside left untouched.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class ResourceDefaultMarker</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ResourceDefaultMarker</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Hi_Common_ResourceDefaultMarker_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>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.</p>
</div>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Common_ResourceDefaultMarker_Token" data-uid="Hi.Common.ResourceDefaultMarker.Token">
Token
</h3>
<div class="markdown level1 summary"><p>The marker token. Files embed it before the final extension; folders
end with it.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string Token = &quot;.default&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_ResourceDefaultMarker_IsMarkedFileName_" data-uid="Hi.Common.ResourceDefaultMarker.IsMarkedFileName*"></a>
<h3 id="Hi_Common_ResourceDefaultMarker_IsMarkedFileName_System_String_" data-uid="Hi.Common.ResourceDefaultMarker.IsMarkedFileName(System.String)">
IsMarkedFileName(string)
</h3>
<div class="markdown level1 summary"><p>Whether <code class="paramref">fileName</code> carries the marker
(contains <code>.default.</code>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool IsMarkedFileName(string fileName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>fileName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>File name without directory.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_ResourceDefaultMarker_IsMarkedFolderName_" data-uid="Hi.Common.ResourceDefaultMarker.IsMarkedFolderName*"></a>
<h3 id="Hi_Common_ResourceDefaultMarker_IsMarkedFolderName_System_String_" data-uid="Hi.Common.ResourceDefaultMarker.IsMarkedFolderName(System.String)">
IsMarkedFolderName(string)
</h3>
<div class="markdown level1 summary"><p>Whether <code class="paramref">folderName</code> carries the marker
(ends with <code>.default</code>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool IsMarkedFolderName(string folderName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>folderName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Folder name without directory.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_ResourceDefaultMarker_StripFileName_" data-uid="Hi.Common.ResourceDefaultMarker.StripFileName*"></a>
<h3 id="Hi_Common_ResourceDefaultMarker_StripFileName_System_String_" data-uid="Hi.Common.ResourceDefaultMarker.StripFileName(System.String)">
StripFileName(string)
</h3>
<div class="markdown level1 summary"><p>Removes the marker from a marked file name
(<code>X.default.mp</code><code>X.mp</code>); an unmarked name passes through.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string StripFileName(string fileName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>fileName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>File name without directory.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Common_ResourceDefaultMarker_StripFolderName_" data-uid="Hi.Common.ResourceDefaultMarker.StripFolderName*"></a>
<h3 id="Hi_Common_ResourceDefaultMarker_StripFolderName_System_String_" data-uid="Hi.Common.ResourceDefaultMarker.StripFolderName(System.String)">
StripFolderName(string)
</h3>
<div class="markdown level1 summary"><p>Removes the marker from a marked folder name
(<code>CT-350.default</code><code>CT-350</code>); an unmarked name passes through.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string StripFolderName(string folderName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>folderName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Folder name without directory.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,492 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ResourceLayout | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ResourceLayout | HiAPI-C# 2025 ">
<meta name="description" content="Provides the relative folder paths that make up the shipped resource tree.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.ResourceLayout">
<h1 id="Hi_Common_ResourceLayout" data-uid="Hi.Common.ResourceLayout" class="text-break">
Class ResourceLayout
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Provides the relative folder paths that make up the shipped resource tree.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class ResourceLayout</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ResourceLayout</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Common_ResourceLayout_CoatingMaterialFolder" data-uid="Hi.Common.ResourceLayout.CoatingMaterialFolder">
CoatingMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the coating material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CoatingMaterialFolder = &quot;Resource/CoatingMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_ControllerFolder" data-uid="Hi.Common.ResourceLayout.ControllerFolder">
ControllerFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the CNC controller resource folder, holding the brand
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> presets written by
<a class="xref" href="Hi.NcParsers.ControllerPresetWriter.html">ControllerPresetWriter</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ControllerFolder = &quot;Resource/Controller&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_CutterFolder" data-uid="Hi.Common.ResourceLayout.CutterFolder">
CutterFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the cutter resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CutterFolder = &quot;Resource/Cutter&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_CuttingParameterFolder" data-uid="Hi.Common.ResourceLayout.CuttingParameterFolder">
CuttingParameterFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the cutting parameter resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CuttingParameterFolder = &quot;Resource/CuttingParameter&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_HolderFolder" data-uid="Hi.Common.ResourceLayout.HolderFolder">
HolderFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the holder resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string HolderFolder = &quot;Resource/Holder&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_MachineToolFolder" data-uid="Hi.Common.ResourceLayout.MachineToolFolder">
MachineToolFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the machine tool resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string MachineToolFolder = &quot;Resource/MachineTool&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_ResourceFolder" data-uid="Hi.Common.ResourceLayout.ResourceFolder">
ResourceFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the main resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ResourceFolder = &quot;Resource&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_SpindleCapabilityFolder" data-uid="Hi.Common.ResourceLayout.SpindleCapabilityFolder">
SpindleCapabilityFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the spindle capability resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string SpindleCapabilityFolder = &quot;Resource/SpindleCapability&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_StructureMaterialFolder" data-uid="Hi.Common.ResourceLayout.StructureMaterialFolder">
StructureMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the structure material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string StructureMaterialFolder = &quot;Resource/StructureMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceLayout_WorkpieceMaterialFolder" data-uid="Hi.Common.ResourceLayout.WorkpieceMaterialFolder">
WorkpieceMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the workpiece material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string WorkpieceMaterialFolder = &quot;Resource/WorkpieceMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ResourceUtil | HiAPI-C# 2025 ">
<meta name="description" content="Utility class for working with resource managers and localized strings.">
<meta name="description" content="Utility class for working with resource managers and localized strings, and the home of the attribute-declared command vocabulary: the declarations of an assembly, exposed as &amp;ldquo;type/member + culture → text&amp;rdquo; queries and as instances, with GUI-layer overrides layered on top ().">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,7 +97,12 @@ Class ResourceUtil
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Utility class for working with resource managers and localized strings.</p>
<div class="markdown summary"><p>Utility class for working with resource managers and localized strings,
and the home of the attribute-declared command vocabulary: the
<a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a> declarations of an assembly, exposed as
&ldquo;type/member + culture → text&rdquo; queries and as
<a class="xref" href="Hi.Common.ICommandTextSource.html">ICommandTextSource</a> instances, with GUI-layer overrides
layered on top (<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a>).</p>
</div>
<div class="markdown conceptual"></div>
@@ -149,293 +154,57 @@ Class ResourceUtil
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Common_ResourceUtil_CoatingMaterialFolder" data-uid="Hi.Common.ResourceUtil.CoatingMaterialFolder">
CoatingMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the coating material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CoatingMaterialFolder = &quot;Resource/CoatingMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_CutterFolder" data-uid="Hi.Common.ResourceUtil.CutterFolder">
CutterFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the cutter resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CutterFolder = &quot;Resource/Cutter&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_CuttingParameterFolder" data-uid="Hi.Common.ResourceUtil.CuttingParameterFolder">
CuttingParameterFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the cutting parameter resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string CuttingParameterFolder = &quot;Resource/CuttingParameter&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_HolderFolder" data-uid="Hi.Common.ResourceUtil.HolderFolder">
HolderFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the holder resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string HolderFolder = &quot;Resource/Holder&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_MachineToolFolder" data-uid="Hi.Common.ResourceUtil.MachineToolFolder">
MachineToolFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the machine tool resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string MachineToolFolder = &quot;Resource/MachineTool&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_ResourceFolder" data-uid="Hi.Common.ResourceUtil.ResourceFolder">
ResourceFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the main resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ResourceFolder = &quot;Resource&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_SpindleCapabilityFolder" data-uid="Hi.Common.ResourceUtil.SpindleCapabilityFolder">
SpindleCapabilityFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the spindle capability resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string SpindleCapabilityFolder = &quot;Resource/SpindleCapability&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_StructureMaterialFolder" data-uid="Hi.Common.ResourceUtil.StructureMaterialFolder">
StructureMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the structure material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string StructureMaterialFolder = &quot;Resource/StructureMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_Common_ResourceUtil_WorkpieceMaterialFolder" data-uid="Hi.Common.ResourceUtil.WorkpieceMaterialFolder">
WorkpieceMaterialFolder
</h3>
<div class="markdown level1 summary"><p>Gets the path to the workpiece material resource folder.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string WorkpieceMaterialFolder = &quot;Resource/WorkpieceMaterial&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_ResourceUtil_GenTextSource_" data-uid="Hi.Common.ResourceUtil.GenTextSource*"></a>
<h3 id="Hi_Common_ResourceUtil_GenTextSource_System_Globalization_CultureInfo_System_Type___" data-uid="Hi.Common.ResourceUtil.GenTextSource(System.Globalization.CultureInfo,System.Type[])">
GenTextSource(CultureInfo, params Type[])
</h3>
<div class="markdown level1 summary"><p>Generates an <a class="xref" href="Hi.Common.ICommandTextSource.html">ICommandTextSource</a> carrying
<code class="paramref">culture</code>, resolving keys against the
<a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a> declarations of the
<code class="paramref">vocabTypes</code>' assemblies plus the registered
overrides — the engine-default localizer a caller injects into
title-composing commands.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static ICommandTextSource GenTextSource(CultureInfo culture, params Type[] vocabTypes)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>culture</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo">CultureInfo</a></dt>
<dd><p>Culture the source carries; null takes the current UI culture.</p>
</dd>
<dt><code>vocabTypes</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a>[]</dt>
<dd><p>Types anchoring the assemblies whose declarations feed the source.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.ICommandTextSource.html">ICommandTextSource</a></dt>
<dd><p>The text source.</p>
</dd>
</dl>
<a id="Hi_Common_ResourceUtil_GetStringOrDefault_" data-uid="Hi.Common.ResourceUtil.GetStringOrDefault*"></a>
<h3 id="Hi_Common_ResourceUtil_GetStringOrDefault_System_Resources_ResourceManager_System_String_" data-uid="Hi.Common.ResourceUtil.GetStringOrDefault(System.Resources.ResourceManager,System.String)">
@@ -518,6 +287,95 @@ The default value is the <code class="paramref">name</code> itself.</p>
<a id="Hi_Common_ResourceUtil_GetText_" data-uid="Hi.Common.ResourceUtil.GetText*"></a>
<h3 id="Hi_Common_ResourceUtil_GetText_System_Reflection_MemberInfo_System_Globalization_CultureInfo_" data-uid="Hi.Common.ResourceUtil.GetText(System.Reflection.MemberInfo,System.Globalization.CultureInfo)">
GetText(MemberInfo, CultureInfo)
</h3>
<div class="markdown level1 summary"><p>The text of <code class="paramref">member</code>'s vocabulary key in
<code class="paramref">culture</code> — the &ldquo;type/member + culture → text&rdquo; query.
Resolution walks the culture's parent chain; on each level a
registered override (<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a>) outranks the
member assembly's <a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a> declaration. With
no match the key itself — the English default — is returned.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetText(MemberInfo member, CultureInfo culture)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>member</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.reflection.memberinfo">MemberInfo</a></dt>
<dd><p>The type or member owning the vocabulary key.</p>
</dd>
<dt><code>culture</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo">CultureInfo</a></dt>
<dd><p>Wanted culture; null takes the current UI culture.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The culture's text, or the key itself.</p>
</dd>
</dl>
<a id="Hi_Common_ResourceUtil_SetTextOverride_" data-uid="Hi.Common.ResourceUtil.SetTextOverride*"></a>
<h3 id="Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_" data-uid="Hi.Common.ResourceUtil.SetTextOverride(System.String,System.String,System.String)">
SetTextOverride(string, string, string)
</h3>
<div class="markdown level1 summary"><p>Registers a GUI-layer text for a vocabulary key in one culture. An
override outranks the assembly's own <a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a>
declaration in that culture, and may add a culture the assembly never
declared. Process-level; typically called once at GUI startup.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetTextOverride(string cultureName, string key, string text)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cultureName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Culture name the text is written in (e.g. <code>zh-Hant</code>).</p>
</dd>
<dt><code>key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Vocabulary key — the English default text.</p>
</dd>
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The overriding text; null removes the override.</p>
</dd>
</dl>
</article>
@@ -263,7 +263,11 @@ Consumers retrieve it with <code>res?.OfType&lt;ProjectApiVersion&gt;().FirstOrD
<div class="markdown level1 summary"><p>Returns true if the source file was saved by an API version
older than <code class="paramref">version</code>.
Returns false when the source version is unknown (null).</p>
Returns false when the source version is unknown (null) — without
the explicit guard, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.version">Version</a>'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.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -103,7 +103,7 @@ file path context.</p>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress&lt;object&gt; progress, object[] res)</code></pre>
<pre><code class="lang-csharp hljs">public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress, object[] res)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -117,7 +117,7 @@ file path context.</p>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for the XML parsing chain.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
@@ -245,12 +245,14 @@ no explicit factory argument.</p>
</h3>
<div class="markdown level1 summary"><p>XML-name → generator-function map for this factory instance. Populated
by each type's <code>Reg(this)</code> call.</p>
by each type's <code>Reg(this)</code> call. Concurrent so that parallel
<code>Reg</code> calls (e.g. independent test classes each booting the
registration graph) can <code>TryAdd</code> without corrupting the map.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;string, XFactory.XGeneratorDelegate&gt; Generators { get; }</code></pre>
<pre><code class="lang-csharp hljs">public ConcurrentDictionary&lt;string, XFactory.XGeneratorDelegate&gt; Generators { get; }</code></pre>
</div>
@@ -259,7 +261,7 @@ by each type's <code>Reg(this)</code> call.</p>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>.<a class="xref" href="Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html">XGeneratorDelegate</a>&gt;</dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.concurrent.concurrentdictionary-2">ConcurrentDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>.<a class="xref" href="Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html">XGeneratorDelegate</a>&gt;</dt>
<dd></dd>
</dl>
@@ -276,8 +278,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenByChild_" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenByChild__1_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild``1(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenByChild&lt;T&gt;(XElement, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenByChild__1_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild``1(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenByChild&lt;T&gt;(XElement, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -286,7 +288,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static T GenByChild&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static T GenByChild&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -295,7 +297,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -326,8 +328,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenByChild_" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenByChild__1_System_Xml_Linq_XElement_System_String_System_String__System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild``1(System.Xml.Linq.XElement,System.String,System.String@,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenByChild&lt;T&gt;(XElement, string, out string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenByChild__1_System_Xml_Linq_XElement_System_String_System_String__System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByChild``1(System.Xml.Linq.XElement,System.String,System.String@,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenByChild&lt;T&gt;(XElement, string, out string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -336,7 +338,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static T GenByChild&lt;T&gt;(XElement src, string baseDirectory, out string relFile, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static T GenByChild&lt;T&gt;(XElement src, string baseDirectory, out string relFile, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -347,7 +349,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -378,8 +380,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenByFile_" data-uid="Hi.Common.XmlUtils.XFactory.GenByFile*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenByFile__1_System_String_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByFile``1(System.String,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenByFile&lt;T&gt;(string, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenByFile__1_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenByFile``1(System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenByFile&lt;T&gt;(string, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -388,7 +390,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static T GenByFile&lt;T&gt;(string baseDirectory, string relFile, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static T GenByFile&lt;T&gt;(string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -397,7 +399,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -428,8 +430,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByChild_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByChild*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByChild__1_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByChild``1(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenFileRefSourceByChild&lt;T&gt;(XElement, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByChild__1_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByChild``1(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenFileRefSourceByChild&lt;T&gt;(XElement, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -438,7 +440,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByChild&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByChild&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -447,7 +449,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -478,8 +480,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByFile_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByFile*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByFile__1_System_String_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByFile``1(System.String,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenFileRefSourceByFile&lt;T&gt;(string, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByFile__1_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByFile``1(System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenFileRefSourceByFile&lt;T&gt;(string, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -488,7 +490,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByFile&lt;T&gt;(string baseDirectory, string relFile, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByFile&lt;T&gt;(string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -497,7 +499,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -528,8 +530,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSource_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSource*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSource__1_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSource``1(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenFileRefSource&lt;T&gt;(XElement, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSource__1_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSource``1(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenFileRefSource&lt;T&gt;(XElement, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -538,7 +540,7 @@ by each type's <code>Reg(this)</code> call.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSource&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSource&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -547,7 +549,7 @@ by each type's <code>Reg(this)</code> call.</p>
<dd></dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -578,8 +580,8 @@ by each type's <code>Reg(this)</code> call.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenListSkippingUnloadable_" data-uid="Hi.Common.XmlUtils.XFactory.GenListSkippingUnloadable*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenListSkippingUnloadable__1_System_Collections_Generic_IEnumerable_System_Xml_Linq_XElement__System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenListSkippingUnloadable``1(System.Collections.Generic.IEnumerable{System.Xml.Linq.XElement},System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
GenListSkippingUnloadable&lt;T&gt;(IEnumerable&lt;XElement&gt;, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenListSkippingUnloadable__1_System_Collections_Generic_IEnumerable_System_Xml_Linq_XElement__System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenListSkippingUnloadable``1(System.Collections.Generic.IEnumerable{System.Xml.Linq.XElement},System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
GenListSkippingUnloadable&lt;T&gt;(IEnumerable&lt;XElement&gt;, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -595,7 +597,7 @@ the whole load.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static List&lt;T&gt; GenListSkippingUnloadable&lt;T&gt;(IEnumerable&lt;XElement&gt; elements, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static List&lt;T&gt; GenListSkippingUnloadable&lt;T&gt;(IEnumerable&lt;XElement&gt; elements, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -604,7 +606,7 @@ the whole load.</p>
<dd></dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -635,8 +637,8 @@ the whole load.</p>
<a id="Hi_Common_XmlUtils_XFactory_Gen_" data-uid="Hi.Common.XmlUtils.XFactory.Gen*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_Gen__1_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.Gen``1(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Boolean,System.Object[])">
Gen&lt;T&gt;(XElement, string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_Gen__1_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.Gen``1(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
Gen&lt;T&gt;(XElement, string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -645,7 +647,7 @@ the whole load.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static T Gen&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static T Gen&lt;T&gt;(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -654,7 +656,7 @@ the whole load.</p>
<dd></dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -685,8 +687,8 @@ the whole load.</p>
<a id="Hi_Common_XmlUtils_XFactory_Gen_" data-uid="Hi.Common.XmlUtils.XFactory.Gen*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_Gen__1_System_Xml_Linq_XElement_System_String_System_String__System_IProgress_System_Object__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.Gen``1(System.Xml.Linq.XElement,System.String,System.String@,System.IProgress{System.Object},System.Boolean,System.Object[])">
Gen&lt;T&gt;(XElement, string, out string, IProgress&lt;object&gt;, bool, object[])
<h3 id="Hi_Common_XmlUtils_XFactory_Gen__1_System_Xml_Linq_XElement_System_String_System_String__System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.Gen``1(System.Xml.Linq.XElement,System.String,System.String@,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean,System.Object[])">
Gen&lt;T&gt;(XElement, string, out string, IProgress&lt;IMessage&gt;, bool, object[])
</h3>
@@ -695,7 +697,7 @@ the whole load.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static T Gen&lt;T&gt;(XElement src, string baseDirectory, out string relFile, IProgress&lt;object&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static T Gen&lt;T&gt;(XElement src, string baseDirectory, out string relFile, IProgress&lt;IMessage&gt; progress, bool enableRebase = true, object[] res = null) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -706,7 +708,7 @@ the whole load.</p>
<dd></dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
@@ -221,8 +221,8 @@ Class XmlUtil
<a id="Hi_Common_XmlUtils_XmlUtil_GetDictionaryByXmlSource_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetDictionaryByXmlSource*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_GetDictionaryByXmlSource__1_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetDictionaryByXmlSource``1(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object},System.Boolean)">
GetDictionaryByXmlSource&lt;T&gt;(XElement, string, IProgress&lt;object&gt;, bool)
<h3 id="Hi_Common_XmlUtils_XmlUtil_GetDictionaryByXmlSource__1_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetDictionaryByXmlSource``1(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Boolean)">
GetDictionaryByXmlSource&lt;T&gt;(XElement, string, IProgress&lt;IMessage&gt;, bool)
</h3>
@@ -231,7 +231,7 @@ Class XmlUtil
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Dictionary&lt;string, T&gt; GetDictionaryByXmlSource&lt;T&gt;(this XElement src, string baseDirectory, IProgress&lt;object&gt; progress, bool enableRebase = true) where T : class</code></pre>
<pre><code class="lang-csharp hljs">public static Dictionary&lt;string, T&gt; GetDictionaryByXmlSource&lt;T&gt;(this XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, bool enableRebase = true) where T : class</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -242,7 +242,7 @@ Class XmlUtil
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving paths</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional progress reporter for the XML parsing chain</p>
</dd>
<dt><code>enableRebase</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
+57 -3
View File
@@ -130,11 +130,30 @@ If the execution time is over the <a class="xref" href="Hi.Common.BlockingTimer.
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.CppLogUtil.html">CppLogUtil</a></dt>
<dd><p>Internal Use Only.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a></dt>
<dd><p>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
<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a>), and a culture left undeclared
is not an error — lookups fall back toward the English key.</p>
<p>
The key defaults to the member's own display name: its
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.displaynameattribute">DisplayNameAttribute</a> value when
present, otherwise the member name spaced into words
(<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_SpacePascalWords_System_String_">SpacePascalWords(string)</a>). Set <a class="xref" href="Hi.Common.CultureTextAttribute.html#Hi_Common_CultureTextAttribute_Key">Key</a> to declare
a word the member does not itself name (a shared switch word, a mode
label). Apply the attribute once per culture.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.CultureUtil.html">CultureUtil</a></dt>
<dd><p>Utility class for managing culture and localization settings.</p>
<dd><p>The English culture the engine formats and parses with, and the one call
that pins a thread to it.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -222,17 +241,40 @@ Only the most recent action is executed and previous pending actions are discard
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.ProgressFraction.html">ProgressFraction</a></dt>
<dd><p>Represents a progress report implementation.</p>
<dd><p>Represents a progress report implementation. Also exposes an <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> view
(explicitly implemented) so a progress fraction can ride the unified message channel uniformly
alongside <code>SimpleMessage</code> / <code>NcDiagnostic</code>: <a class="xref" href="Hi.Common.Messages.Severity.html#Hi_Common_Messages_Severity_Progress">Progress</a> +
<a class="xref" href="Hi.Common.Messages.Category.html#Hi_Common_Messages_Category_System">System</a>, with <a class="xref" href="Hi.Common.ProgressFraction.html#Hi_Common_ProgressFraction_Msg">Msg</a> as the notification and <a class="xref" href="Hi.Common.ProgressFraction.html#Hi_Common_ProgressFraction_Detail">Detail</a>
as the detail payload.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.Range-1.html">Range&lt;T&gt;</a></dt>
<dd><p>Range from <a class="xref" href="Hi.Common.Range-1.html#Hi_Common_Range_1_Min">Min</a> to <a class="xref" href="Hi.Common.Range-1.html#Hi_Common_Range_1_Max">Max</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.ResourceDefaultMarker.html">ResourceDefaultMarker</a></dt>
<dd><p>File-name convention that marks a shipped resource item as a system-owned
default: a file carries the token before its final extension
(<code>AlTiBN.default.CoatingMaterial</code>), a folder-shaped resource carries it
as a folder-name suffix (<code>MachineTool/Table-B1.default/</code>) with the
files inside left untouched.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.ResourceLayout.html">ResourceLayout</a></dt>
<dd><p>Provides the relative folder paths that make up the shipped resource tree.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.ResourceUtil.html">ResourceUtil</a></dt>
<dd><p>Utility class for working with resource managers and localized strings.</p>
<dd><p>Utility class for working with resource managers and localized strings,
and the home of the attribute-declared command vocabulary: the
<a class="xref" href="Hi.Common.CultureTextAttribute.html">CultureTextAttribute</a> declarations of an assembly, exposed as
&ldquo;type/member + culture → text&rdquo; queries and as
<a class="xref" href="Hi.Common.ICommandTextSource.html">ICommandTextSource</a> instances, with GUI-layer overrides
layered on top (<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a>).</p>
</dd>
</dl>
<dl class="jumplist">
@@ -295,6 +337,18 @@ Extends <a class="xref" href="Hi.Common.IWriteBin.html">IWriteBin</a> to provide
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</a></dt>
<dd><p>Interface for objects that can clear their internal cache.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.ICommandTextSource.html">ICommandTextSource</a></dt>
<dd><p>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
<a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_GenTextSource_System_Globalization_CultureInfo_System_Type___">GenTextSource(CultureInfo, params Type[])</a> ([CultureText] declarations
overlaid by <a class="xref" href="Hi.Common.ResourceUtil.html#Hi_Common_ResourceUtil_SetTextOverride_System_String_System_String_System_String_">SetTextOverride(string, string, string)</a> registrations).</p>
</dd>
</dl>
<dl class="jumplist">
@@ -459,6 +459,42 @@ The members' value is possible to be null for the un-available status.</p>
<a id="Hi_CutterLocations_ClStrips_ClStrip_LastRefreshHadUncoveredRecolor_" data-uid="Hi.CutterLocations.ClStrips.ClStrip.LastRefreshHadUncoveredRecolor*"></a>
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_LastRefreshHadUncoveredRecolor" data-uid="Hi.CutterLocations.ClStrips.ClStrip.LastRefreshHadUncoveredRecolor">
LastRefreshHadUncoveredRecolor
</h3>
<div class="markdown level1 summary"><p>True when the last <a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_RefreshDrawingInRendering_System_Boolean_">RefreshDrawingInRendering(bool)</a> 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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool LastRefreshHadUncoveredRecolor { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_CutterLocations_ClStrips_ClStrip_StripPoses_" data-uid="Hi.CutterLocations.ClStrips.ClStrip.StripPoses*"></a>
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_StripPoses" data-uid="Hi.CutterLocations.ClStrips.ClStrip.StripPoses">
@@ -556,6 +592,41 @@ Do not add or remove elements directly.</p>
<a id="Hi_CutterLocations_ClStrips_ClStrip_StripPosesRetirer_" data-uid="Hi.CutterLocations.ClStrips.ClStrip.StripPosesRetirer*"></a>
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_StripPosesRetirer" data-uid="Hi.CutterLocations.ClStrips.ClStrip.StripPosesRetirer">
StripPosesRetirer
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Action&lt;IReadOnlyList&lt;ClStripPos&gt;&gt; StripPosesRetirer { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-1">Action</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist-1">IReadOnlyList</a>&lt;<a class="xref" href="Hi.CutterLocations.ClStrips.ClStripPos.html">ClStripPos</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -1401,6 +1472,38 @@ This method sets both the beginning and ending positions of the display range.</
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_Cleared" data-uid="Hi.CutterLocations.ClStrips.ClStrip.Cleared">
Cleared
</h3>
<div class="markdown level1 summary"><p>Event raised after <a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_Clear_System_Object_">Clear(object)</a> has emptied <a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_StripPoses">StripPoses</a>, so list-style
consumers (e.g. a step table) can reset without polling.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action Cleared</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_DispBeginChanged" data-uid="Hi.CutterLocations.ClStrips.ClStrip.DispBeginChanged">
DispBeginChanged
@@ -1463,17 +1566,20 @@ This method sets both the beginning and ending positions of the display range.</
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_DrawingRefreshing" data-uid="Hi.CutterLocations.ClStrips.ClStrip.DrawingRefreshing">
DrawingRefreshing
<h3 id="Hi_CutterLocations_ClStrips_ClStrip_DrawingRefreshed" data-uid="Hi.CutterLocations.ClStrips.ClStrip.DrawingRefreshed">
DrawingRefreshed
</h3>
<div class="markdown level1 summary"><p>Event raised when the drawing is being refreshed.</p>
<div class="markdown level1 summary"><p>Event raised after the strip drawing has been refreshed — pos colors re-stamped
from their states and the drawing slices rebuilt (see <a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_RefreshDrawingInRendering_System_Boolean_">RefreshDrawingInRendering(bool)</a>).
Subscribers that cache colors baked from the strip attachments (e.g. a meshed
workpiece's display cache) should invalidate on this event.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event EventHandler DrawingRefreshing</code></pre>
<pre><code class="lang-csharp hljs">public event EventHandler DrawingRefreshed</code></pre>
</div>
@@ -102,7 +102,7 @@ Class ClStripPos
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl</code></pre>
<pre><code class="lang-csharp hljs">public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl, IMotionStepIndex</code></pre>
</div>
@@ -124,6 +124,7 @@ Class ClStripPos
<div><a class="xref" href="Hi.Disp.IGetPickable.html">IGetPickable</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
<div><a class="xref" href="Hi.CutterLocations.IGetProgramCl.html">IGetProgramCl</a></div>
<div><a class="xref" href="Hi.MachiningSteps.IMotionStepIndex.html">IMotionStepIndex</a></div>
</dd>
</dl>
@@ -134,6 +135,9 @@ Class ClStripPos
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Rgb">CbtrPickable.Rgb</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_IsColorTableCovered">CbtrPickable.IsColorTableCovered</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_AttachmentPriority">CbtrPickable.AttachmentPriority</a>
</div>
@@ -141,7 +145,7 @@ Class ClStripPos
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_Highlight_System_Boolean_">CbtrPickable.Highlight(bool)</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanLinkedCbtrNodesDrawingCache">CbtrPickable.CleanLinkedCbtrNodesDrawingCache()</a>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_CleanAttachedCbtrNodesDrawingCache">CbtrPickable.CleanAttachedCbtrNodesDrawingCache()</a>
</div>
<div>
<a class="xref" href="Hi.Cbtr.CbtrPickable.html#Hi_Cbtr_CbtrPickable_ShrinkToFitNodeMap">CbtrPickable.ShrinkToFitNodeMap()</a>
@@ -222,7 +226,8 @@ Class ClStripPos
</h3>
<div class="markdown level1 summary"><p>Gets the index of this position in the strip.</p>
<div class="markdown level1 summary"><p>Gets the index of this position in the strip. This is also the step's
execution-order ordinal — exposed via <a class="xref" href="Hi.MachiningSteps.IMotionStepIndex.html#Hi_MachiningSteps_IMotionStepIndex_StepIndex">StepIndex</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -303,12 +303,14 @@ The <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_SetViewToHo
</h3>
<div class="markdown level1 summary"><p>The default font file path used by the display engine.</p>
<div class="markdown level1 summary"><p>Sentinel selecting the embedded default font (Noto Sans CJK TC, SIL Open Font License 1.1).
Passing this value (or null) to <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_Init_System_String_">Init(string)</a> 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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string defaultFontFile = &quot;Font/WCL06.ttf&quot;</code></pre>
<pre><code class="lang-csharp hljs">public const string defaultFontFile = &quot;(embedded)&quot;</code></pre>
</div>
@@ -634,7 +636,7 @@ The <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_SetViewToHo
</h3>
<div class="markdown level1 summary"><p>Font file.</p>
<div class="markdown level1 summary"><p>Font file. Null while the embedded default font (loaded from memory) is in use.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -659,6 +661,77 @@ The <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_SetViewToHo
<a id="Hi_Disp_DispEngine_IdleBackoffHeartbeat_" data-uid="Hi.Disp.DispEngine.IdleBackoffHeartbeat*"></a>
<h3 id="Hi_Disp_DispEngine_IdleBackoffHeartbeat" data-uid="Hi.Disp.DispEngine.IdleBackoffHeartbeat">
IdleBackoffHeartbeat
</h3>
<div class="markdown level1 summary"><p>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 <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_RefreshingPeriod">RefreshingPeriod</a>.
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.timespan.zero">Zero</a> (the default) disables the backoff.
Any input, scene invalidation or an explicit <a class="xref" href="Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_ClearCache">ClearCache()</a>
restores the full refresh rate immediately.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TimeSpan IdleBackoffHeartbeat { set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.timespan">TimeSpan</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_DispEngine_IsDisposed_" data-uid="Hi.Disp.DispEngine.IsDisposed*"></a>
<h3 id="Hi_Disp_DispEngine_IsDisposed" data-uid="Hi.Disp.DispEngine.IsDisposed">
IsDisposed
</h3>
<div class="markdown level1 summary"><p>Gets a value indicating whether this engine has been disposed.
All native-backed members become no-ops afterwards
(value getters return neutral defaults).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsDisposed { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_DispEngine_IsOnDispThread_" data-uid="Hi.Disp.DispEngine.IsOnDispThread*"></a>
<h3 id="Hi_Disp_DispEngine_IsOnDispThread" data-uid="Hi.Disp.DispEngine.IsOnDispThread">
@@ -990,6 +1063,41 @@ Where view matrix is in MVP convention.</p>
<a id="Hi_Disp_DispEngine_SuppressHoverPickWhileDragging_" data-uid="Hi.Disp.DispEngine.SuppressHoverPickWhileDragging*"></a>
<h3 id="Hi_Disp_DispEngine_SuppressHoverPickWhileDragging" data-uid="Hi.Disp.DispEngine.SuppressHoverPickWhileDragging">
SuppressHoverPickWhileDragging
</h3>
<div class="markdown level1 summary"><p>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 <a class="xref" href="Hi.Disp.Pickable.html">Pickable</a> events.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool SuppressHoverPickWhileDragging { set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -1334,7 +1442,7 @@ Probably not essential.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>fontFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The font file to use. If null, the default font file will be used.</p>
<dd><p>The font file to use. If null, the embedded default font is loaded from memory and no file is written to disk.</p>
</dd>
</dl>
@@ -151,6 +151,9 @@ Class DispList
<div>
<a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_Add__0_">SynList&lt;IDisplayee&gt;.Add(IDisplayee)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_AddAndGetIndex__0_">SynList&lt;IDisplayee&gt;.AddAndGetIndex(IDisplayee)</a>
</div>
<div>
<a class="xref" href="Hi.Common.Collections.SynList-1.html#Hi_Common_Collections_SynList_1_Clear">SynList&lt;IDisplayee&gt;.Clear()</a>
</div>
@@ -40424,44 +40424,6 @@ Class GL
<a id="Hi_Disp_GL_glFenceSync_" data-uid="Hi.Disp.GL.glFenceSync*"></a>
<h3 id="Hi_Disp_GL_glFenceSync_System_UInt32_System_UInt32_" data-uid="Hi.Disp.GL.glFenceSync(System.UInt32,System.UInt32)">
glFenceSync(uint, uint)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern nint glFenceSync(uint condition, uint flags)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>condition</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>flags</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glFinalCombinerInputNV_" data-uid="Hi.Disp.GL.glFinalCombinerInputNV*"></a>
<h3 id="Hi_Disp_GL_glFinalCombinerInputNV_System_UInt32_System_UInt32_System_UInt32_System_UInt32_" data-uid="Hi.Disp.GL.glFinalCombinerInputNV(System.UInt32,System.UInt32,System.UInt32,System.UInt32)">
@@ -46070,109 +46032,6 @@ Class GL
<a id="Hi_Disp_GL_glGetDoubleIndexedvEXT_" data-uid="Hi.Disp.GL.glGetDoubleIndexedvEXT*"></a>
<h3 id="Hi_Disp_GL_glGetDoubleIndexedvEXT_System_UInt32_System_UInt32_System_Double__" data-uid="Hi.Disp.GL.glGetDoubleIndexedvEXT(System.UInt32,System.UInt32,System.Double*)">
glGetDoubleIndexedvEXT(uint, uint, double*)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glGetDoubleIndexedvEXT(uint target, uint index, double* data)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>target</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>index</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>data</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>*</dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glGetDoublei_v_" data-uid="Hi.Disp.GL.glGetDoublei_v*"></a>
<h3 id="Hi_Disp_GL_glGetDoublei_v_System_UInt32_System_UInt32_System_Double__" data-uid="Hi.Disp.GL.glGetDoublei_v(System.UInt32,System.UInt32,System.Double*)">
glGetDoublei_v(uint, uint, double*)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glGetDoublei_v(uint target, uint index, double* data)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>target</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>index</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>data</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>*</dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glGetDoublev_" data-uid="Hi.Disp.GL.glGetDoublev*"></a>
<h3 id="Hi_Disp_GL_glGetDoublev_System_UInt32_System_Double__" data-uid="Hi.Disp.GL.glGetDoublev(System.UInt32,System.Double*)">
glGetDoublev(uint, double*)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glGetDoublev(uint pname, double* @params)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>pname</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>params</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>*</dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glGetError_" data-uid="Hi.Disp.GL.glGetError*"></a>
<h3 id="Hi_Disp_GL_glGetError" data-uid="Hi.Disp.GL.glGetError">
@@ -56121,39 +55980,6 @@ Class GL
<a id="Hi_Disp_GL_glIglooInterfaceSGIX_" data-uid="Hi.Disp.GL.glIglooInterfaceSGIX*"></a>
<h3 id="Hi_Disp_GL_glIglooInterfaceSGIX_System_UInt32_System_IntPtr_" data-uid="Hi.Disp.GL.glIglooInterfaceSGIX(System.UInt32,System.IntPtr)">
glIglooInterfaceSGIX(uint, nint)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glIglooInterfaceSGIX(uint pname, nint @params)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>pname</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>params</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glImageTransformParameterfHP_" data-uid="Hi.Disp.GL.glImageTransformParameterfHP*"></a>
<h3 id="Hi_Disp_GL_glImageTransformParameterfHP_System_UInt32_System_UInt32_System_Single_" data-uid="Hi.Disp.GL.glImageTransformParameterfHP(System.UInt32,System.UInt32,System.Single)">
@@ -68080,72 +67906,6 @@ Class GL
<a id="Hi_Disp_GL_glPNTrianglesfATI_" data-uid="Hi.Disp.GL.glPNTrianglesfATI*"></a>
<h3 id="Hi_Disp_GL_glPNTrianglesfATI_System_UInt32_System_Single_" data-uid="Hi.Disp.GL.glPNTrianglesfATI(System.UInt32,System.Single)">
glPNTrianglesfATI(uint, float)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glPNTrianglesfATI(uint pname, float param)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>pname</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>param</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.single">float</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glPNTrianglesiATI_" data-uid="Hi.Disp.GL.glPNTrianglesiATI*"></a>
<h3 id="Hi_Disp_GL_glPNTrianglesiATI_System_UInt32_System_Int32_" data-uid="Hi.Disp.GL.glPNTrianglesiATI(System.UInt32,System.Int32)">
glPNTrianglesiATI(uint, int)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static extern void glPNTrianglesiATI(uint pname, int param)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>pname</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.uint32">uint</a></dt>
<dd></dd>
<dt><code>param</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Hi_Disp_GL_glPassTexCoordATI_" data-uid="Hi.Disp.GL.glPassTexCoordATI*"></a>
<h3 id="Hi_Disp_GL_glPassTexCoordATI_System_UInt32_System_UInt32_System_UInt32_" data-uid="Hi.Disp.GL.glPassTexCoordATI(System.UInt32,System.UInt32,System.UInt32)">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class StringDrawing | HiAPI-C# 2025 ">
<meta name="description" content="An to draw string.">
<meta name="description" content="An to draw string. Multi-line text is supported: &amp;lsquo;\n&amp;rsquo; starts a new line.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,7 +97,8 @@ Class StringDrawing
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
<div class="markdown summary"><p>An <a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a> to draw string.</p>
<div class="markdown summary"><p>An <a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a> to draw string.
Multi-line text is supported: &lsquo;\n&rsquo; starts a new line.</p>
</div>
<div class="markdown conceptual"></div>
+2 -1
View File
@@ -196,7 +196,8 @@ This function should be use with <a class="xref" href="Hi.Disp.PopModelMat.html"
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Disp.StringDrawing.html">StringDrawing</a></dt>
<dd><p>An <a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a> to draw string.</p>
<dd><p>An <a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a> to draw string.
Multi-line text is supported: &lsquo;\n&rsquo; starts a new line.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -2265,7 +2265,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type, min, max properties</p>
<dd><p>DTO dictionary with Type, Min, Max keys</p>
</dd>
</dl>
@@ -842,7 +842,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type and zrPairs properties</p>
<dd><p>DTO dictionary with Type and PairZrs keys</p>
</dd>
</dl>
@@ -261,8 +261,8 @@ Class GeomCombination
<a id="Hi_Geom_GeomCombination__ctor_" data-uid="Hi.Geom.GeomCombination.#ctor*"></a>
<h3 id="Hi_Geom_GeomCombination__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_System_Object__" data-uid="Hi.Geom.GeomCombination.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{System.Object})">
GeomCombination(XElement, string, string, IProgress&lt;object&gt;)
<h3 id="Hi_Geom_GeomCombination__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Geom.GeomCombination.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
GeomCombination(XElement, string, string, IProgress&lt;IMessage&gt;)
</h3>
@@ -271,7 +271,7 @@ Class GeomCombination
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -285,7 +285,7 @@ Class GeomCombination
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative file path</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional progress reporter for the XML parsing chain</p>
</dd>
</dl>
@@ -1193,6 +1193,58 @@ The source code:</p>
<a id="Hi_Geom_MathUtil_CycleUpperInclusive_" data-uid="Hi.Geom.MathUtil.CycleUpperInclusive*"></a>
<h3 id="Hi_Geom_MathUtil_CycleUpperInclusive_System_Double_System_Double_System_Double_" data-uid="Hi.Geom.MathUtil.CycleUpperInclusive(System.Double,System.Double,System.Double)">
CycleUpperInclusive(double, double, double)
</h3>
<div class="markdown level1 summary"><p>Cycles a value into the lower-exclusive/upper-inclusive window
(<code class="paramref">lowerBound</code>, <code class="paramref">upperBound</code>] — the
mirror of <a class="xref" href="Hi.Geom.MathUtil.html#Hi_Geom_MathUtil_Cycle_System_Double_System_Double_System_Double_">Cycle(double, double, double)</a>, whose window is
lower-inclusive/upper-exclusive. A value congruent with the bounds
resolves to <code class="paramref">upperBound</code>, never
<code class="paramref">lowerBound</code> — 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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static double CycleUpperInclusive(double value, double lowerBound, double upperBound)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>value</p>
</dd>
<dt><code>lowerBound</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>lower bound, exclusive</p>
</dd>
<dt><code>upperBound</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>upper bound, inclusive</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>cycled value</p>
</dd>
</dl>
<a id="Hi_Geom_MathUtil_Decompose_" data-uid="Hi.Geom.MathUtil.Decompose*"></a>
<h3 id="Hi_Geom_MathUtil_Decompose_System_Double_0__0___System_Int32____System_Int32__" data-uid="Hi.Geom.MathUtil.Decompose(System.Double[0:,0:],System.Int32[]@,System.Int32@)">
@@ -307,8 +307,8 @@ If base directory is provided, the STL will be loaded immediately.</p>
<a id="Hi_Geom_StlFile__ctor_" data-uid="Hi.Geom.StlFile.#ctor*"></a>
<h3 id="Hi_Geom_StlFile__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__" data-uid="Hi.Geom.StlFile.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object})">
StlFile(XElement, string, IProgress&lt;object&gt;)
<h3 id="Hi_Geom_StlFile__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Geom.StlFile.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
StlFile(XElement, string, IProgress&lt;IMessage&gt;)
</h3>
@@ -317,7 +317,7 @@ If base directory is provided, the STL will be loaded immediately.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StlFile(XElement src, string baseDirectory, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public StlFile(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -328,7 +328,7 @@ If base directory is provided, the STL will be loaded immediately.</p>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Base directory path</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
</dl>
@@ -731,7 +731,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type and sourceFile properties</p>
<dd><p>DTO dictionary with Type and SourceFile keys</p>
</dd>
</dl>
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Enum SessionProgress.FilterFlag | HiAPI-C# 2025 </title>
<title>Enum CarveBooleanKind | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Enum SessionProgress.FilterFlag | HiAPI-C# 2025 ">
<meta name="title" content="Enum CarveBooleanKind | HiAPI-C# 2025 ">
<meta name="description" content="Filtering flags for querying messages.">
<meta name="description" content="What a carve boolean did to the workpiece container.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,27 +84,26 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.MachiningProcs.SessionProgress.FilterFlag">
<article data-uid="Hi.Geom.Topo.CarveBooleanKind">
<h1 id="Hi_MachiningProcs_SessionProgress_FilterFlag" data-uid="Hi.MachiningProcs.SessionProgress.FilterFlag" class="text-break">
Enum SessionProgress.FilterFlag
<h1 id="Hi_Geom_Topo_CarveBooleanKind" data-uid="Hi.Geom.Topo.CarveBooleanKind" class="text-break">
Enum CarveBooleanKind
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.MachiningProcs.html">MachiningProcs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
<div class="markdown summary"><p>Filtering flags for querying messages.</p>
<div class="markdown summary"><p>What a carve boolean did to the workpiece container.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Flags]
public enum SessionProgress.FilterFlag</code></pre>
<pre><code class="lang-csharp hljs">public enum CarveBooleanKind</code></pre>
</div>
@@ -146,21 +145,21 @@ public enum SessionProgress.FilterFlag</code></pre>
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="Hi_MachiningProcs_SessionProgress_FilterFlag_Error"><code>Error = 8</code></dt>
<dt id="Hi_Geom_Topo_CarveBooleanKind_AddedShell"><code>AddedShell = 1</code></dt>
<dd><p>Include error, warning, or exception messages.</p>
<dd><p>Union with a strictly disjoint tool: the tool joined as a second shell.</p>
</dd>
<dt id="Hi_MachiningProcs_SessionProgress_FilterFlag_NC"><code>NC = 2</code></dt>
<dt id="Hi_Geom_Topo_CarveBooleanKind_Crossed"><code>Crossed = 0</code></dt>
<dd><p>Include NC text messages.</p>
<dd><p>The surfaces crossed and were stitched along the seam contour.</p>
</dd>
<dt id="Hi_MachiningProcs_SessionProgress_FilterFlag_Progress"><code>Progress = 4</code></dt>
<dt id="Hi_Geom_Topo_CarveBooleanKind_Kept"><code>Kept = 2</code></dt>
<dd><p>Include progress messages.</p>
<dd><p>The operation was a no-op (e.g. union with a tool inside the workpiece).</p>
</dd>
<dt id="Hi_MachiningProcs_SessionProgress_FilterFlag_Step"><code>Step = 1</code></dt>
<dt id="Hi_Geom_Topo_CarveBooleanKind_Replaced"><code>Replaced = 3</code></dt>
<dd><p>Include machining step messages.</p>
<dd><p>Union with an enclosing tool: the workpiece content was replaced by the tool.</p>
</dd>
</dl>
@@ -0,0 +1,395 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CarveBooleanResult | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CarveBooleanResult | HiAPI-C# 2025 ">
<meta name="description" content="Result of one carve boolean step. On failure the workpiece is untouched and the step may simply be skipped.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.Topo.CarveBooleanResult">
<h1 id="Hi_Geom_Topo_CarveBooleanResult" data-uid="Hi.Geom.Topo.CarveBooleanResult" class="text-break">
Class CarveBooleanResult
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
<div class="markdown summary"><p>Result of one carve boolean step. On failure the workpiece is untouched
and the step may simply be skipped.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class CarveBooleanResult</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">CarveBooleanResult</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Geom_Topo_CarveBooleanResult_FailReason_" data-uid="Hi.Geom.Topo.CarveBooleanResult.FailReason*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_FailReason" data-uid="Hi.Geom.Topo.CarveBooleanResult.FailReason">
FailReason
</h3>
<div class="markdown level1 summary"><p>Reason of a failed step, empty otherwise.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string FailReason { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveBooleanResult_Failed_" data-uid="Hi.Geom.Topo.CarveBooleanResult.Failed*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_Failed" data-uid="Hi.Geom.Topo.CarveBooleanResult.Failed">
Failed
</h3>
<div class="markdown level1 summary"><p>Whether the boolean refused the step (non-manifold cut, contact without crossing, ...).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool Failed { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveBooleanResult_KeyLines_" data-uid="Hi.Geom.Topo.CarveBooleanResult.KeyLines*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_KeyLines" data-uid="Hi.Geom.Topo.CarveBooleanResult.KeyLines">
KeyLines
</h3>
<div class="markdown level1 summary"><p>The seam contour segments (double-evaluated copies of the exact seam).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IReadOnlyList&lt;Segment3d&gt; KeyLines { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist-1">IReadOnlyList</a>&lt;<a class="xref" href="Hi.Geom.Segment3d.html">Segment3d</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveBooleanResult_Kind_" data-uid="Hi.Geom.Topo.CarveBooleanResult.Kind*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_Kind" data-uid="Hi.Geom.Topo.CarveBooleanResult.Kind">
Kind
</h3>
<div class="markdown level1 summary"><p>What the boolean did. Meaningless when <a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html#Hi_Geom_Topo_CarveBooleanResult_Failed">Failed</a> is set.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanKind Kind { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanKind.html">CarveBooleanKind</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveBooleanResult_RemovedWorkpieceTris_" data-uid="Hi.Geom.Topo.CarveBooleanResult.RemovedWorkpieceTris*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_RemovedWorkpieceTris" data-uid="Hi.Geom.Topo.CarveBooleanResult.RemovedWorkpieceTris">
RemovedWorkpieceTris
</h3>
<div class="markdown level1 summary"><p>Number of workpiece triangles removed by the surgery.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int RemovedWorkpieceTris { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveBooleanResult_SewnToolTris_" data-uid="Hi.Geom.Topo.CarveBooleanResult.SewnToolTris*"></a>
<h3 id="Hi_Geom_Topo_CarveBooleanResult_SewnToolTris" data-uid="Hi.Geom.Topo.CarveBooleanResult.SewnToolTris">
SewnToolTris
</h3>
<div class="markdown level1 summary"><p>Number of tool triangles sewn into the workpiece.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int SewnToolTris { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,921 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CarveStl | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CarveStl | HiAPI-C# 2025 ">
<meta name="description" content="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 ( / ). Unlike (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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.Topo.CarveStl">
<h1 id="Hi_Geom_Topo_CarveStl" data-uid="Hi.Geom.Topo.CarveStl" class="text-break">
Class CarveStl
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
<div class="markdown summary"><p>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 (<a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Stl_System_Double_">SubstractVolume(Stl, double)</a> /
<a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_AddVolume_Hi_Geom_Stl_System_Double_">AddVolume(Stl, double)</a>). Unlike
<a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a> (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.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class CarveStl : IDisposable, IDisplayee, IExpandToBox3d</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">CarveStl</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
<div><a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Disp.DispUtil.html#Hi_Disp_DispUtil_Display_Hi_Disp_IDisplayee_Hi_Disp_Bind_Hi_Geom_Mat4d_">DispUtil.Display(IDisplayee, Bind, Mat4d)</a>
</div>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 id="Hi_Geom_Topo_CarveStl_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Conversion loss, by source:</p>
<ul><li><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a> and another
<a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a> are already exact fractions, so those overloads copy
coordinates verbatim and take no tolerance — the only lossless inbound
paths.</li><li><a class="xref" href="Hi.Geom.Stl.html">Stl</a> and <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a> hold
doubles, which have no small-denominator exact form, so those overloads
convert at <code>fractionTolerance</code>. The loss is inherent to the source
type, not to the route: converting such a mesh by any other path costs the
same.</li><li>Outbound, <a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_GenStl">GenStl()</a> evaluates to double, so a
carved result round-tripped through it loses the compound coordinates the
booleans produced. Keep the <a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a> itself, or pass it
directly as a tool, when the exact surface is the deliverable.</li></ul>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Geom_Topo_CarveStl__ctor_" data-uid="Hi.Geom.Topo.CarveStl.#ctor*"></a>
<h3 id="Hi_Geom_Topo_CarveStl__ctor_Hi_Geom_Stl_System_Double_" data-uid="Hi.Geom.Topo.CarveStl.#ctor(Hi.Geom.Stl,System.Double)">
CarveStl(Stl, double)
</h3>
<div class="markdown level1 summary"><p>Initializes the container from an STL model. The triangles are
converted to exact fractions at <code class="paramref">fractionTolerance</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveStl(Stl stl, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stl</code> <a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The initial workpiece mesh (a closed shell).</p>
</dd>
<dt><code>fractionTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The tolerance for fraction conversion.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl__ctor_" data-uid="Hi.Geom.Topo.CarveStl.#ctor*"></a>
<h3 id="Hi_Geom_Topo_CarveStl__ctor_Hi_Geom_Topo_CarveStl_" data-uid="Hi.Geom.Topo.CarveStl.#ctor(Hi.Geom.Topo.CarveStl)">
CarveStl(CarveStl)
</h3>
<div class="markdown level1 summary"><p>Initializes the container as an exact copy of another
<a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a> — a snapshot that later boolean steps on either
object leave untouched. Lossless.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveStl(CarveStl src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a></dt>
<dd><p>The container to copy.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl__ctor_" data-uid="Hi.Geom.Topo.CarveStl.#ctor*"></a>
<h3 id="Hi_Geom_Topo_CarveStl__ctor_Hi_Geom_Topo_NativeTopoStl3d_System_Double_" data-uid="Hi.Geom.Topo.CarveStl.#ctor(Hi.Geom.Topo.NativeTopoStl3d,System.Double)">
CarveStl(NativeTopoStl3d, double)
</h3>
<div class="markdown level1 summary"><p>Initializes the container from a double-precision topology graph. The
triangles are converted to exact fractions at
<code class="paramref">fractionTolerance</code> — the source holds doubles, so
this is inherently the lossy path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveStl(NativeTopoStl3d src, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd><p>The source mesh (a closed shell).</p>
</dd>
<dt><code>fractionTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The tolerance for fraction conversion.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl__ctor_" data-uid="Hi.Geom.Topo.CarveStl.#ctor*"></a>
<h3 id="Hi_Geom_Topo_CarveStl__ctor_Hi_Geom_Topo_NativeTopoStl3wfr_" data-uid="Hi.Geom.Topo.CarveStl.#ctor(Hi.Geom.Topo.NativeTopoStl3wfr)">
CarveStl(NativeTopoStl3wfr)
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveStl(NativeTopoStl3wfr src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd><p>The source mesh (a closed shell).</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Geom_Topo_CarveStl_CarvePtr_" data-uid="Hi.Geom.Topo.CarveStl.CarvePtr*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_CarvePtr" data-uid="Hi.Geom.Topo.CarveStl.CarvePtr">
CarvePtr
</h3>
<div class="markdown level1 summary"><p>Gets the pointer to the native container.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public nint CarvePtr { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_IsSeamless_" data-uid="Hi.Geom.Topo.CarveStl.IsSeamless*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_IsSeamless" data-uid="Hi.Geom.Topo.CarveStl.IsSeamless">
IsSeamless
</h3>
<div class="markdown level1 summary"><p>Gets whether every directed edge is paired with an owned reverse (the
manifold invariant the booleans maintain).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsSeamless { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_Size_" data-uid="Hi.Geom.Topo.CarveStl.Size*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_Size" data-uid="Hi.Geom.Topo.CarveStl.Size">
Size
</h3>
<div class="markdown level1 summary"><p>Gets the number of triangles currently in the container.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int Size { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Geom_Topo_CarveStl_AddVolume_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_AddVolume_Hi_Geom_Stl_System_Double_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume(Hi.Geom.Stl,System.Double)">
AddVolume(Stl, double)
</h3>
<div class="markdown level1 summary"><p>Exact in-place union: merges the tool volume into the container.
Same calling contract as <a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Stl_System_Double_">SubstractVolume(Stl, double)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult AddVolume(Stl tool, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The tool mesh (a closed shell).</p>
</dd>
<dt><code>fractionTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The tolerance for the tool's fraction conversion.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure the container is untouched.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_AddVolume_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_AddVolume_Hi_Geom_Topo_CarveStl_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume(Hi.Geom.Topo.CarveStl)">
AddVolume(CarveStl)
</h3>
<div class="markdown level1 summary"><p>Exact in-place union with another container's current state.
Lossless; <code class="paramref">tool</code> is only read.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult AddVolume(CarveStl tool)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a></dt>
<dd><p>The container whose volume is merged in.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure this container is untouched.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_AddVolume_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_AddVolume_Hi_Geom_Topo_NativeTopoStl3wfr_" data-uid="Hi.Geom.Topo.CarveStl.AddVolume(Hi.Geom.Topo.NativeTopoStl3wfr)">
AddVolume(NativeTopoStl3wfr)
</h3>
<div class="markdown level1 summary"><p>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 <code class="paramref">tool</code> survives the call.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult AddVolume(NativeTopoStl3wfr tool)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd><p>The tool mesh (a closed shell).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure the container is untouched.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_Display_" data-uid="Hi.Geom.Topo.CarveStl.Display*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_Display_Hi_Disp_Bind_" data-uid="Hi.Geom.Topo.CarveStl.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
<div class="markdown level1 summary"><p>Display function called in <a class="xref" href="Hi.Disp.DispEngine.html">DispEngine</a> rendering loop.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>Bind with <a class="xref" href="Hi.Disp.DispEngine.html">DispEngine</a>. See <a class="xref" href="Hi.Disp.Bind.html">Bind</a>.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_Dispose_" data-uid="Hi.Geom.Topo.CarveStl.Dispose*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_Dispose" data-uid="Hi.Geom.Topo.CarveStl.Dispose">
Dispose()
</h3>
<div class="markdown level1 summary"><p>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Dispose()</code></pre>
</div>
<a id="Hi_Geom_Topo_CarveStl_Dispose_" data-uid="Hi.Geom.Topo.CarveStl.Dispose*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_Dispose_System_Boolean_" data-uid="Hi.Geom.Topo.CarveStl.Dispose(System.Boolean)">
Dispose(bool)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual void Dispose(bool disposing)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_ExpandToBox3d_" data-uid="Hi.Geom.Topo.CarveStl.ExpandToBox3d*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.Topo.CarveStl.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the destination box.
This function is usually used to compute the bounding box of elements.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ExpandToBox3d(Box3d dst)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>dst</code> <a class="xref" href="Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>Destination box</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_Finalize_" data-uid="Hi.Geom.Topo.CarveStl.Finalize*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_Finalize" data-uid="Hi.Geom.Topo.CarveStl.Finalize">
~CarveStl()
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected ~CarveStl()</code></pre>
</div>
<a id="Hi_Geom_Topo_CarveStl_GenStl_" data-uid="Hi.Geom.Topo.CarveStl.GenStl*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_GenStl" data-uid="Hi.Geom.Topo.CarveStl.GenStl">
GenStl()
</h3>
<div class="markdown level1 summary"><p>Generates an STL model from the container's current state.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GenStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>A new STL model.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_SubstractVolume_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Stl_System_Double_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume(Hi.Geom.Stl,System.Double)">
SubstractVolume(Stl, double)
</h3>
<div class="markdown level1 summary"><p>Exact in-place difference: carves the tool volume out of the
container. The tool triangles are consumed natively per call, so the
same <a class="xref" href="Hi.Geom.Stl.html">Stl</a> may be reused for further steps.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult SubstractVolume(Stl tool, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The tool mesh (a closed shell).</p>
</dd>
<dt><code>fractionTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The tolerance for the tool's fraction conversion.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure the container is untouched.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_SubstractVolume_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Topo_CarveStl_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume(Hi.Geom.Topo.CarveStl)">
SubstractVolume(CarveStl)
</h3>
<div class="markdown level1 summary"><p>Exact in-place difference using another container's current state as
the tool. Lossless; <code class="paramref">tool</code> is only read.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult SubstractVolume(CarveStl tool)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a></dt>
<dd><p>The container whose volume is carved away.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure this container is untouched.</p>
</dd>
</dl>
<a id="Hi_Geom_Topo_CarveStl_SubstractVolume_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume*"></a>
<h3 id="Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Topo_NativeTopoStl3wfr_" data-uid="Hi.Geom.Topo.CarveStl.SubstractVolume(Hi.Geom.Topo.NativeTopoStl3wfr)">
SubstractVolume(NativeTopoStl3wfr)
</h3>
<div class="markdown level1 summary"><p>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 <code class="paramref">tool</code> survives the call
and may be reused for further steps.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CarveBooleanResult SubstractVolume(NativeTopoStl3wfr tool)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>tool</code> <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd><p>The tool mesh (a closed shell).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>The step result; on failure the container is untouched.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
<title>Class NativeTopoStld | HiAPI-C# 2025 </title>
<title>Class NativeTopoStl3d | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class NativeTopoStld | HiAPI-C# 2025 ">
<meta name="title" content="Class NativeTopoStl3d | HiAPI-C# 2025 ">
<meta name="description" content="Native TopoStl with element type double.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
@@ -84,16 +84,16 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.NativeTopoStld">
<article data-uid="Hi.Geom.Topo.NativeTopoStl3d">
<h1 id="Hi_Geom_NativeTopoStld" data-uid="Hi.Geom.NativeTopoStld" class="text-break">
Class NativeTopoStld
<h1 id="Hi_Geom_Topo_NativeTopoStl3d" data-uid="Hi.Geom.Topo.NativeTopoStl3d" class="text-break">
Class NativeTopoStl3d
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a></dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
@@ -102,7 +102,7 @@ Class NativeTopoStld
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class NativeTopoStld : IDisposable, IDisplayee, IExpandToBox3d</code></pre>
<pre><code class="lang-csharp hljs">public class NativeTopoStl3d : IDisposable, IDisplayee, IExpandToBox3d</code></pre>
</div>
@@ -112,7 +112,7 @@ Class NativeTopoStld
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">NativeTopoStld</span></div>
<div><span class="xref">NativeTopoStl3d</span></div>
</dd>
</dl>
@@ -189,19 +189,19 @@ Class NativeTopoStld
</h2>
<a id="Hi_Geom_NativeTopoStld__ctor_" data-uid="Hi.Geom.NativeTopoStld.#ctor*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d__ctor_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.#ctor*"></a>
<h3 id="Hi_Geom_NativeTopoStld__ctor_Hi_Geom_Stl_" data-uid="Hi.Geom.NativeTopoStld.#ctor(Hi.Geom.Stl)">
NativeTopoStld(Stl)
<h3 id="Hi_Geom_Topo_NativeTopoStl3d__ctor_Hi_Geom_Stl_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.#ctor(Hi.Geom.Stl)">
NativeTopoStl3d(Stl)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.NativeTopoStld.html">NativeTopoStld</a> class.</p>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeTopoStld(Stl stl)</code></pre>
<pre><code class="lang-csharp hljs">public NativeTopoStl3d(Stl stl)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -226,9 +226,9 @@ Class NativeTopoStld
</h2>
<a id="Hi_Geom_NativeTopoStld_CosRoundAngle_" data-uid="Hi.Geom.NativeTopoStld.CosRoundAngle*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_CosRoundAngle_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.CosRoundAngle*"></a>
<h3 id="Hi_Geom_NativeTopoStld_CosRoundAngle" data-uid="Hi.Geom.NativeTopoStld.CosRoundAngle">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_CosRoundAngle" data-uid="Hi.Geom.Topo.NativeTopoStl3d.CosRoundAngle">
CosRoundAngle
</h3>
@@ -258,9 +258,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_Size_" data-uid="Hi.Geom.NativeTopoStld.Size*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_Size_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Size*"></a>
<h3 id="Hi_Geom_NativeTopoStld_Size" data-uid="Hi.Geom.NativeTopoStld.Size">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_Size" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Size">
Size
</h3>
@@ -290,9 +290,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_TopoStlPtr_" data-uid="Hi.Geom.NativeTopoStld.TopoStlPtr*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_TopoStlPtr_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.TopoStlPtr*"></a>
<h3 id="Hi_Geom_NativeTopoStld_TopoStlPtr" data-uid="Hi.Geom.NativeTopoStld.TopoStlPtr">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_TopoStlPtr" data-uid="Hi.Geom.Topo.NativeTopoStl3d.TopoStlPtr">
TopoStlPtr
</h3>
@@ -326,9 +326,9 @@ Class NativeTopoStld
</h2>
<a id="Hi_Geom_NativeTopoStld_Display_" data-uid="Hi.Geom.NativeTopoStld.Display*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_Display_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Display*"></a>
<h3 id="Hi_Geom_NativeTopoStld_Display_Hi_Disp_Bind_" data-uid="Hi.Geom.NativeTopoStld.Display(Hi.Disp.Bind)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_Display_Hi_Disp_Bind_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
@@ -359,9 +359,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_DisplaySharpEdges_" data-uid="Hi.Geom.NativeTopoStld.DisplaySharpEdges*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_DisplaySharpEdges_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.DisplaySharpEdges*"></a>
<h3 id="Hi_Geom_NativeTopoStld_DisplaySharpEdges_Hi_Disp_Bind_" data-uid="Hi.Geom.NativeTopoStld.DisplaySharpEdges(Hi.Disp.Bind)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_DisplaySharpEdges_Hi_Disp_Bind_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.DisplaySharpEdges(Hi.Disp.Bind)">
DisplaySharpEdges(Bind)
</h3>
@@ -392,9 +392,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_Dispose_" data-uid="Hi.Geom.NativeTopoStld.Dispose*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_Dispose_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Dispose*"></a>
<h3 id="Hi_Geom_NativeTopoStld_Dispose" data-uid="Hi.Geom.NativeTopoStld.Dispose">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_Dispose" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Dispose">
Dispose()
</h3>
@@ -419,9 +419,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_Dispose_" data-uid="Hi.Geom.NativeTopoStld.Dispose*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_Dispose_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Dispose*"></a>
<h3 id="Hi_Geom_NativeTopoStld_Dispose_System_Boolean_" data-uid="Hi.Geom.NativeTopoStld.Dispose(System.Boolean)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_Dispose_System_Boolean_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Dispose(System.Boolean)">
Dispose(bool)
</h3>
@@ -450,9 +450,9 @@ Class NativeTopoStld
<a id="Hi_Geom_NativeTopoStld_ExpandToBox3d_" data-uid="Hi.Geom.NativeTopoStld.ExpandToBox3d*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_ExpandToBox3d_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.ExpandToBox3d*"></a>
<h3 id="Hi_Geom_NativeTopoStld_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.NativeTopoStld.ExpandToBox3d(Hi.Geom.Box3d)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
@@ -484,10 +484,10 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_NativeTopoStld_Finalize_" data-uid="Hi.Geom.NativeTopoStld.Finalize*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_Finalize_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Finalize*"></a>
<h3 id="Hi_Geom_NativeTopoStld_Finalize" data-uid="Hi.Geom.NativeTopoStld.Finalize">
~NativeTopoStld()
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_Finalize" data-uid="Hi.Geom.Topo.NativeTopoStl3d.Finalize">
~NativeTopoStl3d()
</h3>
@@ -495,7 +495,7 @@ This function is usually used to compute the bounding box of elements.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected ~NativeTopoStld()</code></pre>
<pre><code class="lang-csharp hljs">protected ~NativeTopoStl3d()</code></pre>
</div>
@@ -510,9 +510,9 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_NativeTopoStld_GenStl_" data-uid="Hi.Geom.NativeTopoStld.GenStl*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3d_GenStl_" data-uid="Hi.Geom.Topo.NativeTopoStl3d.GenStl*"></a>
<h3 id="Hi_Geom_NativeTopoStld_GenStl" data-uid="Hi.Geom.NativeTopoStld.GenStl">
<h3 id="Hi_Geom_Topo_NativeTopoStl3d_GenStl" data-uid="Hi.Geom.Topo.NativeTopoStl3d.GenStl">
GenStl()
</h3>
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
<title>Class NativeTopoStlfr | HiAPI-C# 2025 </title>
<title>Class NativeTopoStl3wfr | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class NativeTopoStlfr | HiAPI-C# 2025 ">
<meta name="title" content="Class NativeTopoStl3wfr | HiAPI-C# 2025 ">
<meta name="description" content="Native TopoStl with element type fraction.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
@@ -84,16 +84,16 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.NativeTopoStlfr">
<article data-uid="Hi.Geom.Topo.NativeTopoStl3wfr">
<h1 id="Hi_Geom_NativeTopoStlfr" data-uid="Hi.Geom.NativeTopoStlfr" class="text-break">
Class NativeTopoStlfr
<h1 id="Hi_Geom_Topo_NativeTopoStl3wfr" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr" class="text-break">
Class NativeTopoStl3wfr
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a></dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiDisp.dll</dd></dl>
</div>
@@ -102,7 +102,7 @@ Class NativeTopoStlfr
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class NativeTopoStlfr : IDisposable, IDisplayee, IExpandToBox3d</code></pre>
<pre><code class="lang-csharp hljs">public class NativeTopoStl3wfr : IDisposable, IDisplayee, IExpandToBox3d</code></pre>
</div>
@@ -112,7 +112,7 @@ Class NativeTopoStlfr
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">NativeTopoStlfr</span></div>
<div><span class="xref">NativeTopoStl3wfr</span></div>
</dd>
</dl>
@@ -189,19 +189,19 @@ Class NativeTopoStlfr
</h2>
<a id="Hi_Geom_NativeTopoStlfr__ctor_" data-uid="Hi.Geom.NativeTopoStlfr.#ctor*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr__ctor_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.#ctor*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr__ctor_Hi_Geom_Stl_System_Double_" data-uid="Hi.Geom.NativeTopoStlfr.#ctor(Hi.Geom.Stl,System.Double)">
NativeTopoStlfr(Stl, double)
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr__ctor_Hi_Geom_Stl_System_Double_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.#ctor(Hi.Geom.Stl,System.Double)">
NativeTopoStl3wfr(Stl, double)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.NativeTopoStlfr.html">NativeTopoStlfr</a> class.</p>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeTopoStlfr(Stl stl, double fractionTolerance)</code></pre>
<pre><code class="lang-csharp hljs">public NativeTopoStl3wfr(Stl stl, double fractionTolerance)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -229,9 +229,9 @@ Class NativeTopoStlfr
</h2>
<a id="Hi_Geom_NativeTopoStlfr_Size_" data-uid="Hi.Geom.NativeTopoStlfr.Size*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_Size_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Size*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_Size" data-uid="Hi.Geom.NativeTopoStlfr.Size">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_Size" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Size">
Size
</h3>
@@ -261,9 +261,9 @@ Class NativeTopoStlfr
<a id="Hi_Geom_NativeTopoStlfr_TopoStlPtr_" data-uid="Hi.Geom.NativeTopoStlfr.TopoStlPtr*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_TopoStlPtr_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.TopoStlPtr*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_TopoStlPtr" data-uid="Hi.Geom.NativeTopoStlfr.TopoStlPtr">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_TopoStlPtr" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.TopoStlPtr">
TopoStlPtr
</h3>
@@ -297,9 +297,9 @@ Class NativeTopoStlfr
</h2>
<a id="Hi_Geom_NativeTopoStlfr_Display_" data-uid="Hi.Geom.NativeTopoStlfr.Display*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_Display_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Display*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_Display_Hi_Disp_Bind_" data-uid="Hi.Geom.NativeTopoStlfr.Display(Hi.Disp.Bind)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_Display_Hi_Disp_Bind_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
@@ -330,9 +330,9 @@ Class NativeTopoStlfr
<a id="Hi_Geom_NativeTopoStlfr_Dispose_" data-uid="Hi.Geom.NativeTopoStlfr.Dispose*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_Dispose_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Dispose*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_Dispose" data-uid="Hi.Geom.NativeTopoStlfr.Dispose">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_Dispose" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Dispose">
Dispose()
</h3>
@@ -357,9 +357,9 @@ Class NativeTopoStlfr
<a id="Hi_Geom_NativeTopoStlfr_Dispose_" data-uid="Hi.Geom.NativeTopoStlfr.Dispose*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_Dispose_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Dispose*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_Dispose_System_Boolean_" data-uid="Hi.Geom.NativeTopoStlfr.Dispose(System.Boolean)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_Dispose_System_Boolean_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Dispose(System.Boolean)">
Dispose(bool)
</h3>
@@ -388,9 +388,9 @@ Class NativeTopoStlfr
<a id="Hi_Geom_NativeTopoStlfr_ExpandToBox3d_" data-uid="Hi.Geom.NativeTopoStlfr.ExpandToBox3d*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_ExpandToBox3d_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.ExpandToBox3d*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.NativeTopoStlfr.ExpandToBox3d(Hi.Geom.Box3d)">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
@@ -422,10 +422,10 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_NativeTopoStlfr_Finalize_" data-uid="Hi.Geom.NativeTopoStlfr.Finalize*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_Finalize_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Finalize*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_Finalize" data-uid="Hi.Geom.NativeTopoStlfr.Finalize">
~NativeTopoStlfr()
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_Finalize" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.Finalize">
~NativeTopoStl3wfr()
</h3>
@@ -433,7 +433,7 @@ This function is usually used to compute the bounding box of elements.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected ~NativeTopoStlfr()</code></pre>
<pre><code class="lang-csharp hljs">protected ~NativeTopoStl3wfr()</code></pre>
</div>
@@ -448,9 +448,9 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_NativeTopoStlfr_GenStl_" data-uid="Hi.Geom.NativeTopoStlfr.GenStl*"></a>
<a id="Hi_Geom_Topo_NativeTopoStl3wfr_GenStl_" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.GenStl*"></a>
<h3 id="Hi_Geom_NativeTopoStlfr_GenStl" data-uid="Hi.Geom.NativeTopoStlfr.GenStl">
<h3 id="Hi_Geom_Topo_NativeTopoStl3wfr_GenStl" data-uid="Hi.Geom.Topo.NativeTopoStl3wfr.GenStl">
GenStl()
</h3>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoLine3Hfr | HiAPI-C# 2025 ">
<meta name="description" content="Topological 3D line (directed edge) with coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3_t.">
<meta name="description" content="Topological 3D line (directed edge) with coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3wfr_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -99,7 +99,7 @@ Class TopoLine3Hfr
<div class="markdown summary"><p>Topological 3D line (directed edge) with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to adjacent reversed line and owning triangle.
Corresponds to C++ <code>topo_line3_t</code>.</p>
Corresponds to C++ <code>topo_line3wfr_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoLine3StockHfr | HiAPI-C# 2025 ">
<meta name="description" content="Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3_stock_t.">
<meta name="description" content="Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3wfr_stock_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -98,7 +98,7 @@ Class TopoLine3StockHfr
</div>
<div class="markdown summary"><p>Stock (pool) of topological lines with deduplication based on endpoint identity.
Corresponds to C++ <code>topo_line3_stock_t</code>.</p>
Corresponds to C++ <code>topo_line3wfr_stock_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoPoint3Hfr | HiAPI-C# 2025 ">
<meta name="description" content="Topological 3D point with coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3_t.">
<meta name="description" content="Topological 3D point with coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3wfr_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -99,7 +99,7 @@ Class TopoPoint3Hfr
<div class="markdown summary"><p>Topological 3D point with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to adjacent lines and triangles.
Corresponds to C++ <code>topo_point3_t</code>.</p>
Corresponds to C++ <code>topo_point3wfr_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoPoint3StockHfr | HiAPI-C# 2025 ">
<meta name="description" content="Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3_stock_t.">
<meta name="description" content="Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3wfr_stock_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -98,7 +98,7 @@ Class TopoPoint3StockHfr
</div>
<div class="markdown summary"><p>Stock (pool) of topological points with deduplication based on fraction coordinates.
Corresponds to C++ <code>topo_point3_stock_t</code>.</p>
Corresponds to C++ <code>topo_point3wfr_stock_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoStl3Hfr | HiAPI-C# 2025 ">
<meta name="description" content="Pure C# topological STL (triangle mesh) with coordinates. Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. Corresponds to C++ topo_stl3_t.">
<meta name="description" content="Pure C# topological STL (triangle mesh) with 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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -101,7 +101,7 @@ Class TopoStl3Hfr
Hfr: High-Precision (decimal) FRaction.
Provides unlimited-precision exact arithmetic for geometric computations
without relying on native (C++) interop.
Corresponds to C++ <code>topo_stl3_t</code>.</p>
Corresponds to C++ <code>topo_stl3wfr_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -235,7 +235,7 @@ Corresponds to C++ <code>topo_stl3_t</code>.</p>
<div class="markdown level1 summary"><p>Initializes a topological STL from fraction-precision triangles (Vec3Hfr arrays).
Each element is a 3-element array of <a class="xref" href="Hi.Geom.Topo.Vec3Hfr.html">Vec3Hfr</a> representing triangle apexes.
Corresponds to C++ constructor <code>topo_stl3_t(Tri3fr_Iter, Tri3fr_Iter)</code>.</p>
Corresponds to C++ constructor <code>topo_stl3wfr_t(Tri3fr_Iter, Tri3fr_Iter)</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -271,7 +271,7 @@ Corresponds to C++ constructor <code>topo_stl3_t(Tri3fr_Iter, Tri3fr_Iter)</code
<div class="markdown level1 summary"><p>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 <code>topo_stl3_t(Tri3d_Iter, Tri3d_Iter, double)</code>.</p>
Corresponds to C++ constructor <code>topo_stl3wfr_t(Tri3d_Iter, Tri3d_Iter, double)</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -698,7 +698,7 @@ Corresponds to C++ <code>is_seamless()</code>.</p>
</h3>
<div class="markdown level1 summary"><p>Checks whether the mesh is seamless. Defect lines are output to <code class="paramref">dstDefectLines</code>.
Corresponds to C++ <code>is_seamless(vector&lt;topo_line3_t*&gt;&amp;)</code>.</p>
Corresponds to C++ <code>is_seamless(vector&lt;topo_line3wfr_t*&gt;&amp;)</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoStl3HfrFlatDisplayee | HiAPI-C# 2025 ">
<meta name="description" content="Flat-shaded displayee for . Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ TopoStl3::_flatDraw + all-lines draw.">
<meta name="description" content="Flat-shaded displayee for . Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ topo_stl3::_flatDraw + all-lines draw.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -99,7 +99,7 @@ Class TopoStl3HfrFlatDisplayee
<div class="markdown summary"><p>Flat-shaded displayee for <a class="xref" href="Hi.Geom.Topo.TopoStl3Hfr.html">TopoStl3Hfr</a>.
Renders flat triangle faces (one normal per triangle) and all unique edge lines.
Corresponds to C++ <code>TopoStl3::_flatDraw</code> + all-lines draw.</p>
Corresponds to C++ <code>topo_stl3::_flatDraw</code> + all-lines draw.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoStl3HfrSmoothDisplayee | HiAPI-C# 2025 ">
<meta name="description" content="Smooth-shaded displayee for . Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos&#178;, smooth normals) is stored in this class via dictionaries, keeping the source clean. Corresponds to C++ TopoStl3::_smoothDraw + _edgeDraw.">
<meta name="description" content="Smooth-shaded displayee for . Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos&#178;, smooth normals) is stored in this class via dictionaries, keeping the source clean. Corresponds to C++ topo_stl3::_smoothDraw + _edgeDraw.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -101,7 +101,7 @@ Class TopoStl3HfrSmoothDisplayee
Renders smooth faces (per-vertex averaged normals) and sharp edges only.
All rendering-related cached data (adjacent cos², smooth normals) is stored
in this class via dictionaries, keeping the source <a class="xref" href="Hi.Geom.Topo.TopoStl3Hfr.html">TopoStl3Hfr</a> clean.
Corresponds to C++ <code>TopoStl3::_smoothDraw</code> + <code>_edgeDraw</code>.</p>
Corresponds to C++ <code>topo_stl3::_smoothDraw</code> + <code>_edgeDraw</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -406,7 +406,7 @@ Call this after modifying the source topology or changing <a class="xref" href="
</h3>
<div class="markdown level1 summary"><p>Displays the smooth-shaded topological STL: sharp edges in black + smooth-shaded faces.
Corresponds to C++ <code>TopoStl3::Render</code>.</p>
Corresponds to C++ <code>topo_stl3::Render</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoTri3Hfr | HiAPI-C# 2025 ">
<meta name="description" content="Topological 3D triangle with coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3_t.">
<meta name="description" content="Topological 3D triangle with coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3wfr_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -99,7 +99,7 @@ Class TopoTri3Hfr
<div class="markdown summary"><p>Topological 3D triangle with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to points and lines.
Corresponds to C++ <code>topo_tri3_t</code>.</p>
Corresponds to C++ <code>topo_tri3wfr_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TopoTri3StockHfr | HiAPI-C# 2025 ">
<meta name="description" content="Stock (pool) of topological triangles. Corresponds to C++ topo_tri3_stock_t.">
<meta name="description" content="Stock (pool) of topological triangles. Corresponds to C++ topo_tri3wfr_stock_t.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -98,7 +98,7 @@ Class TopoTri3StockHfr
</div>
<div class="markdown summary"><p>Stock (pool) of topological triangles.
Corresponds to C++ <code>topo_tri3_stock_t</code>.</p>
Corresponds to C++ <code>topo_tri3wfr_stock_t</code>.</p>
</div>
<div class="markdown conceptual"></div>
@@ -368,7 +368,7 @@ Corresponds to C++ <code>topo_tri3_stock_t</code>.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr tlStock)</code></pre>
<pre><code class="lang-csharp hljs">public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr lineStock)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -379,7 +379,7 @@ Corresponds to C++ <code>topo_tri3_stock_t</code>.</p>
<dd></dd>
<dt><code>tp2</code> <a class="xref" href="Hi.Geom.Topo.TopoPoint3Hfr.html">TopoPoint3Hfr</a></dt>
<dd></dd>
<dt><code>tlStock</code> <a class="xref" href="Hi.Geom.Topo.TopoLine3StockHfr.html">TopoLine3StockHfr</a></dt>
<dt><code>lineStock</code> <a class="xref" href="Hi.Geom.Topo.TopoLine3StockHfr.html">TopoLine3StockHfr</a></dt>
<dd></dd>
</dl>
@@ -94,30 +94,57 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanResult.html">CarveBooleanResult</a></dt>
<dd><p>Result of one carve boolean step. On failure the workpiece is untouched
and the step may simply be skipped.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.CarveStl.html">CarveStl</a></dt>
<dd><p>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 (<a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_SubstractVolume_Hi_Geom_Stl_System_Double_">SubstractVolume(Stl, double)</a> /
<a class="xref" href="Hi.Geom.Topo.CarveStl.html#Hi_Geom_Topo_CarveStl_AddVolume_Hi_Geom_Stl_System_Double_">AddVolume(Stl, double)</a>). Unlike
<a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a> (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.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd><p>Native TopoStl with element type double.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd><p>Native TopoStl with element type fraction.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoLine3Hfr.html">TopoLine3Hfr</a></dt>
<dd><p>Topological 3D line (directed edge) with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to adjacent reversed line and owning triangle.
Corresponds to C++ <code>topo_line3_t</code>.</p>
Corresponds to C++ <code>topo_line3wfr_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoLine3StockHfr.html">TopoLine3StockHfr</a></dt>
<dd><p>Stock (pool) of topological lines with deduplication based on endpoint identity.
Corresponds to C++ <code>topo_line3_stock_t</code>.</p>
Corresponds to C++ <code>topo_line3wfr_stock_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoPoint3Hfr.html">TopoPoint3Hfr</a></dt>
<dd><p>Topological 3D point with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to adjacent lines and triangles.
Corresponds to C++ <code>topo_point3_t</code>.</p>
Corresponds to C++ <code>topo_point3wfr_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoPoint3StockHfr.html">TopoPoint3StockHfr</a></dt>
<dd><p>Stock (pool) of topological points with deduplication based on fraction coordinates.
Corresponds to C++ <code>topo_point3_stock_t</code>.</p>
Corresponds to C++ <code>topo_point3wfr_stock_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -126,14 +153,14 @@ Corresponds to C++ <code>topo_point3_stock_t</code>.</p>
Hfr: High-Precision (decimal) FRaction.
Provides unlimited-precision exact arithmetic for geometric computations
without relying on native (C++) interop.
Corresponds to C++ <code>topo_stl3_t</code>.</p>
Corresponds to C++ <code>topo_stl3wfr_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html">TopoStl3HfrFlatDisplayee</a></dt>
<dd><p>Flat-shaded displayee for <a class="xref" href="Hi.Geom.Topo.TopoStl3Hfr.html">TopoStl3Hfr</a>.
Renders flat triangle faces (one normal per triangle) and all unique edge lines.
Corresponds to C++ <code>TopoStl3::_flatDraw</code> + all-lines draw.</p>
Corresponds to C++ <code>topo_stl3::_flatDraw</code> + all-lines draw.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -142,20 +169,20 @@ Corresponds to C++ <code>TopoStl3::_flatDraw</code> + all-lines draw.</p>
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 <a class="xref" href="Hi.Geom.Topo.TopoStl3Hfr.html">TopoStl3Hfr</a> clean.
Corresponds to C++ <code>TopoStl3::_smoothDraw</code> + <code>_edgeDraw</code>.</p>
Corresponds to C++ <code>topo_stl3::_smoothDraw</code> + <code>_edgeDraw</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoTri3Hfr.html">TopoTri3Hfr</a></dt>
<dd><p>Topological 3D triangle with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> coordinates.
Maintains connectivity to points and lines.
Corresponds to C++ <code>topo_tri3_t</code>.</p>
Corresponds to C++ <code>topo_tri3wfr_t</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.TopoTri3StockHfr.html">TopoTri3StockHfr</a></dt>
<dd><p>Stock (pool) of topological triangles.
Corresponds to C++ <code>topo_tri3_stock_t</code>.</p>
Corresponds to C++ <code>topo_tri3wfr_stock_t</code>.</p>
</dd>
</dl>
<h3 id="structs">
@@ -166,6 +193,14 @@ Structs
<dd><p>3D vector with <a class="xref" href="Hi.Geom.Fraction-1.html">Fraction&lt;decimal&gt;</a> elements.
Provides unlimited-precision exact arithmetic for geometric computations.
Corresponds to C++ <code>vec3&lt;wfr_t&gt;</code>.</p>
</dd>
</dl>
<h3 id="enums">
Enums
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Topo.CarveBooleanKind.html">CarveBooleanKind</a></dt>
<dd><p>What a carve boolean did to the workpiece container.</p>
</dd>
</dl>
@@ -268,8 +268,8 @@ This class combines a transformer with a target geometry to produce transformed
<a id="Hi_Geom_TransformationGeom__ctor_" data-uid="Hi.Geom.TransformationGeom.#ctor*"></a>
<h3 id="Hi_Geom_TransformationGeom__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__" data-uid="Hi.Geom.TransformationGeom.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object})">
TransformationGeom(XElement, string, IProgress&lt;object&gt;)
<h3 id="Hi_Geom_TransformationGeom__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Geom.TransformationGeom.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
TransformationGeom(XElement, string, IProgress&lt;IMessage&gt;)
</h3>
@@ -278,7 +278,7 @@ This class combines a transformer with a target geometry to produce transformed
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TransformationGeom(XElement src, string baseDirectory, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public TransformationGeom(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -289,7 +289,7 @@ This class combines a transformer with a target geometry to produce transformed
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
</dl>
@@ -301,7 +301,7 @@ This class combines a transformer with a target geometry to produce transformed
<h4 class="section" id="Hi_Geom_TransformationGeom__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object___remarks">Remarks</h4>
<h4 class="section" id="Hi_Geom_TransformationGeom__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage___remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>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.</p>
</div>
@@ -3773,7 +3773,7 @@ The returned object includes type metadata for web API presentation.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>DTO object with type, x, y, z properties</p>
<dd><p>DTO dictionary with Type, x, y, z keys</p>
</dd>
</dl>
@@ -183,16 +183,6 @@ A fraction consists of a numerator and denominator using unlimited precision int
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd><p>Native Stl. For purpose of efficient swept volume.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.NativeTopoStld.html">NativeTopoStld</a></dt>
<dd><p>Native TopoStl with element type double.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.NativeTopoStlfr.html">NativeTopoStlfr</a></dt>
<dd><p>Native TopoStl with element type fraction.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -0,0 +1,305 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ResourceSeeder | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ResourceSeeder | HiAPI-C# 2025 ">
<meta name="description" content="Seeds the shipped default resources (Resource/** from the HiNc-Resource content package, next to the executable) into the admin resource directory, honoring the 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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.HiNcKits.ResourceSeeder">
<h1 id="Hi_HiNcKits_ResourceSeeder" data-uid="Hi.HiNcKits.ResourceSeeder" class="text-break">
Class ResourceSeeder
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.HiNcKits.html">HiNcKits</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Seeds the shipped default resources (<code>Resource/**</code> from the
<code>HiNc-Resource</code> content package, next to the executable) into the
admin resource directory, honoring the <a class="xref" href="Hi.Common.ResourceDefaultMarker.html">ResourceDefaultMarker</a>
ownership convention:</p>
<ul><li>Marked items (<code>X.default.Ext</code> files, <code>Name.default/</code>
folders) are system territory — they are copied in, refreshed when the
shipped bytes change, and deleted when no longer shipped.</li><li>Unmarked items belong to the user and are never touched.</li></ul>
A version stamp file at the destination root records the last-seeded
<code>HiNc-Resource</code> version; when it matches, the whole pass is skipped,
so steady-state startup cost is one small file read.
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class ResourceSeeder</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ResourceSeeder</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Hi_HiNcKits_ResourceSeeder_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>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.</p>
<p>
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.
</p>
</div>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_HiNcKits_ResourceSeeder_ResourceAssemblyFileName" data-uid="Hi.HiNcKits.ResourceSeeder.ResourceAssemblyFileName">
ResourceAssemblyFileName
</h3>
<div class="markdown level1 summary"><p>Assembly file probed (next to the executable) for the shipped resource
version.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ResourceAssemblyFileName = &quot;HiNc-Resource.dll&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_HiNcKits_ResourceSeeder_VersionStampFileName" data-uid="Hi.HiNcKits.ResourceSeeder.VersionStampFileName">
VersionStampFileName
</h3>
<div class="markdown level1 summary"><p>Version stamp file name written at the destination resource root.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string VersionStampFileName = &quot;.hinc-resource-version&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_HiNcKits_ResourceSeeder_Seed_" data-uid="Hi.HiNcKits.ResourceSeeder.Seed*"></a>
<h3 id="Hi_HiNcKits_ResourceSeeder_Seed_System_String_Microsoft_Extensions_Logging_ILogger_" data-uid="Hi.HiNcKits.ResourceSeeder.Seed(System.String,Microsoft.Extensions.Logging.ILogger)">
Seed(string, ILogger)
</h3>
<div class="markdown level1 summary"><p>Seeds the shipped defaults into <code class="paramref">adminResourceDirectory</code>.
Source is <code>Resource/</code> under <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.appcontext.basedirectory">BaseDirectory</a>
(the process CWD is not stable enough to anchor on). Never throws.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Seed(string adminResourceDirectory, ILogger logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>adminResourceDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Absolute path of the admin <code>Resource</code> root.</p>
</dd>
<dt><code>logger</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger">ILogger</a></dt>
<dd><p>Sink for the pass summary and warnings.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>
+11 -16
View File
@@ -108,15 +108,6 @@ Host class for HiNC functionality that provides project management, path resolut
<dl class="jumplist">
<dt><a class="xref" href="Hi.HiNcKits.LocalAppConfig.html">LocalAppConfig</a></dt>
<dd><p>Configuration for host-related settings.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.HiNcKits.PlayerDivConfig.html">PlayerDivConfig</a></dt>
<dd><p>Per-user visibility flags for the Player page's divisions (charts and
info panels). Mirrors the HiNcRcl <code>PlayerDivConfig</code> + <code>PlayerDivFlag</code>
pair, flattened into a single all-boolean config so the webservice
(which has no <code>HiNcHost</code> / <code>HiNcUser</code>) can persist the whole
layout through <a class="xref" href="Hi.HiNcKits.UserConfig.html">UserConfig</a> alone.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -125,13 +116,17 @@ layout through <a class="xref" href="Hi.HiNcKits.UserConfig.html">UserConfig</a>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.HiNcKits.UserConfig.html">UserConfig</a></dt>
<dd><p>User Configuration</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.HiNcKits.UserService.html">UserService</a></dt>
<dd><p>User Service.</p>
<dt><a class="xref" href="Hi.HiNcKits.ResourceSeeder.html">ResourceSeeder</a></dt>
<dd><p>Seeds the shipped default resources (<code>Resource/**</code> from the
<code>HiNc-Resource</code> content package, next to the executable) into the
admin resource directory, honoring the <a class="xref" href="Hi.Common.ResourceDefaultMarker.html">ResourceDefaultMarker</a>
ownership convention:</p>
<ul><li>Marked items (<code>X.default.Ext</code> files, <code>Name.default/</code>
folders) are system territory — they are copied in, refreshed when the
shipped bytes change, and deleted when no longer shipped.</li><li>Unmarked items belong to the user and are never touched.</li></ul>
A version stamp file at the destination root records the last-seeded
<code>HiNc-Resource</code> version; when it matches, the whole pass is skipped,
so steady-state startup cost is one small file read.
</dd>
</dl>
<h3 id="enums">
@@ -196,6 +196,13 @@ Enum AuthFeature
<dt id="Hi_Licenses_AuthFeature_MtBuilder"><code>MtBuilder = 12</code></dt>
<dd><p>MtBuilder feature.</p>
</dd>
<dt id="Hi_Licenses_AuthFeature_NcComposition"><code>NcComposition = 22</code></dt>
<dd><p>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.</p>
</dd>
<dt id="Hi_Licenses_AuthFeature_OptNcNoLimit"><code>OptNcNoLimit = 14</code></dt>
@@ -266,8 +266,8 @@ and topology bricks for both the noble and shaper parts.</p>
<a id="Hi_Machining_FreeformRemover__ctor_" data-uid="Hi.Machining.FreeformRemover.#ctor*"></a>
<h3 id="Hi_Machining_FreeformRemover__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_System_Object__System_Object___" data-uid="Hi.Machining.FreeformRemover.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{System.Object},System.Object[])">
FreeformRemover(XElement, string, string, IProgress&lt;object&gt;, object[])
<h3 id="Hi_Machining_FreeformRemover__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___" data-uid="Hi.Machining.FreeformRemover.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Object[])">
FreeformRemover(XElement, string, string, IProgress&lt;IMessage&gt;, object[])
</h3>
@@ -276,7 +276,7 @@ and topology bricks for both the noble and shaper parts.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress&lt;object&gt; progress, object[] res)</code></pre>
<pre><code class="lang-csharp hljs">public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress, object[] res)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -290,7 +290,7 @@ and topology bricks for both the noble and shaper parts.</p>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path for resolving references.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
@@ -146,10 +146,10 @@ Interface IGetMachiningEquipment
</h2>
<a id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment*"></a>
<a id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMachiningEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMachiningEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
<h3 id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMachiningEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMachiningEquipment">
GetMachiningEquipment()
</h3>
@@ -158,7 +158,43 @@ Interface IGetMachiningEquipment
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">MachiningEquipment GetMillingEquipment()</code></pre>
<pre><code class="lang-csharp hljs">MachiningEquipment GetMachiningEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></p>
</dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
</h3>
<div class="markdown level1 summary"><p>Source-compatible delegate for callers written against the pre-rename
name; the equipment has been machining-scoped (not milling-only) since
<code>MillingEquipment</code> became <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
MachiningEquipment GetMillingEquipment()</code></pre>
</div>
@@ -167,6 +167,9 @@ Interface IMachiningEquipment
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetMachinePositionAtTableBuckleZero_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment_">MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetProgramToPnMat4d_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment_">MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment)</a>
</div>
<div>
<a class="xref" href="Hi.Mech.Topo.TopoUtil.html#Hi_Mech_Topo_TopoUtil_Display_Hi_Mech_Topo_IGetAnchor_Hi_Disp_Bind_System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_Geom_Mat4d__">TopoUtil.Display(IGetAnchor, Bind, Dictionary&lt;Anchor, Mat4d&gt;)</a>
</div>
@@ -178,6 +178,9 @@ Class MachiningEquipment
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetMachinePositionAtTableBuckleZero_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment_">MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetProgramToPnMat4d_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment_">MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment)</a>
</div>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
@@ -244,8 +247,8 @@ Class MachiningEquipment
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment__ctor_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.#ctor*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_System_Object__" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{System.Object})">
MachiningEquipment(XElement, string, string, IProgress&lt;object&gt;)
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
MachiningEquipment(XElement, string, string, IProgress&lt;IMessage&gt;)
</h3>
@@ -254,7 +257,7 @@ Class MachiningEquipment
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -268,7 +271,7 @@ Class MachiningEquipment
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path for XML serialization.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
</dl>
@@ -419,6 +422,41 @@ This includes coolant temperature and heat transfer coefficients.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatConditionFile_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.CoolantHeatConditionFile*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatConditionFile" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.CoolantHeatConditionFile">
CoolantHeatConditionFile
</h3>
<div class="markdown level1 summary"><p>Gets or sets the file path of the coolant heat condition
(WorkpieceMaterial pattern: when set, XML IO externalizes
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatCondition">CoolantHeatCondition</a> to this side-file; when null the
condition serializes inline).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string CoolantHeatConditionFile { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Fixture*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Fixture">
@@ -987,10 +1025,10 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment*"></a>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMachiningEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMachiningEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMachiningEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMachiningEquipment">
GetMachiningEquipment()
</h3>
@@ -999,7 +1037,7 @@ This function is usually used to compute the bounding box of elements.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningEquipment GetMillingEquipment()</code></pre>
<pre><code class="lang-csharp hljs">public MachiningEquipment GetMachiningEquipment()</code></pre>
</div>
@@ -1020,6 +1058,42 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
</h3>
<div class="markdown level1 summary"><p>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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
public MachiningEquipment GetMillingEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p>This equipment.</p>
</dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetProgramCl_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetProgramCl*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetProgramCl" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetProgramCl">
@@ -1241,7 +1315,8 @@ and chains <code>Reg(factory)</code> on dependents. Idempotent.</p>
</h3>
<div class="markdown level1 summary"><p>Resets all collision flags to their default states.
This should be called after collision detection is complete.</p>
This should be called after collision detection is complete,
and by a runtime reset so no part stays painted red.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -434,19 +434,19 @@ When set, updates the component anchor and collidable based on the equipment's s
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentCollisionIndex_WorkpieceRuntimeGeomGetter_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.WorkpieceRuntimeGeomGetter*"></a>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentCollisionIndex_WorkpieceMeshedGeomGetter_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.WorkpieceMeshedGeomGetter*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentCollisionIndex_WorkpieceRuntimeGeomGetter" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.WorkpieceRuntimeGeomGetter">
WorkpieceRuntimeGeomGetter
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentCollisionIndex_WorkpieceMeshedGeomGetter" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.WorkpieceMeshedGeomGetter">
WorkpieceMeshedGeomGetter
</h3>
<div class="markdown level1 summary"><p>Getter for runtime geometry of the workpiece. Set by the service layer.</p>
<div class="markdown level1 summary"><p>Getter for meshed geometry of the workpiece. Set by the service layer.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;CubeTree&gt; WorkpieceRuntimeGeomGetter { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public Func&lt;CubeTree&gt; WorkpieceMeshedGeomGetter { get; set; }</code></pre>
</div>
@@ -531,7 +531,7 @@ When set, updates the component anchor and collidable based on the equipment's s
<dd><p>The collidable object representing the component's geometry.
The type of collidable returned depends on the component key:</p>
<ul>
<li>Workpiece: Runtime geometry</li>
<li>Workpiece: Meshed geometry</li>
<li>Fixture: Solid collidable</li>
<li>ToolHolder: Cylindroid or freeform holder solid</li>
<li>CutterShank: Upper beam topo brick solid</li>
@@ -172,6 +172,13 @@ bottom/top centers of geom). Only
<a class="xref" href="Hi.NcMech.Fixtures.Fixture.html#Hi_NcMech_Fixtures_Fixture_GeomToTableTransformer">GeomToTableTransformer</a> is mutated.</p>
<p>Returns the assigned translation, or <code>null</code> when workpiece /
fixture / Xyzabc machine tool is missing.</p>
<p>The alignment is computed in the machine-coordinate (MC) zero state: the
assembly is reflected and every <a class="xref" href="Hi.Mech.Topo.IDynamicRegular.html">IDynamicRegular</a> axis is set
to <code>Step = 0</code> before querying displacements. The live equipment may
have its axes moved, which would otherwise distort the
<code>ToolBuckle -&gt; FixtureTableBuckle</code> leg (it crosses the X/Y/Z/A/B/C
axes) and break the vector-chain assumption that the legs share a common
orientation — <code class="paramref">isoOffset</code> is itself an MC-zero quantity.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -321,6 +328,59 @@ The machine coordinate are all assumed to be zero.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetProgramToPnMat4d_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.GetProgramToPnMat4d*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_GetProgramToPnMat4d_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.GetProgramToPnMat4d(Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment)">
GetProgramToPnMat4d(IMachiningEquipment)
</h3>
<div class="markdown level1 summary"><p>Gets the rigid transform that maps a point in program (workpiece)
coordinates — the <a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_ProgramZeroAnchor">ProgramZeroAnchor</a> frame —
into the kinematic Pn frame (the chain's table-buckle anchor frame
that <a class="xref" href="Hi.Numerical.Xyzabc.XyzabcSolver.html">XyzabcSolver</a> solves in).</p>
<p>
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 <a class="xref" href="Hi.Mech.Topo.TopoReflection.html">TopoReflection</a> clone here would dominate
large-file parse time). Falls back to identity (program frame ≡
table-buckle frame) when the workpiece has no
<a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_ProgramZeroAnchor">ProgramZeroAnchor</a>; returns <code>null</code> when
the chain has no table buckle.
</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Mat4d GetProgramToPnMat4d(this IMachiningEquipment equipment)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>equipment</code> <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a></dt>
<dd><p>The machining equipment.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
<dd><p>The program→Pn transform, or <code>null</code>.</p>
</dd>
</dl>
</article>
@@ -102,7 +102,7 @@ Class MachiningToolHouse
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MachiningToolHouse : Dictionary&lt;object, IMachiningTool&gt;, IDictionary&lt;object, IMachiningTool&gt;, ICollection&lt;KeyValuePair&lt;object, IMachiningTool&gt;&gt;, IReadOnlyDictionary&lt;object, IMachiningTool&gt;, IReadOnlyCollection&lt;KeyValuePair&lt;object, IMachiningTool&gt;&gt;, IEnumerable&lt;KeyValuePair&lt;object, IMachiningTool&gt;&gt;, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public class MachiningToolHouse : Dictionary&lt;int, IMachiningTool&gt;, IDictionary&lt;int, IMachiningTool&gt;, ICollection&lt;KeyValuePair&lt;int, IMachiningTool&gt;&gt;, IReadOnlyDictionary&lt;int, IMachiningTool&gt;, IReadOnlyCollection&lt;KeyValuePair&lt;int, IMachiningTool&gt;&gt;, IEnumerable&lt;KeyValuePair&lt;int, IMachiningTool&gt;&gt;, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource</code></pre>
</div>
@@ -112,7 +112,7 @@ Class MachiningToolHouse
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><span class="xref">MachiningToolHouse</span></div>
</dd>
</dl>
@@ -120,11 +120,11 @@ Class MachiningToolHouse
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.idictionary-2">IDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1">ICollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlydictionary-2">IReadOnlyDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.idictionary-2">IDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1">ICollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlydictionary-2">IReadOnlyDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a>&gt;&gt;</div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.idictionary">IDictionary</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.icollection">ICollection</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.ienumerable">IEnumerable</a></div>
@@ -140,67 +140,67 @@ Class MachiningToolHouse
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.add">Dictionary&lt;object, IMachiningTool&gt;.Add(object, IMachiningTool)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.add">Dictionary&lt;int, IMachiningTool&gt;.Add(int, IMachiningTool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.clear">Dictionary&lt;object, IMachiningTool&gt;.Clear()</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.clear">Dictionary&lt;int, IMachiningTool&gt;.Clear()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.containskey">Dictionary&lt;object, IMachiningTool&gt;.ContainsKey(object)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.containskey">Dictionary&lt;int, IMachiningTool&gt;.ContainsKey(int)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.containsvalue">Dictionary&lt;object, IMachiningTool&gt;.ContainsValue(IMachiningTool)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.containsvalue">Dictionary&lt;int, IMachiningTool&gt;.ContainsValue(IMachiningTool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.ensurecapacity">Dictionary&lt;object, IMachiningTool&gt;.EnsureCapacity(int)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.ensurecapacity">Dictionary&lt;int, IMachiningTool&gt;.EnsureCapacity(int)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.getalternatelookup">Dictionary&lt;object, IMachiningTool&gt;.GetAlternateLookup&lt;TAlternateKey&gt;()</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.getalternatelookup">Dictionary&lt;int, IMachiningTool&gt;.GetAlternateLookup&lt;TAlternateKey&gt;()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.getenumerator">Dictionary&lt;object, IMachiningTool&gt;.GetEnumerator()</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.getenumerator">Dictionary&lt;int, IMachiningTool&gt;.GetEnumerator()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.ondeserialization">Dictionary&lt;object, IMachiningTool&gt;.OnDeserialization(object)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.ondeserialization">Dictionary&lt;int, IMachiningTool&gt;.OnDeserialization(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.remove#system-collections-generic-dictionary-2-remove(-0)">Dictionary&lt;object, IMachiningTool&gt;.Remove(object)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.remove#system-collections-generic-dictionary-2-remove(-0)">Dictionary&lt;int, IMachiningTool&gt;.Remove(int)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.remove#system-collections-generic-dictionary-2-remove(-0-1@)">Dictionary&lt;object, IMachiningTool&gt;.Remove(object, out IMachiningTool)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.remove#system-collections-generic-dictionary-2-remove(-0-1@)">Dictionary&lt;int, IMachiningTool&gt;.Remove(int, out IMachiningTool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trimexcess#system-collections-generic-dictionary-2-trimexcess">Dictionary&lt;object, IMachiningTool&gt;.TrimExcess()</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trimexcess#system-collections-generic-dictionary-2-trimexcess">Dictionary&lt;int, IMachiningTool&gt;.TrimExcess()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trimexcess#system-collections-generic-dictionary-2-trimexcess(system-int32)">Dictionary&lt;object, IMachiningTool&gt;.TrimExcess(int)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trimexcess#system-collections-generic-dictionary-2-trimexcess(system-int32)">Dictionary&lt;int, IMachiningTool&gt;.TrimExcess(int)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.tryadd">Dictionary&lt;object, IMachiningTool&gt;.TryAdd(object, IMachiningTool)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.tryadd">Dictionary&lt;int, IMachiningTool&gt;.TryAdd(int, IMachiningTool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trygetalternatelookup">Dictionary&lt;object, IMachiningTool&gt;.TryGetAlternateLookup&lt;TAlternateKey&gt;(out Dictionary&lt;object, IMachiningTool&gt;.AlternateLookup&lt;TAlternateKey&gt;)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trygetalternatelookup">Dictionary&lt;int, IMachiningTool&gt;.TryGetAlternateLookup&lt;TAlternateKey&gt;(out Dictionary&lt;int, IMachiningTool&gt;.AlternateLookup&lt;TAlternateKey&gt;)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trygetvalue">Dictionary&lt;object, IMachiningTool&gt;.TryGetValue(object, out IMachiningTool)</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.trygetvalue">Dictionary&lt;int, IMachiningTool&gt;.TryGetValue(int, out IMachiningTool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.comparer">Dictionary&lt;object, IMachiningTool&gt;.Comparer</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.comparer">Dictionary&lt;int, IMachiningTool&gt;.Comparer</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.count">Dictionary&lt;object, IMachiningTool&gt;.Count</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.count">Dictionary&lt;int, IMachiningTool&gt;.Count</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.capacity">Dictionary&lt;object, IMachiningTool&gt;.Capacity</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.capacity">Dictionary&lt;int, IMachiningTool&gt;.Capacity</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.item">Dictionary&lt;object, IMachiningTool&gt;.this[object]</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.item">Dictionary&lt;int, IMachiningTool&gt;.this[int]</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.keys">Dictionary&lt;object, IMachiningTool&gt;.Keys</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.keys">Dictionary&lt;int, IMachiningTool&gt;.Keys</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.values">Dictionary&lt;object, IMachiningTool&gt;.Values</a>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2.values">Dictionary&lt;int, IMachiningTool&gt;.Values</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
@@ -303,8 +303,8 @@ Class MachiningToolHouse
<a id="Hi_Machining_MachiningToolHouse__ctor_" data-uid="Hi.Machining.MachiningToolHouse.#ctor*"></a>
<h3 id="Hi_Machining_MachiningToolHouse__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_System_Object__" data-uid="Hi.Machining.MachiningToolHouse.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{System.Object})">
MachiningToolHouse(XElement, string, string, IProgress&lt;object&gt;)
<h3 id="Hi_Machining_MachiningToolHouse__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Machining.MachiningToolHouse.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
MachiningToolHouse(XElement, string, string, IProgress&lt;IMessage&gt;)
</h3>
@@ -313,7 +313,7 @@ Class MachiningToolHouse
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -327,7 +327,7 @@ Class MachiningToolHouse
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative file path</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>The progress reporter.</p>
</dd>
</dl>
@@ -396,13 +396,13 @@ The tool ID is 1 if no tool existed; otherwise, the tool ID is the max tool ID p
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public KeyValuePair&lt;object, MillingTool&gt; CreateStickMillingTool()</code></pre>
<pre><code class="lang-csharp hljs">public KeyValuePair&lt;int, MillingTool&gt; CreateStickMillingTool()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="Hi.Milling.MillingTools.MillingTool.html">MillingTool</a>&gt;</dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Milling.MillingTools.MillingTool.html">MillingTool</a>&gt;</dt>
<dd><p>the generated tool id and the generated tool</p>
</dd>
</dl>
@@ -504,8 +504,8 @@ Since the folder can be moving with the configuration file.</p>
<a id="Hi_Machining_MachiningToolHouse_SetToolId_" data-uid="Hi.Machining.MachiningToolHouse.SetToolId*"></a>
<h3 id="Hi_Machining_MachiningToolHouse_SetToolId_System_Object_Hi_Machining_IMachiningTool_" data-uid="Hi.Machining.MachiningToolHouse.SetToolId(System.Object,Hi.Machining.IMachiningTool)">
SetToolId(object, IMachiningTool)
<h3 id="Hi_Machining_MachiningToolHouse_SetToolId_System_Int32_Hi_Machining_IMachiningTool_" data-uid="Hi.Machining.MachiningToolHouse.SetToolId(System.Int32,Hi.Machining.IMachiningTool)">
SetToolId(int, IMachiningTool)
</h3>
@@ -514,12 +514,12 @@ Since the folder can be moving with the configuration file.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SetToolId(object toolId, IMachiningTool millingTool)</code></pre>
<pre><code class="lang-csharp hljs">public void SetToolId(int toolId, IMachiningTool millingTool)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>toolId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dt><code>toolId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dt><code>millingTool</code> <a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a></dt>
<dd></dd>
@@ -260,10 +260,10 @@ Class Sweptable
<a id="Hi_Machining_Sweptable_NativeTopoStl_" data-uid="Hi.Machining.Sweptable.NativeTopoStl*"></a>
<a id="Hi_Machining_Sweptable_NativeTopoStl3d_" data-uid="Hi.Machining.Sweptable.NativeTopoStl3d*"></a>
<h3 id="Hi_Machining_Sweptable_NativeTopoStl" data-uid="Hi.Machining.Sweptable.NativeTopoStl">
NativeTopoStl
<h3 id="Hi_Machining_Sweptable_NativeTopoStl3d" data-uid="Hi.Machining.Sweptable.NativeTopoStl3d">
NativeTopoStl3d
</h3>
@@ -272,7 +272,7 @@ Class Sweptable
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeTopoStld NativeTopoStl { get; }</code></pre>
<pre><code class="lang-csharp hljs">public NativeTopoStl3d NativeTopoStl3d { get; }</code></pre>
</div>
@@ -281,7 +281,7 @@ Class Sweptable
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.NativeTopoStld.html">NativeTopoStld</a></dt>
<dt><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd><p>geoemtry</p>
</dd>
</dl>
@@ -293,10 +293,10 @@ Class Sweptable
<a id="Hi_Machining_Sweptable_NativeTopoStlfr_" data-uid="Hi.Machining.Sweptable.NativeTopoStlfr*"></a>
<a id="Hi_Machining_Sweptable_NativeTopoStl3wfr_" data-uid="Hi.Machining.Sweptable.NativeTopoStl3wfr*"></a>
<h3 id="Hi_Machining_Sweptable_NativeTopoStlfr" data-uid="Hi.Machining.Sweptable.NativeTopoStlfr">
NativeTopoStlfr
<h3 id="Hi_Machining_Sweptable_NativeTopoStl3wfr" data-uid="Hi.Machining.Sweptable.NativeTopoStl3wfr">
NativeTopoStl3wfr
</h3>
@@ -305,7 +305,7 @@ Class Sweptable
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeTopoStlfr NativeTopoStlfr { get; }</code></pre>
<pre><code class="lang-csharp hljs">public NativeTopoStl3wfr NativeTopoStl3wfr { get; }</code></pre>
</div>
@@ -314,7 +314,7 @@ Class Sweptable
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.NativeTopoStlfr.html">NativeTopoStlfr</a></dt>
<dt><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3wfr.html">NativeTopoStl3wfr</a></dt>
<dd></dd>
</dl>
@@ -153,6 +153,68 @@ Class SweptableUtil
</h2>
<a id="Hi_Machining_SweptableUtil_AddBySweepingVolume_" data-uid="Hi.Machining.SweptableUtil.AddBySweepingVolume*"></a>
<h3 id="Hi_Machining_SweptableUtil_AddBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Machining.SweptableUtil.AddBySweepingVolume(Hi.Cbtr.CubeTree,Hi.Machining.IGetSweptable,Hi.Geom.Mat4d,Hi.Geom.Mat4d,System.Double,System.Double,System.Boolean,System.Boolean)">
AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Add volume by sweeping volume — the boolean-union dual of
<a class="xref" href="Hi.Machining.SweptableUtil.html#Hi_Machining_SweptableUtil_RemoveBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_">RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)</a>. Deposits the swept solid into the geometry
(additive manufacturing: weld / cladding / FDM bead), rather than removing it.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">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)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cubeTree</code> <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a></dt>
<dd><p>geom to be volume-added</p>
</dd>
<dt><code>sweptable</code> <a class="xref" href="Hi.Machining.IGetSweptable.html">IGetSweptable</a></dt>
<dd><p>swaptable</p>
</dd>
<dt><code>beginMat</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
<dd><p>previous transformation matrix in sequence</p>
</dd>
<dt><code>endMat</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
<dd><p>current transformation matrix in sequence</p>
</dd>
<dt><code>preferredCubeWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>preferred cube width for the operation, defaults to cubeTree's resolution if 0</p>
</dd>
<dt><code>fractionTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>fraction tolerance for the sweptable, defaults to preferredCubeWidth * 1e-4 if 0</p>
</dd>
<dt><code>enableBuildingContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>enable building contours of the newly created surface</p>
</dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>whether to use aggressive adding mode</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd><p>Addition</p>
</dd>
</dl>
<a id="Hi_Machining_SweptableUtil_RemoveBySweepingVolume_" data-uid="Hi.Machining.SweptableUtil.RemoveBySweepingVolume*"></a>
<h3 id="Hi_Machining_SweptableUtil_RemoveBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Machining.SweptableUtil.RemoveBySweepingVolume(Hi.Cbtr.CubeTree,Hi.Machining.IGetSweptable,Hi.Geom.Mat4d,Hi.Geom.Mat4d,System.Double,System.Double,System.Boolean,System.Boolean)">
@@ -0,0 +1,307 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AllowNoActiveSessionAttribute | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AllowNoActiveSessionAttribute | HiAPI-C# 2025 ">
<meta name="description" content="Marks a session-scoped controller action as callable without an active session, exempting it from . Use on the session lifecycle entry points (BeginSession / EndSession), which by definition run when no session exists yet.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.MachiningProcs.AllowNoActiveSessionAttribute">
<h1 id="Hi_MachiningProcs_AllowNoActiveSessionAttribute" data-uid="Hi.MachiningProcs.AllowNoActiveSessionAttribute" class="text-break">
Class AllowNoActiveSessionAttribute
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.MachiningProcs.html">MachiningProcs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Marks a session-scoped controller action as callable without an active session, exempting it
from <a class="xref" href="Hi.MachiningProcs.RequireActiveSessionAttribute.html">RequireActiveSessionAttribute</a>. Use on the session lifecycle entry points
(BeginSession / EndSession), which by definition run when no session exists yet.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class AllowNoActiveSessionAttribute : Attribute</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute">Attribute</a></div>
<div><span class="xref">AllowNoActiveSessionAttribute</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.equals">Attribute.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type)">Attribute.GetCustomAttribute(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type-system-boolean)">Attribute.GetCustomAttribute(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type)">Attribute.GetCustomAttribute(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type-system-boolean)">Attribute.GetCustomAttribute(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type)">Attribute.GetCustomAttribute(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type-system-boolean)">Attribute.GetCustomAttribute(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type)">Attribute.GetCustomAttribute(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.GetCustomAttribute(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly)">Attribute.GetCustomAttributes(Assembly)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-boolean)">Attribute.GetCustomAttributes(Assembly, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type)">Attribute.GetCustomAttributes(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type-system-boolean)">Attribute.GetCustomAttributes(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo)">Attribute.GetCustomAttributes(MemberInfo)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-boolean)">Attribute.GetCustomAttributes(MemberInfo, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type)">Attribute.GetCustomAttributes(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type-system-boolean)">Attribute.GetCustomAttributes(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module)">Attribute.GetCustomAttributes(Module)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-boolean)">Attribute.GetCustomAttributes(Module, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type)">Attribute.GetCustomAttributes(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type-system-boolean)">Attribute.GetCustomAttributes(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo)">Attribute.GetCustomAttributes(ParameterInfo)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-boolean)">Attribute.GetCustomAttributes(ParameterInfo, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type)">Attribute.GetCustomAttributes(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.GetCustomAttributes(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.gethashcode">Attribute.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefaultattribute">Attribute.IsDefaultAttribute()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type)">Attribute.IsDefined(Assembly, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type-system-boolean)">Attribute.IsDefined(Assembly, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type)">Attribute.IsDefined(MemberInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type-system-boolean)">Attribute.IsDefined(MemberInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type)">Attribute.IsDefined(Module, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type-system-boolean)">Attribute.IsDefined(Module, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type)">Attribute.IsDefined(ParameterInfo, Type)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type-system-boolean)">Attribute.IsDefined(ParameterInfo, Type, bool)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.match">Attribute.Match(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.attribute.typeid">Attribute.TypeId</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More