2025-12-18 11:09:45 +08:00

1439 lines
44 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CubeTree | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CubeTree | HiAPI-C# 2025 ">
<meta name="description" content="Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition.">
<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.Cbtr.CubeTree">
<h1 id="Hi_Cbtr_CubeTree" data-uid="Hi.Cbtr.CubeTree" class="text-break">
Class CubeTree
</h1>
<div class="facts text-secondary">
<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>Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class CubeTree : IDisposable, IDisplayee, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable</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">CubeTree</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.Collision.ICollidee.html">ICollidee</a></div>
<div><a class="xref" href="Hi.Collision.ICollidable.html">ICollidable</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Collision.IGetCollidable.html">IGetCollidable</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.Collision.CollisionUtil.html#Hi_Collision_CollisionUtil_Detect_Hi_Cbtr_CubeTree_Hi_Collision_TriTree_Hi_Geom_Mat4d_System_Double_System_Int32_">CollisionUtil.Detect(CubeTree, TriTree, Mat4d, double, int)</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.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>
<div>
<a class="xref" href="Hi.Collision.CollisionUtil.html#Hi_Collision_CollisionUtil_Detect_Hi_Collision_ICollidable_Hi_Collision_ICollidable_Hi_Geom_Mat4d_System_Double_System_Int32_">CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int)</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>
<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_Cbtr_CubeTree__ctor_" data-uid="Hi.Cbtr.CubeTree.#ctor*"></a>
<h3 id="Hi_Cbtr_CubeTree__ctor_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_NativeProgresses_IProgressReport__" data-uid="Hi.Cbtr.CubeTree.#ctor(Hi.Geom.NativeStl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.NativeProgresses.IProgressReport})">
CubeTree(NativeStl, double, CancellationToken, IProgress&lt;IProgressReport&gt;)
</h3>
<div class="markdown level1 summary"><p>Ctor.
This ctor is faster than <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree__ctor_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_NativeProgresses_IProgressReport__">CubeTree(NativeStl, double, CancellationToken, IProgress&lt;IProgressReport&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;IProgressReport&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stl</code> <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd><p>Triangle Grid. The triangles must be manifold geometry.</p>
</dd>
<dt><code>preferredGridWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The expected resolution.</p>
</dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Cancellation token for the operation</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="Hi.Common.NativeProgresses.IProgressReport.html">IProgressReport</a>&gt;</dt>
<dd><p>Progress reporter for the operation</p>
</dd>
</dl>
<h4 class="section" id="Hi_Cbtr_CubeTree__ctor_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_NativeProgresses_IProgressReport___remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The applied resolution is equal or smaller than the expected resolution.
The applied resolution is c*(2^i). Where c is a constant; i is a integer to make the closest value of the formula.
與輸入幾何的誤差分布在菱角及曲面處。</p>
</div>
<a id="Hi_Cbtr_CubeTree__ctor_" data-uid="Hi.Cbtr.CubeTree.#ctor*"></a>
<h3 id="Hi_Cbtr_CubeTree__ctor_Hi_Geom_Stl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_NativeProgresses_IProgressReport__" data-uid="Hi.Cbtr.CubeTree.#ctor(Hi.Geom.Stl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.NativeProgresses.IProgressReport})">
CubeTree(Stl, double, CancellationToken, IProgress&lt;IProgressReport&gt;)
</h3>
<div class="markdown level1 summary"><p>可使用Stl或NativeStl物件初始化使用NativeStl的速度較快。輸入的三角網格必須是流形幾何(manifold geometry),即三角形的頂點對齊其他三角形的頂點,且為封閉幾何。</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CubeTree(Stl stl, double expectedResolution, CancellationToken token, IProgress&lt;IProgressReport&gt; progress)</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></dd>
<dt><code>expectedResolution</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>設定裕度實際裕度會小於等於設定裕度大約以2的指數作為級距。
與輸入幾何的誤差分布在菱角及曲面處。</p>
</dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Cancellation token for the operation</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="Hi.Common.NativeProgresses.IProgressReport.html">IProgressReport</a>&gt;</dt>
<dd><p>Progress reporter for the operation</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree__ctor_" data-uid="Hi.Cbtr.CubeTree.#ctor*"></a>
<h3 id="Hi_Cbtr_CubeTree__ctor_System_String_" data-uid="Hi.Cbtr.CubeTree.#ctor(System.String)">
CubeTree(string)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a> class from a file.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CubeTree(string file)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>file</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path to the cube tree file.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Cbtr_CubeTree_KeyDll" data-uid="Hi.Cbtr.CubeTree.KeyDll">
KeyDll
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string KeyDll = &quot;hi-key.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_Cbtr_CubeTree_defaultPreferredGridWidth" data-uid="Hi.Cbtr.CubeTree.defaultPreferredGridWidth">
defaultPreferredGridWidth
</h3>
<div class="markdown level1 summary"><p>The default grid_width for the constructor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const double defaultPreferredGridWidth = 0.0625</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Cbtr_CubeTree_CollisionFlag_" data-uid="Hi.Cbtr.CubeTree.CollisionFlag*"></a>
<h3 id="Hi_Cbtr_CubeTree_CollisionFlag" data-uid="Hi.Cbtr.CubeTree.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_CubetreePtr_" data-uid="Hi.Cbtr.CubeTree.CubetreePtr*"></a>
<h3 id="Hi_Cbtr_CubeTree_CubetreePtr" data-uid="Hi.Cbtr.CubeTree.CubetreePtr">
CubetreePtr
</h3>
<div class="markdown level1 summary"><p>Private element.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public nint CubetreePtr { 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_Cbtr_CubeTree_DispCacheMb_" data-uid="Hi.Cbtr.CubeTree.DispCacheMb*"></a>
<h3 id="Hi_Cbtr_CubeTree_DispCacheMb" data-uid="Hi.Cbtr.CubeTree.DispCacheMb">
DispCacheMb
</h3>
<div class="markdown level1 summary"><p>Display cache size in Mb. The cahce cost from graphic card and RAM.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static long DispCacheMb { 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.int64">long</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">
Resolution
</h3>
<div class="markdown level1 summary"><p>Get initialized resolution.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double Resolution { 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.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_TotalCacheMb_" data-uid="Hi.Cbtr.CubeTree.TotalCacheMb*"></a>
<h3 id="Hi_Cbtr_CubeTree_TotalCacheMb" data-uid="Hi.Cbtr.CubeTree.TotalCacheMb">
TotalCacheMb
</h3>
<div class="markdown level1 summary"><p>Cache size used by <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a>.
Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb">TrisCacheMb</a> and <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DispCacheMb">DispCacheMb</a>.
<a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TotalCacheMb">TotalCacheMb</a> Setter distributes (2/5 of the setting value) for <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DispCacheMb">DispCacheMb</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static long TotalCacheMb { 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.int64">long</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_TrisCacheMb_" data-uid="Hi.Cbtr.CubeTree.TrisCacheMb*"></a>
<h3 id="Hi_Cbtr_CubeTree_TrisCacheMb" data-uid="Hi.Cbtr.CubeTree.TrisCacheMb">
TrisCacheMb
</h3>
<div class="markdown level1 summary"><p>Triangles cache size in Mb. The cache costs from RAM.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static long TrisCacheMb { 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.int64">long</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<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">
CleanCache()
</h3>
<div class="markdown level1 summary"><p>Call <span class="xref">Hi.Cbtr.CubeTree.CleanTrisCache()</span> and <span class="xref">Hi.Cbtr.CubeTree.CleanDispCache_()</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void CleanCache()</code></pre>
</div>
<a id="Hi_Cbtr_CubeTree_CleanDispCachee_" data-uid="Hi.Cbtr.CubeTree.CleanDispCachee*"></a>
<h3 id="Hi_Cbtr_CubeTree_CleanDispCachee" data-uid="Hi.Cbtr.CubeTree.CleanDispCachee">
CleanDispCachee()
</h3>
<div class="markdown level1 summary"><p>Clean display cache of <code>this</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void CleanDispCachee()</code></pre>
</div>
<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_Hi_Common_NativeProgresses_IProgressReport__" data-uid="Hi.Cbtr.CubeTree.Diff(Hi.Geom.NativeStl,System.Double,Hi.Coloring.RangeColorRule,System.IProgress{Hi.Common.NativeProgresses.IProgressReport})">
Diff(NativeStl, double, RangeColorRule, IProgress&lt;IProgressReport&gt;)
</h3>
<div class="markdown level1 summary"><p>Compares the cube tree with an ideal geometry and returns difference attachments.</p>
</div>
<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;IProgressReport&gt; progress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>idealGeom</code> <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd><p>The ideal geometry to compare with.</p>
</dd>
<dt><code>diffRadius</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The radius for difference detection.</p>
</dd>
<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="Hi.Common.NativeProgresses.IProgressReport.html">IProgressReport</a>&gt;</dt>
<dd><p>Progress reporter for the operation.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.concurrent.concurrentbag-1">ConcurrentBag</a>&lt;<a class="xref" href="Hi.Cbtr.DiffAttachment.html">DiffAttachment</a>&gt;</dt>
<dd><p>A collection of difference attachments.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Display_" data-uid="Hi.Cbtr.CubeTree.Display*"></a>
<h3 id="Hi_Cbtr_CubeTree_Display_Hi_Disp_Bind_" data-uid="Hi.Cbtr.CubeTree.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_Cbtr_CubeTree_Dispose_" data-uid="Hi.Cbtr.CubeTree.Dispose*"></a>
<h3 id="Hi_Cbtr_CubeTree_Dispose" data-uid="Hi.Cbtr.CubeTree.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_CubeTree_Dispose_" data-uid="Hi.Cbtr.CubeTree.Dispose*"></a>
<h3 id="Hi_Cbtr_CubeTree_Dispose_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.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_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)">
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_Cbtr_CubeTree_Finalize_" data-uid="Hi.Cbtr.CubeTree.Finalize*"></a>
<h3 id="Hi_Cbtr_CubeTree_Finalize" data-uid="Hi.Cbtr.CubeTree.Finalize">
~CubeTree()
</h3>
<div class="markdown level1 summary"><p>dtor</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected ~CubeTree()</code></pre>
</div>
<a id="Hi_Cbtr_CubeTree_GetCollidable_" data-uid="Hi.Cbtr.CubeTree.GetCollidable*"></a>
<h3 id="Hi_Cbtr_CubeTree_GetCollidable" data-uid="Hi.Cbtr.CubeTree.GetCollidable">
GetCollidable()
</h3>
<div class="markdown level1 summary"><p>Gets the collidable object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ICollidable GetCollidable()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.ICollidable.html">ICollidable</a></dt>
<dd><p>The collidable object (this instance).</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_GetCollidee_" data-uid="Hi.Cbtr.CubeTree.GetCollidee*"></a>
<h3 id="Hi_Cbtr_CubeTree_GetCollidee" data-uid="Hi.Cbtr.CubeTree.GetCollidee">
GetCollidee()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ICollidee GetCollidee()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a></dt>
<dd><p><a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a></p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_GetRgbTrisNativeArray_" data-uid="Hi.Cbtr.CubeTree.GetRgbTrisNativeArray*"></a>
<h3 id="Hi_Cbtr_CubeTree_GetRgbTrisNativeArray_System_Double_" data-uid="Hi.Cbtr.CubeTree.GetRgbTrisNativeArray(System.Double)">
GetRgbTrisNativeArray(double)
</h3>
<div class="markdown level1 summary"><p>Get triangles in type of double array. The returned triangles is non-manifold.
It may not be closed model and the apexes of triangle grid may not be overlapped.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double[] GetRgbTrisNativeArray(double resolution = 0)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The preferred resolution.
The real resolution may be smaller or equal the prefered resolution.
The real resolution is discrete. The resolution value is at 2^i.
The geometric error mainly locate at corner.</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>rgb traingle grid.
In sequence of r,g,b,n.x,n.y,n.z,p0.x,p0.y,p0.z,p1.x,p1.y,p1.z,p2.x,p2.y,p2.z, repetitively.
A triangle take 15 double.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_GetTris_" data-uid="Hi.Cbtr.CubeTree.GetTris*"></a>
<h3 id="Hi_Cbtr_CubeTree_GetTris_System_Double_" data-uid="Hi.Cbtr.CubeTree.GetTris(System.Double)">
GetTris(double)
</h3>
<div class="markdown level1 summary"><p>Get triangles. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;Tri3d&gt; GetTris(double resolution = 0)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>設定裕度實際裕度會小於等於設定裕度大約以2的指數作為級距。與輸入幾何的誤差分布在菱角及曲面處。裕度越大三角網格數量越少運算也較迅速。</p>
</dd>
</dl>
<h4 class="section">Returns</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.Geom.Tri3d.html">Tri3d</a>&gt;</dt>
<dd><p>三角網格</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_RebuildAttach_" data-uid="Hi.Cbtr.CubeTree.RebuildAttach*"></a>
<h3 id="Hi_Cbtr_CubeTree_RebuildAttach_Hi_Cbtr_CbtrPickable_" data-uid="Hi.Cbtr.CubeTree.RebuildAttach(Hi.Cbtr.CbtrPickable)">
RebuildAttach(CbtrPickable)
</h3>
<div class="markdown level1 summary"><p>Every node in <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a> can contain one <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a> object.
This function put or replace the contained data of all nodes to <code class="paramref">src</code>.
使用<a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_UpdateAttach_Hi_Cbtr_CbtrPickable_">UpdateAttach(CbtrPickable)</a>會將尚未儲存資料(<a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a>為null)的節點放入src。</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RebuildAttach(CbtrPickable src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_RemoveFlyPiece_" data-uid="Hi.Cbtr.CubeTree.RemoveFlyPiece*"></a>
<h3 id="Hi_Cbtr_CubeTree_RemoveFlyPiece" data-uid="Hi.Cbtr.CubeTree.RemoveFlyPiece">
RemoveFlyPiece()
</h3>
<div class="markdown level1 summary"><p>Removes disconnected pieces (fly pieces) from the cube tree.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RemoveFlyPiece()</code></pre>
</div>
<a id="Hi_Cbtr_CubeTree_Substract_" data-uid="Hi.Cbtr.CubeTree.Substract*"></a>
<h3 id="Hi_Cbtr_CubeTree_Substract_Hi_Cbtr_CachedTris_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Substract(Hi.Cbtr.CachedTris,System.Double,System.Boolean,System.Boolean)">
Substract(CachedTris, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>使用BufferedTris效率比NativeStl好。
若差集區域的裕度與本體的裕度不同,則該部位採用較低的裕度。</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedSubstraction Substract(CachedTris cutterBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cutterBufferedTris</code> <a class="xref" href="Hi.Cbtr.CachedTris.html">CachedTris</a></dt>
<dd><p>差集幾何</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>為真則回傳的Substraction中含有差集幾何與工件幾何相交處的圍線群該圍線群可做後續分析使用。</p>
</dd>
<dt><code>isAggressiveCut</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive cutting mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedSubstraction.html">UnmanagedSubstraction</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Substract_" data-uid="Hi.Cbtr.CubeTree.Substract*"></a>
<h3 id="Hi_Cbtr_CubeTree_Substract_Hi_Cbtr_GeomBoolCache_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Substract(Hi.Cbtr.GeomBoolCache,System.Boolean,System.Boolean)">
Substract(GeomBoolCache, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Subtracts a geometry from 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 UnmanagedSubstraction Substract(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveCut = 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 subtract.</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 Substraction will contain contact contours.</p>
</dd>
<dt><code>isAggressiveCut</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive cutting mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedSubstraction.html">UnmanagedSubstraction</a></dt>
<dd><p>The result of the subtraction operation.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Substract_" data-uid="Hi.Cbtr.CubeTree.Substract*"></a>
<h3 id="Hi_Cbtr_CubeTree_Substract_Hi_Cbtr_InitStickConvex_Hi_Geom_Mat4d_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Substract(Hi.Cbtr.InitStickConvex,Hi.Geom.Mat4d,System.Double,System.Boolean,System.Boolean)">
Substract(InitStickConvex, Mat4d, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Subtracts a stick convex geometry from the cube tree.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedSubstraction Substract(InitStickConvex initStickConvex, Mat4d mat, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>initStickConvex</code> <a class="xref" href="Hi.Cbtr.InitStickConvex.html">InitStickConvex</a></dt>
<dd><p>The stick convex geometry to subtract.</p>
</dd>
<dt><code>mat</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
<dd><p>The transformation matrix to apply to the stick convex.</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 Substraction will contain contact contours.</p>
</dd>
<dt><code>isAggressiveCut</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive cutting mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedSubstraction.html">UnmanagedSubstraction</a></dt>
<dd><p>The result of the subtraction operation.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Substract_" data-uid="Hi.Cbtr.CubeTree.Substract*"></a>
<h3 id="Hi_Cbtr_CubeTree_Substract_Hi_Geom_NativeStl_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Substract(Hi.Geom.NativeStl,System.Double,System.Boolean,System.Boolean)">
Substract(NativeStl, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>與Substract(BufferedTris,...)同功能。效率較差,多了一個轉換<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 UnmanagedSubstraction Substract(NativeStl cutterStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveCut = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cutterStl</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>isAggressiveCut</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.UnmanagedSubstraction.html">UnmanagedSubstraction</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_TestDiff_" data-uid="Hi.Cbtr.CubeTree.TestDiff*"></a>
<h3 id="Hi_Cbtr_CubeTree_TestDiff_Hi_Cbtr_CubeTree__Hi_Geom_NativeStl__" data-uid="Hi.Cbtr.CubeTree.TestDiff(Hi.Cbtr.CubeTree@,Hi.Geom.NativeStl@)">
TestDiff(out CubeTree, out NativeStl)
</h3>
<div class="markdown level1 summary"><p>Tests the difference calculation between a cube tree and an ideal geometry.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void TestDiff(out CubeTree cubeTree_, out NativeStl idealGeom_)</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>The resulting cube tree.</p>
</dd>
<dt><code>idealGeom_</code> <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd><p>The ideal geometry used for comparison.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_TestIO_" data-uid="Hi.Cbtr.CubeTree.TestIO*"></a>
<h3 id="Hi_Cbtr_CubeTree_TestIO" data-uid="Hi.Cbtr.CubeTree.TestIO">
TestIO()
</h3>
<div class="markdown level1 summary"><p>Tests the input/output operations for a cube tree.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static CubeTree TestIO()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a></dt>
<dd><p>The cube tree created or loaded during the test.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_TestSimpleRemove_" data-uid="Hi.Cbtr.CubeTree.TestSimpleRemove*"></a>
<h3 id="Hi_Cbtr_CubeTree_TestSimpleRemove_Hi_Cbtr_CubeTree__" data-uid="Hi.Cbtr.CubeTree.TestSimpleRemove(Hi.Cbtr.CubeTree@)">
TestSimpleRemove(out CubeTree)
</h3>
<div class="markdown level1 summary"><p>Tests the simple removal operation on a cube tree.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void TestSimpleRemove(out CubeTree cubeTree_)</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>The resulting cube tree after the removal operation.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_UpdateAttach_" data-uid="Hi.Cbtr.CubeTree.UpdateAttach*"></a>
<h3 id="Hi_Cbtr_CubeTree_UpdateAttach_Hi_Cbtr_CbtrPickable_" data-uid="Hi.Cbtr.CubeTree.UpdateAttach(Hi.Cbtr.CbtrPickable)">
UpdateAttach(CbtrPickable)
</h3>
<div class="markdown level1 summary"><p>Every node in <a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a> can contain one <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a> object.
This function put <code class="paramref">src</code> to the nodes that contain null.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateAttach(CbtrPickable src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</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)">
WriteFile(string)
</h3>
<div class="markdown level1 summary"><p>Writes the cube tree to a file.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void WriteFile(string file)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>file</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path where the cube tree will be written.</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>