diff --git a/App/Hi.Wpf.dll b/App/Hi.Wpf.dll index a0ec8e0..9623de2 100644 Binary files a/App/Hi.Wpf.dll and b/App/Hi.Wpf.dll differ diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll index bfb1f62..d34c346 100644 Binary files a/App/HiCbtr.dll and b/App/HiCbtr.dll differ diff --git a/App/HiDisp.dll b/App/HiDisp.dll index e1bc8f2..409e1ab 100644 Binary files a/App/HiDisp.dll and b/App/HiDisp.dll differ diff --git a/App/HiGeom.dll b/App/HiGeom.dll index 0ab5848..f9964ac 100644 Binary files a/App/HiGeom.dll and b/App/HiGeom.dll differ diff --git a/App/HiLicense.dll b/App/HiLicense.dll index 4c5c428..046e7d5 100644 Binary files a/App/HiLicense.dll and b/App/HiLicense.dll differ diff --git a/App/HiMech.dll b/App/HiMech.dll index e68b0af..091d1d3 100644 Binary files a/App/HiMech.dll and b/App/HiMech.dll differ diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index 4634ffd..3265b22 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,8 +11,8 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.Wpf": "3.1.33", - "HiNc": "3.1.50", + "Hi.Wpf": "3.1.34", + "HiNc": "3.1.51", "Microsoft.Extensions.Configuration.Json": "9.0.0", "Microsoft.Extensions.DependencyInjection": "9.0.0", "Microsoft.Extensions.Hosting": "9.0.0", @@ -1659,39 +1659,39 @@ } }, "Grpc.Tools/2.66.0": {}, - "Hi.Wpf/3.1.33": { + "Hi.Wpf/3.1.34": { "dependencies": { - "HiDisp": "3.1.38" + "HiDisp": "3.1.39" }, "runtime": { "lib/net9.0-windows7.0/Hi.Wpf.dll": { - "assemblyVersion": "3.1.33.0", - "fileVersion": "3.1.33.0" + "assemblyVersion": "3.1.34.0", + "fileVersion": "3.1.34.0" } } }, - "HiCbtr/3.1.38": { + "HiCbtr/3.1.39": { "dependencies": { - "HiDisp": "3.1.38" + "HiDisp": "3.1.39" }, "runtime": { "lib/net9.0/HiCbtr.dll": { - "assemblyVersion": "3.1.38.0", - "fileVersion": "3.1.38.0" + "assemblyVersion": "3.1.39.0", + "fileVersion": "3.1.39.0" } } }, - "HiDisp/3.1.38": { + "HiDisp/3.1.39": { "dependencies": { - "HiGeom": "3.1.34", + "HiGeom": "3.1.35", "System.Configuration.ConfigurationManager": "9.0.9", "System.Drawing.Common": "9.0.9", "System.Resources.Extensions": "9.0.9" }, "runtime": { "lib/net9.0/HiDisp.dll": { - "assemblyVersion": "3.1.38.0", - "fileVersion": "3.1.38.0" + "assemblyVersion": "3.1.39.0", + "fileVersion": "3.1.39.0" } }, "native": { @@ -1706,7 +1706,7 @@ } } }, - "HiGeom/3.1.34": { + "HiGeom/3.1.35": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1717,8 +1717,8 @@ }, "runtime": { "lib/net9.0/HiGeom.dll": { - "assemblyVersion": "3.1.34.0", - "fileVersion": "3.1.34.0" + "assemblyVersion": "3.1.35.0", + "fileVersion": "3.1.35.0" } }, "resources": { @@ -1730,27 +1730,27 @@ } } }, - "HiLicense/3.1.32": { + "HiLicense/3.1.33": { "dependencies": { - "HiGeom": "3.1.34" + "HiGeom": "3.1.35" }, "runtime": { "lib/net9.0/HiLicense.dll": { - "assemblyVersion": "3.1.32.0", - "fileVersion": "3.1.32.0" + "assemblyVersion": "3.1.33.0", + "fileVersion": "3.1.33.0" } } }, - "HiMech/3.1.42": { + "HiMech/3.1.43": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.38", + "HiCbtr": "3.1.39", "Microsoft.CodeAnalysis.CSharp.Scripting": "4.14.0" }, "runtime": { "lib/net9.0/HiMech.dll": { - "assemblyVersion": "3.1.42.0", - "fileVersion": "3.1.42.0" + "assemblyVersion": "3.1.43.0", + "fileVersion": "3.1.43.0" } }, "resources": { @@ -1765,20 +1765,20 @@ } } }, - "HiNc/3.1.50": { + "HiNc/3.1.51": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.32", - "HiMech": "3.1.42", - "HiUniNc": "3.1.39", + "HiLicense": "3.1.33", + "HiMech": "3.1.43", + "HiUniNc": "3.1.40", "System.IO.Pipelines": "9.0.9" }, "runtime": { "lib/net9.0/HiNc.dll": { - "assemblyVersion": "3.1.50.0", - "fileVersion": "3.1.50.0" + "assemblyVersion": "3.1.51.0", + "fileVersion": "3.1.51.0" } }, "resources": { @@ -1790,14 +1790,14 @@ } } }, - "HiUniNc/3.1.39": { + "HiUniNc/3.1.40": { "dependencies": { - "HiMech": "3.1.42" + "HiMech": "3.1.43" }, "runtime": { "lib/net9.0/HiUniNc.dll": { - "assemblyVersion": "3.1.39.0", - "fileVersion": "3.1.39.0" + "assemblyVersion": "3.1.40.0", + "fileVersion": "3.1.40.0" } } }, @@ -2442,61 +2442,61 @@ "path": "grpc.tools/2.66.0", "hashPath": "grpc.tools.2.66.0.nupkg.sha512" }, - "Hi.Wpf/3.1.33": { + "Hi.Wpf/3.1.34": { "type": "package", "serviceable": true, - "sha512": "sha512-2Jjg/i72DlpCa++uo02NomT7KlZaeuwnnohnyLg7B/CRZzNH5oIghXD3WBD7tccrYACBL/C3nAkVOoe/Qn5fIw==", - "path": "hi.wpf/3.1.33", - "hashPath": "hi.wpf.3.1.33.nupkg.sha512" + "sha512": "sha512-xYj7sQoFAWJOlnu8jMNMo33Fu0PL/wIyUD8WOZWRv65k3uhfKId+fvlod/bblp6sEJGbPpjvoTYqjSICIWCf2Q==", + "path": "hi.wpf/3.1.34", + "hashPath": "hi.wpf.3.1.34.nupkg.sha512" }, - "HiCbtr/3.1.38": { + "HiCbtr/3.1.39": { "type": "package", "serviceable": true, - "sha512": "sha512-KmtkLiO6CRnPKvhHw93NEcjp5bwlSh5Ze+8aBVDuTE82LHONl9iBsOPBl+FiGviBYYWstONNd0qoPCP1dge1SQ==", - "path": "hicbtr/3.1.38", - "hashPath": "hicbtr.3.1.38.nupkg.sha512" + "sha512": "sha512-4UFiWpjbDLzE+6ph9rZ5u9ntvxRmbkwxlqBHDbdbDggLpdTizvsCqsehWcw1l9/U/DS7T8r5zHoBbkgLbAXX1g==", + "path": "hicbtr/3.1.39", + "hashPath": "hicbtr.3.1.39.nupkg.sha512" }, - "HiDisp/3.1.38": { + "HiDisp/3.1.39": { "type": "package", "serviceable": true, - "sha512": "sha512-xCVii3hZxlwTVFgbq7ayJrarA/eVmHlvy9+o0+o09sNy4izv0Iq9Jw15RUGadkRxYnuFWpcHmkxxq9M3WW+U3A==", - "path": "hidisp/3.1.38", - "hashPath": "hidisp.3.1.38.nupkg.sha512" + "sha512": "sha512-z9p0msRH8f3OfV/vK4vRhtfPafCDRXhXgiqQwEbskZRg+hjIiXU4xqwTy5M8LwSHk9ht1d6J9HdTwtUjjR3Z+A==", + "path": "hidisp/3.1.39", + "hashPath": "hidisp.3.1.39.nupkg.sha512" }, - "HiGeom/3.1.34": { + "HiGeom/3.1.35": { "type": "package", "serviceable": true, - "sha512": "sha512-8H7qESENjnZ/Le99F59flU0KHPB8r1D87CcwvVT9L2yEql6okHBfHgZAWOgjc45L0VlbsE3iiH7D6hHRwem6KQ==", - "path": "higeom/3.1.34", - "hashPath": "higeom.3.1.34.nupkg.sha512" + "sha512": "sha512-aBkdVedhLK5CkilKPdNIIch44/1+kR8w7LaG8JU4iJc9fAV4yHxd5KriAekzmWe+3ujmkmM8kUCKC0Y71ij+fw==", + "path": "higeom/3.1.35", + "hashPath": "higeom.3.1.35.nupkg.sha512" }, - "HiLicense/3.1.32": { + "HiLicense/3.1.33": { "type": "package", "serviceable": true, - "sha512": "sha512-Vj9q4V9SMcRnl29W2fIKHlSt7aoTWGE2YqEkQOadKXo4jSCHYLn+UBquheIOW4t2HwpWmGDm4HH2Nm06MRA9Mw==", - "path": "hilicense/3.1.32", - "hashPath": "hilicense.3.1.32.nupkg.sha512" + "sha512": "sha512-S0XY8RhQOKQkX3Abfr8jkcjqoLguiFXzwA3QTY+HgYtkWLzC/IaxHzTrlLT1HijrCzHyb3qcR+SNEwRqH8mBTQ==", + "path": "hilicense/3.1.33", + "hashPath": "hilicense.3.1.33.nupkg.sha512" }, - "HiMech/3.1.42": { + "HiMech/3.1.43": { "type": "package", "serviceable": true, - "sha512": "sha512-iM969zc3NHLdWVRo6JfCRIcqZN8S3rjfcXgApzeWx8z5We/5ohct5PCnVE9fhmobSvnmvkif8uL7Lhvk9JyJCA==", - "path": "himech/3.1.42", - "hashPath": "himech.3.1.42.nupkg.sha512" + "sha512": "sha512-vQBXD4UkoPoduUnz4D9v+gEb4FuZZ9W5kgKE3+WeF8q7FHDLYue67x7EX9tm5t767Z8yH9sX6ESd3ve9tX8GIA==", + "path": "himech/3.1.43", + "hashPath": "himech.3.1.43.nupkg.sha512" }, - "HiNc/3.1.50": { + "HiNc/3.1.51": { "type": "package", "serviceable": true, - "sha512": "sha512-NEP4r8DFMMbIdXklf70gcgpAIueGDPbhltS3vVhZtmI7hK4neEKdrt4eBFUip9SpeEYxmerru1MCiHNthynBOg==", - "path": "hinc/3.1.50", - "hashPath": "hinc.3.1.50.nupkg.sha512" + "sha512": "sha512-G9jo2iHczdwCIPydYHt2NGQCBF+0i1DaX8Gcsrmx3AaijlhbP7+SkzMmOTgSDqHmmoxuDaYY18NOE8TVXQ7dIw==", + "path": "hinc/3.1.51", + "hashPath": "hinc.3.1.51.nupkg.sha512" }, - "HiUniNc/3.1.39": { + "HiUniNc/3.1.40": { "type": "package", "serviceable": true, - "sha512": "sha512-5bYHSpfuGLTmW3kz3u5HXtgAVmrAfdgaWKykbqxQULoutZ7hN1nLn6wvg05VZL3dYIf2UKfuGgzDsEDcvvFbNQ==", - "path": "hiuninc/3.1.39", - "hashPath": "hiuninc.3.1.39.nupkg.sha512" + "sha512": "sha512-o7xlqbvWdfgjiZKcyZcE+AMBCSxOQA80T5ws/U2dw5kOZ4tjkEYEwSsFF655fA+LTykVm+z70lpBUgXARvPYIA==", + "path": "hiuninc/3.1.40", + "hashPath": "hiuninc.3.1.40.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index 70d9b27..f0d83ff 100644 Binary files a/App/HiNC-2025-win-desktop.dll and b/App/HiNC-2025-win-desktop.dll differ diff --git a/App/HiNC-2025-win-desktop.pdb b/App/HiNC-2025-win-desktop.pdb index d770e75..2ee3f77 100644 Binary files a/App/HiNC-2025-win-desktop.pdb and b/App/HiNC-2025-win-desktop.pdb differ diff --git a/App/HiNc.dll b/App/HiNc.dll index 55d6139..e500685 100644 Binary files a/App/HiNc.dll and b/App/HiNc.dll differ diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index f348d74..5930105 100644 Binary files a/App/HiUniNc.dll and b/App/HiUniNc.dll differ diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll index a970f96..8cf4363 100644 Binary files a/App/en/HiGeom.resources.dll and b/App/en/HiGeom.resources.dll differ diff --git a/App/en/HiMech.resources.dll b/App/en/HiMech.resources.dll index bf19bf8..3a85ac9 100644 Binary files a/App/en/HiMech.resources.dll and b/App/en/HiMech.resources.dll differ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html index a5dba2a..5aa1fb6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html @@ -227,7 +227,8 @@ Class CsvRunner -
+

Configuration for CSV Runner.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html index 6ab2a13..0e01f79 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html @@ -6,7 +6,7 @@ - + @@ -97,11 +97,12 @@ Class CsvRunnerConfig
Assembly
HiNc.dll
-
+

Configuration class for CSV Runner.

+
-
public class CsvRunnerConfig
+
public class CsvRunnerConfig : IMakeXmlSource
@@ -115,6 +116,12 @@ Class CsvRunnerConfig +
+
Implements
+
+
IMakeXmlSource
+
+
@@ -173,6 +180,70 @@ Class CsvRunnerConfig +

Constructors +

+ + + + +

+ CsvRunnerConfig() + +

+ +

Default constructor.

+
+
+ +
+
public CsvRunnerConfig()
+
+ + + + + + + + + + + + + + + +

+ CsvRunnerConfig(XElement) + +

+ +

Constructor from XML.

+
+
+ +
+
public CsvRunnerConfig(XElement src)
+
+ +

Parameters

+
+
src XElement
+

XML element

+
+
+ + + + + + + + + + + +

Properties

@@ -375,7 +446,9 @@ Class CsvRunnerConfig -
+

Parsing dictionary for custom field parsing. +Note: This dictionary cannot be serialized to XML as it contains functions.

+
@@ -495,6 +568,93 @@ Class CsvRunnerConfig + + +

+ XName + +

+ +

Name for XML IO.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html index 2a85897..b7987dd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html @@ -100,7 +100,8 @@ Classes
CsvRunnerConfig
-
+

Configuration class for CSV Runner.

+
NcRunner
diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/common/xml-io.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/common/xml-io.html index 4179ab1..ae53e2b 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/common/xml-io.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/common/xml-io.html @@ -87,7 +87,7 @@

About XML IO

-

The XML IO design pattern in Hi Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format.

+

The XML IO design pattern in HiNc Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format.

Don't serialize the runtime member object like Func<TResult> or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure.

Core Components

IMakeXmlSource Interface

@@ -95,7 +95,7 @@

XFactory Registration

Every class implementing IMakeXmlSource must:

    -
  1. Define a static XName property matching the class name
  2. +
  3. Define a static XName property matching the class name.
  4. Register itself in the static constructor using XFactory.Regs.Add
  5. Implement XML serialization and deserialization logic
@@ -271,41 +271,12 @@ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibit }

Best Practices

    -
  1. XName: Always define static XName property matching the class name
  2. -
  3. Registration: Register in static constructor using XFactory.Regs.Add
  4. +
  5. XName: Always define static XName property matching the class name.
  6. +
  7. Registration: Register in static constructor using XFactory.Regs
  8. +
  9. Call the XName such like _ = CalleeClass.XName; in the caller class static initailization field so that the registration takes effect before calling the Callee construction by XFactory.
  10. Error Handling: Use appropriate GenMode
  11. Legacy Support: Maintain backward compatibility when needed
  12. -
  13. Documentation: Include XML comments for properties and methods
-

Generation Modes

-

The GenMode enumeration provides:

- -

Common Usage Patterns

-
    -
  1. Simple Object Generation:
  2. -
-
var obj = XFactory.Gen<MyType>(xmlElement, baseDir, null, GenMode.Default);
-
-
    -
  1. File-Based Generation:
  2. -
-
var obj = XFactory.GenByFile<MyType>(baseDir, relativeFile, GenMode.Default);
-
-
    -
  1. XML Source and File Generation:
  2. -
-
var xmlSourceAndFile = XFactory.GenXmlSourceAndFile<MyType>(xmlElement, baseDir, null, GenMode.Default);
-
-
    -
  1. Hierarchical Object Generation:
  2. -
-
var childObj = XFactory.GenByChild<IStructureMaterial>(parentElement, baseDir, null, GenMode.Default);
-
diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/common/dictionary-service-pattern.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/common/dictionary-service-pattern.html index d27bf47..544577a 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/common/dictionary-service-pattern.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/common/dictionary-service-pattern.html @@ -90,13 +90,13 @@

Overview

A connection-scoped indexing pattern for referencing backend objects across hierarchical SignalR hub connections.

Core Components

-

<xref:HiNC_2025_webapi.Common.DictionaryService>: Manages connection-scoped index dictionaries

+

DictionaryService: Manages connection-scoped index dictionaries

-

<xref:HiNC_2025_webapi.Common.DictionaryHub>: Base hub that auto-cleans index entries on disconnect

+

DictionaryHub: Base hub that auto-cleans index entries on disconnect

Architecture

Root-Hub
 └── Child-Hub - has parent's connectionId
diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/general-rules.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/general-rules.html
index 6bf850a..9e220d7 100644
--- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/general-rules.html
+++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/general-rules.html
@@ -131,6 +131,8 @@ catch (Exception ex)
 

See GUI File Path Assignment.

Numeric Input/Output Handling

Implement a numeric-utils.js module to handle special floating-point values in web forms. See Numeric Input/Output Utilities for implementation details.

+

DictionaryService Pattern for Hierarchical Components

+

For web applications with hierarchical SignalR hub connections, use the DictionaryService and DictionaryHub Pattern to manage connection-scoped object indexing. This pattern provides isolation between components, supports nested components without conflicts, and ensures automatic cleanup of resources on disconnect.

Translation Remarks

See Translation Remarks.

diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html index 3dc7352..325215e 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html @@ -29,6 +29,16 @@
  • General Rules
  • +
  • + + Common Patterns + + +
  • Initialize HiAPI
  • diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json index cf09bca..6f87c37 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"Sketch to Build HiNC GUI","href":"build-hinc/index.html","topicHref":"build-hinc/index.html","items":[{"name":"General Rules","href":"build-hinc/general-rules.html","topicHref":"build-hinc/general-rules.html"},{"name":"Initialize HiAPI","href":"build-hinc/initialize-hiapi.html","topicHref":"build-hinc/initialize-hiapi.html"},{"name":"Main Panel","href":"build-hinc/main-panel.html","topicHref":"build-hinc/main-panel.html"},{"name":"Bottom Message Bar","href":"build-hinc/message-section-on-main-panel.html","topicHref":"build-hinc/message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"build-hinc/renderingcanvas-tool-bar.html","topicHref":"build-hinc/renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"build-hinc/player/index.html","topicHref":"build-hinc/player/index.html","items":[{"name":"Player Tool Bar","href":"build-hinc/player/player-tool-bar.html","topicHref":"build-hinc/player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html","topicHref":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"build-hinc/player/selected-step-info-panel.html","topicHref":"build-hinc/player/selected-step-info-panel.html"}]},{"name":"Session Message Panel","href":"build-hinc/session-message-panel/index.html","topicHref":"build-hinc/session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"build-hinc/preference/index.html","topicHref":"build-hinc/preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"build-hinc/preference/graphic-cache-dropdown.html","topicHref":"build-hinc/preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"build-hinc/preference/language-selection-submenu.html","topicHref":"build-hinc/preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"build-hinc/preference/step-present-preference-page.html","topicHref":"build-hinc/preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"build-hinc/widget/vec3d/index.html","topicHref":"build-hinc/widget/vec3d/index.html"},{"name":"Object Management Menu Button","href":"build-hinc/widget/object-management-menu-button.html","topicHref":"build-hinc/widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"build-hinc/widget/gui-file-path-assignment.html","topicHref":"build-hinc/widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"build-hinc/widget/polar-resolution-2d-panel.html","topicHref":"build-hinc/widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"build-hinc/widget/numeric-io-utilities.html","topicHref":"build-hinc/widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"build-hinc/widget/resizable-bar.html","topicHref":"build-hinc/widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"build-hinc/geom/index.html","topicHref":"build-hinc/geom/index.html","items":[{"name":"Box3d Control","href":"build-hinc/geom/box3d-control.html","topicHref":"build-hinc/geom/box3d-control.html"},{"name":"Cylindroid Control","href":"build-hinc/geom/cylindroid-control.html","topicHref":"build-hinc/geom/cylindroid-control.html"},{"name":"Geometry Combination Control","href":"build-hinc/geom/geom-combination-control.html","topicHref":"build-hinc/geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"build-hinc/geom/geom-manage-control.html","topicHref":"build-hinc/geom/geom-manage-control.html"},{"name":"Runtime Geometry Panel","href":"build-hinc/geom/runtime-geom-panel.html","topicHref":"build-hinc/geom/runtime-geom-panel.html"},{"name":"STL File Control","href":"build-hinc/geom/stlfile-control.html","topicHref":"build-hinc/geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"build-hinc/geom/transformation-geom-control.html","topicHref":"build-hinc/geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"build-hinc/mech/topo/transformers.html","topicHref":"build-hinc/mech/topo/transformers.html"},{"name":"Fixture Page","href":"build-hinc/mech/fixture-page.html","topicHref":"build-hinc/mech/fixture-page.html"},{"name":"Workpiece Page","href":"build-hinc/mech/workpiece-page.html","topicHref":"build-hinc/mech/workpiece-page.html"}]},{"name":"Controller Page","href":"build-hinc/controller/index.html","topicHref":"build-hinc/controller/index.html"},{"name":"Mission Page","href":"build-hinc/mission/index.html","topicHref":"build-hinc/mission/index.html","items":[{"name":"Script Command Panel","href":"build-hinc/mission/script-command-panel.html","topicHref":"build-hinc/mission/script-command-panel.html"},{"name":"List Command Panel","href":"build-hinc/mission/ListCommand-panel.html","topicHref":"build-hinc/mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"build-hinc/mission/PreSettingCommand-panel.html","topicHref":"build-hinc/mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"build-hinc/mission/NcOptOption-panel.html","topicHref":"build-hinc/mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"build-hinc/mission/NcFileCommand-panel.html","topicHref":"build-hinc/mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"build-hinc/mission/NcCodeCommand-panel.html","topicHref":"build-hinc/mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"build-hinc/mission/PostExecutionCommand-panel.html","topicHref":"build-hinc/mission/PostExecutionCommand-panel.html"}]}]},{"name":"Logic","items":[{"name":"Basic Geometry","href":"basic/geom/basic-geometry.html","topicHref":"basic/geom/basic-geometry.html"},{"name":"Rendering","href":"basic/rendering/index.html","topicHref":"basic/rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"basic/rendering/rendering-canvas/index.html","topicHref":"basic/rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"basic/rendering/rendering-canvas/custom-implementation.html","topicHref":"basic/rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"basic/rendering/drawing/index.html","topicHref":"basic/rendering/drawing/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"basic/mechanism/index.html","topicHref":"basic/mechanism/index.html"},{"name":"Topology Structure","href":"basic/mechanism/Topo/index.html","topicHref":"basic/mechanism/Topo/index.html"},{"name":"Transformers","href":"basic/mechanism/transformers/index.html","topicHref":"basic/mechanism/transformers/index.html"},{"name":"Render Topology","href":"basic/mechanism/render-topology/index.html","topicHref":"basic/mechanism/render-topology/index.html"}]},{"name":"XML IO","href":"basic/common/xml-io.html","topicHref":"basic/common/xml-io.html"}]}]} +{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"Sketch to Build HiNC GUI","href":"build-hinc/index.html","topicHref":"build-hinc/index.html","items":[{"name":"General Rules","href":"build-hinc/general-rules.html","topicHref":"build-hinc/general-rules.html"},{"name":"Common Patterns","items":[{"name":"DictionaryService and DictionaryHub Pattern","href":"build-hinc/common/dictionary-service-pattern.html","topicHref":"build-hinc/common/dictionary-service-pattern.html"}]},{"name":"Initialize HiAPI","href":"build-hinc/initialize-hiapi.html","topicHref":"build-hinc/initialize-hiapi.html"},{"name":"Main Panel","href":"build-hinc/main-panel.html","topicHref":"build-hinc/main-panel.html"},{"name":"Bottom Message Bar","href":"build-hinc/message-section-on-main-panel.html","topicHref":"build-hinc/message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"build-hinc/renderingcanvas-tool-bar.html","topicHref":"build-hinc/renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"build-hinc/player/index.html","topicHref":"build-hinc/player/index.html","items":[{"name":"Player Tool Bar","href":"build-hinc/player/player-tool-bar.html","topicHref":"build-hinc/player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html","topicHref":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"build-hinc/player/selected-step-info-panel.html","topicHref":"build-hinc/player/selected-step-info-panel.html"}]},{"name":"Session Message Panel","href":"build-hinc/session-message-panel/index.html","topicHref":"build-hinc/session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"build-hinc/preference/index.html","topicHref":"build-hinc/preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"build-hinc/preference/graphic-cache-dropdown.html","topicHref":"build-hinc/preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"build-hinc/preference/language-selection-submenu.html","topicHref":"build-hinc/preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"build-hinc/preference/step-present-preference-page.html","topicHref":"build-hinc/preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"build-hinc/widget/vec3d/index.html","topicHref":"build-hinc/widget/vec3d/index.html"},{"name":"Object Management Menu Button","href":"build-hinc/widget/object-management-menu-button.html","topicHref":"build-hinc/widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"build-hinc/widget/gui-file-path-assignment.html","topicHref":"build-hinc/widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"build-hinc/widget/polar-resolution-2d-panel.html","topicHref":"build-hinc/widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"build-hinc/widget/numeric-io-utilities.html","topicHref":"build-hinc/widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"build-hinc/widget/resizable-bar.html","topicHref":"build-hinc/widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"build-hinc/geom/index.html","topicHref":"build-hinc/geom/index.html","items":[{"name":"Box3d Control","href":"build-hinc/geom/box3d-control.html","topicHref":"build-hinc/geom/box3d-control.html"},{"name":"Cylindroid Control","href":"build-hinc/geom/cylindroid-control.html","topicHref":"build-hinc/geom/cylindroid-control.html"},{"name":"Geometry Combination Control","href":"build-hinc/geom/geom-combination-control.html","topicHref":"build-hinc/geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"build-hinc/geom/geom-manage-control.html","topicHref":"build-hinc/geom/geom-manage-control.html"},{"name":"Runtime Geometry Panel","href":"build-hinc/geom/runtime-geom-panel.html","topicHref":"build-hinc/geom/runtime-geom-panel.html"},{"name":"STL File Control","href":"build-hinc/geom/stlfile-control.html","topicHref":"build-hinc/geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"build-hinc/geom/transformation-geom-control.html","topicHref":"build-hinc/geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"build-hinc/mech/topo/transformers.html","topicHref":"build-hinc/mech/topo/transformers.html"},{"name":"Fixture Page","href":"build-hinc/mech/fixture-page.html","topicHref":"build-hinc/mech/fixture-page.html"},{"name":"Workpiece Page","href":"build-hinc/mech/workpiece-page.html","topicHref":"build-hinc/mech/workpiece-page.html"}]},{"name":"Controller Page","href":"build-hinc/controller/index.html","topicHref":"build-hinc/controller/index.html"},{"name":"Mission Page","href":"build-hinc/mission/index.html","topicHref":"build-hinc/mission/index.html","items":[{"name":"Script Command Panel","href":"build-hinc/mission/script-command-panel.html","topicHref":"build-hinc/mission/script-command-panel.html"},{"name":"List Command Panel","href":"build-hinc/mission/ListCommand-panel.html","topicHref":"build-hinc/mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"build-hinc/mission/PreSettingCommand-panel.html","topicHref":"build-hinc/mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"build-hinc/mission/NcOptOption-panel.html","topicHref":"build-hinc/mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"build-hinc/mission/NcFileCommand-panel.html","topicHref":"build-hinc/mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"build-hinc/mission/NcCodeCommand-panel.html","topicHref":"build-hinc/mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"build-hinc/mission/PostExecutionCommand-panel.html","topicHref":"build-hinc/mission/PostExecutionCommand-panel.html"}]}]},{"name":"Logic","items":[{"name":"Basic Geometry","href":"basic/geom/basic-geometry.html","topicHref":"basic/geom/basic-geometry.html"},{"name":"Rendering","href":"basic/rendering/index.html","topicHref":"basic/rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"basic/rendering/rendering-canvas/index.html","topicHref":"basic/rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"basic/rendering/rendering-canvas/custom-implementation.html","topicHref":"basic/rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"basic/rendering/drawing/index.html","topicHref":"basic/rendering/drawing/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"basic/mechanism/index.html","topicHref":"basic/mechanism/index.html"},{"name":"Topology Structure","href":"basic/mechanism/Topo/index.html","topicHref":"basic/mechanism/Topo/index.html"},{"name":"Transformers","href":"basic/mechanism/transformers/index.html","topicHref":"basic/mechanism/transformers/index.html"},{"name":"Render Topology","href":"basic/mechanism/render-topology/index.html","topicHref":"basic/mechanism/render-topology/index.html"}]},{"name":"XML IO","href":"basic/common/xml-io.html","topicHref":"basic/common/xml-io.html"}]}]} diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index b7dc77d..65d810f 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -3612,12 +3612,12 @@ "api/Hi.Numerical.FilePlayers.CsvRunner.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunner.html", "title": "Class CsvRunner | HiAPI-C# 2025", - "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(PacePlayer, SessionMessageHost) public CsvRunner(PacePlayer pacePlayer, SessionMessageHost sessionMessageHost) Parameters pacePlayer PacePlayer sessionMessageHost SessionMessageHost Properties Config public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig PacePlayer public PacePlayer PacePlayer { get; } Property Value PacePlayer SessionMessageHost External Hosted. public SessionMessageHost SessionMessageHost { get; set; } Property Value SessionMessageHost Methods Reset() Reset runtime data. public void Reset() ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, CancellationToken) Runs raw Control lines and yields source control line and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source control line and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" + "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(PacePlayer, SessionMessageHost) public CsvRunner(PacePlayer pacePlayer, SessionMessageHost sessionMessageHost) Parameters pacePlayer PacePlayer sessionMessageHost SessionMessageHost Properties Config Configuration for CSV Runner. public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig PacePlayer public PacePlayer PacePlayer { get; } Property Value PacePlayer SessionMessageHost External Hosted. public SessionMessageHost SessionMessageHost { get; set; } Property Value SessionMessageHost Methods Reset() Reset runtime data. public void Reset() ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, CancellationToken) Runs raw Control lines and yields source control line and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source control line and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" }, "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html", "title": "Class CsvRunnerConfig | HiAPI-C# 2025", - "summary": "Class CsvRunnerConfig Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll public class CsvRunnerConfig Inheritance object CsvRunnerConfig Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CutterLocationPrefixTag Cutter Location Prefix Tag for CSV Parsing. public string CutterLocationPrefixTag { get; set; } Property Value string DurationTag public string DurationTag { get; set; } Property Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public string FeedrateTag_mmdmin { get; set; } Property Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public string LineBeginCsScriptTag { get; set; } Property Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public string LineEndCsScriptTag { get; set; } Property Value string MachineCoordinatePrefixTag Machine Coordinate Prefix Tag for CSV Parsing. public string MachineCoordinatePrefixTag { get; set; } Property Value string ParsingDictionary public Dictionary> ParsingDictionary { get; set; } Property Value Dictionary> SpindleDirectionTag Spindle direction Tag for CSV Parsing. public string SpindleDirectionTag { get; set; } Property Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public string SpindleSpeedTag_rpm { get; set; } Property Value string ToolIdTag Tool ID Tag for CSV Parsing. public string ToolIdTag { get; set; } Property Value string" + "summary": "Class CsvRunnerConfig Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Configuration class for CSV Runner. public class CsvRunnerConfig : IMakeXmlSource Inheritance object CsvRunnerConfig Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunnerConfig() Default constructor. public CsvRunnerConfig() CsvRunnerConfig(XElement) Constructor from XML. public CsvRunnerConfig(XElement src) Parameters src XElement XML element Properties CutterLocationPrefixTag Cutter Location Prefix Tag for CSV Parsing. public string CutterLocationPrefixTag { get; set; } Property Value string DurationTag public string DurationTag { get; set; } Property Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public string FeedrateTag_mmdmin { get; set; } Property Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public string LineBeginCsScriptTag { get; set; } Property Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public string LineEndCsScriptTag { get; set; } Property Value string MachineCoordinatePrefixTag Machine Coordinate Prefix Tag for CSV Parsing. public string MachineCoordinatePrefixTag { get; set; } Property Value string ParsingDictionary Parsing dictionary for custom field parsing. Note: This dictionary cannot be serialized to XML as it contains functions. public Dictionary> ParsingDictionary { get; set; } Property Value Dictionary> SpindleDirectionTag Spindle direction Tag for CSV Parsing. public string SpindleDirectionTag { get; set; } Property Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public string SpindleSpeedTag_rpm { get; set; } Property Value string ToolIdTag Tool ID Tag for CSV Parsing. public string ToolIdTag { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.Numerical.FilePlayers.IControlRunner.html": { "href": "api/Hi.Numerical.FilePlayers.IControlRunner.html", @@ -3637,7 +3637,7 @@ "api/Hi.Numerical.FilePlayers.html": { "href": "api/Hi.Numerical.FilePlayers.html", "title": "Namespace Hi.Numerical.FilePlayers | HiAPI-C# 2025", - "summary": "Namespace Hi.Numerical.FilePlayers Classes CsvRunner CsvRunnerConfig NcRunner Provides functionality for running and processing NC code lines. SourceCommandActEntry Interfaces IControlRunner Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line." + "summary": "Namespace Hi.Numerical.FilePlayers Classes CsvRunner CsvRunnerConfig Configuration class for CSV Runner. NcRunner Provides functionality for running and processing NC code lines. SourceCommandActEntry Interfaces IControlRunner Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line." }, "api/Hi.Numerical.FlexDictionaryUtil.html": { "href": "api/Hi.Numerical.FlexDictionaryUtil.html", @@ -4657,7 +4657,7 @@ "brief/dev-doc/basic/common/xml-io.html": { "href": "brief/dev-doc/basic/common/xml-io.html", "title": "About XML IO | HiAPI-C# 2025", - "summary": "About XML IO The XML IO design pattern in Hi Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format. Don't serialize the runtime member object like Func or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure. Core Components IMakeXmlSource Interface The IMakeXmlSource interface defines the contract for objects that can be serialized to XML format. It contains a single method MakeXmlSource. XFactory Registration Every class implementing IMakeXmlSource must: Define a static XName property matching the class name Register itself in the static constructor using XFactory.Regs.Add Implement XML serialization and deserialization logic For example, see BallApt: static BallApt() { // Register to the . XFactory.Regs.Add(XName, (xml,baseDirectory,relFile, res) => new BallApt(xml)); } Implementation Patterns Simple Value Objects See BallApt implementation: /// /// Name for XML IO. /// public static string XName => nameof(BallApt); /// /// Ctor. /// /// XML public BallApt(XElement src) { Diameter_mm = double.Parse(src.Element(\"D\").Value); FluteHeight_mm = double.Parse(src.Element(\"FluteH\").Value); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) => ToXElement(); /// public XElement ToXElement() { return new XElement(XName, new XElement(\"D\", Diameter_mm), new XElement(\"FluteH\", FluteHeight_mm) ); } Complex Data Structures See SpindleCapability implementation: /// /// Name for XML IO. /// public static string XName => nameof(SpindleCapability); /// /// Initializes a new instance of the class. /// /// The XML element containing spindle data. /// The base directory for resolving relative paths. /// Additional resolution parameters. public SpindleCapability(XElement src, string baseDirectory, params object[] res) { this.SetNameNote(src); if (src.Element(nameof(EnergyEfficiency)) != null) EnergyEfficiency = XmlConvert.ToDouble( src.Element(nameof(EnergyEfficiency)).Value); src.Element(nameof(WorkingTemperatureUpperBoundary_C))?.SelfInvoke( e => WorkingTemperatureUpperBoundary_C = XmlConvert.ToDouble(e.Value)); src.Element(nameof(GearShiftSpindleSpeed_rpm))?.Value?.SelfInvoke( s => GearShiftSpindleSpeed_rpm = string.IsNullOrEmpty(s) ? null : XmlConvert.ToDouble(s)); if (src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)) != null) DryRunFrictionPowerCoefficient_mWdrpm = XmlConvert.ToDouble( src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)).Value); if (src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)) != null) DryRunWindagePowerCoefficient_pWdrpm3 = XmlConvert.ToDouble( src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)).Value); if (src.Element(\"SpindleSpeedToPowerContours\") != null) //for legacy WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = src.Element(\"SpindleSpeedToPowerContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r ==1?double.PositiveInfinity:(r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\") ?.SelfInvoke(dicElem => { WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = dicElem.Elements(\"Contour\") .ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); }); if (src.Element(\"SpindleSpeedToTorqueContours\") != null) //for legacy WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = src.Element(\"SpindleSpeedToTorqueContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\") ?.SelfInvoke(dicElem => { //MessageUtil.WriteLine($\"dicElem: {dicElem}\"); WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = dicElem.Elements(\"Contour\").ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); //MessageUtil.WriteLine($\"keys: {string.Join(',',WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.Select(e=>e.Key))}\"); }); //for legacy compatible. if (src.Element(\"SpindleSpeedToPower--RPM-to-kW\") != null) InfInsistentSpindleSpeedToPower_cycleDs_kW = src.Element(\"SpindleSpeedToPower--RPM-to-kW\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); //for legacy compatible. if (src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\") != null) InfInsistentSpindleSpeedToTorque_cycleDs_Nm = src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) { return new XElement(XName, this.GetNameNoteXElementList(), new XElement(nameof(EnergyEfficiency), EnergyEfficiency), new XElement(nameof(GearShiftSpindleSpeed_rpm), GearShiftSpindleSpeed_rpm), new XElement(nameof(DryRunFrictionPowerCoefficient_mWdrpm), DryRunFrictionPowerCoefficient_mWdrpm), new XElement(nameof(DryRunWindagePowerCoefficient_pWdrpm3), DryRunWindagePowerCoefficient_pWdrpm3), new XElement(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\", WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToPower\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Power-kW\", entry.Y))))) ), new XElement(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\", WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToTorque\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Torque-Nm\", entry.Y))))) ) ); } Best Practices XName: Always define static XName property matching the class name Registration: Register in static constructor using XFactory.Regs.Add Error Handling: Use appropriate GenMode Legacy Support: Maintain backward compatibility when needed Documentation: Include XML comments for properties and methods Generation Modes The GenMode enumeration provides: None Catch Rebase Default Common Usage Patterns Simple Object Generation: var obj = XFactory.Gen(xmlElement, baseDir, null, GenMode.Default); File-Based Generation: var obj = XFactory.GenByFile(baseDir, relativeFile, GenMode.Default); XML Source and File Generation: var xmlSourceAndFile = XFactory.GenXmlSourceAndFile(xmlElement, baseDir, null, GenMode.Default); Hierarchical Object Generation: var childObj = XFactory.GenByChild(parentElement, baseDir, null, GenMode.Default);" + "summary": "About XML IO The XML IO design pattern in HiNc Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format. Don't serialize the runtime member object like Func or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure. Core Components IMakeXmlSource Interface The IMakeXmlSource interface defines the contract for objects that can be serialized to XML format. It contains a single method MakeXmlSource. XFactory Registration Every class implementing IMakeXmlSource must: Define a static XName property matching the class name. Register itself in the static constructor using XFactory.Regs.Add Implement XML serialization and deserialization logic For example, see BallApt: static BallApt() { // Register to the . XFactory.Regs.Add(XName, (xml,baseDirectory,relFile, res) => new BallApt(xml)); } Implementation Patterns Simple Value Objects See BallApt implementation: /// /// Name for XML IO. /// public static string XName => nameof(BallApt); /// /// Ctor. /// /// XML public BallApt(XElement src) { Diameter_mm = double.Parse(src.Element(\"D\").Value); FluteHeight_mm = double.Parse(src.Element(\"FluteH\").Value); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) => ToXElement(); /// public XElement ToXElement() { return new XElement(XName, new XElement(\"D\", Diameter_mm), new XElement(\"FluteH\", FluteHeight_mm) ); } Complex Data Structures See SpindleCapability implementation: /// /// Name for XML IO. /// public static string XName => nameof(SpindleCapability); /// /// Initializes a new instance of the class. /// /// The XML element containing spindle data. /// The base directory for resolving relative paths. /// Additional resolution parameters. public SpindleCapability(XElement src, string baseDirectory, params object[] res) { this.SetNameNote(src); if (src.Element(nameof(EnergyEfficiency)) != null) EnergyEfficiency = XmlConvert.ToDouble( src.Element(nameof(EnergyEfficiency)).Value); src.Element(nameof(WorkingTemperatureUpperBoundary_C))?.SelfInvoke( e => WorkingTemperatureUpperBoundary_C = XmlConvert.ToDouble(e.Value)); src.Element(nameof(GearShiftSpindleSpeed_rpm))?.Value?.SelfInvoke( s => GearShiftSpindleSpeed_rpm = string.IsNullOrEmpty(s) ? null : XmlConvert.ToDouble(s)); if (src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)) != null) DryRunFrictionPowerCoefficient_mWdrpm = XmlConvert.ToDouble( src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)).Value); if (src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)) != null) DryRunWindagePowerCoefficient_pWdrpm3 = XmlConvert.ToDouble( src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)).Value); if (src.Element(\"SpindleSpeedToPowerContours\") != null) //for legacy WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = src.Element(\"SpindleSpeedToPowerContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r ==1?double.PositiveInfinity:(r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\") ?.SelfInvoke(dicElem => { WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = dicElem.Elements(\"Contour\") .ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); }); if (src.Element(\"SpindleSpeedToTorqueContours\") != null) //for legacy WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = src.Element(\"SpindleSpeedToTorqueContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\") ?.SelfInvoke(dicElem => { //MessageUtil.WriteLine($\"dicElem: {dicElem}\"); WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = dicElem.Elements(\"Contour\").ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); //MessageUtil.WriteLine($\"keys: {string.Join(',',WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.Select(e=>e.Key))}\"); }); //for legacy compatible. if (src.Element(\"SpindleSpeedToPower--RPM-to-kW\") != null) InfInsistentSpindleSpeedToPower_cycleDs_kW = src.Element(\"SpindleSpeedToPower--RPM-to-kW\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); //for legacy compatible. if (src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\") != null) InfInsistentSpindleSpeedToTorque_cycleDs_Nm = src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) { return new XElement(XName, this.GetNameNoteXElementList(), new XElement(nameof(EnergyEfficiency), EnergyEfficiency), new XElement(nameof(GearShiftSpindleSpeed_rpm), GearShiftSpindleSpeed_rpm), new XElement(nameof(DryRunFrictionPowerCoefficient_mWdrpm), DryRunFrictionPowerCoefficient_mWdrpm), new XElement(nameof(DryRunWindagePowerCoefficient_pWdrpm3), DryRunWindagePowerCoefficient_pWdrpm3), new XElement(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\", WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToPower\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Power-kW\", entry.Y))))) ), new XElement(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\", WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToTorque\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Torque-Nm\", entry.Y))))) ) ); } Best Practices XName: Always define static XName property matching the class name. Registration: Register in static constructor using XFactory.Regs Call the XName such like _ = CalleeClass.XName; in the caller class static initailization field so that the registration takes effect before calling the Callee construction by XFactory. Error Handling: Use appropriate GenMode Legacy Support: Maintain backward compatibility when needed" }, "brief/dev-doc/basic/geom/basic-geometry.html": { "href": "brief/dev-doc/basic/geom/basic-geometry.html", @@ -4707,7 +4707,7 @@ "brief/dev-doc/build-hinc/common/dictionary-service-pattern.html": { "href": "brief/dev-doc/build-hinc/common/dictionary-service-pattern.html", "title": "DictionaryService and DictionaryHub Pattern | HiAPI-C# 2025", - "summary": "DictionaryService and DictionaryHub Pattern Overview A connection-scoped indexing pattern for referencing backend objects across hierarchical SignalR hub connections. Core Components : Manages connection-scoped index dictionaries First layer key: Hub connectionId (auto-generated by SignalR) Second layer key: LocalId (resource name) Value: References to backend objects (functions, getters/setters) : Base hub that auto-cleans index entries on disconnect Architecture Root-Hub └── Child-Hub - has parent's connectionId └── Grandchild-Hub - has parent's connectionId Each hub gets a unique system-generated hub-connectionId. Child hubs receive parent's connectionId to access parent data. Key Patterns Parent ConnectionId Passing: Child hubs copy parent's function references via connectionId Frontend ConnectionId Chain: Components pass connectionId down the hierarchy Benefits Isolation: Each component has its own connection/index space Nesting Support: Same components can be nested without conflicts Auto-cleanup: Index entries cleaned on disconnect Data Inheritance: Access parent's backend objects via connectionId chain Best Practices Apply or inherit from DictionaryHub for auto-cleanup Use meaningful key names (e.g., “transformer-getter”) Common Pitfalls Don't use child's connectionId to index parent's data" + "summary": "DictionaryService and DictionaryHub Pattern Overview A connection-scoped indexing pattern for referencing backend objects across hierarchical SignalR hub connections. Core Components DictionaryService: Manages connection-scoped index dictionaries First layer key: Hub connectionId (auto-generated by SignalR) Second layer key: LocalId (resource name) Value: References to backend objects (functions, getters/setters) DictionaryHub: Base hub that auto-cleans index entries on disconnect Architecture Root-Hub └── Child-Hub - has parent's connectionId └── Grandchild-Hub - has parent's connectionId Each hub gets a unique system-generated hub-connectionId. Child hubs receive parent's connectionId to access parent data. Key Patterns Parent ConnectionId Passing: Child hubs copy parent's function references via connectionId Frontend ConnectionId Chain: Components pass connectionId down the hierarchy Benefits Isolation: Each component has its own connection/index space Nesting Support: Same components can be nested without conflicts Auto-cleanup: Index entries cleaned on disconnect Data Inheritance: Access parent's backend objects via connectionId chain Best Practices Apply or inherit from DictionaryHub for auto-cleanup Use meaningful key names (e.g., “transformer-getter”) Common Pitfalls Don't use child's connectionId to index parent's data" }, "brief/dev-doc/build-hinc/controller/index.html": { "href": "brief/dev-doc/build-hinc/controller/index.html", @@ -4722,7 +4722,7 @@ "brief/dev-doc/build-hinc/general-rules.html": { "href": "brief/dev-doc/build-hinc/general-rules.html", "title": "General Rules | HiAPI-C# 2025", - "summary": "General Rules Tip You MUST read the cited hyperlink before you do the job. ASK if you think the hyperlink is not work. Handle Message and Exception If message is well-managed, apply MessageKit to show the message; if the message is Exception, apply ExceptionUtil.ShowException(Exception, object) to show the exception for detail treatment. The messages are shown in Message Section on Main Panel. For examples of message and exception handling patterns: Normal message handling: MessageKit.AddMessage(\"Operation completed successfully.\"); MessageKit.AddWarning(\"Please check your input.\"); Exception handling in synchronous code: try { // Your code here throw new NotImplementedException(\"Demo exception\"); } catch (Exception ex) { ExceptionUtil.ShowException(ex, null); } Exception handling in asynchronous code: await Task.Run(() => { // Your async operation here throw new NotImplementedException(\"Demo async exception\"); }).ShowIfCatched(null); The examples are in project Hi.Sample. See this page for git repository. Loose Manner Run Skippable Rapid Calling Synchronous Action in Loose Manner. Some synchronous action may be calling rapidly but only the last call has to be effective (or it is endurable to loss some previous action call). Define a LooseRunner and apply LooseRunner.TryRun(Action) to run the action. Dispose the LooseRunner on owner disposing to ensure the tryrun action is well-managed. GUI File Path Assignment See GUI File Path Assignment. Numeric Input/Output Handling Implement a numeric-utils.js module to handle special floating-point values in web forms. See Numeric Input/Output Utilities for implementation details. Translation Remarks See Translation Remarks." + "summary": "General Rules Tip You MUST read the cited hyperlink before you do the job. ASK if you think the hyperlink is not work. Handle Message and Exception If message is well-managed, apply MessageKit to show the message; if the message is Exception, apply ExceptionUtil.ShowException(Exception, object) to show the exception for detail treatment. The messages are shown in Message Section on Main Panel. For examples of message and exception handling patterns: Normal message handling: MessageKit.AddMessage(\"Operation completed successfully.\"); MessageKit.AddWarning(\"Please check your input.\"); Exception handling in synchronous code: try { // Your code here throw new NotImplementedException(\"Demo exception\"); } catch (Exception ex) { ExceptionUtil.ShowException(ex, null); } Exception handling in asynchronous code: await Task.Run(() => { // Your async operation here throw new NotImplementedException(\"Demo async exception\"); }).ShowIfCatched(null); The examples are in project Hi.Sample. See this page for git repository. Loose Manner Run Skippable Rapid Calling Synchronous Action in Loose Manner. Some synchronous action may be calling rapidly but only the last call has to be effective (or it is endurable to loss some previous action call). Define a LooseRunner and apply LooseRunner.TryRun(Action) to run the action. Dispose the LooseRunner on owner disposing to ensure the tryrun action is well-managed. GUI File Path Assignment See GUI File Path Assignment. Numeric Input/Output Handling Implement a numeric-utils.js module to handle special floating-point values in web forms. See Numeric Input/Output Utilities for implementation details. DictionaryService Pattern for Hierarchical Components For web applications with hierarchical SignalR hub connections, use the DictionaryService and DictionaryHub Pattern to manage connection-scoped object indexing. This pattern provides isolation between components, supports nested components without conflicts, and ensures automatic cleanup of resources on disconnect. Translation Remarks See Translation Remarks." }, "brief/dev-doc/build-hinc/geom/box3d-control.html": { "href": "brief/dev-doc/build-hinc/geom/box3d-control.html", diff --git a/App/wwwroot/HiAPI-docsite/manifest.json b/App/wwwroot/HiAPI-docsite/manifest.json index 792ad4c..cbdcb40 100644 --- a/App/wwwroot/HiAPI-docsite/manifest.json +++ b/App/wwwroot/HiAPI-docsite/manifest.json @@ -10144,7 +10144,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.Numerical.FilePlayers.CsvRunnerConfig", - "Summary": null + "Summary": "

    Configuration class for CSV Runner.

    \n" }, { "type": "ManagedReference", diff --git a/App/wwwroot/HiAPI-docsite/xrefmap.yml b/App/wwwroot/HiAPI-docsite/xrefmap.yml index 7ef784b..e838f12 100644 --- a/App/wwwroot/HiAPI-docsite/xrefmap.yml +++ b/App/wwwroot/HiAPI-docsite/xrefmap.yml @@ -115610,6 +115610,34 @@ references: commentId: T:Hi.Numerical.FilePlayers.CsvRunnerConfig fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig nameWithType: CsvRunnerConfig +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor + name: CsvRunnerConfig() + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor + commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor + name.vb: New() + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig() + fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New() + nameWithType: CsvRunnerConfig.CsvRunnerConfig() + nameWithType.vb: CsvRunnerConfig.New() +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor(System.Xml.Linq.XElement) + name: CsvRunnerConfig(XElement) + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig(System.Xml.Linq.XElement) + fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New(System.Xml.Linq.XElement) + nameWithType: CsvRunnerConfig.CsvRunnerConfig(XElement) + nameWithType.vb: CsvRunnerConfig.New(XElement) +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor* + name: CsvRunnerConfig + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig__ctor_ + commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CsvRunnerConfig + fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.New + nameWithType: CsvRunnerConfig.CsvRunnerConfig + nameWithType.vb: CsvRunnerConfig.New - uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag name: CutterLocationPrefixTag href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefixTag @@ -115688,6 +115716,22 @@ references: isSpec: "True" fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag nameWithType: CsvRunnerConfig.MachineCoordinatePrefixTag +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(string, string, bool) + fullName.vb: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(String, String, Boolean) + nameWithType: CsvRunnerConfig.MakeXmlSource(string, string, bool) + nameWithType.vb: CsvRunnerConfig.MakeXmlSource(String, String, Boolean) +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_ + commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource + isSpec: "True" + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource + nameWithType: CsvRunnerConfig.MakeXmlSource - uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.ParsingDictionary name: ParsingDictionary href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_ParsingDictionary @@ -115740,6 +115784,19 @@ references: isSpec: "True" fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.ToolIdTag nameWithType: CsvRunnerConfig.ToolIdTag +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName + name: XName + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_XName + commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.XName + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName + nameWithType: CsvRunnerConfig.XName +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName* + name: XName + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_XName_ + commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.XName + isSpec: "True" + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.XName + nameWithType: CsvRunnerConfig.XName - uid: Hi.Numerical.FilePlayers.IControlRunner name: IControlRunner href: api/Hi.Numerical.FilePlayers.IControlRunner.html diff --git a/App/zh-Hans/HiMech.resources.dll b/App/zh-Hans/HiMech.resources.dll index 108b123..a5f3e03 100644 Binary files a/App/zh-Hans/HiMech.resources.dll and b/App/zh-Hans/HiMech.resources.dll differ diff --git a/App/zh-Hans/HiNc.resources.dll b/App/zh-Hans/HiNc.resources.dll index 0e1a4bb..714aa9f 100644 Binary files a/App/zh-Hans/HiNc.resources.dll and b/App/zh-Hans/HiNc.resources.dll differ diff --git a/App/zh-Hant/HiGeom.resources.dll b/App/zh-Hant/HiGeom.resources.dll index 3aa011a..eec89df 100644 Binary files a/App/zh-Hant/HiGeom.resources.dll and b/App/zh-Hant/HiGeom.resources.dll differ diff --git a/App/zh-Hant/HiMech.resources.dll b/App/zh-Hant/HiMech.resources.dll index 44a7d66..c8b2aeb 100644 Binary files a/App/zh-Hant/HiMech.resources.dll and b/App/zh-Hant/HiMech.resources.dll differ diff --git a/App/zh-Hant/HiNc.resources.dll b/App/zh-Hant/HiNc.resources.dll index 2692050..ca8fd31 100644 Binary files a/App/zh-Hant/HiNc.resources.dll and b/App/zh-Hant/HiNc.resources.dll differ