diff --git a/App/EngineMessages/engine-messages.json b/App/EngineMessages/engine-messages.json
new file mode 100644
index 00000000..b94548f7
--- /dev/null
+++ b/App/EngineMessages/engine-messages.json
@@ -0,0 +1,1789 @@
+{
+ "schemaVersion": 1,
+ "engineVersion": "3.2.26.0",
+ "filesParsed": 1275,
+ "siteCount": 356,
+ "sites": [
+ {
+ "id": "AddTimeDataByFile--Start",
+ "template": "Run {0}({1}, {2}, {3}, {4})",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "AlignWorkpieceProgramZeroToIso--Done",
+ "template": "{0}({1}) done. isoOffset = {2}; GeomToTableTransformer = {3}.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "AlignWorkpieceProgramZeroToIso--Failed",
+ "template": "{0} failed. Workpiece, Fixture, or Xyzabc machine tool missing.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "AlignWorkpieceProgramZeroToIso--IsoCoordNotFound",
+ "template": "{0} failed. ISO coordinate '{1}' not found.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "BlockSkip--Skipped",
+ "template": "Block skipped by layer {0}.",
+ "file": "HiMech/NcParsers/ParsingSyntaxs/BlockSkipSyntax.cs"
+ },
+ {
+ "id": "BuildNcLines--Done",
+ "template": "NC File readed.. {0}",
+ "file": "HiNc/Numerical/FilePlayers/HardNcRunner.cs"
+ },
+ {
+ "id": "BuildNcLines--NcNote",
+ "template": "{0} - [FileNo.{1}][{2}][LineNo.{3}][{4}]",
+ "file": "HiNc/Numerical/FilePlayers/HardNcRunner.cs"
+ },
+ {
+ "id": "BuildNcLines--ParseFailed",
+ "template": "Parse failed: {0}. {1}",
+ "file": "HiNc/Numerical/FilePlayers/HardNcRunner.cs"
+ },
+ {
+ "id": "BuildNcLines--ParseFallbackFailed",
+ "template": "Parse fallback failed: {0}. {1}",
+ "file": "HiNc/Numerical/FilePlayers/HardNcRunner.cs"
+ },
+ {
+ "id": "BuildNcLines--Reading",
+ "template": "NC readed.. {0}",
+ "file": "HiNc/Numerical/FilePlayers/HardNcRunner.cs"
+ },
+ {
+ "id": "ClAct--ChainNotClMillingDevice",
+ "template": "Cutter-location act [{0}] requires a {1} machining chain; current chain is [{2}]. Cutter-location acts are skipped until the chain changes.",
+ "file": "HiMech/MachiningProcs/MachiningActRunner.cs"
+ },
+ {
+ "id": "ClArcMc--NoArcData",
+ "template": "Motion form [{0}] without a {1} section.",
+ "file": "HiMech/Numerical/ClsfParsers/ClArcMcMotionSemantic.cs"
+ },
+ {
+ "id": "ClArcMc--NoFeedrate",
+ "template": "Motion form [{0}] before any FEDRAT; the machine-coordinate arc is dropped.",
+ "file": "HiMech/Numerical/ClsfParsers/ClArcMcMotionSemantic.cs"
+ },
+ {
+ "id": "ClMotion--NoArcData",
+ "template": "Motion form [{0}] without a {1} section.",
+ "file": "HiMech/Numerical/ClsfParsers/ClMotionSemantic.cs"
+ },
+ {
+ "id": "ClMotion--NoCutterLocation",
+ "template": "Motion form [{0}] without a {1} section.",
+ "file": "HiMech/Numerical/ClsfParsers/ClMotionSemantic.cs"
+ },
+ {
+ "id": "ClMotion--NoFeedrate",
+ "template": "Motion form [{0}] before any FEDRAT; the move gets zero duration.",
+ "file": "HiMech/Numerical/ClsfParsers/ClMotionSemantic.cs"
+ },
+ {
+ "id": "ClMotion--NoPreviousCutterLocation",
+ "template": "Motion form [{0}] without a previous cutter location.",
+ "file": "HiMech/Numerical/ClsfParsers/ClMotionSemantic.cs"
+ },
+ {
+ "id": "ClToMc--EndpointIkFailed",
+ "template": "Cutter location [{0}] with tool axis [{1}] has no machine-coordinate solution on the current chain. The motion is dropped; the machine holds position over this block.",
+ "file": "HiMech/Numerical/ClsfParsers/ClToMcTransformSyntax.cs"
+ },
+ {
+ "id": "ClToMc--NoToolOffset",
+ "template": "Tool [{0}] has no usable attacher→tip length at parse time; machine-coordinate conversion assumes zero tool length until the tool is available.",
+ "file": "HiMech/Numerical/ClsfParsers/ClToMcTransformSyntax.cs"
+ },
+ {
+ "id": "Clsf-Circle--BadRecord",
+ "template": "CIRCLE/MOVARC expects >=7 numeric fields; got [{0}]. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToClMotionSyntax.cs"
+ },
+ {
+ "id": "Clsf-Coolnt--UnsupportedMode",
+ "template": "COOLNT mode [{0}] is not mapped; treated as flood coolant.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToCoolantSyntax.cs"
+ },
+ {
+ "id": "Clsf-Fedrat--BadRecord",
+ "template": "FEDRAT has no numeric value in [{0}] fields. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToFeedrateSyntax.cs"
+ },
+ {
+ "id": "Clsf-Fedrat--UnsupportedUnit",
+ "template": "FEDRAT unit [{0}] is not supported (MMPM/IPM). Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToFeedrateSyntax.cs"
+ },
+ {
+ "id": "Clsf-Goto--BadRecord",
+ "template": "{0} expects at least 3 numeric fields; got [{1}]. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToClMotionSyntax.cs"
+ },
+ {
+ "id": "Clsf-Msys--BadRecord",
+ "template": "MSYS expects 9 numeric fields; got [{0}]. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToMsysSyntax.cs"
+ },
+ {
+ "id": "Clsf-Spindl--BadRecord",
+ "template": "SPINDL has no numeric rpm in [{0}] fields. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToSpindleSyntax.cs"
+ },
+ {
+ "id": "Clsf-Tldata--BadRecord",
+ "template": "TLDATA/MILL expects 5 numeric fields; got [{0}]. Record ignored.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToToolingSyntax.cs"
+ },
+ {
+ "id": "Clsf-Tldata--UnsupportedType",
+ "template": "TLDATA type [{0}] is not supported (MILL only). Record skipped.",
+ "file": "HiMech/Numerical/ClsfParsers/RecordToToolingSyntax.cs"
+ },
+ {
+ "id": "Clsf-Units--Unsupported",
+ "template": "UNITS/{0} — coordinates are consumed as-is (no unit conversion); expected UNITS/MM.",
+ "file": "HiMech/Numerical/ClsfParsers/ClsfRecordCleanupSyntax.cs"
+ },
+ {
+ "id": "ClsfRecord--Unconsumed",
+ "template": "CLSF record [{0}] has no handler and is skipped.",
+ "file": "HiMech/Numerical/ClsfParsers/ClsfRecordCleanupSyntax.cs"
+ },
+ {
+ "id": "ClsfTooling--CreatedFromTlData",
+ "template": "Tool [{0}] created from TLDATA (D={1}, R0={2}, H={3}).",
+ "file": "HiMech/Numerical/ClsfParsers/ClsfToolBuildSemantic.cs"
+ },
+ {
+ "id": "ClsfTooling--NoToolData",
+ "template": "Tool [{0}] is neither in the tool house nor defined by a TLDATA record.",
+ "file": "HiMech/Numerical/ClsfParsers/ClsfToolBuildSemantic.cs"
+ },
+ {
+ "id": "ClsfTooling--NoToolHouse",
+ "template": "Tool [{0}] cannot be checked or created: no tool house is wired.",
+ "file": "HiMech/Numerical/ClsfParsers/ClsfToolBuildSemantic.cs"
+ },
+ {
+ "id": "Comp-ToolHeight--001",
+ "template": "G43.4 H{0}: the H word did not resolve to an integer offset id (vacant variable or non-integer value); activating RTCP with a zero-length tool height compensation. The computed contour will miss the tool length.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/G43p4RtcpSyntax.cs"
+ },
+ {
+ "id": "Comp-ToolHeight--NoToolForOmittedH",
+ "template": "{0} without an H word, and no tool has been loaded yet (no tool change before this block, no modal H): activating tool height compensation with a zero-length tool. The computed contour will miss the tool length.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ToolHeightOffsetSyntax.cs"
+ },
+ {
+ "id": "Comp-ToolHeight--RowMissing",
+ "template": "{0} H{1}: the tool offset table has no row {2}{3}; compensating with a zero-length tool. The computed contour will miss the tool length.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ToolHeightOffsetSyntax.cs"
+ },
+ {
+ "id": "Comp-ToolHeight--RtcpOutlivesToolChange",
+ "template": "Tool change to T{0} while G43.4 H{1} is still active: the tool now in the spindle is compensated with the offset selected for the previous tool. A rotary move that comes before a new G43.4 H for T{2} pins the tip of that stale offset and drags the linear axes by the length difference. Cancel with G49 before the change, or select the H that belongs to T{3} before the first rotary move.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ToolChangeSyntax.cs"
+ },
+ {
+ "id": "Composition--NotLicensed",
+ "template": "NC composition is not licensed (feature {0}): {1} external processing unit(s) skipped for this session: {2}{3}. The built-in pipeline runs unchanged.",
+ "file": "HiMech/NcParsers/NcCompositionGate.cs"
+ },
+ {
+ "id": "ConvertClToNc--Done",
+ "template": "Converted {0} file(s): {1}",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "ConvertClToNc--Start",
+ "template": "Converting the played NC program files to NC by template [{0}].",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "ConvertClToNc--TargetLocked",
+ "template": "Cannot write [{0}] — the file is in use by another process (typically a viewer or player still holding it open, possibly in another HiNC instance). Close it there and convert again. ({1})",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "Coord-FixPoint--001",
+ "template": "{0} without axis words moves nothing (only the axes written in the block participate). Statement consumed.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensFixedPointReturnSyntax.cs"
+ },
+ {
+ "id": "Coord-FixPoint--002",
+ "template": "{0} references rotary axes not configured as rotary (or without a home position): {1}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensFixedPointReturnSyntax.cs"
+ },
+ {
+ "id": "Coord-MachCoord--003",
+ "template": "G53.1: {0} dependency not configured.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/G53p1RotaryPositionSyntax.cs"
+ },
+ {
+ "id": "Coord-MachCoord--004",
+ "template": "G53.1: {0} has no rotary axes.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/G53p1RotaryPositionSyntax.cs"
+ },
+ {
+ "id": "Coord-MachCoord--005",
+ "template": "G53.1 requires {0} dependency for rotary-axis inverse kinematics; none configured (typically a 3-axis machine running 5-axis NC code, or a missing dependency wire-up). Block has no effect.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/G53p1RotaryPositionSyntax.cs"
+ },
+ {
+ "id": "Coord-MachCoord--006",
+ "template": "{0} is incompatible with G91 (incremental positioning) per ISO standard. {1} flag and any X/Y/Z values on this block are consumed without writing machine coordinates.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/MachineCoordSelectSyntax.cs"
+ },
+ {
+ "id": "Coord-MachCoord--007",
+ "template": "{0} requires at least one of X/Y/Z. Standalone {1} has no effect; flag is consumed.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/MachineCoordSelectSyntax.cs"
+ },
+ {
+ "id": "Coord-McAbc--001",
+ "template": "No previous {0}-axis value found. HomeMcInitializer may not be configured.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/McAbcSyntax.cs"
+ },
+ {
+ "id": "Coord-McAbc--003",
+ "template": "Per-word rotary override '{0}' on axis '{1}', which is not a modular rotary axis — the shortest/directional approach cannot be applied; the word resolves as a plain absolute value.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/McAbcCyclicPathSyntax.cs"
+ },
+ {
+ "id": "Coord-McAbc--004",
+ "template": "Per-word rotary override '{0}' on axis '{1}' has no previous rotary value to resolve against — the approach direction is ignored and the raw value is adopted as-is.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/McAbcCyclicPathSyntax.cs"
+ },
+ {
+ "id": "Coord-RefReturn--001",
+ "template": "G28 with rotary axes requires {0} dependency.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ReferenceReturnSyntax.cs"
+ },
+ {
+ "id": "Coord-RefReturn--002",
+ "template": "G28 references rotary axes not configured in {0}: {1}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ReferenceReturnSyntax.cs"
+ },
+ {
+ "id": "Coord-RefReturn--003",
+ "template": "G28 without axis specifiers is ambiguous. Set {0}.{1} = {2} to interpret a bare G28 as every configured axis returning to home.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/ReferenceReturnSyntax.cs"
+ },
+ {
+ "id": "Coord-Tilt--003",
+ "template": "CYCLE800 carries {0} argument(s) — neither a documented cancel spelling nor the full parameter set. The swivel is not applied; the call is left as visible Parsing residue.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensCycle800TiltSyntax.cs"
+ },
+ {
+ "id": "Coord-Tilt--005",
+ "template": "CYCLE800 commands a swivel rotation, but the machine configuration has no {0} / rotary axes to realize the implicit rotary positioning (typically a 5-axis NC file on a 3-axis configuration). The tilted plane is composed; the rotary move is skipped.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensCycle800TiltSyntax.cs"
+ },
+ {
+ "id": "Coord-Tilt--007",
+ "template": "PLANE SPATIAL SEQ{0} prefers the {1} {2}-axis solution, but the kinematic solve landed on {3}°. Solution-family selection is not modeled; the solved angles are used.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainPlaneTiltSyntax.cs"
+ },
+ {
+ "id": "Coord-Tilt--PlaneSpatialNoRotaryAxes",
+ "template": "PLANE SPATIAL {0} commands a rotary positioning, but the machine configuration has no {1} / rotary axes to realize it (typically a 5-axis NC file on a 3-axis configuration). The tilted plane is composed; the rotary move is skipped.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainPlaneTiltSyntax.cs"
+ },
+ {
+ "id": "Coord-WorkOffset--AdditionalZero",
+ "template": "G54.1 P{0} selected, but its work offset is (0, 0, 0): no offset has been entered for this additional work coordinate system, so the program runs on the machine origin.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/IsoCoordinateOffsetSyntax.cs"
+ },
+ {
+ "id": "Coord-WorkOffset--IndexUnresolved",
+ "template": "G54.1 P{0}: the P word did not resolve to a positive integer work offset index (vacant variable, non-integer or zero value); the active work coordinate system is kept.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/IsoCoordinateOffsetSyntax.cs"
+ },
+ {
+ "id": "Coord-WorkOffset--NoTableEntry",
+ "template": "{0} selected, but no work coordinate provider on this controller resolves it; the program runs with a zero offset.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/IsoCoordinateOffsetSyntax.cs"
+ },
+ {
+ "id": "CsvEmbed--Progress",
+ "template": "CSV row readed: {0}",
+ "file": "HiMech/Mapping/CsvNcStep.cs"
+ },
+ {
+ "id": "CsvEmbed--StepProgress",
+ "template": "CSV step managed: {0}/{1}",
+ "file": "HiMech/Mapping/CsvNcStep.cs"
+ },
+ {
+ "id": "CubeTreeFile-Read--Missing",
+ "template": "Meshed geometry file not found: {0}",
+ "file": "HiMech/NcMech/Workpieces/WorkpieceService.cs"
+ },
+ {
+ "id": "Cutter-Shank--ThermalModelUnavailable",
+ "template": "MillingCutter on {0}: no usable shank thermal model (no upper beam, no inner-beam profile, or non-positive shank mass/volume) — temperature evaluation runs without the shank heat sink, so cutter temperatures will read higher than physical.",
+ "file": "HiMech/MachiningProcs/MachiningActRunner.cs"
+ },
+ {
+ "id": "Cycle-Bore--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BackBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BoringCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FineBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NegDwell",
+ "template": "[{0}] Dwell P is negative: {1} s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BoringCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NegShiftQ",
+ "template": "[{0}] Shift distance Q is negative: {1} mm.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BackBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NegShiftQ",
+ "template": "[{0}] Shift distance Q is negative: {1} mm.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FineBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BackBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BoringCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FineBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BackBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/BoringCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Bore--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FineBoringSyntax.cs"
+ },
+ {
+ "id": "Cycle-Drill--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Drill--NegDwell",
+ "template": "[{0}] Dwell P is negative: {1} s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Drill--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Drill--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--BadPeckQ",
+ "template": "[{0}] Peck depth Q must be positive: Q={1}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/HighSpeedPeckCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--BadPeckQ",
+ "template": "[{0}] Peck depth Q must be positive: Q={1}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/PeckDrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/HighSpeedPeckCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/PeckDrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/HighSpeedPeckCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/PeckDrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/HighSpeedPeckCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Peck--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/PeckDrillingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Tap--MissingParam",
+ "template": "[{0}] Missing required parameter: X={1}, Y={2}, Z={3}, R={4}.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/TappingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Tap--NoFeed",
+ "template": "[{0}] Feed rate is zero or negative: {1} mm/s.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/TappingCycleSyntax.cs"
+ },
+ {
+ "id": "Cycle-Tap--ZAboveR",
+ "template": "[{0}] Bottom Z ({1}) should be below R-point ({2}).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/TappingCycleSyntax.cs"
+ },
+ {
+ "id": "Datum-Shift--Rotary",
+ "template": "Datum shift carries rotary word {0}{1}; only X/Y/Z are applied.",
+ "file": "HiMech/NcParsers/ParsingSyntaxs/Heidenhain/CyclDefSyntaxs/HeidenhainDatumShiftSyntax.cs"
+ },
+ {
+ "id": "Dwell--CompoundOccupied",
+ "template": "{0} dwell shares a block with another compound motion; the dwell is consumed but not simulated. Put the dwell on its own block.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DwellSyntax.cs"
+ },
+ {
+ "id": "Dwell--SpindleRevUnresolved",
+ "template": "{0} dwell of {1} spindle revolution(s) is recorded but not time-simulated: no modal spindle speed is known on this block.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/DwellSyntax.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToObj--Done",
+ "template": "{0}({1}) done.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToObj--Start",
+ "template": "{0}({1}) start.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToPly--Done",
+ "template": "{0}({1}) done.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToPly--Start",
+ "template": "{0}({1}) start.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToStl--Done",
+ "template": "{0}({1}) done.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ExportMeshedGeomToStl--Start",
+ "template": "{0}({1}) start.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "FanucGoto--ConditionNotEvaluated",
+ "template": "IF [{0}] GOTO {1}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); falling through to next block.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--HostFileNotFound",
+ "template": "GOTO {0}: cannot locate host file \"{1}\" (baseDirectory \"{2}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--IterationLimitExceeded",
+ "template": "GOTO {0} in {1}: per-target iteration limit ({2}) reached; suppressing redirect and falling through. Raise {3}.{4} in the project XML if a legitimate batch macro needs more.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--LabelNotFound",
+ "template": "GOTO {0}: no N{1} label found in \"{2}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--MissingDependency",
+ "template": "GOTO {0}: missing required runtime dependency ({1} / {2} / {3}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--NoHostFilePath",
+ "template": "GOTO {0}: host block has no file path; cannot re-segment.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucGoto--UnresolvedTarget",
+ "template": "GOTO {0}: target did not resolve to an integer (the variable evaluator may not have substituted a literal yet); falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucGotoSyntax.cs"
+ },
+ {
+ "id": "FanucIfThen--ConditionNotEvaluated",
+ "template": "IF [{0}] THEN {1}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); skipping body.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucIfThenSyntax.cs"
+ },
+ {
+ "id": "FanucIfThen--UnsupportedBody",
+ "template": "IF [{0}] THEN {1}: body did not parse as one or more Custom Macro B assignments (only #nnn = bodies are currently supported); skipping.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucIfThenSyntax.cs"
+ },
+ {
+ "id": "FanucMacroCall--FileNotFound",
+ "template": "{0} P{1}: macro file not found via {2}.{3} (\"{4}\") anchored against baseDirectory \"{5}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucMacroCallSyntax.cs"
+ },
+ {
+ "id": "FanucMacroCall--MissingP",
+ "template": "{0} requires a P parameter (macro program number).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucMacroCallSyntax.cs"
+ },
+ {
+ "id": "FanucMacroCall--NoLayers",
+ "template": "{0} is not configured; cannot inline {1} P{2}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucMacroCallSyntax.cs"
+ },
+ {
+ "id": "FanucMacroCall--NoSegmenter",
+ "template": "{0} is not configured; cannot inline {1} P{2}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucMacroCallSyntax.cs"
+ },
+ {
+ "id": "FanucModalMacro--FileNotFound",
+ "template": "{0} P{1} expansion: macro file not found via {2}.{3} (\"{4}\") anchored against baseDirectory \"{5}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucModalMacroSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--BeginLineNotFound",
+ "template": "END {0}: line {1} in \"{2}\" did not materialise as a segment start on re-segmentation; cannot reverse-jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--ConditionNotEvaluated",
+ "template": "WHILE [...] DO {0}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); exiting loop.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--EndNotFound",
+ "template": "WHILE DO {0}: no matching END {1} found in \"{2}\"; cannot exit loop.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--EntryWithoutWhile",
+ "template": "END {0}: no active WHILE DO {1} frame on this block's carry stack; falling through (likely a malformed loop or a stray END).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--HostFileNotFound",
+ "template": "{0} {1}: cannot locate host file \"{2}\" (baseDirectory \"{3}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--IterationLimitExceeded",
+ "template": "END {0} in {1}: per-loop iteration limit ({2}) reached; suppressing reverse jump and falling through. Raise {3}.{4} in the project XML if a legitimate batch macro needs more.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--MissingBeginLine",
+ "template": "END {0}: active frame has no valid BeginLineNo; cannot reverse-jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--MissingDependency",
+ "template": "{0} {1}: missing required runtime dependency ({2} / {3} / {4}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--NoHostFilePath",
+ "template": "WHILE DO {0}: host block has no file path; cannot re-segment for forward jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "FanucWhileDo--NoHostFilePathAtEnd",
+ "template": "END {0}: host block has no file path; cannot re-segment for reverse jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucWhileDoSyntax.cs"
+ },
+ {
+ "id": "Geom-Construction--Defect",
+ "template": "Construction defect detected: {0} defect node(s).",
+ "file": "HiMech/NcMech/Workpieces/WorkpieceService.cs"
+ },
+ {
+ "id": "Geom-Construction--DefectBoxSelected",
+ "template": "Selected Defect Box: {0}",
+ "file": "HiCbtr/Cbtr/ConstructionDefectDisplayee.cs"
+ },
+ {
+ "id": "Geom-Construction--DefectNode",
+ "template": "Defect node: {0}, level={1}, tri_wire_count={2}",
+ "file": "HiMech/NcMech/Workpieces/WorkpieceService.cs"
+ },
+ {
+ "id": "Geom-Construction--DefectOverflow",
+ "template": "And others.. Only shows {0}/{1} of nodes.",
+ "file": "HiMech/NcMech/Workpieces/WorkpieceService.cs"
+ },
+ {
+ "id": "Geom-Construction--DefectTriDetail",
+ "template": " Tri: {0}, EdgeIndex: {1}",
+ "file": "HiCbtr/Cbtr/ConstructionDefectDisplayee.cs"
+ },
+ {
+ "id": "Geom-Construction--DefectTriPicked",
+ "template": "Picked Tri: {0}, EdgeIndex: {1}, Box: {2}",
+ "file": "HiCbtr/Cbtr/ConstructionDefectDisplayee.cs"
+ },
+ {
+ "id": "Geom-InfDefect--Box",
+ "template": "Defect box: {0}",
+ "file": "HiCbtr/Cbtr/InfDefectDisplayee.cs"
+ },
+ {
+ "id": "Geom-InfDefect--Found",
+ "template": "Inf edge-cut defect space exists: {0} defect box(es).",
+ "file": "HiCbtr/Cbtr/InfDefectDisplayee.cs"
+ },
+ {
+ "id": "Geom-InfDefect--Overflow",
+ "template": "And others.. Only shows {0}/{1} of boxes.",
+ "file": "HiCbtr/Cbtr/InfDefectDisplayee.cs"
+ },
+ {
+ "id": "GetActSpiralMcXyzContour--ArcLMismatch",
+ "template": "Arc L({0}) value does not match the circle number ({1}+1).",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "GetActSpiralMcXyzContour--CircleCenterNotFound",
+ "template": "Circle command failed: the circle center of this compensated arc was not resolved. Either the radius-compensation region is not closed by G40 before the end of the file, or the radius compensation of the region failed on an earlier block (see the preceding messages). [{0}]",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "GetCompensationHeight--NotFound",
+ "template": "H value not defined: {0}",
+ "file": "HiUniNc/Numerical/NcFlagUtil.cs"
+ },
+ {
+ "id": "GetCompensationRadius--NotFound",
+ "template": "D value not defined: {0}",
+ "file": "HiUniNc/Numerical/NcFlagUtil.cs"
+ },
+ {
+ "id": "GetGroup09RelatedNcMc-Bottom--TransformFailed",
+ "template": "[{0}] coordinate transform failed. ",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "GetGroup09RelatedNcMc-Init--TransformFailed",
+ "template": "[{0}] coordinate transform failed.",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "GetGroup09RelatedNcMc-PosRef--TransformFailed",
+ "template": "[{0}] coordinate transform failed.",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "HeidenhainCall--DepthLimitExceeded",
+ "template": "CALL {0}: call-stack depth {1} reached the {2} limit ({3}) — likely a self- or mutually-recursive subprogram; consumed as a safe-skip with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--HostFileNotFound",
+ "template": "CALL LBL {0}: cannot locate the host file \"{1}\" (baseDirectory \"{2}\") for the label scan.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--LabelNotFound",
+ "template": "CALL LBL {0}: no LBL {1} definition found in \"{2}\"; consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--Lbl0Missing",
+ "template": "CALL LBL {0}: no LBL 0 terminates the subprogram — inlining to end-of-file would double-execute the tail; consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--NoLayers",
+ "template": "{0} is not configured; cannot inline {1}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--NoSegmenter",
+ "template": "{0} is not configured; cannot inline {1}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--RepInvalid",
+ "template": "CALL LBL {0} REP \"{1}\": the repeat count is not a positive literal; the call is consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--RepLimitExceeded",
+ "template": "CALL LBL {0} REP {1}: the repeat count exceeds the TNC ceiling ({2}) — corrupt or hostile input; consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--RepSectionEmpty",
+ "template": "CALL LBL {0} REP {1}: LBL {2} does not precede the call line — a program-section repeat runs the section between the label and the call; consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCall--Skipped",
+ "template": "CALL PGM \"{0}\" has no program file under folder \"{1}\" (baseDirectory \"{2}\"); consumed with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCycl--DefActiveUnsupported",
+ "template": "CYCL DEF {0} is a definition-active auxiliary cycle, recognized but not simulated; the armed machining-cycle definition is preserved.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCycl--IsoCycleUnsupported",
+ "template": "Literal {0} canned-cycle words in a klartext program are recognized but not simulated; consumed with no motion effect.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCycl--ParamsNotLiteral",
+ "template": "CYCL DEF {0}: required parameter(s) {1} missing or non-literal; the definition is not armable.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCycl--Unsupported",
+ "template": "CYCL DEF {0} is recognized but not simulated; the definition is recorded and any call will be consumed with no motion effect.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCyclCall--IncrementalAfterMove",
+ "template": "CYCL CALL POS: the tool moved since the last CYCL CALL POS; the increment is taken from that call's coordinates (the reference the control names in error 1A0-0108), not from the current position, and the control may refuse the call instead.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCyclCall--IncrementalNoReference",
+ "template": "CYCL CALL POS {0}: no earlier CYCL CALL POS programmed {1}, so the increment has no reference and the control refuses the call (error 1A0-0108); the simulation resolves it against the last programmed position instead.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCyclCall--NoCycle",
+ "template": "{0} without a preceding CYCL DEF; the call is consumed with no motion effect.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainCyclCall--NotSimulated",
+ "template": "{0}: CYCL DEF {1} is recognized but not simulated; the call is consumed with no motion effect.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainCannedCycleSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--ConditionNotEvaluated",
+ "template": "{0}: a comparison operand did not reduce to a finite numeric (vacant Q parameter — e.g. an FN 18 SYSREAD target — or unparsed expression); falling through to next block.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--HostFileNotFound",
+ "template": "{0}: cannot locate host file \"{1}\" (baseDirectory \"{2}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--InlinedContextUnsupported",
+ "template": "{0}: jumps inside an inlined subprogram or repeated program section are not simulated (the redirect would discard the pending inline tail); falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--IterationLimitExceeded",
+ "template": "{0} in {1}: per-label iteration limit ({2}) reached; suppressing redirect and falling through. Raise {3}.{4} in the project XML if a legitimate program needs more.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--LabelNotFound",
+ "template": "{0}: no LBL {1} definition found in \"{2}\"; falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--Lbl0Target",
+ "template": "{0}: GOTO LBL 0 targets the end-of-subprogram sentinel — a program error on the control; falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--MissingDependency",
+ "template": "{0}: missing required runtime dependency ({1} / {2} / {3}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--NoHostFilePath",
+ "template": "{0}: host block has no file path; cannot re-segment.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainGoto--UnresolvedTarget",
+ "template": "{0}: jump target label is empty or unreadable; falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainGotoSyntax.cs"
+ },
+ {
+ "id": "HeidenhainPlane--Unsupported",
+ "template": "PLANE {0} is recognized but not simulated; the active tilted-plane state is left unchanged.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainPlaneTiltSyntax.cs"
+ },
+ {
+ "id": "HeidenhainQ--SystemReadOnly",
+ "template": "{0} is a controller-written system parameter; the program's write is ignored and reads stay vacant.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Heidenhain/HeidenhainQParameterReadingSyntax.cs"
+ },
+ {
+ "id": "HeidenhainToolOffset--RowMissing",
+ "template": "TOOL CALL {0}: the tool offset table has no row {1}{2}; tool-length compensation is the DL delta only ({3} mm). The computed contour will miss the tool length.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainToolOffsetSyntax.cs"
+ },
+ {
+ "id": "Hpcc--HighSpeedCycleIgnored",
+ "template": "G05 P{0} calls high-speed cycle machining: the real machine executes cycle data pre-registered in its variable area — actual axis motion. Offline simulation ignores the call, so the simulated result misses that machining.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FanucPathSmoothingSyntax.cs"
+ },
+ {
+ "id": "Hpcc--UnevaluatedFunction",
+ "template": "G05 P{0} carries an unevaluated variable or expression as its function selection; it is not supported in offline simulation and is ignored.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FanucPathSmoothingSyntax.cs"
+ },
+ {
+ "id": "Hpcc--UnsupportedFunction",
+ "template": "G05 P{0} (non-HPCC function selection; small P values select the high-speed remote buffer modes — not path smoothing) is not supported in offline simulation and is ignored.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/FanucPathSmoothingSyntax.cs"
+ },
+ {
+ "id": "LoadCuttingParaByFile--Done",
+ "template": "Cutting parameter set by file[{0}]",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "LoadCuttingParaByFile--Failed",
+ "template": "{0} failed. Workpiece not exists.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "LocalVariable--MainFrameWriteUnsupported",
+ "template": "Assignment to {0} = {1} outside a macro call frame is not modelled. Real Fanuc allows main-program local writes but this simulator only tracks locals inside G65/G66 frames; the assignment is ignored.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Fanuc/FanucLocalVariableReadingSyntax.cs"
+ },
+ {
+ "id": "MachiningProject-Load--ClsfRunnerFallback",
+ "template": "Loading {0} failed; applying default. {1}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "MachiningProject-Load--CsvRunnerFallback",
+ "template": "Loading {0} failed; applying default. {1}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "MachiningProject-Load--LegacyNcEnvFallbackFailed",
+ "template": "Legacy {0} fallback also failed; using default {1}. {2}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "MachiningProject-Load--LegacyNcEnvRunnerFallback",
+ "template": "Loading legacy {0} runner failed; using default {1}. {2}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "MachiningProject-Load--LegacySoftNcRunnerFallback",
+ "template": "Loading {0} failed; applying fallback. {1}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "MachiningProject-Load--NcRunnerFallback",
+ "template": "Loading {0} failed; applying default. {1}",
+ "file": "HiNc/MachiningProcs/MachiningProject.cs"
+ },
+ {
+ "id": "Map-ShotGap--StepsSkipped",
+ "template": "Skipped {0} steps on [{1}]: the pairing window contains no measured sample row (a gap in the shot data such as an acquisition dropout), so the steps are excluded instead of being paired with values interpolated across the gap.",
+ "file": "HiMech/Mapping/StepTimeShotUtil.cs"
+ },
+ {
+ "id": "McAct--ChainNotXyzabc",
+ "template": "Machine-coordinate act [{0}] requires an {1} machining chain; current chain is [{2}]. Machine-coordinate acts are skipped until the chain changes.",
+ "file": "HiMech/MachiningProcs/MachiningActRunner.cs"
+ },
+ {
+ "id": "Mcall--ArgsIncomplete",
+ "template": "MCALL {0}: reference plane RFP (arg 2) is missing; the modal call is consumed without arming.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensModalCycleSyntax.cs"
+ },
+ {
+ "id": "Mcall--ArgsNotLiteral",
+ "template": "MCALL {0}: arguments contain non-literal values (cycle arguments bypass the expression evaluator); the modal call is consumed without arming.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensModalCycleSyntax.cs"
+ },
+ {
+ "id": "Mcall--DepthMissing",
+ "template": "MCALL {0}: neither DP (arg 4) nor DPR (arg 5) supplies the drilling depth; the modal call is consumed without arming.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensModalCycleSyntax.cs"
+ },
+ {
+ "id": "Mcall--UnsupportedCall",
+ "template": "MCALL {0}: modal calls are simulated for CYCLE81/82/83/85 only; the call is consumed without arming (motion state unchanged).",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensModalCycleSyntax.cs"
+ },
+ {
+ "id": "NcOpt-Feed--StepFailed",
+ "template": "NC optimization step {0} ({1}) failed; its simulated feedrate is kept. {2}: {3}",
+ "file": "HiMech/NcOpt/StepFeedSolver.cs"
+ },
+ {
+ "id": "NcOpt-Feed--StepFailed",
+ "template": "NC optimization step {0} ({1}) failed; its simulated feedrate is kept. {2}: {3}",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "NcOpt-File--NonContiguous",
+ "template": "Source file [{0}] re-appears non-contiguously in execution order; its pieces are grouped by first appearance (P1 limitation).",
+ "file": "HiMech/NcOpt/SoftNcOptProc.cs"
+ },
+ {
+ "id": "NcOpt-Scan--Progress",
+ "template": "Scanning NC for optimization.. FileNo:{0}, LineNo:{1}",
+ "file": "HiMech/NcOpt/NcOptPieceClassifier.cs"
+ },
+ {
+ "id": "NcOpt-Scan--Progress",
+ "template": "Scanning NC for optimization.. FileNo:{0}, LineNo:{1}",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "NcOpt-Tool--NotFound",
+ "template": "Tool Not Found: {0}",
+ "file": "HiMech/NcOpt/NcOptPieceClassifier.cs"
+ },
+ {
+ "id": "NcOpt-Tool--NotFound",
+ "template": "Tool Not Found: {0}",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "NcProc-G83--TransformFailed",
+ "template": "[{0}] coordinate transform failed.",
+ "file": "HiUniNc/Numerical/NcProc.cs"
+ },
+ {
+ "id": "Optimize-File--Done",
+ "template": "File optimized: {0}",
+ "file": "HiMech/NcOpt/SoftNcOptProc.cs"
+ },
+ {
+ "id": "Optimize-File--Done",
+ "template": "File optimized: {0}",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "Optimize-File--Writing",
+ "template": "Now optimizing to: FileNo.{0}, LineNo.{1}",
+ "file": "HiMech/NcOpt/SoftNcOptProc.cs"
+ },
+ {
+ "id": "Optimize-File--Writing",
+ "template": "Now optimizing to: FileNo.{0}, LineNo.{1}",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "OptimizeToFiles--Done",
+ "template": "Total {0} files optimized.",
+ "file": "HiMech/NcOpt/SoftNcOptProc.cs"
+ },
+ {
+ "id": "OptimizeToFiles--Done",
+ "template": "Total {0} files optimized.",
+ "file": "HiNc/NcOpt/NcOptProc.cs"
+ },
+ {
+ "id": "Orientation-Vector--IkFailed",
+ "template": "Inverse kinematics could not reach the programmed tool-axis orientation ({0}). XYZ motion proceeds; the tool posture holds its previous value.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/OrientationVectorResolveSyntax.cs"
+ },
+ {
+ "id": "Orientation-Vector--NoKinematics",
+ "template": "A tool-axis orientation vector was programmed but no {0} dependency is configured (typically a 5-axis vector NC file run against a 3-axis machine config, or a missing dependency wire-up). XYZ motion proceeds; the tool posture is unchanged.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/OrientationVectorResolveSyntax.cs"
+ },
+ {
+ "id": "Orientation-Vector--NoRotaryAxes",
+ "template": "A tool-axis orientation vector was programmed but the {0} declares no rotary axes. XYZ motion proceeds; the tool posture is unchanged.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/OrientationVectorResolveSyntax.cs"
+ },
+ {
+ "id": "Orientation-Vector--NotNormalized",
+ "template": "LN vector ({0}) has length {1} — the TNC manual requires normalized vectors (≥7 decimal places recommended). The direction is used after normalization.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainLnOrientationSyntax.cs"
+ },
+ {
+ "id": "Orientation-Vector--ZeroVector",
+ "template": "LN orientation vector ({0}) is zero — no direction can be derived. Tool posture keeps its previous value.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainLnOrientationSyntax.cs"
+ },
+ {
+ "id": "Parsing--Unconsumed",
+ "template": "Unconsumed Parsing entries: {0}",
+ "file": "HiMech/NcParsers/InspectionSyntaxs/UnconsumedCheckSyntax.cs"
+ },
+ {
+ "id": "Play-Physics--None",
+ "template": "Physics is enabled and {0} steps touched the workpiece, but no touched step produced a physics result. Check that a tool is bound to the spindle, that the spindle rotates through the cuts (M03/M04), and that the workpiece cutting parameter is loaded. Force results are empty for the whole play; if the engagements were not built either (no tool, or spindle never rotating), milling-parameter training will skip every touched step.",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "Play-YieldingStress--None",
+ "template": "Tool {0}: physics produced results but the yielding stress ratio could not be evaluated on any touched step (NaN). Check that the cutter is a milling cutter with a flute material, and that its beam geometry has sections outside the tip zone (a section counts only where its height above the tip exceeds its radius). The NcOpt yielding constraint is off for these tools.",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "RadiusComp--NegRadius",
+ "template": "Tool radius offset D{0} is {1} mm (R + DR < 0); Heidenhain TNC flags this in look-ahead. Compensation will apply to the opposite of the programmed {2} side.",
+ "file": "HiMech/NcParsers/PostLogicSyntaxs/RadiusCompensationSyntax.cs"
+ },
+ {
+ "id": "RadiusComp--RowMissing",
+ "template": "{0} D{1}: the tool offset table has no row {2}{3}; compensating with a zero radius. The computed contour will sit on the programmed path, not offset by the tool radius.",
+ "file": "HiMech/NcParsers/PostLogicSyntaxs/RadiusCompensationSyntax.cs"
+ },
+ {
+ "id": "ReTrain-Sample--NoneNoShots",
+ "template": "No training samples gathered from {0} touched steps. Check that the mapped force data overlaps the play time range and contains valid force/acceleration shots.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "ReTrain-Sample--NoneUntouched",
+ "template": "No training samples: none of the {0} played steps touched the workpiece. Check positioning modality (e.g. a G91 G28 header without a following G90), the work offset / program zero, the workpiece stock and the tool geometry, then re-play before training.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "ReadMeshedGeom--Done",
+ "template": "ReadMeshedGeom({0}) done.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ReadMeshedGeom--NotFound",
+ "template": "File [{0}] not found. Ignored.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "ReadMeshedGeom--Reading",
+ "template": "Reading meshed geometry file [{0}]..",
+ "file": "HiMech/NcMech/Workpieces/WorkpieceService.cs"
+ },
+ {
+ "id": "ReadMeshedGeom--Start",
+ "template": "{0}({1}) start.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "RegisterWriteSyntaxPieces--Done",
+ "template": "Register write SyntaxPieces to [{0}].",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "RegisterWriteSyntaxPiecesWithActs--Done",
+ "template": "Register write SyntaxPieces with Acts to [{0}].",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "Resolution--Set",
+ "template": "SetMachiningResolution({0}) done.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "RunNcFile--NotFound",
+ "template": "File [{0}] not found. Ignored.",
+ "file": "HiMech/MachiningProcs/MachiningSession.cs"
+ },
+ {
+ "id": "RunNcLines--RunnerMismatch",
+ "template": "File [{0}] needs a different runner than the one this session already ran; a session plays ONE program kind. Reset the player and play it in a fresh session. Skipped.",
+ "file": "HiMech/NcParsers/SoftNcRunner.cs"
+ },
+ {
+ "id": "Script--NotLicensed",
+ "template": "NC-embedded C# scripts require the {0} license feature. This and every further embedded script in this play are skipped.",
+ "file": "HiMech/MachiningProcs/MachiningActRunner.cs"
+ },
+ {
+ "id": "ScriptCommand-Compile--Failed",
+ "template": "Script [{0}] compile failed; the script did not run. {1}",
+ "file": "HiNc/SessionCommands/ScriptCommand.cs"
+ },
+ {
+ "id": "ScriptCommand-Run--Fault",
+ "template": "Script [{0}] faulted: {1}:: {2}",
+ "file": "HiNc/SessionCommands/ScriptCommand.cs"
+ },
+ {
+ "id": "Semantic-Resolve--Exception",
+ "template": "Semantic[{0}] resolve failed: {1}.",
+ "file": "HiMech/NcParsers/SoftNcRunner.cs"
+ },
+ {
+ "id": "SetFixture--NoEquipment",
+ "template": "{0} has not been set.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "SetMachiningTool--NoEquipment",
+ "template": "{0} has not been set.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "SetWorkpiece--NoEquipment",
+ "template": "{0} has not been set.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "ShotFile-Create--Done",
+ "template": "File[{0}] created. Building..",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "ShotFile-Create--Start",
+ "template": "Creating file[{0}].",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "ShotFile-Write--Finish",
+ "template": "{0} finished.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "ShotFile-Write--Progress",
+ "template": "{0}[{1}/{2}] is writing.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "ShotFile-Write--Start",
+ "template": "{0} starts.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "SiemensCall--ArgsNotBound",
+ "template": "Call \"{0}\" carries {1} argument(s); PROC-parameter binding is not implemented — the body is inlined without bindings.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SiemensCall--DepthLimitExceeded",
+ "template": "Call \"{0}\": call-stack depth {1} reached the {2} limit ({3}) — likely a self- or mutually-recursive subprogram; consumed as a safe-skip with no motion effect.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SiemensCall--NoLayers",
+ "template": "{0} is not configured; cannot inline call \"{1}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SiemensCall--NoSegmenter",
+ "template": "{0} is not configured; cannot inline call \"{1}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SiemensCall--Skipped",
+ "template": "Call \"{0}\" has no subprogram file under folder \"{1}\" (baseDirectory \"{2}\"); consumed with no motion effect (OEM/measuring-cycle safe-skip).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensSubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SiemensFrame--SolidAngleInvalid",
+ "template": "\"{0}\" accepts at most two solid angles, or RPL= alone (two solid angles orient a plane unambiguously). The statement is not applied — downstream motion runs in the unmodified frame.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensProgrammableFrameSyntax.cs"
+ },
+ {
+ "id": "SiemensFrame--Unsupported",
+ "template": "Siemens frame instruction \"{0}\" is recognized but not simulated (no corpus occurrence; SCALE/MIRROR would introduce non-rigid transforms). The statement is consumed with zero transform effect — downstream motion runs in the unmodified frame.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensProgrammableFrameSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--ConditionNotEvaluated",
+ "template": "IF {0} {1} {2}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); falling through to next block.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--HostFileNotFound",
+ "template": "{0} {1}: cannot locate host file \"{2}\" (baseDirectory \"{3}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--InlinedContextUnsupported",
+ "template": "{0} {1}: jumps inside an inlined subprogram or REPEAT section are not simulated (the redirect would discard the pending inline tail); falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--IterationLimitExceeded",
+ "template": "{0} {1} in {2}: per-label iteration limit ({3}) reached; suppressing redirect and falling through. Raise {4}.{5} in the project XML if a legitimate program needs more.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--LabelNotFound",
+ "template": "{0} {1}: no \"{2}:\" label {3} line {4} in \"{5}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--MissingDependency",
+ "template": "{0} {1}: missing required runtime dependency ({2} / {3} / {4}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--NoHostFilePath",
+ "template": "{0} {1}: host block has no file path; cannot re-segment.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensGoto--UnresolvedTarget",
+ "template": "{0}: jump target label is empty or unreadable; falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensGotoSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--ConditionNotEvaluated",
+ "template": "IF {0}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); falling through into the then-branch.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--EndifNotFound",
+ "template": "{0}: no matching {1} found below line {2} in \"{3}\"; falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--HostFileNotFound",
+ "template": "{0}: cannot locate host file \"{1}\" (baseDirectory \"{2}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--InlinedContextUnsupported",
+ "template": "{0}: branch jumps inside an inlined subprogram or REPEAT section are not simulated (the redirect would discard the pending inline tail); falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--MissingDependency",
+ "template": "{0}: missing required runtime dependency ({1} / {2} / {3}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensIf--NoHostFilePath",
+ "template": "{0}: host block has no file path; cannot re-segment for the branch jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensIfSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--BeginLineNotFound",
+ "template": "{0}: line {1} in \"{2}\" did not materialise as a segment start on re-segmentation; cannot back-jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--BoundsNotEvaluated",
+ "template": "FOR {0}: start/end bound did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); skipping the loop body.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--ConditionNotEvaluated",
+ "template": "WHILE {0}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); exiting loop.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--EndNotFound",
+ "template": "{0}: no matching {1} found below line {2} in \"{3}\"; cannot exit loop.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--EntryWithoutBegin",
+ "template": "{0}: no active {1} frame on this block's carry stack; falling through (likely a malformed loop or a stray terminator).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--HostFileNotFound",
+ "template": "{0}: cannot locate host file \"{1}\" (baseDirectory \"{2}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--InlinedContextExitJumpUnsupported",
+ "template": "{0}: loop exit jumps inside an inlined subprogram or REPEAT section are not simulated (the redirect would discard the pending inline tail); falling through into the body.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--InlinedContextUnsupported",
+ "template": "{0}: loop back-jumps inside an inlined subprogram or REPEAT section are not simulated (the redirect would discard the pending inline tail); falling through after a single pass.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--IterationLimitExceeded",
+ "template": "{0} in {1} (loop at line {2}): per-loop iteration limit ({3}) reached; suppressing the back-jump and falling through. Raise {4}.{5} in the project XML if a legitimate program needs more.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--MissingBeginLine",
+ "template": "{0}: active frame has no valid BeginLineNo; cannot back-jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--MissingDependency",
+ "template": "{0}: missing required runtime dependency ({1} / {2} / {3}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--MissingWatchdogDependency",
+ "template": "{0}: no {1} in the pipeline — an uncapped LOOP back-jump would never terminate offline; suppressing the jump (single pass).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--NoFrameFilePath",
+ "template": "{0}: active frame has no file path; cannot re-segment for the back-jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--NoHostFilePath",
+ "template": "{0}: host block has no file path; cannot re-segment for the forward jump.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--UntilConditionNotEvaluated",
+ "template": "UNTIL {0}: condition did not reduce to a finite numeric (vacant variable, parse error, or non-finite result); exiting loop defensively.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensLoop--UntilWithoutRepeat",
+ "template": "UNTIL {0}: no active REPEAT frame on this block's carry stack; falling through (likely a malformed loop or a stray UNTIL).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensLoopSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--EndLabelNotFound",
+ "template": "REPEAT {0} {1}: no \"{2}:\" label found after \"{3}:\" in \"{4}\"; the section repeat is skipped.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--HostFileNotFound",
+ "template": "REPEAT {0} {1}: cannot locate host file \"{2}\" (baseDirectory \"{3}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--MissingDependency",
+ "template": "REPEAT {0} {1}: missing required runtime dependency ({2} / {3} / {4}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--NoHostFilePath",
+ "template": "REPEAT {0} {1}: host block has no file path; cannot re-segment for the section repeat.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--RecursiveSlice",
+ "template": "REPEAT {0} {1}: the labelled section contains the REPEAT line itself (lines {2}..{3}); repeating it would never terminate — the section repeat is skipped.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--SingleLabelUnsupported",
+ "template": "REPEAT {0}: the single-label form (repeat from the label back to the REPEAT line) is not simulated; the block falls through with no repetition.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensRepeat--StartLabelNotFound",
+ "template": "REPEAT {0} {1}: no \"{2}:\" label found in \"{3}\"; the section repeat is skipped.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/Siemens/SiemensRepeatSyntax.cs"
+ },
+ {
+ "id": "SiemensToolOffset--TcdpRowMissing",
+ "template": "$TC_DP has no row for (T{0}, D{1}); falling back to the generic tool offset table's height for tool {2}: {3} mm.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensToolOffsetSyntax.cs"
+ },
+ {
+ "id": "SiemensToolOffset--TcdpRowMissingGenericHeightNaN",
+ "template": "$TC_DP has no row for (T{0}, D{1}) and the generic tool offset table's height for tool {2} is NaN (tool tip unresolved); D activation resolves to offset 0.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensToolOffsetSyntax.cs"
+ },
+ {
+ "id": "SiemensToolOffset--ToolUnresolved",
+ "template": "Tool name \"{0}\" has no tool-number mapping in the Siemens tool offset table; D activation resolves to offset 0.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Siemens/SiemensToolOffsetSyntax.cs"
+ },
+ {
+ "id": "SpindleDirection--AssumedCw",
+ "template": "S{0} commanded but no spindle direction was ever issued (no M03/M04); assuming CW so physics can run. If this machine starts its spindle with custom M-codes, configure the spindle direction M-code map on the controller parameter table.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/SpindleSpeedSyntax.cs"
+ },
+ {
+ "id": "StepFile-Create--Done",
+ "template": "File[{0}] created. Building..",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "StepFile-Create--Start",
+ "template": "Creating file[{0}].",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "StepFile-Write--Finish",
+ "template": "{0} finished.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "StepFile-Write--Start",
+ "template": "{0} starts.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "StepMapping--Progress",
+ "template": "Step Mapping done: {0}/{1}",
+ "file": "HiMech/Mapping/StepTimeShotUtil.cs"
+ },
+ {
+ "id": "StlFile-Read--Failed",
+ "template": "File Reading Failed: {0}",
+ "file": "HiGeom/Geom/StlFile.cs"
+ },
+ {
+ "id": "StrokeLimit--Negative",
+ "template": "[{0}] over negative stroke limit: {1} < {2}",
+ "file": "HiMech/NcParsers/Semantics/StrokeLimitCheckSemantic.cs"
+ },
+ {
+ "id": "StrokeLimit--Positive",
+ "template": "[{0}] over positive stroke limit: {1} > {2}",
+ "file": "HiMech/NcParsers/Semantics/StrokeLimitCheckSemantic.cs"
+ },
+ {
+ "id": "StrokeLimit--Unconfigured",
+ "template": "Stroke limit check is enabled, but the machine has no travel limit on {0}. The check compares only axes that carry a limit, so a move past the real travel on these axes passes silently; set both ends under Machine Limits (Stroke) on the controller, or turn EnableStrokeLimitCheck off.",
+ "file": "HiNc/MachiningProcs/LocalProjectService.cs"
+ },
+ {
+ "id": "StrokeLimit-Abc--Over",
+ "template": "[{0}] Axis Over Stroke: {1} from [{2},{3}]",
+ "file": "HiUniNc/Numerical/HardNcEnv.cs"
+ },
+ {
+ "id": "StrokeLimit-Xyz--Over",
+ "template": "[{0}] Axis Over Stroke: {1} from [{2},{3}]",
+ "file": "HiUniNc/Numerical/HardNcEnv.cs"
+ },
+ {
+ "id": "SubProgramCall--FileNotFound",
+ "template": "{0} P{1}: subprogram file not found via folder \"{2}\" anchored against baseDirectory \"{3}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SubProgramCall--MissingP",
+ "template": "{0} requires a P parameter (subprogram number).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SubProgramCall--NoLayers",
+ "template": "{0} is not configured; cannot inline {1} P{2}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SubProgramCall--NoSegmenter",
+ "template": "{0} is not configured; cannot inline {1} P{2}.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramCallSyntax.cs"
+ },
+ {
+ "id": "SubProgramReturn--CallerFileNotFound",
+ "template": "M99 P{0}: cannot locate caller file \"{1}\" (baseDirectory \"{2}\").",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramReturnSyntax.cs"
+ },
+ {
+ "id": "SubProgramReturn--IterationLimitExceeded",
+ "template": "M99 P{0} in {1}: per-target iteration limit ({2}) reached; suppressing redirect and falling through.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramReturnSyntax.cs"
+ },
+ {
+ "id": "SubProgramReturn--LabelNotFound",
+ "template": "M99 P{0}: no N{1} label found in caller file \"{2}\".",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramReturnSyntax.cs"
+ },
+ {
+ "id": "SubProgramReturn--MissingDependency",
+ "template": "M99 P{0}: missing required runtime dependency ({1} / {2} / {3}).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramReturnSyntax.cs"
+ },
+ {
+ "id": "SubProgramReturn--PInMainFrameUnsupported",
+ "template": "M99 P{0} in main frame: program-restart semantics are not modelled; the block falls through as a plain return.",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/SubProgramReturnSyntax.cs"
+ },
+ {
+ "id": "Syntax-Build--Exception",
+ "template": "Syntax[{0}] building failed: {1}.",
+ "file": "HiMech/NcParsers/SoftNcRunner.cs"
+ },
+ {
+ "id": "Sys-Init--FileLines",
+ "template": "File[{0}] contains lines: {1}",
+ "file": "HiMech/NcParsers/SoftNcRunner.cs"
+ },
+ {
+ "id": "Tcpm--ArgsNotSimulated",
+ "template": "FUNCTION TCPM behavior arguments (\"{0}\") are recorded but not simulated; RTCP activation itself is simulated.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainRtcpSyntax.cs"
+ },
+ {
+ "id": "TimeShotFile--NotFound",
+ "template": "File not found: {0}",
+ "file": "HiMech/Mapping/TimeMapping.cs"
+ },
+ {
+ "id": "TimeShotLoad--Progress",
+ "template": "Lines loaded: {0}",
+ "file": "HiMech/Mapping/TimeMapping.cs"
+ },
+ {
+ "id": "ToolChange--AxisUnsupported",
+ "template": "TOOL CALL tool axis '{0}' is not supported; Z is assumed.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainToolChangeSyntax.cs"
+ },
+ {
+ "id": "ToolChange--DeltaNotLiteral",
+ "template": "TOOL CALL {0}{1} is not a literal value (unevaluated variable?); the delta is ignored.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainToolChangeSyntax.cs"
+ },
+ {
+ "id": "ToolChange--DeltaUnsupported",
+ "template": "TOOL CALL DR{0} radius delta is not applied to radius compensation yet; the tool-table radius is used as-is.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainToolChangeSyntax.cs"
+ },
+ {
+ "id": "ToolChange--NameUnresolved",
+ "template": "Tool name \"{0}\" has no tool-number mapping; the tool change is not simulated. Name resolution currently requires a Siemens tool offset table with the name in its ToolNames map (no Heidenhain tool-name table exists yet).",
+ "file": "HiMech/NcParsers/Semantics/ToolChangeSemantic.cs"
+ },
+ {
+ "id": "ToolChange--UnsafePose",
+ "template": "The tool change to tool [{0}] was commanded while the tool was still engaged with material — the block's motion to the tooling position (or the change step itself) removed workpiece material. A healthy program retracts to a safe position (e.g. G75/G28/G53 Z-home) before M06; check the lines preceding this change.",
+ "file": "HiMech/MachiningProcs/MachiningActRunner.cs"
+ },
+ {
+ "id": "Train-AvgSample--Got",
+ "template": "Get avg samples: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Boundary--Converged",
+ "template": "Convergence: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Boundary--Solving",
+ "template": "Solving.. equation number: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-CovMat--Building",
+ "template": "Cov mat built: {0}/{1}.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-CovMat--Computing",
+ "template": "Compute cov mat.. equation samples num: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-DesignMatrix--Solving",
+ "template": "QR-solve design matrix.. equation samples num: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-DesignMatrix--SolvingSvd",
+ "template": "SVD-of-M solve (via thin QR).. equation samples num: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-ForceSum--Prepared",
+ "template": "Prepared sum data[{0}]",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-LeadPara--Built",
+ "template": "lead para:{0}{1}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Para--Adjusting",
+ "template": "Adjusting Milling Para.. iteration: {0}/{1}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--BranchDescent",
+ "template": "Branch resolution used spectral-init descent over {0} passes (exact limit {1}).",
+ "file": "HiNc/MillingForces/Training/MillingPhasePairing.cs"
+ },
+ {
+ "id": "Train-PhasePairing--BranchWarning",
+ "template": "Phase pairing: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--Fallback",
+ "template": "CWE phase pairing not applicable ({0}); falling back to the lead-para phase path.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--PassDropped",
+ "template": "Phase pairing: pass of steps [{0}..{1}] rejected (model duty {2} vs measured {3}, peak {4}); excluded from training.",
+ "file": "HiNc/MillingForces/Training/MillingPhasePairing.cs"
+ },
+ {
+ "id": "Train-PhasePairing--Passes",
+ "template": "Phase pairing ({0} passes; branch RSS best {1} / runner-up {2}; global sign {3}):{4}{5}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--Refined",
+ "template": "Residual refinement moved pass phases (iteration {0}).",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--Start",
+ "template": "Phase pairing over {0} steps..",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-PhasePairing--StepDropped",
+ "template": "Phase pairing: step {0} has no usable transverse rows; excluded.",
+ "file": "HiNc/MillingForces/Training/MillingPhasePairing.cs"
+ },
+ {
+ "id": "Train-PhasePairing--StepsDropped",
+ "template": "Phase pairing: excluded {0} step(s) for full-pitch contact arc and {1} for non-pitch-symmetric contour (transient artifacts).",
+ "file": "HiNc/MillingForces/Training/MillingPhasePairing.cs"
+ },
+ {
+ "id": "Train-Sample--Filtered",
+ "template": "Filtered sample equations: {0}",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Sample--Filtering",
+ "template": "Filtering sample equations ({0})..",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Sample--FilteringUpdate",
+ "template": "Filter samples.. (Raw Samples: {0})",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Sample--Gathered",
+ "template": "Gathered Training Sample [{0}/{1}]",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Sample--NoneNoShots",
+ "template": "No training samples gathered from {0} touched steps. Check that the mapped force data overlaps the play time range and contains valid force/acceleration shots.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-Sample--NoneUntouched",
+ "template": "No training samples: none of the {0} played steps touched the workpiece. Check positioning modality (e.g. a G91 G28 header without a following G90), the work offset / program zero, the workpiece stock and the tool geometry, then re-play before training.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-StepEngagement--Missing",
+ "template": "Skip training step {0}: luggage row present but no milling-step engagement was built (was physics active during the play?).",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Train-StepLuggage--Unreadable",
+ "template": "Skip training step {0}: the milling-step luggage row could not be read back.",
+ "file": "HiNc/MillingForces/Training/MillingTraining.cs"
+ },
+ {
+ "id": "Unit--InchNotSupported",
+ "template": "{0} (inch unit) is not supported; the HiNC pipeline works in mm only. Convert the NC program to metric before loading.",
+ "file": "HiMech/NcParsers/LogicSyntaxs/UnitModeSyntax.cs"
+ },
+ {
+ "id": "UnparsedText--Remaining",
+ "template": "Remaining unparsed text: {0}",
+ "file": "HiMech/NcParsers/InspectionSyntaxs/UnconsumedCheckSyntax.cs"
+ },
+ {
+ "id": "VariableEvaluator--SameBlockForwardReference",
+ "template": "{0} = {1} depends on {2} which is/are assigned later in the same block. Source-order semantics within a block are not honoured — evaluation used pre-block value(s) (or vacant).",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/VariableEvaluatorSyntax.cs"
+ },
+ {
+ "id": "VariableExpression--AssignmentEvaluationFailed",
+ "template": "Cannot evaluate RHS of {0} = {1}: {2} — {3}",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/VariableEvaluatorSyntax.cs"
+ },
+ {
+ "id": "VariableExpression--AssignmentParseFailed",
+ "template": "Cannot parse RHS of {0} = {1}: {2}",
+ "file": "HiMech/NcParsers/EvaluationSyntaxs/VariableEvaluatorSyntax.cs"
+ },
+ {
+ "id": "VariableExpression--Unevaluated",
+ "template": "Tag \"{0}\" has non-numeric value \"{1}\". Either an unevaluated variable reference (Fanuc #, Heidenhain Q, Siemens R/GUD, …) or bracket expression at the parser stage — resolve via the variable evaluator; or a HiAPIs codegen bug if the section was supposed to be machine-state — file a bug.",
+ "file": "HiMech/NcParsers/SoftNcUtil.cs"
+ },
+ {
+ "id": "WriteMeshedGeom--Done",
+ "template": "{0}({1}) done.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "WriteMeshedGeom--Start",
+ "template": "{0}({1}) start.",
+ "file": "HiNc/MachiningProcs/SessionShell.cs"
+ },
+ {
+ "id": "Writeback-Arc--OffAxisPlane",
+ "template": "Arc plane normal is not aligned with a program axis ({0}); Fanuc G02/G03 cannot express it. Falling back to a straight move to the arc endpoint — the converted path deviates here.",
+ "file": "HiMech/NcParsers/NcWriteback/FanucNcSentenceComposer.cs"
+ },
+ {
+ "id": "Writeback-Patch--CommentOnlyText",
+ "template": "Cannot insert tag '{0}': the block text is entirely comment.",
+ "file": "HiMech/NcParsers/NcWriteback/NcPatchWriter.cs"
+ },
+ {
+ "id": "Writeback-Patch--EditUnmatched",
+ "template": "Edit for SentenceIndex {0} matched no piece in the stream; it was not applied.",
+ "file": "HiMech/NcParsers/NcWriteback/NcPatchWriter.cs"
+ },
+ {
+ "id": "Writeback-Patch--KeywordValue",
+ "template": "Tag '{0}' holds a dialect keyword value in the source text; patch mode does not rewrite keyword values.",
+ "file": "HiMech/NcParsers/NcWriteback/NcPatchWriter.cs"
+ },
+ {
+ "id": "Writeback-Patch--VariableValue",
+ "template": "Tag '{0}' holds a variable or bracket expression in the source text; patch mode does not rewrite expressions.",
+ "file": "HiMech/NcParsers/NcWriteback/NcPatchWriter.cs"
+ },
+ {
+ "id": "Writeback-Splition--PlanUnmatched",
+ "template": "Splition plan for SentenceIndex {0} matched no piece in the stream; it was not applied.",
+ "file": "HiMech/NcParsers/NcWriteback/NcOptMixedPatchConverter.cs"
+ },
+ {
+ "id": "XFactory-Load--SkippedUnloadable",
+ "template": "Skipped un-loadable <{0}> as {1}: {2}",
+ "file": "HiGeom/Common/XmlUtils/XFactory.cs"
+ }
+ ],
+ "unresolvedFmtSites": []
+}
diff --git a/App/Hi.WpfPlus.dll b/App/Hi.WpfPlus.dll
index c7dc5499..2cff6838 100644
Binary files a/App/Hi.WpfPlus.dll and b/App/Hi.WpfPlus.dll differ
diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll
index 48ba28e4..9da0a665 100644
Binary files a/App/HiCbtr.dll and b/App/HiCbtr.dll differ
diff --git a/App/HiDisp.dll b/App/HiDisp.dll
index f7182530..a02f5757 100644
Binary files a/App/HiDisp.dll and b/App/HiDisp.dll differ
diff --git a/App/HiGeom.dll b/App/HiGeom.dll
index 85ed8a78..39d3ee85 100644
Binary files a/App/HiGeom.dll and b/App/HiGeom.dll differ
diff --git a/App/HiLicense.dll b/App/HiLicense.dll
index 4148b02e..d89ae5b0 100644
Binary files a/App/HiLicense.dll and b/App/HiLicense.dll differ
diff --git a/App/HiMech.dll b/App/HiMech.dll
index 3a0e4fd7..aa41f427 100644
Binary files a/App/HiMech.dll and b/App/HiMech.dll differ
diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json
index 0f565548..33e9be3b 100644
--- a/App/HiNC-2025-win-desktop.deps.json
+++ b/App/HiNC-2025-win-desktop.deps.json
@@ -11,9 +11,9 @@
"dependencies": {
"AvalonEdit": "6.3.0.90",
"FontAwesome.Sharp": "6.3.0",
- "Hi.WpfPlus": "3.2.21",
- "HiNc": "3.2.22",
- "HiNc-Resource": "3.2.19",
+ "Hi.WpfPlus": "3.2.22",
+ "HiNc": "3.2.23",
+ "HiNc-Resource": "3.2.20",
"Serilog.Extensions.Hosting": "10.0.0",
"Serilog.Sinks.Console": "6.1.1",
"Serilog.Sinks.File": "7.0.0",
@@ -1598,36 +1598,36 @@
}
}
},
- "Hi.WpfPlus/3.2.21": {
+ "Hi.WpfPlus/3.2.22": {
"dependencies": {
- "HiDisp": "3.2.28"
+ "HiDisp": "3.2.29"
},
"runtime": {
"lib/net10.0-windows7.0/Hi.WpfPlus.dll": {
- "assemblyVersion": "3.2.21.0",
- "fileVersion": "3.2.21.0"
+ "assemblyVersion": "3.2.22.0",
+ "fileVersion": "3.2.22.0"
}
}
},
- "HiCbtr/3.2.24": {
+ "HiCbtr/3.2.25": {
"dependencies": {
- "HiDisp": "3.2.28"
+ "HiDisp": "3.2.29"
},
"runtime": {
"lib/net10.0/HiCbtr.dll": {
- "assemblyVersion": "3.2.24.0",
- "fileVersion": "3.2.24.0"
+ "assemblyVersion": "3.2.25.0",
+ "fileVersion": "3.2.25.0"
}
}
},
- "HiDisp/3.2.28": {
+ "HiDisp/3.2.29": {
"dependencies": {
- "HiGeom": "3.2.20"
+ "HiGeom": "3.2.21"
},
"runtime": {
"lib/net10.0/HiDisp.dll": {
- "assemblyVersion": "3.2.28.0",
- "fileVersion": "3.2.28.0"
+ "assemblyVersion": "3.2.29.0",
+ "fileVersion": "3.2.29.0"
}
},
"native": {
@@ -1645,15 +1645,15 @@
}
}
},
- "HiGeom/3.2.20": {
+ "HiGeom/3.2.21": {
"dependencies": {
"MathNet.Numerics": "5.0.0",
"Microsoft.CodeAnalysis.Scripting.Common": "5.9.0"
},
"runtime": {
"lib/net10.0/HiGeom.dll": {
- "assemblyVersion": "3.2.20.0",
- "fileVersion": "3.2.20.0"
+ "assemblyVersion": "3.2.21.0",
+ "fileVersion": "3.2.21.0"
}
},
"resources": {
@@ -1665,27 +1665,27 @@
}
}
},
- "HiLicense/3.2.21": {
+ "HiLicense/3.2.22": {
"dependencies": {
- "HiGeom": "3.2.20"
+ "HiGeom": "3.2.21"
},
"runtime": {
"lib/net10.0/HiLicense.dll": {
- "assemblyVersion": "3.2.21.0",
- "fileVersion": "3.2.21.0"
+ "assemblyVersion": "3.2.22.0",
+ "fileVersion": "3.2.22.0"
}
}
},
- "HiMech/3.2.25": {
+ "HiMech/3.2.26": {
"dependencies": {
"CommandLineParser": "2.9.1",
- "HiCbtr": "3.2.24",
+ "HiCbtr": "3.2.25",
"Microsoft.CodeAnalysis.CSharp.Scripting": "5.9.0"
},
"runtime": {
"lib/net10.0/HiMech.dll": {
- "assemblyVersion": "3.2.25.0",
- "fileVersion": "3.2.25.0"
+ "assemblyVersion": "3.2.26.0",
+ "fileVersion": "3.2.26.0"
}
},
"resources": {
@@ -1694,19 +1694,19 @@
}
}
},
- "HiNc/3.2.22": {
+ "HiNc/3.2.23": {
"dependencies": {
"Dapper": "2.1.79",
- "HiLicense": "3.2.21",
- "HiMech": "3.2.25",
- "HiUniNc": "3.2.23",
+ "HiLicense": "3.2.22",
+ "HiMech": "3.2.26",
+ "HiUniNc": "3.2.24",
"Microsoft.Data.Sqlite": "10.0.9",
"SQLitePCLRaw.bundle_e_sqlite3": "3.0.3"
},
"runtime": {
"lib/net10.0/HiNc.dll": {
- "assemblyVersion": "3.2.22.0",
- "fileVersion": "3.2.22.0"
+ "assemblyVersion": "3.2.23.0",
+ "fileVersion": "3.2.23.0"
}
},
"resources": {
@@ -1718,22 +1718,22 @@
}
}
},
- "HiNc-Resource/3.2.19": {
+ "HiNc-Resource/3.2.20": {
"runtime": {
"lib/net10.0/HiNc-Resource.dll": {
- "assemblyVersion": "3.2.19.0",
- "fileVersion": "3.2.19.0"
+ "assemblyVersion": "3.2.20.0",
+ "fileVersion": "3.2.20.0"
}
}
},
- "HiUniNc/3.2.23": {
+ "HiUniNc/3.2.24": {
"dependencies": {
- "HiMech": "3.2.25"
+ "HiMech": "3.2.26"
},
"runtime": {
"lib/net10.0/HiUniNc.dll": {
- "assemblyVersion": "3.2.23.0",
- "fileVersion": "3.2.23.0"
+ "assemblyVersion": "3.2.24.0",
+ "fileVersion": "3.2.24.0"
}
}
},
@@ -2117,68 +2117,68 @@
"path": "fontawesome.sharp/6.3.0",
"hashPath": "fontawesome.sharp.6.3.0.nupkg.sha512"
},
- "Hi.WpfPlus/3.2.21": {
+ "Hi.WpfPlus/3.2.22": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-nLTm8mAHaZyzNM4CZnpwDDX1Qg1Niz4L6uUVvds+fVRhKzBsMmA88RPN20rpUKLkfnMKLvbCWZgEfhN3BBJ0AA==",
- "path": "hi.wpfplus/3.2.21",
- "hashPath": "hi.wpfplus.3.2.21.nupkg.sha512"
+ "sha512": "sha512-Ccbuy5UYWhRje54RoSaufdGQHx8j0HwtuDri6kDbj9r8cTq/PMkH+nMnC5H84QkXn7cWAAztoxGTl+L3igjCTg==",
+ "path": "hi.wpfplus/3.2.22",
+ "hashPath": "hi.wpfplus.3.2.22.nupkg.sha512"
},
- "HiCbtr/3.2.24": {
+ "HiCbtr/3.2.25": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-MiHd2UMiQfjFr9dV9Ihj6UYLFzyqMiLBhCaaL5OaXSxFLcBVaIMWBDCSgVHsyBdDIIu8N+PhjRWYo1XqkfD8og==",
- "path": "hicbtr/3.2.24",
- "hashPath": "hicbtr.3.2.24.nupkg.sha512"
+ "sha512": "sha512-vpVBenFALewpm86CSmnj6VmK5Z+GW3UXHeWxC/5/ClqGIaozy646vCiTpewRsYpGO2qr5Zkgz01doxU2tQ52bA==",
+ "path": "hicbtr/3.2.25",
+ "hashPath": "hicbtr.3.2.25.nupkg.sha512"
},
- "HiDisp/3.2.28": {
+ "HiDisp/3.2.29": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-zIVgXR4jB/2qikqXDZXmM/S5m0ptHo4dny0YxZMuo2yMid4JKodNeVuHi++EUWLA7hM6DvA2H++gF2jhruHrjA==",
- "path": "hidisp/3.2.28",
- "hashPath": "hidisp.3.2.28.nupkg.sha512"
+ "sha512": "sha512-xkpdAIcLQd5XkXhJxDpsYhRzWbj/LGNHB7hBGNiGl9SQd8inbBYr4KsoZfIoCgUvIM0tcnMxXy2x8gHLEQNnGQ==",
+ "path": "hidisp/3.2.29",
+ "hashPath": "hidisp.3.2.29.nupkg.sha512"
},
- "HiGeom/3.2.20": {
+ "HiGeom/3.2.21": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-/tE3/44ZSIrDpovhoNB+VNQ7gQLICWSRYHWflwgdaW2/JZ7fqA0TPbQWnD2hgVUBngkxq/LVbxaCH0zsuFvSmA==",
- "path": "higeom/3.2.20",
- "hashPath": "higeom.3.2.20.nupkg.sha512"
+ "sha512": "sha512-ufv3sFzP0/fF9nCkqtGbtjh+CgqMO4k1807nyI6mwp5hNnoyhb70FcWoXLHrrHPK7kkxFsev7pCL1VGEERDnTg==",
+ "path": "higeom/3.2.21",
+ "hashPath": "higeom.3.2.21.nupkg.sha512"
},
- "HiLicense/3.2.21": {
+ "HiLicense/3.2.22": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-P5/WRyvk7CAYhiGQ7URtJcL1KgvMuEIshtn/J0rcPl5kIOTztQgDlGSTYbChSBndf4sIZU6Lay0kB+nT8HA6hw==",
- "path": "hilicense/3.2.21",
- "hashPath": "hilicense.3.2.21.nupkg.sha512"
+ "sha512": "sha512-lyIt6BOh2I6yrRm9I+/qxP7KUOShOgItybDcmMjAkqWB5/ChEgCvwxgurehDAf1AgpdlJshbOeR3SUgQXr57hw==",
+ "path": "hilicense/3.2.22",
+ "hashPath": "hilicense.3.2.22.nupkg.sha512"
},
- "HiMech/3.2.25": {
+ "HiMech/3.2.26": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-E7Z1tn7mZIoJxLxmfPqvYdYULz/Ubq506wtHNxjh5BqTg9uPkkdGu+NN5Pj/poNO0pON3VSx22EVL+lzUMMmZg==",
- "path": "himech/3.2.25",
- "hashPath": "himech.3.2.25.nupkg.sha512"
+ "sha512": "sha512-79VRbnja56CPobbk30f6gmTJuGoUvtvEv6qEo5DqCKBKoTYJwvSwYRtV31nydWCMnIlD3XZnLTmMHSav2gVPkA==",
+ "path": "himech/3.2.26",
+ "hashPath": "himech.3.2.26.nupkg.sha512"
},
- "HiNc/3.2.22": {
+ "HiNc/3.2.23": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-eCw5R6OPddpplyKIqjHiJapc0bGC4P5mIpD1a8RSMSNXEA12UynFtrVr7rPJiFnTOL9+ojq9XcS58V2q3/k+ww==",
- "path": "hinc/3.2.22",
- "hashPath": "hinc.3.2.22.nupkg.sha512"
+ "sha512": "sha512-AI9bcj0jYY+qrVs1dawA/0ivnaL1PG/0y/liaBPPG+mqJYOBUai9P4tQt58j+yhzIJz4BgKIyZI2l8pPwDOebA==",
+ "path": "hinc/3.2.23",
+ "hashPath": "hinc.3.2.23.nupkg.sha512"
},
- "HiNc-Resource/3.2.19": {
+ "HiNc-Resource/3.2.20": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-s1/DhSX8AQdFv9KD1Lmcc5TnjJh56e8Tfz00Q6keUnOMdRYirtdfSQKV4OnhqiBWTNOOL+QgQ8DqUE1d3+r+lg==",
- "path": "hinc-resource/3.2.19",
- "hashPath": "hinc-resource.3.2.19.nupkg.sha512"
+ "sha512": "sha512-sGoPktBf8Il9ivB6iIYnph1VuDug9nBQCr6SHT1BOyxVlcBmmZmhfYl7wvE+J83RpUP6nb872RSEDDmu2wP8zQ==",
+ "path": "hinc-resource/3.2.20",
+ "hashPath": "hinc-resource.3.2.20.nupkg.sha512"
},
- "HiUniNc/3.2.23": {
+ "HiUniNc/3.2.24": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-PWxYAbqidkbRl4LboPXBnzXxI0L7Ik2awVHJUJhg44TCjPqzFio7jmDdTnfi3k/yZ2B/6+ryKZEk+WgROp0huA==",
- "path": "hiuninc/3.2.23",
- "hashPath": "hiuninc.3.2.23.nupkg.sha512"
+ "sha512": "sha512-Ak2y16XYtzj31Ke4L5dS435Em2Y94ueFrAgiuJn60EL0V2V0TSe5lCTpsWyqjVdGWs84aJO6LSDLvwjOiWJ5kQ==",
+ "path": "hiuninc/3.2.24",
+ "hashPath": "hiuninc.3.2.24.nupkg.sha512"
},
"MathNet.Numerics/5.0.0": {
"type": "package",
diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll
index 274ef578..d48f546c 100644
Binary files a/App/HiNC-2025-win-desktop.dll and b/App/HiNC-2025-win-desktop.dll differ
diff --git a/App/HiNC-2025-win-desktop.pdb b/App/HiNC-2025-win-desktop.pdb
index 4c615929..3a344a24 100644
Binary files a/App/HiNC-2025-win-desktop.pdb and b/App/HiNC-2025-win-desktop.pdb differ
diff --git a/App/HiNc-Resource.dll b/App/HiNc-Resource.dll
index 6c7b34ae..98db3d34 100644
Binary files a/App/HiNc-Resource.dll and b/App/HiNc-Resource.dll differ
diff --git a/App/HiNc.dll b/App/HiNc.dll
index 0502c788..44c64c93 100644
Binary files a/App/HiNc.dll and b/App/HiNc.dll differ
diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll
index 80770821..b23ee840 100644
Binary files a/App/HiUniNc.dll and b/App/HiUniNc.dll differ
diff --git a/App/StepPresentCatalog/catalog.en.json b/App/StepPresentCatalog/catalog.en.json
index dcefe245..c663dd51 100644
--- a/App/StepPresentCatalog/catalog.en.json
+++ b/App/StepPresentCatalog/catalog.en.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
- "engineVersion": "3.2.25.0",
+ "engineVersion": "3.2.26.0",
"recordCount": 98,
"records": [
{
diff --git a/App/core.dll b/App/core.dll
index c803803d..3fe1d215 100644
Binary files a/App/core.dll and b/App/core.dll differ
diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll
index de78e79c..3a66e97d 100644
Binary files a/App/en/HiGeom.resources.dll and b/App/en/HiGeom.resources.dll differ
diff --git a/App/en/HiMech.resources.dll b/App/en/HiMech.resources.dll
index 21ffe6a7..c351c7f4 100644
Binary files a/App/en/HiMech.resources.dll and b/App/en/HiMech.resources.dll differ
diff --git a/App/hi-key.dll b/App/hi-key.dll
index 3b232949..253248b5 100644
Binary files a/App/hi-key.dll and b/App/hi-key.dll differ
diff --git a/App/wwwroot/HiAPI-docsite/anatomy/by-source/index.html b/App/wwwroot/HiAPI-docsite/anatomy/by-source/index.html
index f7f19969..f3cc4ceb 100644
--- a/App/wwwroot/HiAPI-docsite/anatomy/by-source/index.html
+++ b/App/wwwroot/HiAPI-docsite/anatomy/by-source/index.html
@@ -93,10 +93,10 @@ knows which directory a change landed in but not which screen it shows up on.
Ordered the way a request travels: the front end first, then the process that serves it.
Directories
What This Layer Is For
@@ -118,8 +118,8 @@ retired the page-by-page map of its files.
See Also
diff --git a/App/wwwroot/HiAPI-docsite/anatomy/by-source/toc.json b/App/wwwroot/HiAPI-docsite/anatomy/by-source/toc.json
index 9201b3fa..58fb9063 100644
--- a/App/wwwroot/HiAPI-docsite/anatomy/by-source/toc.json
+++ b/App/wwwroot/HiAPI-docsite/anatomy/by-source/toc.json
@@ -1,2 +1,2 @@
-{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"Web Service SPA","href":"webservice-spa/index.html","topicHref":"webservice-spa/index.html"},{"name":"Web Service Backend","href":"webservice-backend/index.html","topicHref":"webservice-backend/index.html"}]}
+{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"Web Service SPA","href":"webservice-spa.html","topicHref":"webservice-spa.html"},{"name":"Web Service Backend","href":"webservice-backend.html","topicHref":"webservice-backend.html"}]}
diff --git a/App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend/index.html b/App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend/index.html
rename to App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend.html
index db533ff9..e94aada1 100644
--- a/App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend/index.html
+++ b/App/wwwroot/HiAPI-docsite/anatomy/by-source/webservice-backend.html
@@ -7,13 +7,13 @@
-
-
-
-
-
+
+
+
+
+
-
+
@@ -30,7 +30,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Legacy Controller Settings
+
+HardNcEnv is the model the Legacy Controller page at /controller/:tab? edits,
+and this page is what that model holds: how it stands to the runner the rest of the application
+configures, the three settings this screen owns alone, the ones it shares with the Controller Branch
+on General Setup, and the one marker class both faces draw a work coordinate with. The screen itself
+— its seven tabs, how an edit commits, its object-management chain, its viewer and its layout — is
+Legacy Controller Page .
+The Model It Edits, and the One It Does Not
+The project carries both models side by side and serializes both. HardNcEnv is
+loaded from the project's own NcEnv element unconditionally; NcRunnerSuit — the
+runner plus the project's per-case dependency list — is read from its own nested element. The legacy
+element is a fallback source for the suit rather than a shared store: a project file that carries
+no runner element derives one from the legacy element at load time, and from then on the two drift
+apart, because every later edit lands on one of them alone.
+The legacy model is still read at play time. The legacy NC runner is constructed over a delegate
+onto the project's NcEnv, so installing a replacement through the screen's ⋮ menu propagates
+without rewiring, and a project-level switch selects which of the two pipelines plays. That switch
+defaults to the SoftNc pipeline and no screen in the web application changes it; it is a scripting
+property, EnableSoftNcRunner (API) . The legacy
+NC optimisation route is the other live reader: it is taken whenever the switch is off or the
+session holds no played SoftNc layers, and it is handed MachiningProject.NcEnv directly.
+What Only This Screen Edits
+Three settings on this screen have no editor anywhere else in the web application — neither on the
+branch, nor on any other page.
+Align P0, and its undo history
+The Coordinate Table tab — that is the tab button's label; ISO Coordinate Table is the heading
+over the panel it opens — carries a third row action beside P0 and M0 : Align P0 , titled
+"Move workpiece+fixture so ProgramZero coincides with this ISO entry (mutates
+Fixture.GeomToTableTransformer)" . It does not write the coordinate — it writes the fixture's
+geometry-to-table transformer , moving the workpiece and fixture so that program zero lands on the
+offset the row holds. The write goes to the authored setup equipment and reports the edit, so the
+runtime face follows at the next rebuild. The branch's Work Coordinates leaf carries P0 and M0 and
+no alignment.
+The endpoint keeps no undo slot. It answers with the assigned translation plus the transformer as it
+stood before and after the write, both serialized as XML, and the tab holds the history
+itself: Undo Align and Redo Align buttons over two component-local stacks, the undo stack
+capped at 32 entries and the oldest dropped past it. A third button sits beside them, Show on
+Display , which belongs to the viewer rather than to the history: it is a bound toggle over the
+IsoCoordinate rendering flag, carrying a visibility / visibility_off icon and writing through
+the same flag endpoint the Scene dropdown writes. The two datum tabs carry the same button over
+HeidenhainCoordinate. Each step posts a stashed snapshot back to a stateless revert endpoint,
+which parses it and assigns the result as the fixture's transformer. Both stacks are cleared
+whenever the tab's has-a-project prop changes, and the snapshot the component believes is current is
+only what it last saw — a transformer changed from another surface is overwritten wholesale by the
+next undo or redo rather than merged.
+The engine exposes the same operation as a script call,
+AlignWorkpieceProgramZeroToIso (API) ; the
+history is the screen's own.
+Enable Shortest Rotary Path
+The Config tab's single toggle writes EnableShortestRotary , which
+constructs true. Its banner reads "Shortest Rotary Path: optimises rotary axis motion to use
+the shortest angular distance between positions." On the legacy pipeline the flag gates one step:
+each rotary axis of a block is cycled into the ±180° window around the previous block's value. The
+toggle is narrower than it reads, because that same cycle is applied unconditionally on
+Heidenhain — the brand branch runs it before the flag is consulted, so
+clearing the box changes nothing there.
+The runner's dependency layer declares no counterpart: no brand parameter table, no generic config
+and no branch leaf carries a shortest-rotary switch. The nearest thing the runner pipeline has is the
+Heidenhain M126 / M127 pair, which is read from the program text rather than from any setting.
+Heidenhain master-axis character
+The Brand tab grows a second card while the brand is Heidenhain, holding one select over A,
+B, C labelled Master-axis character . It writes
+HeidenhainMasterAxisChar , a character face over the integer axis
+direction the PLANE … SEQ solution family is resolved against. Reads are normalised: anything that
+is not B or C after trimming and upper-casing becomes A. On the runner pipeline the master
+rotary is derived rather than configured — it is the first declared rotary axis — so the branch
+has nothing to expose and no leaf for it.
+What It Shares With the Branch
+Naming what is not exclusive matters as much. The CNC brand, the stroke limits, the rapid feed,
+the tool-change time, the tool offset table with its tool-house dependence, the work coordinates
+with their P0 and M0 actions, and the Heidenhain datum preset and datum shift tables all have
+editors on the branch — see
+Brand Matrix for which of those leaves each brand grows. The
+Max Speed (rpm) column has a counterpart too: on the runner pipeline the rotary speed ceiling is
+read from the rapid-feedrate config, and the legacy import funnels this field into it at rpm × 360
+deg/min, so the branch's Rapid Feedrates leaf edits the runner-side number.
+One control on this screen writes a value the branch also writes. Set ideal offset dependent on
+tool house is a project-level configuration flag rather than a member of either NC model, and both
+the Offset Table tab and the branch's Tool Offsets leaf read and write that one flag. The two
+tables stay separate: this tab's Refresh from Tool House recomputes
+MillingToolOffsetTable from MachiningToolHouse ,
+while the branch's refresh recomputes the runner's own tool-offset table.
+Two Faces of a Work Coordinate
+The work-coordinate marker is one displayee class serving two providers. The screen's viewer draws
+it from IsoCoordinateTable — a
+IsoCoordinateTable instance owned by the legacy model, which
+constructs with G54 … G59 and G59.1 … G59.9 all at zero. The General Setup canvas builds the
+same displayee over the active runner's effective
+IIsoCoordinateConfig instead, which on most brands is the brand
+parameter table. Same marker, same code, two stores.
+Selecting a row on the ISO Coordinate Table tab writes the marker's id onto the shared Execution
+displayee, so it decides which offset the marker draws at. It decides that whether or not the marker
+is drawn: all three coordinate flags are off in the shipped rendering-flag set — as are the machine
+tool and the cutter, leaving the workpiece, the fixture, the dimension bar and the cutter-location
+strip as the four that arrive on — so on an untouched project the selection column moves something
+invisible until Show on Display is pressed. The datum tabs also carry a single-selection column,
+but nothing is sent when it changes — there the selection is a highlight and nothing more.
+Source Code Path
+See HiNC App Anatomy for git repository links.
+Web Application
+HiNC-2025-webservice (Quasar CLI SPA):
+
+wwwroot-src/src/components/controller/CoordinateTableTab.vue — Align P0 with its two
+client-side history stacks and their cap, and the Show on Display toggle bound to the
+IsoCoordinate rendering flag.
+wwwroot-src/src/components/controller/DatumPresetTab.vue and
+wwwroot-src/src/components/controller/DatumShiftTab.vue — the same Show on Display button
+over HeidenhainCoordinate, and the row selection that is a highlight and nothing more.
+wwwroot-src/src/components/controller/OffsetTableTab.vue — Refresh from Tool House , and the
+two-step toggle over the project-level tool-house dependence flag the branch also writes.
+wwwroot-src/src/components/controller/ConfigTab.vue — the shortest-rotary toggle and its banner.
+wwwroot-src/src/components/controller/BrandTab.vue — the Heidenhain master-axis card: its read
+normalisation and its write.
+wwwroot-src/src/api/renderingFlags.ts — the flag indices those toggles write, and which of the
+shipped set default on.
+wwwroot-src/src/api/controller.ts — the typed wrappers over the align and revert endpoints, and
+the brand constants these settings are read against.
+Controller/ControllerController.cs — the align endpoint that snapshots the transformer either
+side of the write, and the stateless revert this screen's history posts back to.
+
+HiAPI Engine
+
+HiUniNc/Numerical/HardNcEnv.cs — the model this screen edits: the coordinate, datum and offset
+tables, the stroke boxes that construct infinite, the rapid rate and tooling time, the
+shortest-rotary flag with its Heidenhain exclusion, and the master-axis character over its integer
+direction.
+HiUniNc/Numerical/HardNcLine.cs — the legacy consumers of two of those settings: the
+shortest-rotary path application and the SEQ solve that reads the master-axis direction.
+HiUniNc/Numerical/MillingToolOffsetTable.cs — the offset table and the tool-house recompute the
+Refresh button calls.
+HiMech/NcParsers/Dependencys/Generic/IsoCoordinateTable.cs — the coordinate table type and the
+fifteen G-code keys it constructs with, shared by name with the runner's brand-agnostic table.
+HiMech/Machining/MachiningEquipmentUtils/MachiningEquipmentUtil.cs — the alignment itself: the
+translation written into the fixture's geometry-to-table transformer.
+HiMech/NcParsers/SoftNcRunner.cs — the legacy import: which legacy fields are funnelled into
+which runner dependency, including the rotary speed conversion into the rapid-feedrate config.
+HiMech/NcParsers/LogicSyntaxs/PolarInterpolationUtil.cs — the rotary speed ceiling the runner
+pipeline reads, and why it is the rapid-rate bucket rather than a setting of its own.
+HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainPlaneTiltSyntax.cs — the derived master rotary
+on the runner pipeline: the first declared rotary axis, with no configured alternative.
+HiNc/MachiningProcs/MachiningProject.cs — where both models hang off the project, and the load
+path that derives a runner from the legacy element only when no runner element is present.
+HiNc/MachiningProcs/LocalProjectService.cs — the legacy runner built over a delegate onto the
+project's model, and the switch that selects which pipeline is active.
+HiNc/Numerical/FilePlayers/HardNcRunner.cs — the legacy runner itself.
+HiNc/MachiningProcs/SessionShell.cs — the scripting face of the pipeline switch and of the
+alignment, and the optimisation route that passes the legacy model directly.
+
+See Also
+
+Legacy Controller Page — the screen these settings are edited on: its seven tabs, its commit
+and rollback rules, its object-management chain and its viewer
+Controller Branch — the SoftNcRunner-native controller branch that carries the editors for
+everything named above as shared
+General Setup Page — the page that hosts that branch, and the rest of the equipment tree
+beside it
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+