This commit is contained in:
2025-12-23 13:43:09 +08:00
parent 4556281c0a
commit b64c156a59
652 changed files with 993 additions and 1067 deletions
@@ -89,8 +89,8 @@
<p>At the application entry point, you need to initialize HiAPI and set the exiting event.</p>
<ul>
<li>&lt;xref:Hi.HiNcKits.LocalApp.AppBegin&gt;</li>
<li><a class="xref" href="../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_AppEnd">AppEnd()</a></li>
<li><a class="xref" href="../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_AppBegin_">AppBegin</a></li>
<li><a class="xref" href="../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_AppEnd_">AppEnd</a></li>
</ul>
<div class="IMPORTANT">
<h5>Important</h5>
@@ -94,7 +94,7 @@
<li>Web Service Application: Service inherits from <a class="xref" href="../../../api/Hi.MachiningProcs.IProjectService.html">IProjectService</a></li>
</ul>
</li>
<li>Other Model: &lt;xref:Hi.HiNcKits.AppService&gt;</li>
<li>Other Model: <a class="xref" href="../../../api/Hi.HiNcKits.UserService.html">UserService</a></li>
</ul>
<h2 id="main-panel-layout"><code>Main Panel</code> Layout</h2>
<ul>
@@ -114,7 +114,7 @@
<li>Machine Tool MenuItem
Open <a href="mech/machining-chain-page.html">Machine Tool Page</a>
Sole window in WPF app.
The page manages &lt;xref:Hi.MachiningProcs.MachiningProject.MachiningEquipment&gt;.&lt;Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MachiningChain&gt;.</li>
The page manages <a class="xref" href="../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="../../../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningChain">MachiningChain</a>.</li>
<li>Controller MenuItem
Open <a href="controller/index.html">Controller Page</a></li>
<li>Tool House MenuItem</li>
@@ -147,7 +147,7 @@
</li>
</ul>
<h3 id="property-tab">Property Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.</p>
<ul>
<li>Integral Mode Selection Dropdown
<ul>
@@ -174,7 +174,7 @@ The model is <a class="xref" href="../../../../../api/Hi.Milling.Cutters.Milling
<li>Minimum Available Cutting Thickness (μm)
<ul>
<li>Readonly field with format &ldquo;G4&rdquo;</li>
<li>Shows calculated value from <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_GetMinimumUncutChipThickness_um_Hi_MillingForces_Fittings_ICuttingPara_">GetMinimumUncutChipThickness_um(ICuttingPara)</a>. The argument (cutting parameter) is obtained by the <a class="xref" href="../../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>.&lt;xref:Hi.MachiningProcs.MachiningProject.Workpiece*&gt;.<a class="xref" href="../../../../../api/Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_CuttingPara">CuttingPara</a>. Series pass the models by the GUI if needed.</li>
<li>Shows calculated value from <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_GetMinimumUncutChipThickness_um_Hi_MillingForces_Fittings_ICuttingPara_">GetMinimumUncutChipThickness_um(ICuttingPara)</a>. The argument (cutting parameter) is obtained by the <a class="xref" href="../../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_Workpiece">Workpiece</a>.<a class="xref" href="../../../../../api/Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_CuttingPara">CuttingPara</a>. Series pass the models by the GUI if needed.</li>
<li>Note Label
<ul>
<li>Show Workpiece Cutting Parameter Name.
@@ -186,7 +186,7 @@ Since the thickness depdents on the Workpiece Cutting Parameter and hone radius.
</li>
</ul>
<h3 id="insert-cutter-tab">Insert-Cutter Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true and Integral Mode is Insert End.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true and Integral Mode is Insert End.</p>
<ul>
<li>Insert Number Input field</li>
<li>Insert Mass Input field (g)
@@ -202,7 +202,7 @@ Since the thickness depdents on the Workpiece Cutting Parameter and hone radius.
</li>
</ul>
<h3 id="material-tab">Material Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.</p>
<ul>
<li>Shank Material (visible only for Integral Mode is Insert End mode)
<ul>
@@ -302,7 +302,7 @@ Apply <a class="xref" href="../../../../../api/Hi.Physics.CoatingMaterial.html">
<li>&ldquo;Resource/CoatingMaterial&rdquo;</li>
</ul>
<h3 id="flute-contours-tab">Flute-Contours Tab</h3>
<p>Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.</p>
<p>This part manages <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_FluteContourTray">FluteContourTray</a>.</p>
<ul>
<li>Contour Tray Selection Dropdown
@@ -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.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_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.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</p>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.</p>
<p>This part manages <a class="xref" href="../../../../../api/Hi.NcOpt.MillingCutterOptOption.html">MillingCutterOptOption</a>.</p>
<ul>
<li>Enable Optimization Checkbox
@@ -383,7 +383,7 @@ Apply <a class="xref" href="../../../../../api/Hi.Physics.CoatingMaterial.html">
<li>Limit by Theoretical Minimum Feed Per Tooth Checkbox
<ul>
<li>Shows calculated minimum uncut chip thickness value.
To get the value, <a class="xref" href="../../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>.&lt;xref:Hi.MachiningProcs.MachiningProject.Workpiece*&gt;.<a class="xref" href="../../../../../api/Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_CuttingPara_">CuttingPara</a> and <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html">MillingCutter</a> are required. Series pass the model by the GUI if needed.</li>
To get the value, <a class="xref" href="../../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_Workpiece">Workpiece</a>.<a class="xref" href="../../../../../api/Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_CuttingPara_">CuttingPara</a> and <a class="xref" href="../../../../../api/Hi.Milling.Cutters.MillingCutter.html">MillingCutter</a> are required. Series pass the model by the GUI if needed.</li>
<li>When checked, enforces minimum feed constraint</li>
</ul>
</li>
@@ -89,8 +89,8 @@
<p>The page triggers by <a href="../main-panel.html">Main Panel</a>.</p>
<p>The key model is <a class="xref" href="../../../../api/Hi.NcMech.Fixtures.Fixture.html">Fixture</a> and <a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a>.
Fixture is assigned from the Main Panel's <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>.&lt;xref:Hi.MachiningProcs.MachiningProject.MachiningEquipment&gt;.<a class="xref" href="../../../../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture">Fixture</a>.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppConfig&gt; which assigned from the parent component.</p>
Fixture is assigned from the Main Panel's <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_Fixture">Fixture</a>.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_UserConfig">UserConfig</a> which assigned from the parent component.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Fixture Page
@@ -89,7 +89,7 @@
<p>The term stick is for not only milling, but other remover like electric discharge machining tool.</p>
<p>The key model is MillingTool.
Other model: &lt;xref:Hi.HiNcKits.AppService&gt;.</p>
Other model: <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html">UserService</a>.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Head Line
@@ -122,7 +122,7 @@ Other model: &lt;xref:Hi.HiNcKits.AppService&gt;.</p>
</ul>
</li>
<li>Intelligent Holder Tab
Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</li>
Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_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.AppService&gt; is delivered by the host GUI.</p>
The model <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a> is delivered by the host GUI.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Tool House Page
@@ -147,11 +147,11 @@ The panel has CRUD (and Duplicate) of the tools. Read and Update the selected to
<li>(Options of <a class="xref" href="../../../../api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.html">MillingCutterEditorDisplayee</a>)
<ul>
<li>Shape Mode SubMenu
Set <a class="xref" href="../../../../api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.html#Hi_Milling_Cutters_MillingCutterEditorDisplayee_ShapeMode">ShapeMode</a> to Solid Bounding Shape if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is false on GUI initialization.
Set <a class="xref" href="../../../../api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.html#Hi_Milling_Cutters_MillingCutterEditorDisplayee_ShapeMode">ShapeMode</a> to Solid Bounding Shape if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is false on GUI initialization.
<ul>
<li>Solid Bounding Shape Ratio Button</li>
<li>Detail Physics Shape Ratio Button
Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.</li>
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.</li>
</ul>
</li>
</ul>
@@ -89,8 +89,8 @@
<p>The page triggers by <a href="../main-panel.html">Main Panel</a>.</p>
<p>The key model is <a class="xref" href="../../../../api/Hi.NcMech.Workpieces.Workpiece.html">Workpiece</a> and <a class="xref" href="../../../../api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html">WorkpieceEditorDisplayeeConfig</a>.
Which is assigned from the Main Panel's <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>.&lt;xref:Hi.MachiningProcs.MachiningProject.Workpiece&gt;.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppConfig&gt; which assigned from the parent component.</p>
Which is assigned from the Main Panel's <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_Workpiece">Workpiece</a>.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_UserConfig">UserConfig</a> which assigned from the parent component.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Workpiece Page
@@ -165,7 +165,7 @@ Apply <a href="../geom/runtime-geom-panel.html">Runtime Geometry Panel</a></li>
</ul>
</li>
<li>Material Tab
Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.
<ul>
<li>Workpiece Material File Selector
<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.AppService&gt;</li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a></li>
</ul>
</li>
</ul>
@@ -96,7 +96,7 @@
<li>Assistant Model
<ul>
<li><a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></li>
<li>&lt;xref:Hi.HiNcKits.AppService&gt;</li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a></li>
</ul>
</li>
</ul>
@@ -120,7 +120,7 @@
</ul>
</li>
<li>Output Shot Files Section
Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.
<ul>
<li>Enable Write Shot Files CheckBox
<ul>
@@ -142,7 +142,7 @@ Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.E
</ul>
</li>
<li>Optimization Files Section
Visible if &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.EnablePhysics&gt; is true.
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_EnablePhysics">EnablePhysics</a> is true.
<ul>
<li>Enable Optimize To Files CheckBox
<ul>
@@ -96,7 +96,7 @@
<li>Assistant Model
<ul>
<li><a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></li>
<li>&lt;xref:Hi.HiNcKits.AppService&gt;</li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a></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.AppService&gt;</li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a></li>
</ul>
</li>
</ul>
@@ -87,7 +87,7 @@
<article data-uid="">
<h1 id="player-panel">Player Panel</h1>
<p>The model of the player panel is <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a> and &lt;xref:Hi.HiNcKits.AppService&gt;.</p>
<p>The model of the player panel is <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a>.</p>
<h2 id="step-by-step-program-construction-check-list">Step by Step Program Construction Check List</h2>
<ol>
<li>Create the <code>Player Panel</code> Layout and set <code>Player Panel</code>/<code>RenderingCanvas</code>.</li>
@@ -126,7 +126,7 @@
</li>
</ul>
<h2 id="behavior-of-player-panelrenderingcanvas">Behavior of <code>Player Panel</code>/<code>RenderingCanvas</code></h2>
<p>On initializing, create <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> and set it to RenderingCanvas.DispEngine.Displayee. The <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> constructor argument is from the model <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a> from <code>Player Panel</code>.</p>
<p>On initializing, create <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> and set it to <code>RenderingCanvas</code>.<a class="xref" href="../../../../api/Hi.Disp.DispEngine.html">DispEngine</a>.<a class="xref" href="../../../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_Displayee">Displayee</a>. The <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> constructor argument is from the model <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> from <code>Player Panel</code>.</p>
<p>Dispose RenderingCanvas on <code>Player Panel</code> disposing.</p>
<h2 id="source-code-path-and-specification">Source Code Path and Specification</h2>
<p>See <a href="../index.html">this page</a> for git repository.</p>
@@ -113,7 +113,7 @@
<li>Pause</li>
</ul>
</li>
<li>Both webservice and win-desktop applications use <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> events for monitoring &lt;xref:Hi.MachiningProcs.MachiningProject.PacePlayer&gt; status changes.</li>
<li>Both webservice and win-desktop applications use <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> events for monitoring <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_PacePlayer">PacePlayer</a> status changes.</li>
<li>In webservice applications, the <code>PlayerStatusService</code> subscribes to these <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> events and broadcasts status changes via <code>PlayerStatusHub</code> using SignalR for real-time communication.</li>
<li>Win-desktop applications can directly subscribe to <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> events for status updates.</li>
<li>Alter the background color of the <code>Status Text Field</code> if the status changed.
@@ -162,7 +162,7 @@
<li>Players/PlayerStatusService.cs</li>
</ul>
<h4 id="signalr-implementation-webapi-only">SignalR Implementation (Webapi Only)</h4>
<p><code>PlayerStatusHub</code> provides real-time player status updates, with methods <code>GetPlayerStatus()</code> and event <code>PlayerStatusUpdated</code>. <code>PlayerStatusService</code> monitors <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> events (&lt;xref:Hi.MachiningProcs.LocalProjectService.PacePlayer_IsRunningChangedEvent&gt;, &lt;xref:Hi.MachiningProcs.LocalProjectService.PacePlayer_IsLockedChangedEvent&gt;, &lt;xref:Hi.MachiningProcs.LocalProjectService.PacePlayer_IsFinishedChangedEvent&gt;, &lt;xref:Hi.MachiningProcs.LocalProjectService.PacePlayer_ResetedEvent&gt;) and broadcasts changes via SignalR. The JavaScript component connects to <code>/playerStatusHub</code> and listens for status updates. API endpoints include <code>/api/player/start</code>, <code>/api/player/pause</code>, <code>/api/player/resume</code>, <code>/api/player/run-line</code>, <code>/api/player/run-step</code>, <code>/api/player/stop</code>, and <code>/api/player/reset</code>.</p>
<p><code>PlayerStatusHub</code> provides real-time player status updates, with methods <code>GetPlayerStatus()</code> and event <code>PlayerStatusUpdated</code>. <code>PlayerStatusService</code> monitors <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_PacePlayer">PacePlayer</a> events (<a class="xref" href="../../../../api/Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_IsRunningChangedEvent">IsRunningChangedEvent</a>, <a class="xref" href="../../../../api/Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_IsLockedChangedEvent">IsLockedChangedEvent</a>, <a class="xref" href="../../../../api/Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_IsFinishedChangedEvent">IsFinishedChangedEvent</a>, <a class="xref" href="../../../../api/Hi.Common.PacePlayer.html#Hi_Common_PacePlayer_ResetedEvent">ResetedEvent</a>) and broadcasts changes via SignalR. The JavaScript component connects to <code>/playerStatusHub</code> and listens for status updates. API endpoints include <code>/api/player/start</code>, <code>/api/player/pause</code>, <code>/api/player/resume</code>, <code>/api/player/run-line</code>, <code>/api/player/run-step</code>, <code>/api/player/stop</code>, and <code>/api/player/reset</code>.</p>
<h3 id="razor-page-source-code">Razor Page Source Code</h3>
<pre><code class="lang-csharp" name="SampleCode-razor">@using Hi.Common.PathUtils;
@using Hi.HiNcKits;
@@ -88,9 +88,9 @@
<h1 id="selected-step-info-panel">Selected-Step Info Panel</h1>
<p>The panel locates on the <a href="index.html">Player Panel</a>.</p>
<p>The model is <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> and &lt;xref:Hi.HiNcKits.AppService&gt;.</p>
<p>The <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> is assigned by &lt;xref:Hi.MachiningProcs.MachiningProject.ClStrip&gt;.<a class="xref" href="../../../../api/Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_PosSelected">PosSelected</a>.</p>
<p>Show step infomation from &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.DisplayedStepPresentAccessList&gt;.</p>
<p>The model is <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a>.</p>
<p>The <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> is assigned by <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ClStrip">ClStrip</a>.<a class="xref" href="../../../../api/Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_PosSelected">PosSelected</a>.</p>
<p>Show step infomation from <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_DisplayedStepPresentAccessList">DisplayedStepPresentAccessList</a>.</p>
<p>The resx of <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> contains the translation of <a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html">PresentAttribute</a>.<a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html#Hi_MachiningSteps_PresentAttribute_Name">Name</a>, apply the translation to the GUI. If the translation not existed, use the original value.</p>
<p>See Also <a href="../preference/step-present-preference-page.html">Step Present Preference Page</a>.</p>
<h2 id="sample-code">Sample Code</h2>
@@ -106,7 +106,7 @@
}
}
</code></pre><h2 id="signalr-implementation-webapi-only">SignalR Implementation (Webapi Only)</h2>
<p><code>SelectedStepInfoHub</code> provides real-time step updates with method <code>GetSelectedStepInfo()</code> and event <code>SelectedStepInfoUpdated</code>. <code>SelectedStepInfoService</code> monitors &lt;xref:Hi.MachiningProcs.LocalProjectService.ClStrip_PosSelected&gt; and &lt;xref:Hi.MachiningProcs.LocalProjectService.ClStrip_MachiningStepSelected&gt; events and broadcasts updates. The JavaScript component connects to <code>/selectedStepInfoHub</code> to receive step change notifications and update the UI accordingly.</p>
<p><code>SelectedStepInfoHub</code> provides real-time step updates with method <code>GetSelectedStepInfo()</code> and event <code>SelectedStepInfoUpdated</code>. <code>SelectedStepInfoService</code> monitors <a class="xref" href="../../../../api/Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_PosSelected">PosSelected</a> and <a class="xref" href="../../../../api/Hi.CutterLocations.ClStrips.ClStrip.html#Hi_CutterLocations_ClStrips_ClStrip_MachiningStepSelected">MachiningStepSelected</a> events and broadcasts updates. The JavaScript component connects to <code>/selectedStepInfoHub</code> to receive step change notifications and update the UI accordingly.</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>
@@ -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.AppService&gt; is from its parent component.</p>
<p>The model <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a> is from its parent component.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Graphic-Cache SubMenu
@@ -101,7 +101,7 @@
</li>
</ul>
<h2 id="behavior">Behavior</h2>
<p><code>Graphic-Cache Input Text Field</code> and <code>Graphic-Cache Slider</code> bind the &lt;xref:Hi.HiNcKits.AppConfig&gt;.&lt;xref:Hi.HiNcKits.AppConfig.GraphicCacheMb&gt;. The limit text fields also bind to the properties of &lt;xref:Hi.HiNcKits.AppConfig&gt;.</p>
<p><code>Graphic-Cache Input Text Field</code> and <code>Graphic-Cache Slider</code> bind the <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html#Hi_HiNcKits_UserConfig_GraphicCacheMb">GraphicCacheMb</a>. The limit text fields also bind to the properties of <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a>.</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>
@@ -87,8 +87,8 @@
<article data-uid="">
<h1 id="preference-menu-dropdown">Preference Menu Dropdown</h1>
<p>The model of the UI is &lt;xref:Hi.HiNcKits.AppService&gt;.
&lt;xref:Hi.HiNcKits.AppService&gt; contains &lt;xref:Hi.HiNcKits.AppConfig&gt;, which is rapidly used in the GUI.</p>
<p>The model of the UI is <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a>.
<a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a> contains <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a>, which is rapidly used in the GUI.</p>
<p>The dropdown is on the <a href="../main-panel.html">Main Panel</a>.</p>
<h2 id="layout">Layout</h2>
<ul>
@@ -99,8 +99,8 @@
<li><a href="language-selection-submenu.html">Language Selection SubMenu</a></li>
<li>Show Physics Options CheckBox
<ul>
<li>The model is &lt;xref:Hi.HiNcKits.AppConfig.ShowPhysicsOptions&gt;.</li>
<li>The checkbox is disabled and unchecked if &lt;xref:Hi.HiNcKits.AppService.IsPhysicsLicensed&gt; is false.</li>
<li>The model is <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html#Hi_HiNcKits_UserConfig_ShowPhysicsOptions">ShowPhysicsOptions</a>.</li>
<li>The checkbox is disabled and unchecked if <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_IsPhysicsLicensed">IsPhysicsLicensed</a> is false.</li>
</ul>
</li>
<li>Show Log Button
@@ -88,7 +88,7 @@
<h1 id="language-selection-submenu">Language Selection SubMenu</h1>
<p>The submenu locates on the <a href="index.html">Preference Menu Dropdown</a>.</p>
<p>The model &lt;xref:Hi.HiNcKits.AppService&gt; is from its parent component.</p>
<p>The model <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a> is from its parent component.</p>
<p>Load the language preference on application start.</p>
<div class="NOTE">
<h5>Note</h5>
@@ -87,9 +87,9 @@
<article data-uid="">
<h1 id="step-present-preference-page">Step Present Preference Page</h1>
<p>The model &lt;xref:Hi.HiNcKits.AppService&gt; is from its parent component. The &lt;xref:Hi.HiNcKits.AppService&gt;.&lt;xref:Hi.HiNcKits.AppService.AppConfig&gt; is rapidly used.</p>
<p>The model of Candidate Keys Panel is &lt;xref:Hi.HiNcKits.AppService.CandidateStepPresentKeyList&gt;.
The model of Displayed Keys Panel is &lt;xref:Hi.HiNcKits.AppConfig.DisplayedStepPresentKeyList&gt;.</p>
<p>The model <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html">UserService</a> is from its parent component. The <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_UserConfig">UserConfig</a> is rapidly used.</p>
<p>The model of Candidate Keys Panel is <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_CandidateStepPresentKeyList">CandidateStepPresentKeyList</a>.
The model of Displayed Keys Panel is <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html#Hi_HiNcKits_UserConfig_DisplayedStepPresentKeyList">DisplayedStepPresentKeyList</a>.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Step Present Preference Page (or window)
@@ -124,9 +124,9 @@ The model of Displayed Keys Panel is &lt;xref:Hi.HiNcKits.AppConfig.DisplayedSte
</ul>
<p>The categories are not defined for programming logic but only for user experience. So decide and define the categories in the GUI here only.</p>
<p>Since the Keys are not all come from the properties of <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a>, a category panel (Category Other Panel) for the uncategoried keys is required.</p>
<p>The keys in the Displayed Keys Panel is in sequence of &lt;xref:Hi.HiNcKits.AppConfig.DisplayedStepPresentKeyList&gt;. User tune the sequence and remove key by the Displayed Keys Panel. User add and remove the key from the ToggleButtons in Candidate Keys Panel. Those UI control items are required.</p>
<p>The keys in the Displayed Keys Panel is in sequence of <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html#Hi_HiNcKits_UserConfig_DisplayedStepPresentKeyList">DisplayedStepPresentKeyList</a>. User tune the sequence and remove key by the Displayed Keys Panel. User add and remove the key from the ToggleButtons in Candidate Keys Panel. Those UI control items are required.</p>
<p>To both Candidate Keys Panel and Displayed Keys Panel:
Apply <a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html">PresentAttribute</a>.<a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html#Hi_MachiningSteps_PresentAttribute_Name">Name</a> as Key label by &lt;xref:Hi.HiNcKits.AppService.StepPresentAccessDictionary&gt;. Apply the key to the button tooltip.</p>
Apply <a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html">PresentAttribute</a>.<a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html#Hi_MachiningSteps_PresentAttribute_Name">Name</a> as Key label by <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_StepPresentAccessDictionary">StepPresentAccessDictionary</a>. Apply the key to the button tooltip.</p>
<p>The resx of <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> contains the translation of <a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html">PresentAttribute</a>.<a class="xref" href="../../../../api/Hi.MachiningSteps.PresentAttribute.html#Hi_MachiningSteps_PresentAttribute_Name">Name</a>, apply the translation to the GUI. If the translation not existed, use the original value.</p>
<h3 id="categories">Categories</h3>
<p>Refer the code to design Categories:</p>
@@ -87,8 +87,8 @@
<article data-uid="">
<h1 id="session-message-panel">Session Message Panel</h1>
<p>The model is <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>.&lt;xref:Hi.MachiningProcs.MachiningProject.SessionMessageHost&gt;.</p>
<p><a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a> is assigned from the <a href="../player/index.html">Player Panel</a>.</p>
<p>The model is <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SessionMessageHost">SessionMessageHost</a>.</p>
<p><a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> is obtained via dependency injection.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Top Message Filter ToolBar
@@ -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 &lt;xref:Hi.MachiningProcs.LocalProjectService.SessionMessageHost_CollectionItemChanged&gt; 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>
<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.SessionMessageHost.html#Hi_MachiningProcs_SessionMessageHost_CollectionItemChanged">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>
@@ -93,8 +93,8 @@
<li>Central Panel: RenderingCanvas</li>
</ul>
<h2 id="behavior-of-machine-tool-panel">Behavior of Machine Tool Panel</h2>
<p>RenderingCanvas.Displayee is the machine tool (MachiningProject.MachiningEquipment.MachiningChain)</p>
<p><code>Load</code> button load the machine tool to MachiningProject.MachiningEquipment.MachiningChain and MachiningProject.MachiningEquipment.MachiningChainFile by XFactory.Default.GenByFile.</p>
<p>RenderingCanvas.Displayee is the machine tool (<a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="../../../../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningChain">MachiningChain</a>)</p>
<p><code>Load</code> button load the machine tool to <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningChain">MachiningChain</a> and <a class="xref" href="../../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningChainFile">MachiningChainFile</a> by <a class="xref" href="../../../../api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_GenByFile_">GenByFile</a>.</p>
</article>
@@ -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 AppService.SelectedItem.</li>
Set the model to <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_SelectedItem">SelectedItem</a>.</li>
<li>Paste
Set AppService.SelectedItem to the model.
Set <a class="xref" href="../../../../api/Hi.HiNcKits.UserService.html#Hi_HiNcKits_UserService_SelectedItem">SelectedItem</a> to the model.
Set by reference is default. Apply Duplicated-Set if explicitly required.</li>
</ul>
</li>
@@ -131,7 +131,7 @@
</ul>
<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 &lt;xref:Hi.MachiningProcs.MachiningProject.PacePlayer&gt;.</p>
<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.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_PacePlayer">PacePlayer</a>.</p>
<p>At this stage, the simulation process is similar to video playback, which can be:</p>
<ul>
<li>Started</li>
@@ -141,7 +141,7 @@
<li>Run one step</li>
<li>Reset</li>
</ul>
<p>The &lt;xref:Hi.MachiningProcs.MachiningProject.PacePlayer&gt; controls the execution pace of the simulation, allowing you to observe the machining process in detail or run it at full speed.</p>
<p>The <a class="xref" href="../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_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>
<h2 id="ui-pattern">UI Pattern</h2>
@@ -87,6 +87,15 @@
<article data-uid="">
<h1 id="release-note">Release Note</h1>
<h2 id="hinc-packages-version-31100">HiNc Packages Version 3.1.100</h2>
<ul>
<li>Refactor project architecture: split runtime functions from <a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a> to <a class="xref" href="../../../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> for better separation of concerns</li>
<li>Improve <a class="xref" href="../../../api/Hi.MillingForces.Training.MillingTraining.html">MillingTraining</a> module with separate lead and result parameter templates for more accurate cutting parameter training</li>
<li>Separate C++ library for code protection</li>
<li>Add UTF-8 file path support for runtime geometry IO operations</li>
<li>Improve <a class="xref" href="../../../api/Hi.Numerical.FilePlayers.CsvRunner.html">CsvRunner</a> with enhanced time mapping pattern</li>
<li>Various architecture improvements and bug fixes</li>
</ul>
<h2 id="hinc-packages-version-3191">HiNc Packages Version 3.1.91</h2>
<ul>
<li>Add <a class="xref" href="../../../api/Hi.NcOpt.NcOptimizationEmbeddedLogMode.html">NcOptimizationEmbeddedLogMode</a> to control embedded log detail level (None/SimpleLog/FullLog) (see <a href="../../user-guide/zh-Hant/script/NcOptimization/index.html#%E5%B5%8C%E5%85%A5%E5%BC%8F%E6%97%A5%E8%AA%8C%E8%A8%BB%E8%A7%A3">嵌入式日誌註解</a>).</li>