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/anatomy/geom/index.html
T
2026-09-11 03:46:11 +08:00

229 lines
11 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geometry Panels | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Geometry Panels | HiAPI-C# 2025 ">
<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="">
<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="Anatomy-Geom">
<h1 id="geometry-panels">Geometry Panels</h1>
<p>The Geometry Panels are the editors for <a class="xref" href="../../technique/api-foundations/basic-geometry.html">Geometry Objects</a>, together
with the switchboard that picks which <a class="xref" href="../../api/Hi.Mech.Topo.ITransformer.html">ITransformer</a> places them. Two switchboards
run the folder: the <a href="geometry-editor.html">Geometry Editor</a> chooses a geometry kind and
hosts that kind's editor, and the <a href="transformer-panel.html">Transformer Select Panel</a> does the same for
a transformer.</p>
<p>On the shipped SPA a Control Tree is where both switchboards are usually met. A <strong>Geometry slot</strong> or
a <strong>Transformer slot</strong> carries the kind picker, and the picked kind becomes the slot's single child
node, whose panel is that kind's editor. The same editors are also embedded inline, without a tree —
by <a href="transformation-geom-editor.html">TransformationGeom Editor</a> for its inner geometry and inner
transformer, by <a href="geom-combination-editor.html">GeomCombination Editor</a> for each child, by the
Mechanism Builder page, and by the Tool House cutter's upper beam.</p>
<p>A page belongs in this folder when it documents one geometry kind's editor, or a switchboard that
picks a kind and hosts that editor. The transformer switchboard lives beside the geometry kinds
rather than under a route because it sits in the same Control-Tree slot pattern and is embedded by
the same editors.</p>
<p>Ordered the way the folder builds up: the primitive solids first, then the file-backed geometries,
then the operators that wrap and combine them, and last the two switchboards that host all of them.</p>
<h2 id="geometry-kinds">Geometry Kinds</h2>
<table>
<thead>
<tr>
<th>Page</th>
<th>What it edits</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="box3d-editor.html">Box3d Editor</a></td>
<td>A 3D box defined by min/max coordinates</td>
</tr>
<tr>
<td><a href="cylindroid-editor.html">Cylindroid Editor</a></td>
<td>A cylindroid with radius values along the Z axis</td>
</tr>
<tr>
<td><a href="extended-cylinder-editor.html">ExtendedCylinder Editor</a></td>
<td>An <a class="xref" href="../../api/Hi.Geom.ExtendedCylinder.html">ExtendedCylinder</a> and its full length</td>
</tr>
<tr>
<td><a href="stlfile-editor.html">StlFile Editor</a></td>
<td>An <a class="xref" href="../../api/Hi.Geom.IStlSource.html">IStlSource</a> loaded from an STL file</td>
</tr>
<tr>
<td><a href="meshed-geom-file-editor.html">MeshedGeomFile Editor</a></td>
<td>A <a class="xref" href="../../api/Hi.Cbtr.CubeTreeFile.html">CubeTreeFile</a>, the pre-computed voxel cube tree; the kind picker and this page name it <code>MeshedGeomFile</code>, the code calls it <code>CubeTreeFile</code></td>
</tr>
<tr>
<td><a href="transformation-geom-editor.html">TransformationGeom Editor</a></td>
<td>An inner geometry plus the transformer that places it</td>
</tr>
<tr>
<td><a href="geom-combination-editor.html">GeomCombination Editor</a></td>
<td>Several geometries combined into one</td>
</tr>
</tbody>
</table>
<p>Every kind above is an ordinary entry in the same geometry kind map, and the switchboard resolves each
one the same way. What separates them in practice is reach, not class: each host names the kinds its
own model accepts, so <code>CubeTreeFile</code> reaches only the workpiece's raw-geometry picker, and
<code>ExtendedCylinder</code> only the cutter's upper beam.</p>
<h2 id="switchboards">Switchboards</h2>
<table>
<thead>
<tr>
<th>Page</th>
<th>What it hosts</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="geometry-editor.html">Geometry Editor</a></td>
<td>The geometry kind picker and the picked kind's editor</td>
</tr>
<tr>
<td><a href="transformer-panel.html">Transformer Select Panel</a></td>
<td>The transformer kind picker and the picked kind's editor, over all seven transformer kinds</td>
</tr>
</tbody>
</table>
<h2 id="source-code-path">Source Code Path</h2>
<p>See <a class="xref" href="../index.html">HiNC App Anatomy</a> for git repository links.</p>
<p>The editors and the two switchboards:</p>
<ul>
<li><code>wwwroot-src/src/components/geom/</code> — the geometry editors, plus
<code>wwwroot-src/src/components/geom/GeometryEditor.vue</code>, the geometry switchboard itself.</li>
<li><code>wwwroot-src/src/components/topo/</code> — the transformer editors, plus
<code>wwwroot-src/src/components/topo/TransformerSelectPanel.vue</code>.</li>
<li><code>wwwroot-src/src/components/geom/geometryEditors.ts</code> and
<code>wwwroot-src/src/components/topo/transformerEditors.ts</code> — the two kind → editor maps every host
resolves an editor through.</li>
</ul>
<p>The Control-Tree glue that makes them reachable:</p>
<ul>
<li><code>wwwroot-src/src/components/controlTree/GeometrySlotPanel.vue</code> and
<code>wwwroot-src/src/components/controlTree/TransformerSlotPanel.vue</code> — the two slot panels, each its
switchboard in selector-only mode.</li>
<li><code>wwwroot-src/src/components/controlTree/SoleEditorPanel.vue</code> — the kind node's panel, resolving the
node's kind through both maps.</li>
<li><code>wwwroot-src/src/components/controlTree/itemTypes.ts</code> — registers <code>Geometry</code> and <code>Transformer</code> as
slot types; the five leaf geometry kinds and all seven transformer kinds against <code>SoleEditorPanel</code>;
and <code>TransformationGeom</code> and <code>GeomCombination</code> against their own tree panels, which grow further
slot children instead of one editor.</li>
</ul>
<p>The REST controllers, one per kind:</p>
<ul>
<li><code>Geom/Box3dController.cs</code>, <code>Geom/CylindroidController.cs</code>, <code>Geom/ExtendedCylinderController.cs</code>,
<code>Geom/StlFileController.cs</code>, <code>Geom/CubeTreeFileController.cs</code>,
<code>Geom/TransformationGeomController.cs</code>, <code>Geom/GeomCombinationController.cs</code>.</li>
<li><code>Mech/Topo/StaticTranslationController.cs</code>, <code>Mech/Topo/StaticRotationController.cs</code>,
<code>Mech/Topo/StaticFreeformController.cs</code>, <code>Mech/Topo/DynamicTranslationController.cs</code>,
<code>Mech/Topo/DynamicRotationController.cs</code>, <code>Mech/Topo/GeneralTransformController.cs</code>,
<code>Mech/Topo/NoTransformController.cs</code>.</li>
</ul>
</article>
<div class="contribution d-print-none">
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></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>