Archived
449 lines
32 KiB
HTML
449 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Namespace Hi.Numerical.ClsfParsers | HiAPI-C# 2025 </title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="title" content="Namespace Hi.Numerical.ClsfParsers | HiAPI-C# 2025 ">
|
||
|
||
|
||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||
<link rel="stylesheet" href="../public/main.css">
|
||
<meta name="docfx:navrel" content="../toc.html">
|
||
<meta name="docfx:tocrel" content="toc.html">
|
||
|
||
<meta name="docfx:rel" content="../">
|
||
|
||
|
||
|
||
<meta name="loc:inThisArticle" content="In this article">
|
||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||
<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="Hi.Numerical.ClsfParsers">
|
||
|
||
<h1 id="Hi_Numerical_ClsfParsers" data-uid="Hi.Numerical.ClsfParsers" class="text-break">Namespace Hi.Numerical.ClsfParsers</h1>
|
||
<div class="markdown level0 summary"></div>
|
||
<div class="markdown level0 conceptual"></div>
|
||
<div class="markdown level0 remarks"></div>
|
||
|
||
<h3 id="classes">
|
||
Classes
|
||
</h3>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html">ClArcMcMotionSemantic</a></dt>
|
||
<dd><p>MC-machine counterpart of the <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClArc">ClArc</a> branch of
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionSemantic.html">ClMotionSemantic</a>: builds the workpiece-frame
|
||
<a class="xref" href="Hi.CutterLocations.ClPath.ClCircleArc.html">ClCircleArc</a> from <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClArcEvent">ClArcEvent</a>,
|
||
transforms it into the kinematic Pn frame (the workpiece→Pn transform
|
||
wired on <a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html#Hi_NcParsers_Dependencys_SystemWired_NcKinematicsDependency_ProgramZeroToPnProvider">ProgramZeroToPnProvider</a>),
|
||
and emits <a class="xref" href="Hi.Numerical.Acts.ActClArcMcXyzabcContour.html">ActClArcMcXyzabcContour</a> — a true CL-space arc
|
||
with per-step inverse kinematics. Endpoint machine coordinates come from
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a> (this block, solved by
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a> + <code>McXyzSyntax</code>) and the
|
||
previous block's modal state.
|
||
Feedrate/rapid timing mirrors <a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionSemantic.html">ClMotionSemantic</a>; like the
|
||
RTCP linear semantic, a feed move without a usable feedrate drops the
|
||
motion (with a validation warning) instead of emitting zero duration.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionSemantic.html">ClMotionSemantic</a></dt>
|
||
<dd><p>Resolves the pure-CL motion forms into cutter-location acts that drive a
|
||
<code>ClMillingDevice</code> chain directly — no machine coordinates involved:
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClTeleport">ClTeleport</a> → <a class="xref" href="Hi.Numerical.Acts.ActClTeleport.html">ActClTeleport</a>,
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a> → <a class="xref" href="Hi.Numerical.Acts.ActClLinear.html">ActClLinear</a>,
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClArc">ClArc</a> → <a class="xref" href="Hi.Numerical.Acts.ActClArc.html">ActClArc</a>. Feed moves also
|
||
emit <a class="xref" href="Hi.Numerical.Acts.ActFeedrate.html">ActFeedrate</a> (from the modal <code>Feedrate</code> section);
|
||
rapid moves emit <a class="xref" href="Hi.Numerical.Acts.ActRapid.html">ActRapid</a> at
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html#Hi_Numerical_ClsfParsers_ClsfRunnerConfig_RapidFeedrate_mmdmin">RapidFeedrate_mmdmin</a>. Durations are
|
||
path-length / effective feedrate.</p>
|
||
<p>
|
||
Contrast with <a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a>, which handles the
|
||
RTCP form <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a> of the <b>NC</b> pipeline by
|
||
deriving CL from machine coordinates — this semantic is its CL-source
|
||
counterpart and reads endpoints from
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_CutterLocationState">CutterLocationState</a> instead.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html">ClMotionValveSemantic</a></dt>
|
||
<dd><p>Valve that routes each block to exactly one motion-semantic family, so
|
||
the leaves keep a single duty and never need cross-guards:</p>
|
||
<ul><li>Block carries a <code>MachineCoordinateState</code> section (written by
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a> + <code>McXyzSyntax</code> when the chain
|
||
is an MC machine) →
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html#Hi_Numerical_ClsfParsers_ClMotionValveSemantic_McSemanticList">McSemanticList</a> (default:
|
||
<a class="xref" href="Hi.NcParsers.Semantics.McLinearMotionSemantic.html">McLinearMotionSemantic</a> for downgraded constant-posture
|
||
moves, <a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a> for RTCP-style
|
||
orientation-changing lines, <a class="xref" href="Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html">ClArcMcMotionSemantic</a>,
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html">ClTeleportMcMotionSemantic</a>).</li><li>Otherwise (pure-CL <code>ClMillingDevice</code> project) →
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html#Hi_Numerical_ClsfParsers_ClMotionValveSemantic_ClSemanticList">ClSemanticList</a> (default <a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionSemantic.html">ClMotionSemantic</a>).</li></ul>
|
||
The semantic-side counterpart of <a class="xref" href="Hi.NcParsers.Syntaxs.BundleSyntax.html">BundleSyntax</a> composition:
|
||
children are serialized nested under group elements and reconstructed via
|
||
<a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>.
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html">ClTeleportMcMotionSemantic</a></dt>
|
||
<dd><p>MC-machine counterpart of the <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClTeleport">ClTeleport</a> branch
|
||
of <a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionSemantic.html">ClMotionSemantic</a>: emits an instant
|
||
<a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcTeleport.html">ActMcXyzabcTeleport</a> from the block's
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a> endpoint solved by
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a> + <code>McXyzSyntax</code>. Mirrors the
|
||
pure-CL teleport semantics —
|
||
no machining step, no time accumulation.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a></dt>
|
||
<dd><p>Endpoint inverse kinematics for driving an MC machine from CLSF input,
|
||
expressed in the NC pipeline's transform vocabulary: when the pipeline's
|
||
<a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html">NcKinematicsDependency</a> resolves to a live solver (the
|
||
machining chain is an <code>IXyzabcChain</code>), each pure-CL motion block
|
||
gets</p>
|
||
<ul><li>a <a class="xref" href="Hi.NcParsers.Keywords.ToolHeightCompensation.html">ToolHeightCompensation</a> section (the active tool's
|
||
attacher→tip length) plus its chain entry — a translation along the
|
||
workpiece-frame tool axis, mirroring the RTCP entry of
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html">G43p4RtcpSyntax</a>;</li><li>a <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_PivotTransformSource">PivotTransformSource</a> chain entry
|
||
— <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_MakePivotTransformMat_Hi_Numerical_Xyzabc_IMachineKinematics_Hi_Geom_Vec3d_Hi_Geom_Mat4d_">MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d)</a>
|
||
anchored to the workpiece frame, absorbing the fixture topology
|
||
(workpiece→Pn, wired on
|
||
<a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html#Hi_NcParsers_Dependencys_SystemWired_NcKinematicsDependency_ProgramZeroToPnProvider">ProgramZeroToPnProvider</a>) together
|
||
with the Pn→MC kinematics at the solved endpoint rotary state;</li><li>the solved rotary axes in raw degrees on
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a> (wrapped afterwards by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html">McAbcCyclicPathSyntax</a>) — machine XYZ is <b>not</b> written
|
||
here; the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> composes it from
|
||
<code>ProgramXyz × chain</code> exactly like the NC pipeline.</li></ul>
|
||
Without a solver (pure-CL <code>ClMillingDevice</code> project) this syntax is
|
||
inert and the pipeline stays pure CL.
|
||
<p>
|
||
Entry <code>Kind</code> follows the block's posture: when the solved rotary
|
||
endpoint cyclically equals the previous block's modal state the entries
|
||
are <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_KindStatic">KindStatic</a> (contour-valid), else
|
||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_KindDynamic">KindDynamic</a> (endpoint snapshot; path
|
||
interpolation stays in CL space with per-step IK in
|
||
<a class="xref" href="Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html">ActClLinearMcXyzabcContour</a> /
|
||
<a class="xref" href="Hi.Numerical.Acts.ActClArcMcXyzabcContour.html">ActClArcMcXyzabcContour</a>). A
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a> block whose finished chain has no
|
||
Dynamic entry downgrades to <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_McLinear">McLinear</a> — the same
|
||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_HasDynamicEntry_System_Text_Json_Nodes_JsonObject_">HasDynamicEntry(JsonObject)</a> dispatch the NC
|
||
pipeline uses, where MC-linear and CL-linear tip paths coincide and
|
||
per-step IK is unnecessary.
|
||
</p>
|
||
<p>
|
||
When the endpoint cannot be solved (e.g. a tilted normal on a 3-axis
|
||
machine) the block's <code>MotionEvent</code> (and arc payload) is removed
|
||
together with its <code>ProgramXyz</code> and transform chain — so
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> composes nothing and the modal MC lookback
|
||
skips the unreachable block — and a validation error anchors to the CLSF
|
||
line; the machine holds position over the bad block.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html">ClsfKeys</a></dt>
|
||
<dd><p>JSON section names and keys specific to the NX-CL (CLSF) pipeline.
|
||
General sections shared with the NC/CSV pipelines
|
||
(<code>MotionEvent</code>, <code>Feedrate</code>, <code>SpindleSpeed</code>, <code>Coolant</code>,
|
||
<code>ToolChange</code>) keep their contracts from
|
||
<a class="xref" href="Hi.NcParsers.Keywords.html">Hi.NcParsers.Keywords</a> /
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html">ToolChangeSyntax</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html">ClsfRecordCleanupSyntax</a></dt>
|
||
<dd><p>Inspection-stage tail of the CLSF record chain. A record that survived
|
||
every <code>RecordTo*</code> syntax is dispatched here:</p>
|
||
<ul><li>words in <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html#Hi_Numerical_ClsfParsers_ClsfRunnerConfig_ExcludedWords">ExcludedWords</a> — intentional
|
||
skips (<code>PAINT</code>, <code>TOOL PATH</code>, …), consumed silently;</li><li><code>UNITS</code> — <code>MM</code> is the pipeline's native unit (silent);
|
||
anything else keeps running but warns that coordinates are not
|
||
converted;</li><li><code>SET_WORKPIECE</code> — reported as ignored (the workpiece is
|
||
project-level configuration, not runner input);</li><li>anything else — <code>ClsfRecord--Unconsumed</code> validation
|
||
warning.</li></ul>
|
||
Must run after every other <code>RecordTo*</code> syntax.
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html">ClsfRecordSyntax</a></dt>
|
||
<dd><p>Per-record CLSF parsing syntax. Normalizes the block text (strips
|
||
<code>$$</code> comments, joins <code>$</code> continuation lines), splits it into the
|
||
record word and its comma-separated parameters, and stamps them into
|
||
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a> under <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html#Hi_Numerical_ClsfParsers_ClsfRecordSyntax_ClsfRecordKey">ClsfRecordKey</a> for
|
||
the downstream <code>RecordTo*</code> syntaxes to consume. Numeric parameters
|
||
are pre-typed to <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>.</p>
|
||
<p>
|
||
The word is everything before the first <code>/</code> with whitespace runs
|
||
collapsed — multi-word heads (<code>TOOL PATH</code>) and hyphenated records
|
||
without parameters (<code>END-OF-PATH</code>) are single words, fixing the
|
||
legacy parser's first-token-only dispatch.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html">ClsfRunnerConfig</a></dt>
|
||
<dd><p>Configuration dependency for the NX-CL (CLSF) runner: the rapid traverse
|
||
rate (a CLSF has no machine axes, so <code>RAPID</code> timing needs an assumed
|
||
rate), the tool-creation policy, and the intentionally skipped record
|
||
words. Also serves as the pipeline's <a class="xref" href="Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html">IRapidFeedrateConfig</a> so
|
||
the machine-coordinate motion semantics reused from the NC pipeline
|
||
(<code>McLinearMotionSemantic</code>, <code>ClLinearMcMotionSemantic</code>) time
|
||
rapids from the same assumed rates — axis-uniform: every linear axis gets
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html#Hi_Numerical_ClsfParsers_ClsfRunnerConfig_RapidFeedrate_mmdmin">RapidFeedrate_mmdmin</a>, every rotary axis
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html#Hi_Numerical_ClsfParsers_ClsfRunnerConfig_RotaryRapidFeedrate_degdmin">RotaryRapidFeedrate_degdmin</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfSegmenter.html">ClsfSegmenter</a></dt>
|
||
<dd><p>Segments an NX CLSF (cutter location source file) stream for the
|
||
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> pipeline. A record normally occupies one
|
||
physical line; a line whose text (after stripping the <code>$$</code> comment)
|
||
ends with a single <code>$</code> continues on the next line, so continued
|
||
lines are joined into one multi-line <a class="xref" href="Hi.NcParsers.Sentence.html">Sentence</a> for
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html">ClsfRecordSyntax</a> to parse.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html">ClsfToolBuildSemantic</a></dt>
|
||
<dd><p>Materializes a milling tool from the modal
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClsfToolData">ClsfToolData</a> geometry (CLSF <code>TLDATA/MILL</code>)
|
||
into the <a class="xref" href="Hi.Machining.MachiningToolHouse.html">MachiningToolHouse</a> when a <code>ToolChange</code> section
|
||
requests a tool id the house does not hold — CLSF files carry their own
|
||
tool definitions, so a project does not need to pre-configure every tool.
|
||
With <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html#Hi_Numerical_ClsfParsers_ClsfRunnerConfig_PreferToolHouse">PreferToolHouse</a> (default) an existing
|
||
entry always wins. Emits no acts; must run before
|
||
<a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a> so the tool exists when the
|
||
tooling act is executed.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html">MsysCoordinateOffsetSyntax</a></dt>
|
||
<dd><p>Expresses the modal CLSF <code>MSYS</code> frame in the NC pipeline's transform
|
||
vocabulary on machine-coordinate motion blocks: the rotation part becomes
|
||
a <a class="xref" href="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html#Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TransformSource">TransformSource</a> entry (the G68.2
|
||
tilted-work-plane analogue) and the translation part becomes a
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html#Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_TransformSource">TransformSource</a> entry plus
|
||
<a class="xref" href="Hi.NcParsers.Keywords.CoordinateOffset.html">CoordinateOffset</a> section (the G54 work-offset analogue,
|
||
CoordinateId <a class="xref" href="Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html#Hi_Numerical_ClsfParsers_MsysCoordinateOffsetSyntax_MsysCoordinateId">MsysCoordinateId</a>) in
|
||
<a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a>. It also restores
|
||
the commanded <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a> — the MSYS-local
|
||
GOTO point — from the workpiece-frame
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_CutterLocationState">CutterLocationState</a> endpoint, so the shared
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> composes machine XYZ exactly like the NC
|
||
pipeline: <code>ProgramXyz × composed chain → MachineCoordinateState</code>.</p>
|
||
<p>
|
||
Entry order carries the math: the MSYS matrix maps local points as
|
||
<code>p·R + t</code> (row-vector convention), so the rotation entry precedes
|
||
the translation entry. Both are
|
||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_KindStatic">KindStatic</a> — an MSYS is a fixed frame
|
||
for every point of the blocks it governs. The rotation entry is omitted
|
||
for a pure-translation MSYS (and for the absent-MSYS identity), keeping
|
||
the common dump exactly G54-shaped.
|
||
</p>
|
||
<p>
|
||
Inert without a wired kinematics solver (pure-CL <code>ClMillingDevice</code>
|
||
project) and on non-motion blocks: the pure-CL pipeline keeps its own CL
|
||
vocabulary and must never receive <code>ProgramXyz</code> or a transform chain
|
||
— <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> would otherwise fabricate a
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a> and misroute the block to the
|
||
machine-coordinate semantics. <a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a>
|
||
continues the chain with the tool-height and kinematic-pivot entries.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.NxClRunner.html">NxClRunner</a></dt>
|
||
<dd><p>Factory for a <a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> that reads NX CLSF (cutter
|
||
location source file) input. On a <code>ClMillingDevice</code> chain it
|
||
resolves into <b>pure-CL</b> acts
|
||
(<code>ActClTeleport</code>/<code>ActClLinear</code>/<code>ActClArc</code>); on an MC
|
||
machine (<code>IXyzabcChain</code>, detected through the wired
|
||
<a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html">NcKinematicsDependency</a>) each motion block is expressed in
|
||
the NC pipeline's transform vocabulary —
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html">MsysCoordinateOffsetSyntax</a> writes the MSYS work-offset
|
||
entries plus <code>ProgramXyz</code>, <a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a>
|
||
inverse-solves the endpoint rotary state and writes the tool-height /
|
||
kinematic-pivot entries, the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> composes
|
||
<code>MachineCoordinateState</code> from <code>ProgramXyz × chain</code> — and
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html">ClMotionValveSemantic</a> routes the block to the
|
||
machine-coordinate semantics instead. The record chain maps each CLSF
|
||
record into the same standardized JSON sections the NC/CSV pipelines
|
||
use (<code>Feedrate</code>, <code>SpindleSpeed</code>, <code>Coolant</code>,
|
||
<code>ToolChange</code>, <code>MotionEvent</code>), so the general semantics are
|
||
reused unchanged; only the motion and tool-creation semantics are
|
||
CLSF-specific.</p>
|
||
<p>
|
||
The modal carry runs <b>first</b> in the record bundle (unlike the NC
|
||
pipeline's carry-at-the-end): each piece receives the previous block's
|
||
modal sections (<code>Msys</code>, <code>CutterLocationState</code>, tool data,
|
||
feedrate, …) before its own record is resolved, so a GOTO reads its
|
||
begin point and MSYS from its own piece and then overwrites the state
|
||
with the new endpoint.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html">RecordToClMotionSyntax</a></dt>
|
||
<dd><p>Translates the CLSF motion records into the pure-CL motion contract:</p>
|
||
<ul><li><code>RAPID</code> → one-shot <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClRapidEvent">ClRapidEvent</a> (armed
|
||
until the next GOTO; a passed motion or <code>FEDRAT</code> cancels it).</li><li><code>CIRCLE</code>/<code>MOVARC</code> → one-shot
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClCircleEvent">ClCircleEvent</a> in workpiece coordinates, with the
|
||
NX axis-direction negation applied.</li><li><code>GOTO</code> → the modal <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_CutterLocationState">CutterLocationState</a>
|
||
endpoint (MSYS applied) plus a one-shot <code>MotionEvent</code> whose
|
||
<code>Form</code> is <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClTeleport">ClTeleport</a> (first motion, FROM,
|
||
or first motion after a tool change),
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClArc">ClArc</a> (an armed circle record), or
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a>; an arc GOTO also receives the
|
||
consumed circle geometry as <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClArcEvent">ClArcEvent</a>.</li></ul>
|
||
Requires the pipeline's modal carry to run <b>before</b> this syntax on
|
||
each node, so the previous endpoint / MSYS are already present on the
|
||
current piece when the GOTO is resolved.
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html">RecordToCoolantSyntax</a></dt>
|
||
<dd><p>Translates a <code>COOLNT</code> record into the standardized
|
||
<a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html">ICoolantDef</a> section consumed by the general
|
||
<a class="xref" href="Hi.NcParsers.Semantics.CoolantSemantic.html">CoolantSemantic</a>:
|
||
<code>ON</code>/<code>FLOOD</code> → <a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Flood">Flood</a>,
|
||
<code>MIST</code> → <a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Mist">Mist</a>, <code>OFF</code> →
|
||
<a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Off">Off</a>; other CLSF coolant modes fall back to flood
|
||
with a configuration warning.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html">RecordToFeedrateSyntax</a></dt>
|
||
<dd><p>Translates a <code>FEDRAT</code> record into the standardized modal
|
||
<code>Feedrate</code> section (always <code>G94</code> — mm/min) plus the one-shot
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_FeedrateEvent">FeedrateEvent</a> marker that cancels a pending
|
||
<a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClRapidEvent">ClRapidEvent</a>. Accepted dialects:
|
||
<code>FEDRAT/MMPM,1400</code>, <code>FEDRAT/1400,MMPM</code>, <code>FEDRAT/1400</code>
|
||
(MMPM assumed), and <code>IPM</code> (converted to mm/min).</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html">RecordToMsysSyntax</a></dt>
|
||
<dd><p>Translates an <code>MSYS</code> record into the modal <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_Msys">Msys</a>
|
||
section. The record's nine fields are a translation vector plus the first
|
||
two rows of a rotation matrix whose third row is their cross product; the
|
||
section stores the resulting 16-element row-major <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a>
|
||
mapping tool-path coordinates to workpiece (absolute) coordinates.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html">RecordToSpindleSyntax</a></dt>
|
||
<dd><p>Translates a <code>SPINDL</code> record into the standardized
|
||
<a class="xref" href="Hi.NcParsers.Keywords.ISpindleSpeedDef.html">ISpindleSpeedDef</a> section consumed by the general
|
||
<a class="xref" href="Hi.NcParsers.Semantics.SpindleSpeedSemantic.html">SpindleSpeedSemantic</a>. Parameter order
|
||
is tolerated (<code>SPINDL/8000,RPM,CLW</code> or <code>SPINDL/RPM,8000,CLW</code>):
|
||
the first numeric field is the rpm, a field containing <code>CCLW</code> selects
|
||
counter-clockwise, and <code>SPINDL/OFF</code> maps to
|
||
<a class="xref" href="Hi.Numerical.SpindleDirection.html#Hi_Numerical_SpindleDirection_STOP">STOP</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html">RecordToToolingSyntax</a></dt>
|
||
<dd><p>Translates the CLSF tooling records:</p>
|
||
<ul><li><code>TLDATA/MILL,…</code> → the modal <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfKeys.html#Hi_Numerical_ClsfParsers_ClsfKeys_ClsfToolData">ClsfToolData</a>
|
||
geometry section (kept for <a class="xref" href="Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html">ClsfToolBuildSemantic</a>); non-MILL
|
||
tool types are reported and skipped.</li><li><code>LOAD/TOOL,n[,XOFF,x][,YOFF,y][,ZOFF,z]</code> → the standardized
|
||
<code>ToolChange</code> section (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_SectionName">SectionName</a>)
|
||
consumed by the general
|
||
<a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a>;
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_IsChangeKey">IsChangeKey</a> is set when the tool id
|
||
differs from the previously loaded tool. Offsets are recorded
|
||
informationally (no consumer yet).</li></ul>
|
||
</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>
|