This commit is contained in:
2025-08-30 15:31:33 +08:00
parent 6e7d65b32a
commit 97aa5f3b30
766 changed files with 8238 additions and 1394 deletions
@@ -113,16 +113,37 @@ using System.Collections.Generic;
namespace Hi.Milling.MillingTools
{
/// <summary>
/// Display host for a milling tool composed of a cutter and a holder.
/// </summary>
public class MillingToolEditorDisplayee : ITopoDisplayee, IClearCache
{
/// <summary>
/// Gets or sets the delegate that provides the <see cref="MillingTool"/> instance.
/// </summary>
public Func<MillingTool> MillingToolGetter { get; set; }
/// <summary>
/// Gets the current <see cref="MillingTool"/> instance.
/// </summary>
public MillingTool MillingTool => MillingToolGetter?.Invoke();
/// <summary>
/// Gets or sets whether to show the cutter.
/// </summary>
public bool ShowCutter { get; set; } = true;
/// <summary>
/// Gets or sets whether to show the holder.
/// </summary>
public bool ShowHolder { get; set; } = true;
/// <summary>
/// Gets the displayee for the milling cutter.
/// </summary>
public MillingCutterEditorDisplayee MillingCutterEditorDisplayee { get; }
= new MillingCutterEditorDisplayee();
/// <summary>
/// Gets the displayee for the holder.
/// </summary>
public HolderEditorDisplayee HolderEditorDisplayee { get; }
= new HolderEditorDisplayee();
/// <inheritdoc/>
@@ -92,6 +92,10 @@
<li>&lt;xref:Hi.HiNcKits.LocalApp.AppBegin()&gt;</li>
<li>&lt;xref:Hi.HiNcKits.LocalApp.AppEnd()&gt;</li>
</ul>
<div class="IMPORTANT">
<h5>Important</h5>
<p>Regardless of whether you use the DI-based version or the legacy flow, you must call <code>LocalApp.AppBegin()</code> at application startup and <code>LocalApp.AppEnd()</code> on shutdown to initialize and release licensing, display engine, and background resources.</p>
</div>
</article>
@@ -90,15 +90,11 @@
<ul>
<li>Key Model
<ul>
<li>WPF Single-User Desktop Application: Self-hosted <a class="xref" href="../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></li>
<li>Web Page Application: Singleton Service inherits from <a class="xref" href="../../../api/Hi.MachiningProcs.IPathedMachiningProjectHost.html">IPathedMachiningProjectHost</a></li>
</ul>
</li>
<li>Other Model: <a class="xref" href="../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>
<ul>
<li>If the application is single-user application, the model binds to <a class="xref" href="../../../api/Hi.HiNcKits.LocalApp.html">LocalApp</a>.<a class="xref" href="../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_UserEnv">UserEnv</a>.</li>
<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 <a class="xref" href="../../../api/Hi.MachiningProcs.IPathedMachiningProjectHost.html">IPathedMachiningProjectHost</a></li>
</ul>
</li>
<li>Other Model: <a class="xref" href="../../../api/Hi.HiNcKits.AppService.html">AppService</a></li>
</ul>
<h2 id="main-panel-layout"><code>Main Panel</code> Layout</h2>
<ul>
@@ -147,7 +147,7 @@
</li>
</ul>
<h3 id="property-tab">Property Tab</h3>
<p>Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> 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>
<ul>
<li>Integral Mode Selection Dropdown
<ul>
@@ -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 <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true and Integral Mode is Insert End.</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 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 <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> 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>
<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 <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> 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_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 <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.</p>
<p>Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; 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 <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.</p>
<p>Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</p>
<p>This part manages <a class="xref" href="../../../../../api/Hi.NcOpt.MillingCutterOptLimit.html">MillingCutterOptLimit</a>.</p>
<ul>
<li>Enable Optimization Checkbox
@@ -90,7 +90,7 @@
<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>.<a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_MachiningEquipment">MachiningEquipment</a>.<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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a> which assigned from the parent component.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</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: <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.</p>
Other model: <a class="xref" href="../../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Head Line
@@ -122,7 +122,7 @@ Other model: <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">
</ul>
</li>
<li>Intelligent Holder Tab
Visible if <a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.</li>
Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; 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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> is delivered by the host GUI.</p>
The model &lt;xref:Hi.HiNcKits.UserEnv&gt; 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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> 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.AppService.html">AppService</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_EnablePhysics">EnablePhysics</a> is false on GUI initialization.
<ul>
<li>Solid Bounding Shape Ratio Button</li>
<li>Detail Physics Shape Ratio Button
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.</li>
Visible if &lt;xref:Hi.HiNcKits.UserEnv&gt;.&lt;xref:Hi.HiNcKits.UserEnv.EnablePhysics&gt; is true.</li>
</ul>
</li>
</ul>
@@ -90,7 +90,7 @@
<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>.<a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_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.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a> which assigned from the parent component.</p>
<p><a class="xref" href="../../../../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a> is from <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</a> which assigned from the parent component.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Workpiece Page
@@ -92,7 +92,7 @@
<li>Assistant Model
<ul>
<li><a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a></li>
<li>&lt;xref:Hi.HiNcKits.UserEnv&gt;</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><a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a></li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a></li>
</ul>
</li>
</ul>
@@ -120,7 +120,7 @@
</ul>
</li>
<li>Output Shot Files Section
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.
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.
<ul>
<li>Enable Write Shot Files CheckBox
<ul>
@@ -142,7 +142,7 @@ Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserE
</ul>
</li>
<li>Optimization Files Section
Visible if <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_EnablePhysics">EnablePhysics</a> is true.
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.
<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><a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a></li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</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><a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a></li>
<li><a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.</p>
<p>The model of the player panel is <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</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>
@@ -88,15 +88,15 @@
<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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.</p>
<p>The model is <a class="xref" href="../../../../api/Hi.MachiningSteps.MachiningStep.html">MachiningStep</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</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.MachiningProject.html#Hi_MachiningProcs_MachiningProject_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.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_DisplayedStepPresentAccessList">DisplayedStepPresentAccessList</a>.</p>
<p>Show step infomation from <a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html">AppService</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppService.html#Hi_HiNcKits_AppService_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>
<p>Refer the code to show step infomation.</p>
<pre><code class="lang-csharp" name="SampleCode-ShowStepPresent">internal static void ShowStepPresent(
UserEnv userEnv, MachiningStep machiningStep)
AppService userEnv, MachiningStep machiningStep)
{
foreach (var entry in userEnv.DisplayedStepPresentAccessList)
{
@@ -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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a>.<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>
<p><code>Graphic-Cache Input Text Field</code> and <code>Graphic-Cache Slider</code> bind the <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html#Hi_HiNcKits_UserConfig_GraphicCacheMb">GraphicCacheMb</a>. The limit text fields also bind to the properties of <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</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>
@@ -88,7 +88,7 @@
<h1 id="preference-menu-dropdown">Preference Menu Dropdown</h1>
<p>The model of the UI is <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.
<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> contains <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a>, which is rapidly used in the GUI.</p>
<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> contains <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</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,7 +99,7 @@
<li><a href="language-selection-submenu.html">Language Selection SubMenu</a></li>
<li>Show Physics Options CheckBox
<ul>
<li>The model is <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html#Hi_HiNcKits_UserConfig_ShowPhysicsOptions">ShowPhysicsOptions</a>.</li>
<li>The model is <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html#Hi_HiNcKits_UserConfig_ShowPhysicsOptions">ShowPhysicsOptions</a>.</li>
<li>The checkbox is disabled and unchecked if <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_IsPhysicsLicensed">IsPhysicsLicensed</a> is false.</li>
</ul>
</li>
@@ -110,7 +110,7 @@ The button does not exist on WPF application.</li>
</li>
</ul>
<h2 id="single-user-application">Single User Application</h2>
<p>In single user application, access global <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.UserConfig.html">UserConfig</a> by the <a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html">LocalApp</a>.</p>
<p>In single user application, access global <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> and <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html">AppConfig</a> by the <a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html">LocalApp</a>.</p>
<p>Apply <a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html">LocalApp</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_SaveUserConfig">SaveUserConfig()</a> or <a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html">LocalApp</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.LocalApp.html#Hi_HiNcKits_LocalApp_LooseSaveUserConfig">LooseSaveUserConfig()</a> (save config in <a href="../general-rules.html">Loose Manner</a>) if config changed.</p>
<h2 id="source-code-path">Source Code Path</h2>
<p>See <a href="../index.html">this page</a> for git repository.</p>
@@ -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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> 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>
<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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> is from its parent component. The <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_UserConfig">UserConfig</a> is rapidly used.</p>
<p>The model <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a> is from its parent component. The <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html">UserEnv</a>.<a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_UserConfig">AppConfig</a> is rapidly used.</p>
<p>The model of Candidate Keys Panel is <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_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>
The model of Displayed Keys Panel is <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.html#Hi_HiNcKits_UserConfig_DisplayedStepPresentKeyList">DisplayedStepPresentKeyList</a>.</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Step Present Preference Page (or window)
@@ -124,7 +124,7 @@ The model of Displayed Keys Panel is <a class="xref" href="../../../../api/Hi.Hi
</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 <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>The keys in the Displayed Keys Panel is in sequence of <a class="xref" href="../../../../api/Hi.HiNcKits.AppConfig.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 <a class="xref" href="../../../../api/Hi.HiNcKits.UserEnv.html#Hi_HiNcKits_UserEnv_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>