Class HeidenhainCoordinateOffsetSyntax
- Namespace
- Hi.NcParsers.LogicSyntaxs.Heidenhain
- Assembly
- HiMech.dll
Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift).
CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values.
For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing.public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
- Inheritance
-
HeidenhainCoordinateOffsetSyntax
- Implements
- Inherited Members
- Extension Methods
Examples
Mat4d arrays are 16 plain doubles in column-major order; pure
translation by (tx,ty,tz) is
[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. The syntax does not
consume from Parsing — the CYCL DEF cycle number and its
parameters survive for downstream syntaxes / round-trip emission.
CYCL DEF 247 Q339=+1 with a
HeidenhainDatumTable populated so preset
row 1 = (50, 50, 0) — the syntax looks up the row and writes
a synthetic CoordinateId = "DATUM_PRESET_1" reflecting the
resolved preset index:
{ "Parsing": { "CYCL DEF": 247, "Q339": "+1" } }
#AfterBuild:
{
"Parsing": { "CYCL DEF": 247, "Q339": "+1" },
"CoordinateOffset": {
"CoordinateId": "DATUM_PRESET_1",
"Offset_X": 50, "Offset_Y": 50, "Offset_Z": 0
},
"ProgramToMcTransform": [
{
"Source": "CoordinateOffset",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 50,50,0,1]
}
]
}
CYCL DEF 7 #5 — datum shift table lookup via the #
index (here mapped to (100, 200, 0)); CoordinateId
records the resolved shift row id:
#BeforeBuild:
{ "Parsing": { "CYCL DEF": 7, "#": 5 } }
#AfterBuild:
{
"Parsing": { "CYCL DEF": 7, "#": 5 },
"CoordinateOffset": {
"CoordinateId": "DATUM_SHIFT_5",
"Offset_X": 100, "Offset_Y": 200, "Offset_Z": 0
},
"ProgramToMcTransform": [
{
"Source": "CoordinateOffset",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,200,0,1]
}
]
}
CYCL DEF 7 X10 Y20 Z5 — direct X/Y/Z form (no #
index) writes the values straight into the offset; no
HeidenhainDatumTable dep is required.
CoordinateId is the literal "DATUM_SHIFT_DIRECT"
sentinel:
#BeforeBuild:
{ "Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 } }
#AfterBuild:
{
"Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 },
"CoordinateOffset": {
"CoordinateId": "DATUM_SHIFT_DIRECT",
"Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5
},
"ProgramToMcTransform": [
{
"Source": "CoordinateOffset",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1]
}
]
}
Constructors
HeidenhainCoordinateOffsetSyntax()
Initializes a new instance with default settings.
public HeidenhainCoordinateOffsetSyntax()
HeidenhainCoordinateOffsetSyntax(XElement)
Initializes a new instance by deserializing from the given XML element.
public HeidenhainCoordinateOffsetSyntax(XElement src)
Parameters
srcXElementSource XML element.
Properties
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.