This commit is contained in:
2025-09-16 12:24:06 +08:00
parent 62ac88b5b8
commit 299645e7cc
28 changed files with 1321 additions and 75 deletions
@@ -7,13 +7,13 @@
<meta name="title" content="Rendering Canvas on Web Service Application | 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">
<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="docfx:rel" content="../../../../">
@@ -30,7 +30,7 @@
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../../public/docfx.min.js"></script>
<script type="module" src="./../../../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
@@ -43,8 +43,8 @@
<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 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">
@@ -98,7 +98,7 @@
<h2 id="web-architecture-patterns">Web Architecture Patterns</h2>
<ul>
<li><a href="common/dictionary-service-pattern.html">DictionaryService and DictionaryHub Pattern</a> - Connection-scoped object indexing for hierarchical components</li>
<li><a href="hinc-web-service/disp-web-service.md">Rendering Canvas on Web Service</a> - WebSocket-based 3D canvas rendering architecture using SignalR Hub</li>
<li><a href="hinc-web-service/disp-web-service.html">Rendering Canvas on Web Service</a> - WebSocket-based 3D canvas rendering architecture using SignalR Hub</li>
</ul>
<h2 id="step-by-step-program-construction-check-list">Step by Step Program Construction Check List</h2>
<div class="TIP">
@@ -91,7 +91,7 @@
<li>Key Model
<ul>
<li>WPF Single-User Desktop Application: Self-hosted <a class="xref" href="../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></li>
<li>Web Page Application: Service inherits from &lt;xref:Hi.MachiningProcs.IPathedMachiningProjectHost&gt;</li>
<li>Web Service Application: Service inherits from &lt;xref:Hi.MachiningProcs.IPathedMachiningProjectHost&gt;</li>
</ul>
</li>
<li>Other Model: <a class="xref" href="../../../api/Hi.HiNcKits.AppService.html">AppService</a></li>
@@ -333,7 +333,7 @@ Apply <a class="xref" href="../../../../../api/Hi.Physics.CoatingMaterial.html">
</li>
</ul>
<h3 id="flute-inner-beam-tab">Flute-Inner-Beam Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_EnablePhysics">EnablePhysics</a> is true.</p>
<p>This part manages <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_InnerBeamProfile">InnerBeamProfile</a>.</p>
<ul>
<li>Profile Type Selection Dropdown
@@ -370,7 +370,7 @@ Apply <a class="xref" href="../../../../../api/Hi.Physics.CoatingMaterial.html">
</li>
</ul>
<h3 id="optimization-tab">Optimization Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_EnablePhysics">EnablePhysics</a> is true.</p>
<p>This part manages <a class="xref" href="../../../../../api/Hi.NcOpt.MillingCutterOptLimit.html">MillingCutterOptLimit</a>.</p>
<ul>
<li>Enable Optimization Checkbox
@@ -122,7 +122,7 @@ Other model: <a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.htm
</ul>
</li>
<li>Intelligent Holder Tab
Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</li>
Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_EnablePhysics">EnablePhysics</a> is true.</li>
<li>Info Tab
<ul>
<li>Abstract Note TextField (readonly)</li>
@@ -89,7 +89,7 @@
<p>The page triggers by <a href="../main-panel.html">Main Panel</a>.</p>
<p>The key model is MachiningToolHouse.
The model &lt;xref:Hi.HiNcKits.UserEnv&gt; is delivered by the host GUI.</p>
The model <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a> is delivered by the host GUI.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Tool House Page
@@ -151,7 +151,7 @@ Set <a class="xref" href="../../../../api/Hi.Milling.Cutters.MillingCutterEditor
<ul>
<li>Solid Bounding Shape Ratio Button</li>
<li>Detail Physics Shape Ratio Button
Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</li>
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_EnablePhysics">EnablePhysics</a> is true.</li>
</ul>
</li>
</ul>
@@ -92,7 +92,7 @@
<li>Assistant Model
<ul>
<li><a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></li>
<li>&lt;xref:Hi.HiNcKits.UserEnv&gt;</li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a></li>
</ul>
</li>
</ul>
@@ -88,7 +88,7 @@
<h1 id="graphic-cache-submenu">Graphic-Cache SubMenu</h1>
<p>The submenu locates on the <a href="index.html">Preference Menu Dropdown</a>.</p>
<p>The model &lt;xref:Hi.HiNcKits.UserEnv&gt; is from its parent component.</p>
<p>The model <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a> is from its parent component.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Graphic-Cache SubMenu
@@ -162,7 +162,7 @@
<h2 id="behavior-of-export-button">Behavior of Export Button</h2>
<p>Export ALL filtered elements in the <a class="xref" href="../../../../api/Hi.MachiningProcs.SessionMessageHost.html#Hi_MachiningProcs_SessionMessageHost_MessageCollection">MessageCollection</a> by <a class="xref" href="../../../../api/Hi.MachiningProcs.SessionMessageHost.html#Hi_MachiningProcs_SessionMessageHost_GetFliteredList_Hi_MachiningProcs_SessionMessageHost_FilterFlag_System_String_">GetFliteredList(FilterFlag, string)</a>.</p>
<h2 id="signalr-implementation-webapi-only">SignalR Implementation (Webapi Only)</h2>
<p><code>SessionMessageHub</code> provides real-time message updates with method <code>GetSessionMessages(string filterFlags, string filterText, int limit)</code> and event <code>SessionMessagesUpdated</code>. <code>SessionMessageService</code> monitors <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SessionMessageHost_CollectionItemChanged">SessionMessageHost_CollectionItemChanged</a> and broadcasts updates. The service uses &lt;xref:Hi.MachiningProcs.LooseRunner&gt; for non-blocking async operations. The JavaScript component connects to <code>/sessionMessageHub</code> to receive real-time message updates.</p>
<p><code>SessionMessageHub</code> provides real-time message updates with method <code>GetSessionMessages(string filterFlags, string filterText, int limit)</code> and event <code>SessionMessagesUpdated</code>. <code>SessionMessageService</code> monitors <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SessionMessageHost_CollectionItemChanged">SessionMessageHost_CollectionItemChanged</a> and broadcasts updates. The service uses <a class="xref" href="../../../../api/Hi.Common.LooseRunner.html">LooseRunner</a> for non-blocking async operations. The JavaScript component connects to <code>/sessionMessageHub</code> to receive real-time message updates.</p>
<h2 id="source-code-path">Source Code Path</h2>
<p>See <a href="../index.html">this page</a> for git repository.</p>
<h3 id="wpf-application-source-code-path">WPF Application Source Code Path</h3>
@@ -146,9 +146,9 @@ Action&lt;TargetObject&gt; TargetObjectSetter{get;set;}
<li>Object Copy/Paste (i.e. Select/Set or Duplicated-Set)
<ul>
<li>Copy (i.e. Select)
Set the model to UserEnv.SelectedItem.</li>
Set the model to AppService.SelectedItem.</li>
<li>Paste
Set UserEnv.SelectedItem to the model.
Set AppService.SelectedItem to the model.
Set by reference is default. Apply Duplicated-Set if explicitly required.</li>
</ul>
</li>
@@ -125,11 +125,11 @@
<ul>
<li>Set NC Files - Set the file path and customize simulation and optimization settings for each NC file</li>
<li>Configure NC optimization - Configure NC code optimization parameters</li>
<li>Set &lt;xref:Hi.ShellCommandUtils.GeomDiffCommand&gt; - Configure geometry comparison functionality to compare target workpiece shape with simulated shape</li>
<li>Set <a class="xref" href="../../../api/Hi.ShellCommands.GeomDiffCommand.html">GeomDiffCommand</a> - Configure geometry comparison functionality to compare target workpiece shape with simulated shape</li>
<li>Set <a class="xref" href="../../../api/Hi.MillingForces.Training.MillingTraining.html">MillingTraining</a> - Configure milling parameter training to calibrate simulation parameters based on actual machining data</li>
<li>Other task configurations&hellip;</li>
</ul>
<p>The PlayerCommand is typically a &lt;xref:Hi.ShellCommandUtils.ListCommand&gt; that contains a sequence of command entries to be executed during the simulation.</p>
<p>The PlayerCommand is typically a <a class="xref" href="../../../api/Hi.ShellCommands.ListCommand.html">ListCommand</a> that contains a sequence of command entries to be executed during the simulation.</p>
<h2 id="4-run-the-tasks-simulation-and-optimization">4. Run the Tasks (Simulation and Optimization)</h2>
<p>Run <a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_PlayerCommand">PlayerCommand</a> through <a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_PacePlayer">PacePlayer</a>.</p>
<p>At this stage, the simulation process is similar to video playback, which can be:</p>
@@ -144,7 +144,7 @@
<p>The <a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_PacePlayer">PacePlayer</a> controls the execution pace of the simulation, allowing you to observe the machining process in detail or run it at full speed.</p>
<h3 id="view-the-analysis-during-process-or-result">View the Analysis During Process or Result</h3>
<p><a class="xref" href="../../../api/Hi.MachiningProcs.SessionMessageHost.html">SessionMessageHost</a> contains a sequence of simulation messages and step data, which can be used to monitor and analyze the simulation process and results.</p>
<h1 id="ui-pattern">UI Pattern</h1>
<h2 id="ui-pattern">UI Pattern</h2>
<p>The user interface navigation bar matches the workflow. Top-level navigation items include:</p>
<ul>
<li><a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>
@@ -45,7 +45,7 @@
<ul class="nav level3">
<li>
<a href="build-hinc/hinc-web-service/disp-web-service.md" name="" title="Rendering Canvas on Web Service">Rendering Canvas on Web Service</a>
<a href="build-hinc/hinc-web-service/disp-web-service.html" name="" title="Rendering Canvas on Web Service">Rendering Canvas on Web Service</a>
</li>
</ul>
</li>
File diff suppressed because one or more lines are too long