dxf2gcode auf LinuxCNC
Installation
Nachdem ich in meinem letzten Blogpost die Installation von LibreCAD behandelt habe, geht es in diesem (kurzen) Bericht um dxf2gcode; dieses Programm wird benötigt, um die .dxf-Dateien, die LibreCAD erzeugt in G-Code umzuwandeln, der dann in LinuxCNC (Axis) geladen und verwendet werden kann.
Da dxf2gcode in Python geschrieben ist, entfällt das Kompilieren hier zur Gänze, man muss lediglich den Quellcode auschecken. Wie auf der Projekt-Seite angegeben funktioniert der Checkout mit
svn checkout http://dxf2gcode.googlecode.com/svn/trunk/ dxf2gcode-read-only
Anschließend muss man das fürs GUI notwendige Paket python-qt4 installieren:
sudo apt-get install python-qt4 python-argparse
Danach kann man dxf2gcode bereits starten:
cd dxf2gcode-read-only/source/
python ./dxf2gcode
Wenn es tolle neue Features gibt, geht man einfach in den Ordner dxf2gcode-read-only und macht dort
svn update
Natürlich kann man auch für dxf2gcode einen Startlink am Desktop anlegen, das geht ganz gleich wie in meinem Video zu LibreCAD gezeigt.
Verwendung
Ist dxf2gcode gestartet, bekommt man zunächst ein leeres Fenster:Lädt man über das Menü File → Load File eine Datei (z.B. ein Leitwerk), dann wird dies im Fenster dargestellt:
Werkzeugradiuskorrektur
Hat man das zu fräsende Teil in LibreCAD so gezeichnet, wie man das Teil haben möchte, dann wird man in der Regel keine Rücksicht auf den zu verwendenden Fräser genommen haben.Fährt man aber mit einem Fräser, der 2mm Durchmesser hat eine Form genauso nach, wie gezeichnet, wird das entstehende Teil dünner als die Zeichnung, da man in der Regel mit 1-Pixel Linien zeichnet, der Fräser aber nicht unendlich dünn ist.
Das folgende Beispiel zeigt, was gemeint ist:
Das gezeichnete Rechteck (schwarz) hätte 7.9 cm Breite, weil aber der Fräser 2mm Durchmesser hat, bekommt das ausgefräste Teil nur 7.7 cm Breite, also 2mm zu wenig.
Nun kann man natürlich die Zeichnung verändern, um die fehlenden 2mm zu ergänzen, dies hat aber den Nachteil, dass man vom verwendeten Fräser abhängig wird. Entscheidet man sich später, dass ein 3mm Fräser doch besser wäre, muss man alles anpassen.
Das geht natürlich eleganter. G-Code kennt eine automatische Radiuskorrektur, die dxf2gcode einschalten kann. Im Wesentlichen wird dabei nur für eine Form ein extra Code geschrieben, der LinuxCNC beim Fräsen dazu veranlasst den halben Fräsradius links oder rechts der gezeichneten Linie entlangzufahren.
Manuell kann man das machen, indem man die Form auswählt, mit der rechten Maustaste das Kontextmenü öffnet und unter Cutter Compensation die gewünschte Korrektur auswählt:
dxf2gcode fährt normalerweise die Form im Uhrzeigersinn ab, daher würde man in obigem Beispiel sinnvollerweise G41 Left Compensation wählen, sodass der Fräser ausserhalb des Leitwerks bleibt. Man kann auch mit dem Menüpunkt Switch Direction die Richtung umkehren, dann wäre G42 Right Compensation richtig.
Will man die Radiuskorrektur automatisch machen, kann man im Menü Options → Automatic Cutter Compensation einschalten (will man, dass der Punkt immer eingeschalten ist, geht das in der Datei source/config/config.cfg, Eintrag [General] default_AutomaticCutterCompensation = True). Dies bewirkt beim Laden einer .dxf - Datei, dass alle äußeren Formen (also Formen, die nicht von einer anderen Form umschlossen sind) G41 Left Compensation bekommen und alle inneren Formen G42 Right Compensation, wodurch Innenausschnitte (wie sie z.B. bei Rumpfspanten gerne vorkommen) korrekt gefräst werden.
dxf2gcode zeigt die Radiuskorrektur auch farblich an:
- schwarz ... G40 No Compensation
- grün ... G41 Left Compensation
- magenta ... G42 Right Compensation
Fräsparameter
Für die Erzeugung von G-Code ist es natürlich von entscheidender Bedeutung, wie tief der Fräser in das Material eintauchen soll und wie schnell der Fräser bewegt wird.Diese Daten sind zunächst mal nicht in einer .dxf - Datei vorhanden, da .dxf ja ein CAD-Format (i.e. technische Zeichnung) ist.
Im Reiter Layers kann man unten die notwendigen Daten eingeben:
Sehen wir uns die Parameter im Detail an:
- Z Retraction area gibt die "Parkhöhe" des Fräsers an. Auf diese Höhe wird nach dem Fräsen gefahren.
- Z Safety margin ist die "Sicherheitshöhe" auf die der Fräser zwischen den Teilen fährt.
- Z Workpiece Top ist die Z-Koordinate der Werkstückoberfläche, wenn man (so wie ich) die Werkzeuglänge zum Werkstück (und nicht etwa zur Opferplatte) misst, ist 0 hier der richtige Wert.
- Z Infeed depth gibt die Zustellung pro Durchgang an, wenn man "in einem Rutsch" fräsen will ist dieser Wert gleich dem nächsten
- Z Final mill depth gibt die Gesamttiefe des Fräsvorganges an, hat man hier einen Wert > der Z Infeed depth, dann wird die in mehreren Durchläufen immer tiefer gefräst.
- Feed rate XY gibt die Geschwindigkeit für X/Y - Fahrten an
- Feed rate Z gibt die Geschwindigkeit für Z - Fahrten an (in der Regel macht man da etwas langsamer, damit der Fräser beim Eintauchen nicht abbricht)
Dafür gibt es einen Trick: Man benennt im CAD-Programm einfach die Layer entsprechend. So hat das Leitwerk in obiger Abbildung z.B. die Bezeichnung: MILL: Leitwerk Tg: -4.1 Tz: -4.1 F: 200 Fz: 100, was sich entsprechend auf die Fräsparameter auswirkt.
Die Details habe ich auf einer Wiki Seite direkt bei dxf2gcode hinterlegt. Dort findet man auch, wie man Layer definieren kann, die beim Fräsen gänzlich ignoriert werden (z.B. für Messungen), wie man Löcher bohren lassen und kann und wie man Frässtege einbaut.
Die Datei GondelTeile.dxf enthält z.B. folgende Layer:
- 0 ... Der Default-Layer, der bei LibreCAD immer dabei ist. Auf diesem Layer sind keine Formen
- DRILL: T: 1020 Td: 2 Tz: -3.1 ... Dieser Layer enthält Löcher, der Bohrer ist bei mir als Werkzeug Nr. 1020 hinterlegt, es ist ein Bohrer mit 2 mm Durchmesser (Td ... Tool diameter) und es wird 3.1 mm tief in reingebohrt
- IGNORE: Masse und Beschriftung ... Auf diesem Layer zeichne ich Bemassungen und Beschriftungen ein, sie werden beim G-Code generieren ignoriert.
- MILL: Nut T: 2 Td: 2 Tg: -2 Tz: -2 F:300 Fz:200 Sr: 3 ... Dieser Layer hat nur 2mm Tiefe und dient zum Fräsen der Nuten in das 3mm Pappelsperrholz.
- MILL: Teile T: 2 Td: 2 Tg: -3.1 Tz: -3.1 F:300 Fz:200 Sr: 3 ... Auf diesem Layer sind die zu fräsenden Formen eingezeichnet. Zustellung und Gesamttiefe sind auf je 3.1mm