MasViewer – GCode-Simulation in 3D

Windows-Programm, das CNC-Werkzeugwege aus einer GCode-Datei dreidimensional simuliert – ohne externe Bibliotheken

Abgeschlossen
MasViewer – GCode-Simulation in 3D

MasViewer zeigt, was eine CNC-Fräse tun wird, bevor sie es tut. Das Programm liest eine GCode-Datei ein und fährt die Werkzeugwege dreidimensional ab – anhalten, schrittweise weitergehen, an eine bestimmte Zeile springen, Geschwindigkeit ändern.

Entstanden ist es aus dem Bedarf an meiner eigenen CNC-Fräse. Ein Programmierfehler im GCode ist auf der Maschine teuer: Im besten Fall ist das Werkstück Ausschuss, im schlechteren bricht der Fräser oder die Maschine fährt in die Aufspannung. Eine Simulation davor kostet dagegen nichts.

Besonderheit unter der Haube: Die 3D-Darstellung läuft über einen selbstgeschriebenen Software-Renderer auf GDI+ – ohne OpenGL, ohne DirectX, ohne ein einziges NuGet-Paket. Kamera, Projektion und Vektormathematik sind Teil des Projekts. Das macht die Anwendung zu einer einzelnen EXE ohne Laufzeitabhängigkeiten ausser dem, was Windows ohnehin mitbringt.

Technische Daten

PlattformWindows 10/11
TechnologieC# / .NET Framework 4.8, WinForms
3D-Darstellungeigener Software-Renderer auf GDI+, keine NuGet-Pakete
Simulierte Maschine3-Achsen-CNC, Verfahrweg X 500 · Y 700 · Z 300 mm
InstallationMSI-Installer, kein Kompilieren nötig
LizenzMIT

Was die Simulation zeigt

Die Werkzeugwege werden nach Bewegungsart eingefärbt: Eilgang G0 orange, Vorschub G1 cyan, Kreisbögen G2/G3 violett. Der noch bevorstehende Weg erscheint gedämpft, der bereits gefahrene kräftig – man sieht auf einen Blick, wo das Programm steht und was noch kommt.

Parallel laufen die Werte mit, die beim Prüfen eines Programms zählen: aktuelle Position X/Y/Z, Vorschub, Drehzahl, Zeilennummer und Modus – dazu die Minimal- und Maximalwerte aller drei Achsen über das gesamte Programm. Gerade Letzteres beantwortet die wichtigste Frage vor dem Start: Bleibt alles im Verfahrweg, und taucht Z nirgends tiefer ein als gewollt?

Bedienung

  • Start, Pause, Stop sowie schrittweises Vorgehen: Schritt (ein Segment), Zeile (eine GCode-Zeile) oder Operation (vom aktuellen bis zum nächsten G-Befehl)
  • Geschwindigkeit 0,1× bis 20× und ein Fortschritts-Schieber zum Anspringen beliebiger Stellen
  • Klick auf eine GCode-Zeile setzt die Simulation genau dorthin – praktisch, wenn man eine verdächtige Stelle gezielt ansehen will
  • GCode direkt bearbeiten und speichern: ändern, neu parsen lassen, überschreiben oder unter neuem Namen ablegen
  • Frei setzbarer Werkstück-Nullpunkt in X/Y/Z relativ zur Tischebene
  • Ansicht: linke Maustaste drehen, rechte verschieben, Mausrad zoomen

Unterstützter GCode

  • G0/G1 – Eilgang und Vorschub, linear
  • G2/G3 – Kreisbögen, wahlweise über I/J/K oder R
  • G17/G18/G19 – Arbeitsebene XY, XZ, YZ
  • G20/G21 – Zoll oder Millimeter
  • G90/G91 – Absolut- und Inkrementalmass
  • G53 – zeilenweise Fahrt in Maschinenkoordinaten
  • Bohrzyklen G81, G82, G83, G73 mit G80, G98/G99 – jede Bohrung als eigene Operation
  • S Drehzahl, F Vorschub, Kommentare in Klammern und nach Semikolon

Download und Quellcode

Auf GitHub liegt unter „Releases“ ein fertiger MSI-Installer – herunterladen, ausführen, fertig. Voraussetzung ist Windows 10 oder 11 mit .NET Framework 4.8, das dort ohnehin vorhanden ist. Der Quellcode steht unter MIT-Lizenz und lässt sich mit Visual Studio ohne weitere Abhängigkeiten bauen.

Optional kann eine GCode-Datei als Startparameter übergeben werden, dann öffnet sie das Programm direkt.