This repository has been archived on 2026-10-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Solids.Solid.html
T
2026-09-09 17:35:23 +08:00

1269 lines
36 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class Solid | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class Solid | HiAPI-C# 2025 ">
<meta name="description" content="Represents a solid geometry object with display, collision detection, and STL capabilities. Provides thread-safe access to geometry data and caching mechanisms.">
<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.NcMech.Solids.Solid">
<h1 id="Hi_NcMech_Solids_Solid" data-uid="Hi.NcMech.Solids.Solid" class="text-break">
Class Solid
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Solids.html">Solids</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a solid geometry object with display, collision detection, and STL capabilities.
Provides thread-safe access to geometry data and caching mechanisms.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class Solid : IGetTriTree, ICollidable, IGetCollidable, IDisplayee, IExpandToBox3d, IStlSource, IGetStl, IDisposable, IMakeXmlSource, IGetSolid, IUpdateByContent, IClearCache</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">Solid</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.Collision.IGetTriTree.html">IGetTriTree</a></div>
<div><a class="xref" href="Hi.Collision.ICollidable.html">ICollidable</a></div>
<div><a class="xref" href="Hi.Collision.IGetCollidable.html">IGetCollidable</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>
<div><a class="xref" href="Hi.Geom.IStlSource.html">IStlSource</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.NcMech.Solids.IGetSolid.html">IGetSolid</a></div>
<div><a class="xref" href="Hi.Common.IUpdateByContent.html">IUpdateByContent</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</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.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.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</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 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor" data-uid="Hi.NcMech.Solids.Solid.#ctor">
Solid()
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid()</code></pre>
</div>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor_Hi_Geom_IGetStl_" data-uid="Hi.NcMech.Solids.Solid.#ctor(Hi.Geom.IGetStl)">
Solid(IGetStl)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> class with the specified STL geometry source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid(IGetStl geom)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>geom</code> <a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd><p>The STL geometry source.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor_Hi_Geom_IGetStl_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.NcMech.Solids.Solid.#ctor(Hi.Geom.IGetStl,Hi.Geom.Resolution.PolarResolution2d)">
Solid(IGetStl, PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> class with the
specified STL geometry source and the mesh resolution the solid is born
with (see <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_PolarResolution2d">PolarResolution2d</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid(IGetStl geom, PolarResolution2d polarResolution2d)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>geom</code> <a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd><p>The STL geometry source.</p>
</dd>
<dt><code>polarResolution2d</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Mesh resolution snapshot; null lets the geometry apply its own default.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.NcMech.Solids.Solid.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
Solid(XElement, string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> class from XML.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>The XML source element.</p>
</dd>
<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="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>The progress reporter.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcMech_Solids_Solid_XName" data-uid="Hi.NcMech.Solids.Solid.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Gets the XML element name for serialization.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string XName</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="properties">Properties
</h2>
<a id="Hi_NcMech_Solids_Solid_Geom_" data-uid="Hi.NcMech.Solids.Solid.Geom*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Geom" data-uid="Hi.NcMech.Solids.Solid.Geom">
Geom
</h3>
<div class="markdown level1 summary"><p>Gets or sets the STL geometry source.
Setting this property will clear the cached data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IGetStl Geom { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_NativeStl_" data-uid="Hi.NcMech.Solids.Solid.NativeStl*"></a>
<h3 id="Hi_NcMech_Solids_Solid_NativeStl" data-uid="Hi.NcMech.Solids.Solid.NativeStl">
NativeStl
</h3>
<div class="markdown level1 summary"><p>Gets the native STL representation.
The data is created from the STL representation when first accessed, and
is null once this solid is disposed — a disposed solid never rebuilds.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeStl NativeStl { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_PolarResolution2d_" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2d*"></a>
<h3 id="Hi_NcMech_Solids_Solid_PolarResolution2d" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2d">
PolarResolution2d
</h3>
<div class="markdown level1 summary"><p>The mesh resolution this solid's runtime products are generated with —
part of the solid's identity, fixed at construction (a defensive copy, so
later mutation of the caller's carrier cannot reach it). Null lets a
parametric <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Geom">Geom</a> apply its own default. To change the
resolution, build a new <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> (and dispose the old one);
there is no in-place mutation or invalidation protocol. Never serialized:
resolution is runtime data, not authored content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public PolarResolution2d PolarResolution2d { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_Prepared_" data-uid="Hi.NcMech.Solids.Solid.Prepared*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Prepared" data-uid="Hi.NcMech.Solids.Solid.Prepared">
Prepared
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether the solid geometry is prepared for use.
Setting this to true will ensure all necessary data structures are initialized.
Setting this to false will clear the cached data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool Prepared { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_Rgb_" data-uid="Hi.NcMech.Solids.Solid.Rgb*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Rgb" data-uid="Hi.NcMech.Solids.Solid.Rgb">
Rgb
</h3>
<div class="markdown level1 summary"><p>Optional authored display color (RGB, each channel 0~1). Null means not
authored: display sites fall back to a color seeded from the hosting
anchor's persisted Guid, and <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_">Display(Bind)</a> pushes no color
of its own. Collision red from the ambient scene scope
(<a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.html">CollisionRedScope</a> — stamped by the detecting equipment)
always wins over the authored color.
Serialized as the optional <code>Rgb</code> attribute of the
<code>&lt;Solid&gt;</code> element; legacy readers ignore attributes, so the
addition is backward and forward compatible.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d Rgb { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_SmoothTopoStl3d_" data-uid="Hi.NcMech.Solids.Solid.SmoothTopoStl3d*"></a>
<h3 id="Hi_NcMech_Solids_Solid_SmoothTopoStl3d" data-uid="Hi.NcMech.Solids.Solid.SmoothTopoStl3d">
SmoothTopoStl3d
</h3>
<div class="markdown level1 summary"><p>Gets the native smooth topology STL representation.
The data is created from the STL representation when first accessed, and
is null once this solid is disposed — a disposed solid never rebuilds.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NativeTopoStl3d SmoothTopoStl3d { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Topo.NativeTopoStl3d.html">NativeTopoStl3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_Stl_" data-uid="Hi.NcMech.Solids.Solid.Stl*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Stl" data-uid="Hi.NcMech.Solids.Solid.Stl">
Stl
</h3>
<div class="markdown level1 summary"><p>Gets the STL representation of the solid geometry.
The STL data is cached after first access, and null once this solid is
disposed. Note this is normally the geometry model's own instance, not a
private copy: a <a class="xref" href="Hi.Geom.StlFile.html">StlFile</a> source hands back the very
<code>CacheStl</code> it holds for its lifetime, so dropping this field frees
nothing for file-backed geometry. Do not mutate the returned mesh.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl Stl { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_TriTree_" data-uid="Hi.NcMech.Solids.Solid.TriTree*"></a>
<h3 id="Hi_NcMech_Solids_Solid_TriTree" data-uid="Hi.NcMech.Solids.Solid.TriTree">
TriTree
</h3>
<div class="markdown level1 summary"><p>Gets the triangle tree representation for collision detection.
The tree is built from the native STL data when first accessed, and is
null once this solid is disposed — a disposed solid never rebuilds, and
<a class="xref" href="Hi.Collision.CollisionUtil.html">CollisionUtil</a> reads a null collidee as
&ldquo;no collision&rdquo; rather than raising, so a disposed solid silently stops
participating in detection.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TriTree TriTree { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.TriTree.html">TriTree</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcMech_Solids_Solid_ClearCache_" data-uid="Hi.NcMech.Solids.Solid.ClearCache*"></a>
<h3 id="Hi_NcMech_Solids_Solid_ClearCache" data-uid="Hi.NcMech.Solids.Solid.ClearCache">
ClearCache()
</h3>
<div class="markdown level1 summary"><p>Manually clears the cached data if the content of <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Geom">Geom</a> has changed.
The cache determines the behavior of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ClearCache()</code></pre>
</div>
<a id="Hi_NcMech_Solids_Solid_Display_" data-uid="Hi.NcMech.Solids.Solid.Display*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_" data-uid="Hi.NcMech.Solids.Solid.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_NcMech_Solids_Solid_Display_" data-uid="Hi.NcMech.Solids.Solid.Display*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_Hi_NcMech_Solids_Solid_RenderingModeEnum_" data-uid="Hi.NcMech.Solids.Solid.Display(Hi.Disp.Bind,Hi.NcMech.Solids.Solid.RenderingModeEnum)">
Display(Bind, RenderingModeEnum)
</h3>
<div class="markdown level1 summary"><p>Displays the solid according to the specified rendering mode.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind, Solid.RenderingModeEnum renderingMode)</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>Display binding context.</p>
</dd>
<dt><code>renderingMode</code> <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>.<a class="xref" href="Hi.NcMech.Solids.Solid.RenderingModeEnum.html">RenderingModeEnum</a></dt>
<dd><p>Rendering mode.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_DisplayFeatureEdges_" data-uid="Hi.NcMech.Solids.Solid.DisplayFeatureEdges*"></a>
<h3 id="Hi_NcMech_Solids_Solid_DisplayFeatureEdges_Hi_Disp_Bind_" data-uid="Hi.NcMech.Solids.Solid.DisplayFeatureEdges(Hi.Disp.Bind)">
DisplayFeatureEdges(Bind)
</h3>
<div class="markdown level1 summary"><p>Displays the feature edges of the solid.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DisplayFeatureEdges(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>Display binding context.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_Dispose_" data-uid="Hi.NcMech.Solids.Solid.Dispose*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Dispose" data-uid="Hi.NcMech.Solids.Solid.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_NcMech_Solids_Solid_Dispose_" data-uid="Hi.NcMech.Solids.Solid.Dispose*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Dispose_System_Boolean_" data-uid="Hi.NcMech.Solids.Solid.Dispose(System.Boolean)">
Dispose(bool)
</h3>
<div class="markdown level1 summary"><p>Releases the unmanaged resources and optionally releases the managed resources.</p>
</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><p>true to release both managed and unmanaged resources; false to release only unmanaged resources.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_ExpandToBox3d_" data-uid="Hi.NcMech.Solids.Solid.ExpandToBox3d*"></a>
<h3 id="Hi_NcMech_Solids_Solid_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.NcMech.Solids.Solid.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_NcMech_Solids_Solid_GetCollidable_" data-uid="Hi.NcMech.Solids.Solid.GetCollidable*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetCollidable" data-uid="Hi.NcMech.Solids.Solid.GetCollidable">
GetCollidable()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Collision.ICollidable.html">ICollidable</a>.</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.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_GetCollidee_" data-uid="Hi.NcMech.Solids.Solid.GetCollidee*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetCollidee" data-uid="Hi.NcMech.Solids.Solid.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_NcMech_Solids_Solid_GetSolid_" data-uid="Hi.NcMech.Solids.Solid.GetSolid*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetSolid" data-uid="Hi.NcMech.Solids.Solid.GetSolid">
GetSolid()
</h3>
<div class="markdown level1 summary"><p>Gets the solid geometry object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid GetSolid()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a></dt>
<dd><p>The solid geometry object.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_GetSourceGeom_" data-uid="Hi.NcMech.Solids.Solid.GetSourceGeom*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetSourceGeom" data-uid="Hi.NcMech.Solids.Solid.GetSourceGeom">
GetSourceGeom()
</h3>
<div class="markdown level1 summary"><p>Gets the source geometry object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IGetStl GetSourceGeom()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd><p>The source geometry object.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_GetStl_" data-uid="Hi.NcMech.Solids.Solid.GetStl*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetStl" data-uid="Hi.NcMech.Solids.Solid.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</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>The STL geometry object</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_GetTriTree_" data-uid="Hi.NcMech.Solids.Solid.GetTriTree*"></a>
<h3 id="Hi_NcMech_Solids_Solid_GetTriTree" data-uid="Hi.NcMech.Solids.Solid.GetTriTree">
GetTriTree()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Collision.TriTree.html">TriTree</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TriTree GetTriTree()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.TriTree.html">TriTree</a></dt>
<dd><p><a class="xref" href="Hi.Collision.TriTree.html">TriTree</a></p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_MakeXmlSource_" data-uid="Hi.NcMech.Solids.Solid.MakeXmlSource*"></a>
<h3 id="Hi_NcMech_Solids_Solid_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcMech.Solids.Solid.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
This method may also generate additional resources such as related files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<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>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path for the XML source</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>if true, the extended file creation is suppressed.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>An XML element representing the object's state</p>
</dd>
</dl>
<h4 class="section" id="Hi_NcMech_Solids_Solid_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.</p>
</div>
<a id="Hi_NcMech_Solids_Solid_Reg_" data-uid="Hi.NcMech.Solids.Solid.Reg*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.NcMech.Solids.Solid.Reg(Hi.Common.XmlUtils.XFactory)">
Reg(XFactory)
</h3>
<div class="markdown level1 summary"><p>Registers this type's deserializer with the given <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>
and chains <code>Reg(factory)</code> on dependents. Idempotent.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Reg(XFactory factory = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>factory</code> <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_ToString_" data-uid="Hi.NcMech.Solids.Solid.ToString*"></a>
<h3 id="Hi_NcMech_Solids_Solid_ToString" data-uid="Hi.NcMech.Solids.Solid.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_NcMech_Solids_Solid_UpdateByContent_" data-uid="Hi.NcMech.Solids.Solid.UpdateByContent*"></a>
<h3 id="Hi_NcMech_Solids_Solid_UpdateByContent" data-uid="Hi.NcMech.Solids.Solid.UpdateByContent">
UpdateByContent()
</h3>
<div class="markdown level1 summary"><p>Updates the object based on its current content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateByContent()</code></pre>
</div>
</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>