Im Anhang ist der Parser und ein Mini-Testprogramm.
Ich habe deinen Parser auch mal mit einem etwas modifizierten NC-Programmen getestet. Dabei ist mir eine Inkompatibilität aufgefallen.
Wenn in einem Satz kein Fahrbefehl enthalten ist, wird automatisch der Fahrbefehl, der im vorherigen Satz verwendet wurde, ergänzt.
G03X16.4034Y19.6197I16.2573J29.8664F601
G03X22.5886Y17.4267I26.4238J64.7078
G02X28.4696Y14.9650I-5.0995J-20.4389
G02X30.3826Y13.5958I-11.4268J-17.9860
G02X34.9424Y8.8573I-13.8491J-17.8901
G02X36.0083Y6.7722I-6.8578J-4.8207
G03X36.8925Y4.7653I9.2324J2.8691
G03X37.5032Y4.2915I0.9835J0.6372
G01X37.6013Y4.2923
usw.
hat dieselbe Wirkung wie
G03X16.4034Y19.6197I16.2573J29.8664F601
X22.5886Y17.4267I26.4238J64.7078
G02X28.4696Y14.9650I-5.0995J-20.4389
X30.3826Y13.5958I-11.4268J-17.9860
X34.9424Y8.8573I-13.8491J-17.8901
X36.0083Y6.7722I-6.8578J-4.8207
G03X36.8925Y4.7653I9.2324J2.8691
X37.5032Y4.2915I0.9835J0.6372
G01X37.6013Y4.2923
usw.
Wenn dein Parser mit NC-Code nach DIN 66025 kompatibel sein soll, müsstest du das auf jeden Fall noch anpassen. Dein Parser meldet bei den Zeilen 2, 4, 5, 6 und 8 fälschlicherweise "Type: ctUnknown, Code: -1, Params:[], Comment:"
Type: ctGCode, Code: 3, Params:[ J29.866 F600.000 Y19.620 X16.403 I16.257], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 2, Params:[ J-20.439 Y14.965 X28.470 I-5.100], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 3, Params:[ J2.869 Y4.765 X36.893 I9.232], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 1, Params:[ Y4.292 X37.601], Comment:
Gruß LP