deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 deletions
@@ -152,16 +152,12 @@ Class DemoSessionMessage
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using Hi.Common;
using Hi.Common.FileLines;
using Hi.Geom;
using Hi.Common.Messages;
using Hi.HiNcKits;
using Hi.MachiningProcs;
using Hi.MachiningSteps;
using Hi.Mech;
using Hi.Mech.Topo;
using Hi.Numerical;
using Hi.NcParsers;
namespace Sample.Common;
@@ -174,114 +170,40 @@ public static class DemoSessionMessage
#region Demo_UseSessionMessageHost
internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService)
{
SessionProgress sessionMessageHost = localProjectService.SessionProgress;
// Session messages are partitioned by kind into three sinks on LocalProjectService:
// - ShellProgress: session-level routine / lifecycle messages
// (session-scoped: null outside BeginSession/EndSession).
// - NcDiagnosticProgress: NC-pipeline diagnostics, anchored to the NC source sentence.
// - StepDiagnosticProgress: diagnostics anchored to a motion step.
SessionProgress.FilterFlag filterFlags =
SessionProgress.FilterFlag.NC |
SessionProgress.FilterFlag.Progress |
SessionProgress.FilterFlag.Error;
string filterText = null;
var filteredSessionMessageList = sessionMessageHost
.GetFliteredList(filterFlags, filterText);
ShellProgress shellProgress = localProjectService.ShellProgress;
List<IMessage> shellMessages = shellProgress == null
? new List<IMessage>() : shellProgress.Messages.ToList();
foreach (IMessage message in shellMessages)
Console.WriteLine(
$"Shell [{message.GetSeverity()}] {message.GetId()}: {message.GetNotification()}");
foreach (var sessionMessage in filteredSessionMessageList)
foreach (NcDiagnostic diagnostic in
localProjectService.NcDiagnosticProgress.Diagnostics.ToList())
{
//M.I.: Message Index.
Console.Write($"M.I.: {sessionMessage.Index}; Role: {sessionMessage.MessageRoleText}");
// For SessionMessageHost.FilterFlag.NC
var nc = sessionMessage.DirectInstantSourceCommand;
if (nc != null)
Console.Write($"Message/NC: {nc.Line}; File: {nc.FilePath}; LineNo: {nc.GetLineNo()}; ");
// For SessionMessageHost.FilterFlag.Progress or Error.
var multiTagMessage = sessionMessage.MultiTagMessage;
if (multiTagMessage != null)
Console.WriteLine($"Message/NC: {multiTagMessage.Message}");
var exception = sessionMessage.Exception;
if (exception != null)
Console.WriteLine($"Message/NC: {exception.Message}");
var ncLine = diagnostic.SentenceCarrier?.GetSentence()?.FirstIndexedFileLine;
Console.WriteLine(
$"NC [{diagnostic.GetSeverity()}] {diagnostic.GetId()}: {diagnostic.GetNotification()}; " +
$"File: {ncLine?.FilePath}; LineNo: {ncLine?.GetLineNo()}; NC: {ncLine?.Line}");
}
foreach (StepDiagnostic diagnostic in
localProjectService.StepDiagnosticProgress.Messages.ToList())
Console.WriteLine(
$"Step {diagnostic.StepIndex} [{diagnostic.GetSeverity()}] " +
$"{diagnostic.GetId()}: {diagnostic.GetNotification()}");
File.WriteAllLines("output-session-messages.txt",
filteredSessionMessageList.Select(m =>
$"Msg[{m.Index}][{m.MessageRoleText}]: {m}"));
shellMessages.Select(m =>
$"[{m.GetSeverity()}] {m.GetId()}: {m.GetNotification()}"));
}
#endregion
internal static void DemoUseSessionMessageHost2(LocalProjectService localProjectService)
{
SessionProgress sessionMessageHost = localProjectService.SessionProgress;
IMachiningChain machiningChain = localProjectService.MachiningChain;
PresentAttribute mrrPresent = typeof(MachiningStep).GetProperty(nameof(MachiningStep.Mrr_mm3ds)).GetCustomAttribute<PresentAttribute>();
string mrrUnit = mrrPresent?.TailUnitString;
string mrrFormat = mrrPresent?.DataFormatString;
PresentAttribute torquePresent = typeof(MachiningStep).GetProperty(nameof(MachiningStep.AvgAbsTorque_Nm)).GetCustomAttribute<PresentAttribute>();
string torqueUnit = torquePresent?.TailUnitString;
string torqueFormat = torquePresent?.DataFormatString;
SessionProgress.FilterFlag filterFlags =
SessionProgress.FilterFlag.Step |
SessionProgress.FilterFlag.NC |
SessionProgress.FilterFlag.Progress |
SessionProgress.FilterFlag.Error;
string filterText = null;
var filteredSessionMessageList = sessionMessageHost
.GetFliteredList(filterFlags, filterText);
foreach (var sessionMessage in filteredSessionMessageList)
{
//M.I.: Message Index.
Console.Write($"M.I.: {sessionMessage.Index}; Role: {sessionMessage.MessageRoleText}");
// For SessionMessageHost.FilterFlag.Step
var step = sessionMessage.MachiningStep;
if (step != null)
{
string[] machineCoordinateValueTexts = GetMachineCoordinateValueTexts(step, machiningChain);
var machineCoordinatesText = string.Join("; ", Enumerable.Range(0, machiningChain.McCodes.Length)
.Select(i => $"MC.{machiningChain.McCodes[i]}: {machineCoordinateValueTexts[i]}"));
Console.Write($"Time: {step.AccumulatedTime:G}; MRR = {step.Mrr_mm3ds.ToString(mrrFormat)} {mrrUnit}; Torque = {step.AvgAbsTorque_Nm?.ToString(torqueFormat)} {torqueUnit}; {machineCoordinatesText}; ");
var nc_ = sessionMessageHost.GetSourceCommand(sessionMessage);
Console.WriteLine($"Message/NC: {nc_.Line}; File: {nc_.FilePath}; LineNo: {nc_.GetLineNo()}");
}
// For SessionMessageHost.FilterFlag.NC
var nc = sessionMessage.DirectInstantSourceCommand;
if (nc != null)
{
Console.Write($"Message/NC: {nc.Line}; File: {nc.FilePath}; LineNo: {nc.GetLineNo()}; ");
if (nc is HardNcLine ncLine)
Console.WriteLine($"T: {ncLine.T}; S: {ncLine.S}; F: {ncLine.F}; NC-Flags: {ncLine.FlagsText}");
}
// For SessionMessageHost.FilterFlag.Progress or Error.
var multiTagMessage = sessionMessage.MultiTagMessage;
if (multiTagMessage != null)
Console.WriteLine($"Message/NC: {multiTagMessage.Message}");
var exception = sessionMessage.Exception;
if (exception != null)
Console.WriteLine($"Message/NC: {exception.Message}");
}
}
static string[] GetMachineCoordinateValueTexts(MachiningStep step, IMachiningChain machiningChain)
{
var mcTransformers = machiningChain.McTransformers;
string[] dst = new string[mcTransformers.Length];
if (mcTransformers != null)
{
for (int i = 0; i < mcTransformers.Length; i++)
{
if (mcTransformers[i] == null)
continue;
if (mcTransformers[i] is DynamicRotation)
dst[i] = MathUtil.ToDeg(step.GetMcValue(i).Value).ToString("F4");
else
dst[i] = step.GetMcValue(i)?.ToString("F5");
}
}
return dst;
}
#region ShowStepPresent
internal static void ShowStepPresent(
UserService userEnv, MachiningStep machiningStep)
@@ -0,0 +1,699 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class PlayerDivConfig | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class PlayerDivConfig | HiAPI-C# 2025 ">
<meta name="description" content="Per-user visibility flags for the Player page&#39;s divisions (charts and info panels), flattened into a single all-boolean config persisted through .">
<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="Sample.Common.PlayerDivConfig">
<h1 id="Sample_Common_PlayerDivConfig" data-uid="Sample.Common.PlayerDivConfig" class="text-break">
Class PlayerDivConfig
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.dll</dd></dl>
</div>
<div class="markdown summary"><p>Per-user visibility flags for the Player page's divisions (charts and
info panels), flattened into a single all-boolean config persisted through
<a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a>.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class PlayerDivConfig : IMakeXmlSource</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">PlayerDivConfig</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../api/Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</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>
<h2 id="Sample_Common_PlayerDivConfig_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Defaults are tuned for a first-time user: the two info panels
(<a class="xref" href="Sample.Common.PlayerDivConfig.html#Sample_Common_PlayerDivConfig_EnableStepDiv">EnableStepDiv</a> and <a class="xref" href="Sample.Common.PlayerDivConfig.html#Sample_Common_PlayerDivConfig_MessageTable">MessageTable</a>) are ON
so the Player page looks populated without having to open the
Division Visibility dropdown; every chart toggle starts OFF.</p>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Common_PlayerDivConfig__ctor_" data-uid="Sample.Common.PlayerDivConfig.#ctor*"></a>
<h3 id="Sample_Common_PlayerDivConfig__ctor" data-uid="Sample.Common.PlayerDivConfig.#ctor">
PlayerDivConfig()
</h3>
<div class="markdown level1 summary"><p>Default constructor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public PlayerDivConfig()</code></pre>
</div>
<a id="Sample_Common_PlayerDivConfig__ctor_" data-uid="Sample.Common.PlayerDivConfig.#ctor*"></a>
<h3 id="Sample_Common_PlayerDivConfig__ctor_System_Xml_Linq_XElement_" data-uid="Sample.Common.PlayerDivConfig.#ctor(System.Xml.Linq.XElement)">
PlayerDivConfig(XElement)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Common.PlayerDivConfig.html">PlayerDivConfig</a> class from XML data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public PlayerDivConfig(XElement src)</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>XML element containing player-div data.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Common_PlayerDivConfig_ColorIndexTimeChart_" data-uid="Sample.Common.PlayerDivConfig.ColorIndexTimeChart*"></a>
<h3 id="Sample_Common_PlayerDivConfig_ColorIndexTimeChart" data-uid="Sample.Common.PlayerDivConfig.ColorIndexTimeChart">
ColorIndexTimeChart
</h3>
<div class="markdown level1 summary"><p>Color-index strip chart (single-strip timeline coloured by arbitrary numeric/bool aspect).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool ColorIndexTimeChart { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_DynamometerForceCycleLineDiv_" data-uid="Sample.Common.PlayerDivConfig.DynamometerForceCycleLineDiv*"></a>
<h3 id="Sample_Common_PlayerDivConfig_DynamometerForceCycleLineDiv" data-uid="Sample.Common.PlayerDivConfig.DynamometerForceCycleLineDiv">
DynamometerForceCycleLineDiv
</h3>
<div class="markdown level1 summary"><p>Cycle-line chart of sensor-measured force from an external dynamometer.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool DynamometerForceCycleLineDiv { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_EnableDetailDiv0_" data-uid="Sample.Common.PlayerDivConfig.EnableDetailDiv0*"></a>
<h3 id="Sample_Common_PlayerDivConfig_EnableDetailDiv0" data-uid="Sample.Common.PlayerDivConfig.EnableDetailDiv0">
EnableDetailDiv0
</h3>
<div class="markdown level1 summary"><p>Developer-only raw step-property dump panel.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableDetailDiv0 { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_EnableStepDiv_" data-uid="Sample.Common.PlayerDivConfig.EnableStepDiv*"></a>
<h3 id="Sample_Common_PlayerDivConfig_EnableStepDiv" data-uid="Sample.Common.PlayerDivConfig.EnableStepDiv">
EnableStepDiv
</h3>
<div class="markdown level1 summary"><p>Full / condensed step information panel (Selected Step Info).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableStepDiv { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_EnableStripAvailabilityChart_" data-uid="Sample.Common.PlayerDivConfig.EnableStripAvailabilityChart*"></a>
<h3 id="Sample_Common_PlayerDivConfig_EnableStripAvailabilityChart" data-uid="Sample.Common.PlayerDivConfig.EnableStripAvailabilityChart">
EnableStripAvailabilityChart
</h3>
<div class="markdown level1 summary"><p>Availability strip chart (per-step timeline coloured by availability aspect).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableStripAvailabilityChart { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_EnableStripRoughnessChart_" data-uid="Sample.Common.PlayerDivConfig.EnableStripRoughnessChart*"></a>
<h3 id="Sample_Common_PlayerDivConfig_EnableStripRoughnessChart" data-uid="Sample.Common.PlayerDivConfig.EnableStripRoughnessChart">
EnableStripRoughnessChart
</h3>
<div class="markdown level1 summary"><p>Surface-roughness strip chart (per-step timeline coloured by surface-roughness aspect).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableStripRoughnessChart { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_ForceCycleLineDiv_" data-uid="Sample.Common.PlayerDivConfig.ForceCycleLineDiv*"></a>
<h3 id="Sample_Common_PlayerDivConfig_ForceCycleLineDiv" data-uid="Sample.Common.PlayerDivConfig.ForceCycleLineDiv">
ForceCycleLineDiv
</h3>
<div class="markdown level1 summary"><p>Cycle-line chart of cutting force along the step's rotation cycle.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool ForceCycleLineDiv { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_MessageTable_" data-uid="Sample.Common.PlayerDivConfig.MessageTable*"></a>
<h3 id="Sample_Common_PlayerDivConfig_MessageTable" data-uid="Sample.Common.PlayerDivConfig.MessageTable">
MessageTable
</h3>
<div class="markdown level1 summary"><p>Session messages panel.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool MessageTable { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_SensorSpindleMomentCycleLineDiv_" data-uid="Sample.Common.PlayerDivConfig.SensorSpindleMomentCycleLineDiv*"></a>
<h3 id="Sample_Common_PlayerDivConfig_SensorSpindleMomentCycleLineDiv" data-uid="Sample.Common.PlayerDivConfig.SensorSpindleMomentCycleLineDiv">
SensorSpindleMomentCycleLineDiv
</h3>
<div class="markdown level1 summary"><p>Cycle-line chart of sensor-measured spindle moment (overlay on sim moment).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool SensorSpindleMomentCycleLineDiv { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_SimSpindleMomentCycleLineDiv_" data-uid="Sample.Common.PlayerDivConfig.SimSpindleMomentCycleLineDiv*"></a>
<h3 id="Sample_Common_PlayerDivConfig_SimSpindleMomentCycleLineDiv" data-uid="Sample.Common.PlayerDivConfig.SimSpindleMomentCycleLineDiv">
SimSpindleMomentCycleLineDiv
</h3>
<div class="markdown level1 summary"><p>Cycle-line chart of simulation-derived spindle moment on spindle-rotation coordinate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool SimSpindleMomentCycleLineDiv { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_PlayerDivConfig_XName_" data-uid="Sample.Common.PlayerDivConfig.XName*"></a>
<h3 id="Sample_Common_PlayerDivConfig_XName" data-uid="Sample.Common.PlayerDivConfig.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Name for XML IO.</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></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Common_PlayerDivConfig_MakeXmlSource_" data-uid="Sample.Common.PlayerDivConfig.MakeXmlSource*"></a>
<h3 id="Sample_Common_PlayerDivConfig_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Sample.Common.PlayerDivConfig.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
This method may also generate additional resources such as related files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</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 for the XML source</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>if true, the extended file creation is suppressed.</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 XML element representing the object's state</p>
</dd>
</dl>
<h4 class="section" id="Sample_Common_PlayerDivConfig_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.</p>
</div>
<a id="Sample_Common_PlayerDivConfig_Reg_" data-uid="Sample.Common.PlayerDivConfig.Reg*"></a>
<h3 id="Sample_Common_PlayerDivConfig_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Sample.Common.PlayerDivConfig.Reg(Hi.Common.XmlUtils.XFactory)">
Reg(XFactory)
</h3>
<div class="markdown level1 summary"><p>Registers this type's deserializer with the given <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a>
(or <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Default">Default</a> when <code class="paramref">factory</code> is
<code>null</code>). Idempotent.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Reg(XFactory factory = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>factory</code> <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a></dt>
<dd></dd>
</dl>
</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>
@@ -0,0 +1,703 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class UserConfig | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class UserConfig | HiAPI-C# 2025 ">
<meta name="description" content="User Configuration.">
<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="Sample.Common.UserConfig">
<h1 id="Sample_Common_UserConfig" data-uid="Sample.Common.UserConfig" class="text-break">
Class UserConfig
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.dll</dd></dl>
</div>
<div class="markdown summary"><p>User Configuration.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class UserConfig : IMakeXmlSource</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">UserConfig</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../api/Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</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>
<h2 id="Sample_Common_UserConfig_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Sample-owned copy of the per-GUI user configuration, kept so the
<a class="xref" href="Sample.Common.DemoSessionMessage.html">DemoSessionMessage</a> step-present demo still compiles. Each
GUI/APP keeps its own version; the core engine package (HiNc) no longer
carries any GUI configuration type.</p>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Common_UserConfig__ctor_" data-uid="Sample.Common.UserConfig.#ctor*"></a>
<h3 id="Sample_Common_UserConfig__ctor" data-uid="Sample.Common.UserConfig.#ctor">
UserConfig()
</h3>
<div class="markdown level1 summary"><p>Default constructor</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UserConfig()</code></pre>
</div>
<a id="Sample_Common_UserConfig__ctor_" data-uid="Sample.Common.UserConfig.#ctor*"></a>
<h3 id="Sample_Common_UserConfig__ctor_System_Xml_Linq_XElement_System_String_" data-uid="Sample.Common.UserConfig.#ctor(System.Xml.Linq.XElement,System.String)">
UserConfig(XElement, string)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a> class from XML data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UserConfig(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>XML element containing configuration data</p>
</dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Base directory for resolving relative paths</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Common_UserConfig_DisplayedStepPresentKeyList_" data-uid="Sample.Common.UserConfig.DisplayedStepPresentKeyList*"></a>
<h3 id="Sample_Common_UserConfig_DisplayedStepPresentKeyList" data-uid="Sample.Common.UserConfig.DisplayedStepPresentKeyList">
DisplayedStepPresentKeyList
</h3>
<div class="markdown level1 summary"><p>Step infomation key list to show.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;string&gt; DisplayedStepPresentKeyList { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_EnableFullControl_" data-uid="Sample.Common.UserConfig.EnableFullControl*"></a>
<h3 id="Sample_Common_UserConfig_EnableFullControl" data-uid="Sample.Common.UserConfig.EnableFullControl">
EnableFullControl
</h3>
<div class="markdown level1 summary"><p>Enable Full control of the application.
Eanble System.Diagnostics.Process in GUI Script Command.
Not used yet.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableFullControl { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_EquipmentWorkpieceSetupDisplayeeConfig_" data-uid="Sample.Common.UserConfig.EquipmentWorkpieceSetupDisplayeeConfig*"></a>
<h3 id="Sample_Common_UserConfig_EquipmentWorkpieceSetupDisplayeeConfig" data-uid="Sample.Common.UserConfig.EquipmentWorkpieceSetupDisplayeeConfig">
EquipmentWorkpieceSetupDisplayeeConfig
</h3>
<div class="markdown level1 summary"><p>Configuration for EquipmentWorkpieceSetupDisplayee</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public WorkpieceEditorDisplayeeConfig EquipmentWorkpieceSetupDisplayeeConfig { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html">WorkpieceEditorDisplayeeConfig</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_FixtureSetupDisplayeeConfig_" data-uid="Sample.Common.UserConfig.FixtureSetupDisplayeeConfig*"></a>
<h3 id="Sample_Common_UserConfig_FixtureSetupDisplayeeConfig" data-uid="Sample.Common.UserConfig.FixtureSetupDisplayeeConfig">
FixtureSetupDisplayeeConfig
</h3>
<div class="markdown level1 summary"><p>Configuration for FixtureSetupDisplayee</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public FixtureEditorDisplayeeConfig FixtureSetupDisplayeeConfig { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html">FixtureEditorDisplayeeConfig</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_GraphicCacheLowerLimitMb_" data-uid="Sample.Common.UserConfig.GraphicCacheLowerLimitMb*"></a>
<h3 id="Sample_Common_UserConfig_GraphicCacheLowerLimitMb" data-uid="Sample.Common.UserConfig.GraphicCacheLowerLimitMb">
GraphicCacheLowerLimitMb
</h3>
<div class="markdown level1 summary"><p>Gets or sets the lower limit of graphic cache in megabytes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double GraphicCacheLowerLimitMb { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_GraphicCacheMb_" data-uid="Sample.Common.UserConfig.GraphicCacheMb*"></a>
<h3 id="Sample_Common_UserConfig_GraphicCacheMb" data-uid="Sample.Common.UserConfig.GraphicCacheMb">
GraphicCacheMb
</h3>
<div class="markdown level1 summary"><p>Gets or sets the graphic cache size in megabytes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long GraphicCacheMb { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_GraphicCacheUpperLimitMb_" data-uid="Sample.Common.UserConfig.GraphicCacheUpperLimitMb*"></a>
<h3 id="Sample_Common_UserConfig_GraphicCacheUpperLimitMb" data-uid="Sample.Common.UserConfig.GraphicCacheUpperLimitMb">
GraphicCacheUpperLimitMb
</h3>
<div class="markdown level1 summary"><p>Gets or sets the upper limit of graphic cache in megabytes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double GraphicCacheUpperLimitMb { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_LanguageCode_" data-uid="Sample.Common.UserConfig.LanguageCode*"></a>
<h3 id="Sample_Common_UserConfig_LanguageCode" data-uid="Sample.Common.UserConfig.LanguageCode">
LanguageCode
</h3>
<div class="markdown level1 summary"><p>Gets or sets the language code for the application UI.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string LanguageCode { get; set; }</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></dd>
</dl>
<a id="Sample_Common_UserConfig_PlayerDivConfig_" data-uid="Sample.Common.UserConfig.PlayerDivConfig*"></a>
<h3 id="Sample_Common_UserConfig_PlayerDivConfig" data-uid="Sample.Common.UserConfig.PlayerDivConfig">
PlayerDivConfig
</h3>
<div class="markdown level1 summary"><p>Per-user visibility flags for the Player page's divisions (charts and info panels).
Persisted alongside the rest of this <a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public PlayerDivConfig PlayerDivConfig { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Sample.Common.PlayerDivConfig.html">PlayerDivConfig</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_ShowPhysicsOptions_" data-uid="Sample.Common.UserConfig.ShowPhysicsOptions*"></a>
<h3 id="Sample_Common_UserConfig_ShowPhysicsOptions" data-uid="Sample.Common.UserConfig.ShowPhysicsOptions">
ShowPhysicsOptions
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether to show physics options in the UI.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool ShowPhysicsOptions { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserConfig_XName_" data-uid="Sample.Common.UserConfig.XName*"></a>
<h3 id="Sample_Common_UserConfig_XName" data-uid="Sample.Common.UserConfig.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Name for XML IO.</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></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Common_UserConfig_MakeXmlSource_" data-uid="Sample.Common.UserConfig.MakeXmlSource*"></a>
<h3 id="Sample_Common_UserConfig_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Sample.Common.UserConfig.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
This method may also generate additional resources such as related files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</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 for the XML source</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>if true, the extended file creation is suppressed.</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 XML element representing the object's state</p>
</dd>
</dl>
<h4 class="section" id="Sample_Common_UserConfig_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.</p>
</div>
<a id="Sample_Common_UserConfig_Reg_" data-uid="Sample.Common.UserConfig.Reg*"></a>
<h3 id="Sample_Common_UserConfig_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Sample.Common.UserConfig.Reg(Hi.Common.XmlUtils.XFactory)">
Reg(XFactory)
</h3>
<div class="markdown level1 summary"><p>Registers this type's deserializer with the given <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a>
(or <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Default">Default</a> when <code class="paramref">factory</code> is
<code>null</code>). Idempotent.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Reg(XFactory factory = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>factory</code> <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a></dt>
<dd></dd>
</dl>
</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>
@@ -0,0 +1,671 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class UserService | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class UserService | HiAPI-C# 2025 ">
<meta name="description" content="User Service.">
<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="Sample.Common.UserService">
<h1 id="Sample_Common_UserService" data-uid="Sample.Common.UserService" class="text-break">
Class UserService
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.dll</dd></dl>
</div>
<div class="markdown summary"><p>User Service.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class UserService : IDisposable</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">UserService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</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>
<h2 id="Sample_Common_UserService_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Sample-owned copy, kept so the <a class="xref" href="Sample.Common.DemoSessionMessage.html">DemoSessionMessage</a> step-present
demo still compiles. Each GUI/APP keeps its own version; the core engine
package (HiNc) no longer carries this GUI service type.</p>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Common_UserService__ctor_" data-uid="Sample.Common.UserService.#ctor*"></a>
<h3 id="Sample_Common_UserService__ctor_Microsoft_Extensions_Logging_ILogger_" data-uid="Sample.Common.UserService.#ctor(Microsoft.Extensions.Logging.ILogger)">
UserService(ILogger)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Common.UserService.html">UserService</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UserService(ILogger logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>logger</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger">ILogger</a></dt>
<dd><p>The logger instance.</p>
</dd>
</dl>
<a id="Sample_Common_UserService__ctor_" data-uid="Sample.Common.UserService.#ctor*"></a>
<h3 id="Sample_Common_UserService__ctor_Sample_Common_UserConfig_Microsoft_Extensions_Logging_ILogger_" data-uid="Sample.Common.UserService.#ctor(Sample.Common.UserConfig,Microsoft.Extensions.Logging.ILogger)">
UserService(UserConfig, ILogger)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Common.UserService.html">UserService</a> class with the specified configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UserService(UserConfig appConfig, ILogger logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>appConfig</code> <a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a></dt>
<dd><p>The application configuration.</p>
</dd>
<dt><code>logger</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger">ILogger</a></dt>
<dd><p>The logger instance.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Common_UserService_AdditionalStepPresentAccess_" data-uid="Sample.Common.UserService.AdditionalStepPresentAccess*"></a>
<h3 id="Sample_Common_UserService_AdditionalStepPresentAccess" data-uid="Sample.Common.UserService.AdditionalStepPresentAccess">
AdditionalStepPresentAccess
</h3>
<div class="markdown level1 summary"><p>Gets or sets additional step presentation access configurations.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;string, PresentAccess&gt; AdditionalStepPresentAccess { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="../api/Hi.MachiningSteps.PresentAccess.html">PresentAccess</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_CandidateStepPresentKeyList_" data-uid="Sample.Common.UserService.CandidateStepPresentKeyList*"></a>
<h3 id="Sample_Common_UserService_CandidateStepPresentKeyList" data-uid="Sample.Common.UserService.CandidateStepPresentKeyList">
CandidateStepPresentKeyList
</h3>
<div class="markdown level1 summary"><p>Candidate Step Present Key List for display.
Read only.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;string&gt; CandidateStepPresentKeyList { 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.collections.generic.list-1">List</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_DisplayedStepPresentAccessList_" data-uid="Sample.Common.UserService.DisplayedStepPresentAccessList*"></a>
<h3 id="Sample_Common_UserService_DisplayedStepPresentAccessList" data-uid="Sample.Common.UserService.DisplayedStepPresentAccessList">
DisplayedStepPresentAccessList
</h3>
<div class="markdown level1 summary"><p>StepPresentAccessList for display.
Read only.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;KeyValuePair&lt;string, PresentAccess&gt;&gt; DisplayedStepPresentAccessList { 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.collections.generic.list-1">List</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.keyvaluepair-2">KeyValuePair</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="../api/Hi.MachiningSteps.PresentAccess.html">PresentAccess</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_EnablePhysics_" data-uid="Sample.Common.UserService.EnablePhysics*"></a>
<h3 id="Sample_Common_UserService_EnablePhysics" data-uid="Sample.Common.UserService.EnablePhysics">
EnablePhysics
</h3>
<div class="markdown level1 summary"><p>Gets whether physics features are enabled based on configuration and license.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnablePhysics { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_IsPhysicsLicensed_" data-uid="Sample.Common.UserService.IsPhysicsLicensed*"></a>
<h3 id="Sample_Common_UserService_IsPhysicsLicensed" data-uid="Sample.Common.UserService.IsPhysicsLicensed">
IsPhysicsLicensed
</h3>
<div class="markdown level1 summary"><p>Gets whether advanced physics features are licensed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsPhysicsLicensed { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_SelectedItem_" data-uid="Sample.Common.UserService.SelectedItem*"></a>
<h3 id="Sample_Common_UserService_SelectedItem" data-uid="Sample.Common.UserService.SelectedItem">
SelectedItem
</h3>
<div class="markdown level1 summary"><p>Gets or sets the currently selected item in the application.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public object SelectedItem { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_StepPresentAccessDictionary_" data-uid="Sample.Common.UserService.StepPresentAccessDictionary*"></a>
<h3 id="Sample_Common_UserService_StepPresentAccessDictionary" data-uid="Sample.Common.UserService.StepPresentAccessDictionary">
StepPresentAccessDictionary
</h3>
<div class="markdown level1 summary"><p>StepPresentAccessDictionary.
Read only.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;string, PresentAccess&gt; StepPresentAccessDictionary { 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.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="../api/Hi.MachiningSteps.PresentAccess.html">PresentAccess</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_UserConfig_" data-uid="Sample.Common.UserService.UserConfig*"></a>
<h3 id="Sample_Common_UserService_UserConfig" data-uid="Sample.Common.UserService.UserConfig">
UserConfig
</h3>
<div class="markdown level1 summary"><p>Gets or sets the application configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UserConfig UserConfig { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_UserConfigPath_" data-uid="Sample.Common.UserService.UserConfigPath*"></a>
<h3 id="Sample_Common_UserService_UserConfigPath" data-uid="Sample.Common.UserService.UserConfigPath">
UserConfigPath
</h3>
<div class="markdown level1 summary"><p>Gets or sets the path to the application configuration file.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string UserConfigPath { get; set; }</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></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Common_UserService_Dispose_" data-uid="Sample.Common.UserService.Dispose*"></a>
<h3 id="Sample_Common_UserService_Dispose" data-uid="Sample.Common.UserService.Dispose">
Dispose()
</h3>
<div class="markdown level1 summary"><p>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Dispose()</code></pre>
</div>
<a id="Sample_Common_UserService_Dispose_" data-uid="Sample.Common.UserService.Dispose*"></a>
<h3 id="Sample_Common_UserService_Dispose_System_Boolean_" data-uid="Sample.Common.UserService.Dispose(System.Boolean)">
Dispose(bool)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual void Dispose(bool disposing)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Common_UserService_LooseSaveUserConfig_" data-uid="Sample.Common.UserService.LooseSaveUserConfig*"></a>
<h3 id="Sample_Common_UserService_LooseSaveUserConfig" data-uid="Sample.Common.UserService.LooseSaveUserConfig">
LooseSaveUserConfig()
</h3>
<div class="markdown level1 summary"><p>Schedules a loose save of the user configuration using a LooseRunner.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void LooseSaveUserConfig()</code></pre>
</div>
<a id="Sample_Common_UserService_SaveUserConfig_" data-uid="Sample.Common.UserService.SaveUserConfig*"></a>
<h3 id="Sample_Common_UserService_SaveUserConfig" data-uid="Sample.Common.UserService.SaveUserConfig">
SaveUserConfig()
</h3>
<div class="markdown level1 summary"><p>Saves the user configuration to the file specified by <a class="xref" href="Sample.Common.UserService.html#Sample_Common_UserService_UserConfigPath">UserConfigPath</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SaveUserConfig()</code></pre>
</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>
@@ -98,6 +98,23 @@ Classes
<dt><a class="xref" href="Sample.Common.DemoSessionMessage.html">DemoSessionMessage</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Common.PlayerDivConfig.html">PlayerDivConfig</a></dt>
<dd><p>Per-user visibility flags for the Player page's divisions (charts and
info panels), flattened into a single all-boolean config persisted through
<a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Common.UserConfig.html">UserConfig</a></dt>
<dd><p>User Configuration.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Common.UserService.html">UserService</a></dt>
<dd><p>User Service.</p>
</dd>
</dl>
</article>
@@ -162,62 +162,59 @@ Uses a lower-level approach than the Pickable base class for more precise contro
using Hi.Geom;
using System;
namespace Sample.Disp
namespace Sample.Disp;
/// &lt;summary&gt;
/// Demonstrates creation of pickable 3D geometry at the primitive level.
/// Shows how to assign picking IDs directly to geometry vertices and create interactive triangles.
/// Uses a lower-level approach than the Pickable base class for more precise control.
/// &lt;/summary&gt;
/// &lt;remarks&gt;
/// ### Source Code
/// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoPickable.cs)]
/// &lt;/remarks&gt;
public class DemoPickable : IDisplayee
{
private readonly Drawing draw;
private readonly ShowEventPickable pickable;
/// &lt;summary&gt;
/// Demonstrates creation of pickable 3D geometry at the primitive level.
/// Shows how to assign picking IDs directly to geometry vertices and create interactive triangles.
/// Uses a lower-level approach than the Pickable base class for more precise control.
/// Initializes a new instance of DemoPickable.
/// Creates a pickable triangle with a specific picking ID for user interaction.
/// &lt;/summary&gt;
/// &lt;remarks&gt;
/// ### Source Code
/// [!code-csharp[SampleCode](~/../Hi.Sample.Wpf/Disp/DemoPickable.cs)]
/// &lt;/remarks&gt;
public class DemoPickable : IDisplayee
public DemoPickable()
{
private readonly Drawing draw;
private readonly ShowEventPickable pickable;
/// &lt;summary&gt;
/// Initializes a new instance of DemoPickable.
/// Creates a pickable triangle with a specific picking ID for user interaction.
/// &lt;/summary&gt;
public DemoPickable()
{
pickable = new ShowEventPickable();
double pid = pickable.PickingID;
double[] vs = new double[] {
//pickID, x,y,z
pid, 0,0.1,0.1,
pid, 0.1,0,0,
pid, 0.1,0,0.1
};
draw = new Drawing(vs, Stamp.PV, GL.GL_TRIANGLES);
}
/// &lt;inheritdoc/&gt;
public void Display(Bind bind)
{
draw.Display(bind);
}
/// &lt;inheritdoc/&gt;
public void ExpandToBox3d(Box3d dst)
{
draw.ExpandToBox3d(dst);
}
/// &lt;summary&gt;
/// Entry point for the DemoPickable example.
/// Creates and displays a pickable triangle that can respond to mouse events.
/// Demonstrates integration of picking functionality with geometric primitives.
/// &lt;/summary&gt;
[STAThread]
public static void Main()
{
DemoUtil.RunApplication(&quot;DemoPickable&quot;, new DemoPickable());
}
pickable = new ShowEventPickable();
double pid = pickable.PickingID;
double[] vs = new double[] {
//pickID, x,y,z
pid, 0,0.1,0.1,
pid, 0.1,0,0,
pid, 0.1,0,0.1
};
draw = new Drawing(vs, Stamp.PV, GL.GL_TRIANGLES);
}
/// &lt;inheritdoc/&gt;
public void Display(Bind bind)
{
draw.Display(bind);
}
/// &lt;inheritdoc/&gt;
public void ExpandToBox3d(Box3d dst)
{
draw.ExpandToBox3d(dst);
}
/// &lt;summary&gt;
/// Entry point for the DemoPickable example.
/// Creates and displays a pickable triangle that can respond to mouse events.
/// Demonstrates integration of picking functionality with geometric primitives.
/// &lt;/summary&gt;
[STAThread]
public static void Main()
{
DemoUtil.RunApplication(&quot;DemoPickable&quot;, new DemoPickable());
}
}
</code></pre></div>
@@ -0,0 +1,526 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class HeidenhainCoordinateEntryDisplayee | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCoordinateEntryDisplayee | HiAPI-C# 2025 ">
<meta name="description" content="Displayee for Heidenhain coordinate entry visualization.">
<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="Sample.Disp.HeidenhainCoordinateEntryDisplayee">
<h1 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee" class="text-break">
Class HeidenhainCoordinateEntryDisplayee
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Disp.html">Disp</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.Wpf.dll</dd></dl>
</div>
<div class="markdown summary"><p>Displayee for Heidenhain coordinate entry visualization.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class HeidenhainCoordinateEntryDisplayee : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d</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">HeidenhainCoordinateEntryDisplayee</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../api/Hi.Mech.Topo.IAnchoredDisplayee.html">IAnchoredDisplayee</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetTopoIndex.html">IGetTopoIndex</a></div>
<div><a class="xref" href="../api/Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="../api/Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</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>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee__ctor_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.#ctor*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee__ctor_System_Func_Hi_Numerical_HardNcEnv__System_Func_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment__" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.#ctor(System.Func{Hi.Numerical.HardNcEnv},System.Func{Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment})">
HeidenhainCoordinateEntryDisplayee(Func&lt;HardNcEnv&gt;, Func&lt;IMachiningEquipment&gt;)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainCoordinateEntryDisplayee(Func&lt;HardNcEnv&gt; ncEnvFunc, Func&lt;IMachiningEquipment&gt; millingEquipmentSource)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ncEnvFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a>&gt;</dt>
<dd><p>The function that provides the NcEnv instance.</p>
</dd>
<dt><code>millingEquipmentSource</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a>&gt;</dt>
<dd><p>The function that provides the machining equipment.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_HeidenhainCycleDef247Q339_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.HeidenhainCycleDef247Q339*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_HeidenhainCycleDef247Q339" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.HeidenhainCycleDef247Q339">
HeidenhainCycleDef247Q339
</h3>
<div class="markdown level1 summary"><p>Gets or sets the Heidenhain Cycle Def 247 Q339 value.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int HeidenhainCycleDef247Q339 { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_HeidenhainCycleDef7Arg_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.HeidenhainCycleDef7Arg*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_HeidenhainCycleDef7Arg" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.HeidenhainCycleDef7Arg">
HeidenhainCycleDef7Arg
</h3>
<div class="markdown level1 summary"><p>Gets or sets the Heidenhain Cycle Def 7 arguments.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html">HeidenhainCycleDef7Arg</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_MillingEquipmentFunc_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.MillingEquipmentFunc*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_MillingEquipmentFunc" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.MillingEquipmentFunc">
MillingEquipmentFunc
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the machining equipment.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IMachiningEquipment&gt; MillingEquipmentFunc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_NcEnvFunc_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.NcEnvFunc*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_NcEnvFunc" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.NcEnvFunc">
NcEnvFunc
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the NcEnv instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;HardNcEnv&gt; NcEnvFunc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ShowHeidenhainDatumPreset_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ShowHeidenhainDatumPreset*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ShowHeidenhainDatumPreset" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ShowHeidenhainDatumPreset">
ShowHeidenhainDatumPreset
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether to show Heidenhain datum preset information.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool ShowHeidenhainDatumPreset { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ShowHeidenhainDatumShift_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ShowHeidenhainDatumShift*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ShowHeidenhainDatumShift" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ShowHeidenhainDatumShift">
ShowHeidenhainDatumShift
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether to show Heidenhain datum shift information.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool ShowHeidenhainDatumShift { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_Display_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.Display*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_Display_Hi_Disp_Bind_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
<div class="markdown level1 summary"><p>Display function called in <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a> rendering loop.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>Bind with <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a>. See <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a>.</p>
</dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ExpandToBox3d_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ExpandToBox3d*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the destination box.
This function is usually used to compute the bounding box of elements.</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="../api/Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>Destination box</p>
</dd>
</dl>
<a id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_GetAnchor_" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.GetAnchor*"></a>
<h3 id="Sample_Disp_HeidenhainCoordinateEntryDisplayee_GetAnchor" data-uid="Sample.Disp.HeidenhainCoordinateEntryDisplayee.GetAnchor">
GetAnchor()
</h3>
<div class="markdown level1 summary"><p>Get key anchor. (i.e. root anchor)</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetAnchor()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>key anchor</p>
</dd>
</dl>
</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>
@@ -0,0 +1,430 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class IsoCoordinateEntryDisplayee | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class IsoCoordinateEntryDisplayee | HiAPI-C# 2025 ">
<meta name="description" content="Displayee for ISO coordinate entry visualization.">
<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="Sample.Disp.IsoCoordinateEntryDisplayee">
<h1 id="Sample_Disp_IsoCoordinateEntryDisplayee" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee" class="text-break">
Class IsoCoordinateEntryDisplayee
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Disp.html">Disp</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.Wpf.dll</dd></dl>
</div>
<div class="markdown summary"><p>Displayee for ISO coordinate entry visualization.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class IsoCoordinateEntryDisplayee : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d</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">IsoCoordinateEntryDisplayee</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../api/Hi.Mech.Topo.IAnchoredDisplayee.html">IAnchoredDisplayee</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetTopoIndex.html">IGetTopoIndex</a></div>
<div><a class="xref" href="../api/Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="../api/Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</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>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee__ctor_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.#ctor*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee__ctor_System_Func_Hi_Numerical_HardNcEnv__System_Func_Hi_Machining_MachiningEquipmentUtils_IMachiningEquipment__" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.#ctor(System.Func{Hi.Numerical.HardNcEnv},System.Func{Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment})">
IsoCoordinateEntryDisplayee(Func&lt;HardNcEnv&gt;, Func&lt;IMachiningEquipment&gt;)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Disp.IsoCoordinateEntryDisplayee.html">IsoCoordinateEntryDisplayee</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateEntryDisplayee(Func&lt;HardNcEnv&gt; ncEnvFunc, Func&lt;IMachiningEquipment&gt; millingEquipmentSource)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ncEnvFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a>&gt;</dt>
<dd><p>The function that provides the NcEnv instance.</p>
</dd>
<dt><code>millingEquipmentSource</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a>&gt;</dt>
<dd><p>The function that provides the machining equipment.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_IsoCoordinateId_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.IsoCoordinateId*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_IsoCoordinateId" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.IsoCoordinateId">
IsoCoordinateId
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ISO coordinate key (e.g. &ldquo;G54&rdquo;, &ldquo;G59.2&rdquo;).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string IsoCoordinateId { get; set; }</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></dd>
</dl>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_MillingEquipmentFunc_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.MillingEquipmentFunc*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_MillingEquipmentFunc" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.MillingEquipmentFunc">
MillingEquipmentFunc
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the machining equipment.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IMachiningEquipment&gt; MillingEquipmentFunc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_NcEnvFunc_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.NcEnvFunc*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_NcEnvFunc" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.NcEnvFunc">
NcEnvFunc
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the NcEnv instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;HardNcEnv&gt; NcEnvFunc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_Display_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.Display*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_Display_Hi_Disp_Bind_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
<div class="markdown level1 summary"><p>Display function called in <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a> rendering loop.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>Bind with <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a>. See <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a>.</p>
</dd>
</dl>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_ExpandToBox3d_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.ExpandToBox3d*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the destination box.
This function is usually used to compute the bounding box of elements.</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="../api/Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>Destination box</p>
</dd>
</dl>
<a id="Sample_Disp_IsoCoordinateEntryDisplayee_GetAnchor_" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.GetAnchor*"></a>
<h3 id="Sample_Disp_IsoCoordinateEntryDisplayee_GetAnchor" data-uid="Sample.Disp.IsoCoordinateEntryDisplayee.GetAnchor">
GetAnchor()
</h3>
<div class="markdown level1 summary"><p>Get key anchor. (i.e. root anchor)</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetAnchor()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>key anchor</p>
</dd>
</dl>
</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>
@@ -0,0 +1,489 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class MachiningProjectDisplayee | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MachiningProjectDisplayee | HiAPI-C# 2025 ">
<meta name="description" content="Represents a displayable wrapper for a machining project.">
<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="Sample.Disp.MachiningProjectDisplayee">
<h1 id="Sample_Disp_MachiningProjectDisplayee" data-uid="Sample.Disp.MachiningProjectDisplayee" class="text-break">
Class MachiningProjectDisplayee
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Sample.html">Sample</a>.<a class="xref" href="Sample.Disp.html">Disp</a></dd></dl>
<dl><dt>Assembly</dt><dd>Hi.Sample.Wpf.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a displayable wrapper for a machining project.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MachiningProjectDisplayee : IDisplayee, IExpandToBox3d, IGetAnchor, IGetTopoIndex</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">MachiningProjectDisplayee</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../api/Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="../api/Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></div>
<div><a class="xref" href="../api/Hi.Mech.Topo.IGetTopoIndex.html">IGetTopoIndex</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>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Sample_Disp_MachiningProjectDisplayee__ctor_" data-uid="Sample.Disp.MachiningProjectDisplayee.#ctor*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee__ctor_Hi_MachiningProcs_LocalProjectService_" data-uid="Sample.Disp.MachiningProjectDisplayee.#ctor(Hi.MachiningProcs.LocalProjectService)">
MachiningProjectDisplayee(LocalProjectService)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Sample.Disp.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a> class with default rendering flags.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProjectDisplayee(LocalProjectService localProjectService)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>localProjectService</code> <a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Sample_Disp_MachiningProjectDisplayee_HeidenhainCoordinateEntryDisplayee_" data-uid="Sample.Disp.MachiningProjectDisplayee.HeidenhainCoordinateEntryDisplayee*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_HeidenhainCoordinateEntryDisplayee" data-uid="Sample.Disp.MachiningProjectDisplayee.HeidenhainCoordinateEntryDisplayee">
HeidenhainCoordinateEntryDisplayee
</h3>
<div class="markdown level1 summary"><p>Gets the Heidenhain coordinate entry displayee for Heidenhain-based coordinate systems.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainCoordinateEntryDisplayee HeidenhainCoordinateEntryDisplayee { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Sample.Disp.HeidenhainCoordinateEntryDisplayee.html">HeidenhainCoordinateEntryDisplayee</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_IsoCoordinateEntryDisplayee_" data-uid="Sample.Disp.MachiningProjectDisplayee.IsoCoordinateEntryDisplayee*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_IsoCoordinateEntryDisplayee" data-uid="Sample.Disp.MachiningProjectDisplayee.IsoCoordinateEntryDisplayee">
IsoCoordinateEntryDisplayee
</h3>
<div class="markdown level1 summary"><p>Gets the ISO coordinate entry displayee for ISO-based coordinate systems.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateEntryDisplayee IsoCoordinateEntryDisplayee { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Sample.Disp.IsoCoordinateEntryDisplayee.html">IsoCoordinateEntryDisplayee</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_LocalProjectService_" data-uid="Sample.Disp.MachiningProjectDisplayee.LocalProjectService*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_LocalProjectService" data-uid="Sample.Disp.MachiningProjectDisplayee.LocalProjectService">
LocalProjectService
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that provides the machining project.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public LocalProjectService LocalProjectService { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_MachiningProject_" data-uid="Sample.Disp.MachiningProjectDisplayee.MachiningProject*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_MachiningProject" data-uid="Sample.Disp.MachiningProjectDisplayee.MachiningProject">
MachiningProject
</h3>
<div class="markdown level1 summary"><p>Gets the current milling course from the host function.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProject MachiningProject { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></dt>
<dd></dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_RenderingFlagBitArray_" data-uid="Sample.Disp.MachiningProjectDisplayee.RenderingFlagBitArray*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_RenderingFlagBitArray" data-uid="Sample.Disp.MachiningProjectDisplayee.RenderingFlagBitArray">
RenderingFlagBitArray
</h3>
<div class="markdown level1 summary"><p>Gets or sets the bit array that controls which elements are rendered.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public BitArray RenderingFlagBitArray { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.bitarray">BitArray</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Sample_Disp_MachiningProjectDisplayee_Display_" data-uid="Sample.Disp.MachiningProjectDisplayee.Display*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_Display_Hi_Disp_Bind_" data-uid="Sample.Disp.MachiningProjectDisplayee.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
<div class="markdown level1 summary"><p>Display function called in <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a> rendering loop.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>Bind with <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a>. See <a class="xref" href="../api/Hi.Disp.Bind.html">Bind</a>.</p>
</dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_ExpandToBox3d_" data-uid="Sample.Disp.MachiningProjectDisplayee.ExpandToBox3d*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Sample.Disp.MachiningProjectDisplayee.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the destination box.
This function is usually used to compute the bounding box of elements.</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="../api/Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>Destination box</p>
</dd>
</dl>
<a id="Sample_Disp_MachiningProjectDisplayee_GetAnchor_" data-uid="Sample.Disp.MachiningProjectDisplayee.GetAnchor*"></a>
<h3 id="Sample_Disp_MachiningProjectDisplayee_GetAnchor" data-uid="Sample.Disp.MachiningProjectDisplayee.GetAnchor">
GetAnchor()
</h3>
<div class="markdown level1 summary"><p>Get key anchor. (i.e. root anchor)</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetAnchor()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="../api/Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>key anchor</p>
</dd>
</dl>
</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>
@@ -154,6 +154,21 @@ Shows operations like loading STL data, transforming geometries, and basic visua
<dd><p>Provides utility functions for running HiAPI display examples in a WPF environment.
Contains helper methods that simplify the setup and execution of WPF applications with HiAPI rendering.
Handles common initialization and cleanup tasks for visualization examples.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Disp.HeidenhainCoordinateEntryDisplayee.html">HeidenhainCoordinateEntryDisplayee</a></dt>
<dd><p>Displayee for Heidenhain coordinate entry visualization.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Disp.IsoCoordinateEntryDisplayee.html">IsoCoordinateEntryDisplayee</a></dt>
<dd><p>Displayee for ISO coordinate entry visualization.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Sample.Disp.MachiningProjectDisplayee.html">MachiningProjectDisplayee</a></dt>
<dd><p>Represents a displayable wrapper for a machining project.</p>
</dd>
</dl>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class DemoBuildMachineTool | HiAPI-C# 2025 ">
<meta name="description" content="Provides access to the PMC-B1 machine tool model.">
<meta name="description" content="Provides access to the Table-B1 machine tool model.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,7 +97,7 @@ Class DemoBuildMachineTool
<dl><dt>Assembly</dt><dd>Hi.Sample.dll</dd></dl>
</div>
<div class="markdown summary"><p>Provides access to the PMC-B1 machine tool model.</p>
<div class="markdown summary"><p>Provides access to the Table-B1 machine tool model.</p>
</div>
<div class="markdown conceptual"></div>
@@ -172,7 +172,7 @@ using System.Xml.Linq;
namespace Sample.MachineTool
{
/// &lt;summary&gt;
/// Provides access to the PMC-B1 machine tool model.
/// Provides access to the Table-B1 machine tool model.
/// &lt;/summary&gt;
/// &lt;remarks&gt;
/// ### Source Code
@@ -231,7 +231,6 @@ namespace Sample.MachineTool
MachineTool = GenXyzabcMachineTool();
}
#region XML IO
//public PmcB1MachineToolSource(XElement src, object res) : this() { }
/// &lt;summary&gt;
/// XML element name for serialization.
/// &lt;/summary&gt;
@@ -97,7 +97,7 @@ Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Sample.MachineTool.DemoBuildMachineTool.html">DemoBuildMachineTool</a></dt>
<dd><p>Provides access to the PMC-B1 machine tool model.</p>
<dd><p>Provides access to the Table-B1 machine tool model.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -237,8 +237,8 @@ public static class DemoBuildGeomOnlyMachiningProject
IProgress&lt;object&gt; progress = null;
localProjectService.MachiningChain
= XFactory.GenByFile&lt;CodeXyzabcMachineTool&gt;(
&quot;Resource&quot;, &quot;MachineTool/PMC-B1/PMC-B1.mt&quot;, progress);
localProjectService.MachiningChainFile = &quot;PMC-B1/PMC-B1.mt&quot;;
&quot;Resource&quot;, &quot;MachineTool/Table-B1.default/Table-B1.mt&quot;, progress);
localProjectService.MachiningChainFile = &quot;Table-B1.default/Table-B1.mt&quot;;
localProjectService.SaveProject();
@@ -218,11 +218,11 @@ public static class DemoBuildMachiningProject
InnerBeamProfile = new FluteDependentRatioProfile(),
MillingCutterOptLimit = new MillingCutterOptOption(),
};
//build FluteContourTray property
//build Fluting property
double helixAngle_deg = 50;
double radialRakeAngle_deg = 15;
double bottomOuterRadius_mm = diameter_mm / 2 - roundRadius_mm;
millingCutter.FluteContourTray = new UniformContourTray()
millingCutter.Fluting = new UniformFluting()
{
TrackNum = 3,
BaselineOneContour = new FluteContour()
@@ -265,10 +265,10 @@ public static class DemoBuildMachiningProject
MillingCutterOptLimit = new MillingCutterOptOption()
};
//build FluteContourTray property
//build Fluting property
double helixAngle_deg = 50;
double radialRakeAngle_deg = 15;
millingCutter.FluteContourTray = new UniformContourTray()
millingCutter.Fluting = new UniformFluting()
{
TrackNum = 3,
BaselineOneContour = new FluteContour()
@@ -352,16 +352,16 @@ public static class DemoBuildMachiningProject
IdealGeom = null,
WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)),
CuttingPara = XFactory.GenByFile&lt;ICuttingPara&gt;(
&quot;Resource/CuttingParameter&quot;, &quot;Al6061T6.mp&quot;, progress),
&quot;Resource/CuttingParameter&quot;, &quot;Al6061T6.default.mp&quot;, progress),
WorkpieceMaterial = XFactory.GenByFile&lt;WorkpieceMaterial&gt;(
&quot;Resource/WorkpieceMaterial&quot;, &quot;Al6061T6.WorkpieceMaterial&quot;, progress),
&quot;Resource/WorkpieceMaterial&quot;, &quot;Al6061T6.default.WorkpieceMaterial&quot;, progress),
};
#endregion
#region ConfigureMachineChain
localProjectService.MachiningChain
= XFactory.GenByFile&lt;CodeXyzabcMachineTool&gt;(
&quot;Resource&quot;, &quot;MachineTool/PMC-B1/PMC-B1.mt&quot;, progress);
&quot;Resource&quot;, &quot;MachineTool/Table-B1.default/Table-B1.mt&quot;, progress);
#endregion
machiningProject.MakeXmlSourceToFile(projectPath);
@@ -162,6 +162,7 @@ using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows;
using Sample.Disp;
namespace Sample.Machining
{
@@ -159,6 +159,7 @@ using System.Windows;
using Hi.MachiningSteps;
using Hi.HiNcKits;
using Microsoft.Extensions.Logging;
using Sample.Disp;
namespace Sample.Machining
{
@@ -156,6 +156,7 @@ execute NC files, and properly manage project resources using
using Hi.Common.Messages;
using Hi.HiNcKits;
using Hi.MachiningProcs;
using Hi.NcParsers;
using Microsoft.Extensions.Logging;
using System;
using System.IO;
@@ -191,17 +192,22 @@ public static class DemoUseMachiningProject
Console.WriteLine($&quot;Set message event.&quot;);
using StreamWriter writer = new StreamWriter(&quot;msg.txt&quot;);
//show message if something abnormal.
localProjectService.SessionProgress.CollectionItemAdded += pack =&gt;
{
if (pack.Tags.Contains(MessageFlag.Warning.ToString()) ||
pack.Tags.Contains(MessageFlag.Error.ToString()) ||
pack.Tags.Contains(MessageFlag.Exception.ToString()))
{
var sourceCommand = pack.SourceCommand;
writer.WriteLine($&quot;{pack.Message} At \&quot;{sourceCommand?.FilePath}\&quot; (Line {sourceCommand?.GetLineNo()}) \&quot;{sourceCommand?.Line}\&quot;&quot;);
}
};
//show message if something abnormal, from each partitioned message sink:
//shell (session lifecycle), NC diagnostics, and step-anchored diagnostics.
void LogIfAbnormal(IMessage message, ISentenceCarrier sentenceCarrier)
{
var severity = message.GetSeverity();
if (severity != Severity.Warning &amp;&amp; severity != Severity.Error)
return;
var ncLine = sentenceCarrier?.GetSentence()?.FirstIndexedFileLine;
writer.WriteLine($&quot;{message.GetNotification()} At \&quot;{ncLine?.FilePath}\&quot; (Line {ncLine?.GetLineNo()}) \&quot;{ncLine?.Line}\&quot;&quot;);
}
localProjectService.OnShellMessageAdded += (index, message)
=&gt; LogIfAbnormal(message, null);
localProjectService.NcDiagnosticProgress.MessageAdded += (index, diagnostic)
=&gt; LogIfAbnormal(diagnostic, diagnostic.SentenceCarrier);
localProjectService.StepDiagnosticProgress.MessageAdded += (index, diagnostic)
=&gt; LogIfAbnormal(diagnostic, diagnostic.SentenceCarrier);
Console.WriteLine($&quot;Set machining step event.&quot;);
//show MRR.
localProjectService.SessionShell.SessionStepBuilt += (preStep, curStep) =&gt;
+18
View File
@@ -30,6 +30,15 @@
<li>
<a href="Sample.Common.DemoSessionMessage.html" name="" title="DemoSessionMessage">DemoSessionMessage</a>
</li>
<li>
<a href="Sample.Common.PlayerDivConfig.html" name="" title="PlayerDivConfig">PlayerDivConfig</a>
</li>
<li>
<a href="Sample.Common.UserConfig.html" name="" title="UserConfig">UserConfig</a>
</li>
<li>
<a href="Sample.Common.UserService.html" name="" title="UserService">UserService</a>
</li>
</ul>
</li>
<li>
@@ -64,6 +73,15 @@
<li>
<a href="Sample.Disp.DemoUtil.html" name="" title="DemoUtil">DemoUtil</a>
</li>
<li>
<a href="Sample.Disp.HeidenhainCoordinateEntryDisplayee.html" name="" title="HeidenhainCoordinateEntryDisplayee">HeidenhainCoordinateEntryDisplayee</a>
</li>
<li>
<a href="Sample.Disp.IsoCoordinateEntryDisplayee.html" name="" title="IsoCoordinateEntryDisplayee">IsoCoordinateEntryDisplayee</a>
</li>
<li>
<a href="Sample.Disp.MachiningProjectDisplayee.html" name="" title="MachiningProjectDisplayee">MachiningProjectDisplayee</a>
</li>
</ul>
</li>
<li>
File diff suppressed because one or more lines are too long