Donnerstag, 5. Juni 2014

dxf2gcode auf LinuxCNC

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)
Nun kann man diese Daten jedes Mal, wenn man G-Code generieren will neu angeben (bzw. günstige Werte im Konfigurationsfile hinterlegen), idealerweise hätte man diese aber gern in der Ausgangsdatei hinterlegt.

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
Auf Frässtege habe ich in diesem Fall verzichtet.

Sohn Geburtstag => Papa darf fräsen :-)

1. Geschenk für den besten Sohn von allen

Eine feine Gondel aus 3mm Pappelsperrholz, die Fenster sind mit 0.5 mm PVC Glas verglast, der rechte Teil der Vorderseite ist eine Schiebetüre, die sich in der Nut von Boden- und Deckenplatte hin- und herschieben lässt.


Ein paar Kleinigkeiten sind natürlich nicht ganz perfekt geworden (z.B. sieht man bei den Innenausschnitten noch so eine "Ausfressung"), aber insgesamt bin ich recht zufrieden.
Downloads:


2. Geschenk für die Kinder am Kindergeburtstag

Ich hatte schon vor längerer Zeit einen Wurfgleiter für den besten Sohn von allen gemacht, da bietet es sich an, das Modell für die geladenen Gäste der Geburtstagsfeier zu "personalisieren".




Das Ganze basiert auf dem basic.Glider des MCL Ladenburg. Dessen Plan hab ich zur Vorlage genommen, um den Wurfgleiter zu zeichnen. Material ist 2mm Balsaholz, passenderweise nimmt man auch einen 2mm Fräser, dann sind die Schlitze im Holz einfach zu realisieren.
Downloads: