Class CannedCycleResolveSyntax
- Namespace
- Hi.NcParsers.LogicSyntaxs
- Assembly
- HiMech.dll
Resolves the canned-cycle Group-09 state for the current block and writes the result to the CannedCycle section.
- Active cycle (direct G81..G89 or modal repeat): merges
Parsingoverrides with previous-cycle stored params, applies G91 incremental-to-absolute conversion and missing-axis fallback, writes CannedCycle with Term, ReturnMode, and Params. The resolved cycle sub-section is left inParsingunder the cycle code for downstream cycle syntaxes (DrillingCycleSyntax, etc.) to read. - Explicit cancel (G80 flag present on a non-cycle block):
consumes the G80 flag and writes
CannedCycle =
{ Term: "G80" }, acting as a hard sentinel for Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil modal lookback. - No Group-09 activity: leaves the block untouched.
Must be placed after PositioningSyntax and before the individual cycle syntaxes in the chain.
public class CannedCycleResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
- Inheritance
-
CannedCycleResolveSyntax
- Implements
- Inherited Members
- Extension Methods
Examples
Direct G81 active cycle, no #Previous: (so
lastProgramXyz = Vec3d.Zero) and no
Positioning mode (so the absolute-coordinate path
runs, not G91 incremental). The resolved cycle sub-section is left
in Parsing under the cycle code for downstream cycle
syntaxes to consume; the CannedCycle section
carries the snapshot used for modal lookback.
ReturnMode defaults to G98 when
neither the current block nor a previous block declares G98/G99:
#BeforeBuild:
{ "Parsing": { "G81": { "X": 50, "Y": 30, "Z": -10, "R": 2 } } }
#AfterBuild:
{
"Parsing": { "G81": { "X": 50, "Y": 30, "Z": -10, "R": 2 } },
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
}
}
Modal repeat: the current block carries only an X override and no
cycle code, but #Previous: has an active G81 with stored
params. MergeModalCycleSection(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress)
merges X=60 (override) with Y/Z/R from stored params, removes the
consumed X from Parsing root, and writes the merged section
back to Parsing.G81. ReturnMode inherits “G98” from
the previous block's ReturnMode:
#Previous:
{
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
},
"ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }
}
#BeforeBuild:
{ "Parsing": { "X": 60 } }
#AfterBuild:
{
"Parsing": { "G81": { "X": 60, "Y": 30, "Z": -10, "R": 2 } },
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 60, "Y": 30, "Z": -10, "R": 2 }
}
}
Explicit G80 cancel: standalone G80 flag with no cycle data. The
G80 flag is consumed and CannedCycle = { Term: G80 }
is written as a hard sentinel that
FindPreviousActiveCycle(LazyLinkedListNode<SyntaxPiece>, string[]) reads
to terminate modal lookback. No ReturnMode hint here (no
G98/G99 flag on the same block):
#BeforeBuild:
{ "Parsing": { "Flags": ["G80"] } }
#AfterBuild:
{ "CannedCycle": { "Term": "G80" } }
Properties
Default
Default instance with standard settings.
public static CannedCycleResolveSyntax Default { get; }
Property Value
Name
Syntax kind name (typically the concrete type name).
public string Name { get; }
Property Value
XName
XML element name used to register this syntax with XFactory.
public static string XName { get; }
Property Value
Methods
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
Build syntax arrangement into the
syntaxPieceNode in-place.
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
Parameters
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>ncDependencyListList<INcDependency>ncDiagnosticProgressNcDiagnosticProgress
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
baseDirectorystringThe base directory for resolving relative paths
relFilestringThe relative file path for the XML source
exhibitionOnlyboolif 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.
Reg(XFactory)
Registers this type's deserializer with the given XFactory
(or Default when factory is
null). Idempotent.
public static void Reg(XFactory factory = null)
Parameters
factoryXFactory