Class NcSyntaxUtil
JSON serialization settings and grab/set helpers for NC block JsonObject trees.
public static class NcSyntaxUtil
- Inheritance
-
NcSyntaxUtil
- Inherited Members
Properties
AxisTagList
tag list for the motion axis tags.
public static List<string> AxisTagList { get; set; }
Property Value
Remarks
Must be initialized before MixedNcSyntaxList to avoid static initialization cycle.
FloatTagList
tag list for the float number tags.
public static List<string> FloatTagList { get; set; }
Property Value
Remarks
Must be initialized before MixedNcSyntaxList to avoid static initialization cycle.
Methods
GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser)
Get Tag Assignments with = sign. ex. Siemens: R1=100.5, Z=V1+V2, Z=V1 - V3 * V2 F200 Heidenhain: Q1 = Q2 + 100 Fanuc: #1=#2+#3
public static List<TagValue> GrabTagAssignment(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, IEnumerable<string> terminateWords = null, ExpressionPrefixParser rhsPrefixParser = null)
Parameters
unparsedTextstringThe NC text to parse and modify.
targetTagsIEnumerable<string>candidate target tags to extract values for
varPrefixstringvariable index code prefix.
terminateWordsIEnumerable<string>words that terminate expression (e.g., F, G, M, S). These are different from varPrefix - they signal end of expression, not variables.
rhsPrefixParserExpressionPrefixParserOptional longest-valid-prefix expression parser (see ExpressionPrefixParser). When provided and a prefix parses, it supersedes both the lexical boundary and the
terminateWordscut for that match — the grammar itself ends the RHS (R26=R64-14/2 R23=2,Z=R63 + 150 X100); the lexical machinery remains the per-match fallback when no prefix parses.
Returns
GrabTagEqualsValue(ref string, IEnumerable<string>, ExpressionPrefixParser)
Get tag values written in the Siemens address=value form
(an explicit = between a single-letter tag and its value).
ex.
Siemens: X=100, Z=R63+150, C=R61, F=R103, Z=_Z_HOME
public static List<TagValue> GrabTagEqualsValue(ref string unparsedText, IEnumerable<string> targetTags, ExpressionPrefixParser rhsPrefixParser = null)
Parameters
unparsedTextstringThe NC text to parse and modify.
targetTagsIEnumerable<string>candidate target tags to extract values for
rhsPrefixParserExpressionPrefixParserOptional longest-valid-prefix expression parser delimiting each RHS (see ExpressionPrefixParser).
Returns
Remarks
Without rhsPrefixParser, the value is captured as
the following non-whitespace run, so arithmetic expressions without
embedded spaces (R63+150) and named-variable references
(_Z_HOME) survive as strings for the evaluation stage; numeric
literals are typed later by the caller's converter
(e.g. ToFloat(string)).
With rhsPrefixParser (parser-delimited capture),
the value is the longest valid expression prefix after the = —
spaced arithmetic (R63 + 150), balanced call parentheses
(DC(47.296)) and glued following words (X=100Y50) all
delimit correctly; the lexical \S+ run stays as the per-match
fallback when no prefix parses.
GrabTagValue(ref string, IEnumerable<string>, string, bool)
Get tag values.
Concatenated tag-value syntax (no = sign), glued by default:
the value must follow the tag immediately. Pass
allowSpacedValue to also accept whitespace
between tag and value (the Heidenhain detached feed word).
ex.
Heidenhain: L X+10 Y33.4 FQ1
Heidenhain (allowSpacedValue): L Z-22.5 F 20000
ISO: X100.3Y3.3
Fanuc Macro: X[#1+#2] Y[#1*2+100]
public static List<TagValue> GrabTagValue(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, bool allowSpacedValue = false)
Parameters
unparsedTextstringThe NC text to parse and modify.
targetTagsIEnumerable<string>candidate target tags to extract values for
varPrefixstringvariable index code prefix. ex. Fanuc # for #123; Heidenhain Q for Q123.
allowSpacedValueboolwhen true, whitespace may separate a tag from its value (
F 20000); the value grammar must still match right after the run, soF MAXorF X+10stay unclaimed. Default false keeps the glued-only grammar every other brand pins.