Namespace Hi.NcParsers.Dependencys
Classes
- CncBrandDependency
Explicit CNC controller brand identifier carried in NcDependencyList. Use
ncDependencyList.OfType<CncBrandDependency>().FirstOrDefault()to retrieve the brand.
- ControllerParameterTableBase
Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig
- IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties.
- HeidenhainDatumTable
Heidenhain datum preset and datum shift tables. CYCL DEF 247 Q339=N reads from DatumPresetTable, CYCL DEF 7 #N reads from DatumShiftTable. Each table maps an integer ID (1–20) to a Vec3d offset.
On real Heidenhain controllers, preset and datum tables are separate disk files (e.g.
TNC:\table\preset.pr,*.d) — distinct from MP-prefixed Machine Parameters (held by HeidenhainParameterTable). HiNC mirrors that separation by keeping this dependency independent ofHeidenhainParameterTable.Implements IIsoCoordinateConfig by mapping the ISO/DIN G54–G59 codes to preset rows 1–6, the conventional Heidenhain compatibility mapping for ISO/DIN programs running on a Heidenhain.
- IsoCoordinateAddressMap
Fanuc-style ISO coordinate parameter address mapping. G54–G59 → #5221+ (stride 20, three consecutive numbers per entry for X/Y/Z), G54.1 P1–P48 → #7001+ (stride 20). Shared between FanucParameterTable (which calls these “ParamId”) and SyntecParameterTable (which calls them “PrId”) because both follow the same numeric scheme.
Interfaces
- IBlockSkipConfig
Runtime state of the controller's Block Delete / Block Skip switches. Present in NcDependencyList exposes this to the runner so that blocks whose head carries
/or/N(parsed by BlockSkipSyntax into BlockSkip) are skipped at semantic time.Layers are 1..9; Layer 1 corresponds to the bare
/prefix. Controllers (Fanuc / Syntec / Mazak / Siemens) let each layer be toggled independently via panel switches or system parameters.When this dependency is absent from NcDependencyList, no block is skipped (safest default: simulate the full machining). The syntax still consumes the
/prefix so noUnparsedText--Remainingdiagnostic is produced.
- ICannedCycleConfig
Canned cycle configuration parameters. Implemented by brand-specific parameter tables (e.g., FanucParameterTable for Fanuc #4002, SyntecParameterTable for Syntec Pr4002) and by FallbackConfig as a safety net.
Siemens and Heidenhain specify peck clearance per-call (CYCLE83 parameter / CYCL DEF), so their tables do not implement this interface. The FallbackConfig provides the default value in those cases.
- IHomeMcConfig
G28 first reference position (home machine coordinate) per axis.
- IIsoCoordinateConfig
ISO work coordinate offset provider. Maps a G-code work coordinate id (e.g. “G54”, “G59.2”, “G54.1P1”) to a machine-coordinate offset Vec3d.
Implementations include IsoCoordinateTable (brand-agnostic standalone storage), FanucParameterTable / SyntecParameterTable (parameter-table integration via real Fanuc/Syntec parameter numbers #5221+ for G54–G59 and #7001+ for G54.1 P1–P48), SiemensFrameTable (Sinumerik
$P_UIFRframes), and HeidenhainDatumTable (Heidenhain preset rows).
- IMachineAxisConfig
Machine axis configuration: which axes exist and their types. Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma.
- INcDependency
Marker interface for objects that participate in the NC dependency list resolved by the soft-NC runtime.
- IPowerResettable
Marks an INcDependency that holds volatile state which must be cleared when the controller performs a power reset (power off then on).
Implementers should clear only the volatile subset they own (e.g. Fanuc common volatile macro variables
#100-#499), and leave persistent state untouched (e.g.#500-#999, controller parameters).Call-frame local state (Fanuc
#1-#33, HeidenhainQ200-Q1199) is NOT in scope — that lives in theSyntaxPieceJSON dataflow and is bounded by call activation, not power cycle.
- IRapidFeedrateConfig
Provides per-axis rapid traverse feedrate for motion semantics. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000, Heidenhain MP1010).
- IStrokeLimitConfig
Per-axis stroke (travel) limits. Unit is mm for linear axes, deg for rotary axes. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1300/#1320, Siemens MD36100/MD36110, Heidenhain MP420/MP430).
- IToolOffsetConfig
Tool offset configuration indexed by a single integer offset number. Applies to Fanuc (H/D numbers), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers where one integer selects the offset row.
For Siemens (840D/Sinumerik) where offsets are addressed by (tool number, cutting edge D number), see ISiemensToolOffsetConfig.
- IToolingMcConfig
Machine position axes move to during tool change (M06).
Enums
- AxisType
Axis type: linear (translation), rotary (rotation), or spindle (speed/positioning dual mode).