HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.Geom.TransformationGeom.html
2025-07-18 15:38:28 +08:00

612 lines
20 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class TransformationGeom | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class TransformationGeom | HiAPI-C# 2025 ">
<meta name="description" content="Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results.">
<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.TransformationGeom">
<h1 id="Hi_Geom_TransformationGeom" data-uid="Hi.Geom.TransformationGeom" class="text-break">
Class TransformationGeom
</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>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a geometric transformation that can be applied to a geometry object.
This class combines a transformer with a target geometry to produce transformed geometric results.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class TransformationGeom : IStlSource, IGetStl, IMakeXmlSource, IGeomProperty, IExpandToBox3d, IDuplicate</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">TransformationGeom</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<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="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Geom.IGeomProperty.html">IGeomProperty</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</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.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.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_TransformationGeom_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>The TransformationGeom class provides functionality to:</p>
<ul>
<li>Apply geometric transformations to STL geometry</li>
<li>Support XML serialization and deserialization</li>
<li>Handle duplication of transformation configurations</li>
<li>Manage transformation matrices and their application to geometry</li>
</ul>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Geom_TransformationGeom__ctor_" data-uid="Hi.Geom.TransformationGeom.#ctor*"></a>
<h3 id="Hi_Geom_TransformationGeom__ctor" data-uid="Hi.Geom.TransformationGeom.#ctor">
TransformationGeom()
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the TransformationGeom class with default values.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TransformationGeom()</code></pre>
</div>
<a id="Hi_Geom_TransformationGeom__ctor_" data-uid="Hi.Geom.TransformationGeom.#ctor*"></a>
<h3 id="Hi_Geom_TransformationGeom__ctor_Hi_Geom_IGetStl_" data-uid="Hi.Geom.TransformationGeom.#ctor(Hi.Geom.IGetStl)">
TransformationGeom(IGetStl)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the TransformationGeom class with a specified geometry.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TransformationGeom(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 geometry object to be transformed.</p>
</dd>
</dl>
<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_" data-uid="Hi.Geom.TransformationGeom.#ctor(System.Xml.Linq.XElement,System.String)">
TransformationGeom(XElement, string)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the TransformationGeom class from XML data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TransformationGeom(XElement src, string baseDirectory)</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 element containing the transformation data.</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>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom__ctor_System_Xml_Linq_XElement_System_String__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>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Geom_TransformationGeom_Geom_" data-uid="Hi.Geom.TransformationGeom.Geom*"></a>
<h3 id="Hi_Geom_TransformationGeom_Geom" data-uid="Hi.Geom.TransformationGeom.Geom">
Geom
</h3>
<div class="markdown level1 summary"><p>Gets or sets the target geometry that will be transformed.</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>
<h4 class="section" id="Hi_Geom_TransformationGeom_Geom_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This property represents the base geometry object that will have the transformation applied to it.
If null, operations involving this geometry will return null results.</p>
</div>
<a id="Hi_Geom_TransformationGeom_Transformer_" data-uid="Hi.Geom.TransformationGeom.Transformer*"></a>
<h3 id="Hi_Geom_TransformationGeom_Transformer" data-uid="Hi.Geom.TransformationGeom.Transformer">
Transformer
</h3>
<div class="markdown level1 summary"><p>Gets or sets the transformer that defines the geometric transformation.
The transformation is applied from left (first element) to right (last element),
with the target geometry being on the left side.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ITransformer Transformer { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.Topo.ITransformer.html">ITransformer</a></dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom_Transformer_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The transformer can be null, in which case no transformation is applied to the geometry.</p>
</div>
<a id="Hi_Geom_TransformationGeom_XName_" data-uid="Hi.Geom.TransformationGeom.XName*"></a>
<h3 id="Hi_Geom_TransformationGeom_XName" data-uid="Hi.Geom.TransformationGeom.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Gets the XML element name used for serialization.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string XName { 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><p>The string &ldquo;TransformationGeom&rdquo;.</p>
</dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Geom_TransformationGeom_Duplicate_" data-uid="Hi.Geom.TransformationGeom.Duplicate*"></a>
<h3 id="Hi_Geom_TransformationGeom_Duplicate_System_Object___" data-uid="Hi.Geom.TransformationGeom.Duplicate(System.Object[])">
Duplicate(params object[])
</h3>
<div class="markdown level1 summary"><p>Creates a deep copy of the current TransformationGeom instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object Duplicate(params object[] res)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd><p>Additional resources for duplication (not used in current implementation).</p>
</dd>
</dl>
<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>A new TransformationGeom instance with copied transformer and geometry data.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom_Duplicate_System_Object____remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The duplication process creates new instances of both the transformer and geometry objects
if they implement the appropriate cloning interfaces.</p>
</div>
<a id="Hi_Geom_TransformationGeom_ExpandToBox3d_" data-uid="Hi.Geom.TransformationGeom.ExpandToBox3d*"></a>
<h3 id="Hi_Geom_TransformationGeom_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.TransformationGeom.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the given box to include the bounds of the transformed geometry.</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>The box to expand.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom_ExpandToBox3d_Hi_Geom_Box3d__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This method updates the provided box to encompass the transformed geometry.
If the geometry or its STL representation is null, no expansion occurs.</p>
</div>
<a id="Hi_Geom_TransformationGeom_GetStl_" data-uid="Hi.Geom.TransformationGeom.GetStl*"></a>
<h3 id="Hi_Geom_TransformationGeom_GetStl" data-uid="Hi.Geom.TransformationGeom.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the transformed STL representation of the geometry.</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 transformed STL if both geometry and transformer are valid;
the original STL if transformer is null;
null if geometry is null or produces null STL.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom_GetStl_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If the transformer is null, the method returns the untransformed geometry.
If the geometry is null or produces a null STL, the method returns null.</p>
</div>
<a id="Hi_Geom_TransformationGeom_MakeXmlSource_" data-uid="Hi.Geom.TransformationGeom.MakeXmlSource*"></a>
<h3 id="Hi_Geom_TransformationGeom_MakeXmlSource_System_String_System_String_" data-uid="Hi.Geom.TransformationGeom.MakeXmlSource(System.String,System.String)">
MakeXmlSource(string, string)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the current TransformationGeom instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile)</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 (not used in current implementation).</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 XElement containing the serialized data of this instance.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Geom_TransformationGeom_MakeXmlSource_System_String_System_String__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The generated XML includes both the transformer and geometry data if they are available.
Null properties are handled gracefully and will not cause errors in the XML generation.</p>
</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>