CAM Postprocessor Customization/de: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
No edit summary
 
(58 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{UnfinishedDocu{{#translation:}}}}


{{TutorialInfo/de
{{Docnav/de
|[[CAM_SetupSheet/de|SetupSheet]]
|Topic=Pfad Arbeitsbereich
|[[CAM_fourth_axis/de|Fourth axis]]
|Level=
|[[CAM_Workbench/de|CAM]]
|Time=
|IconL=
|Author=chrisb
|IconR=
|FCVersion=
|IconC=Workbench_CAM.svg
|Files=
}}
}}


{{TOCright}}

<span id="Introduction"></span>
==Einführung==
==Einführung==


FreeCAD verwendet als interne Darstellungen für die erzeugten Pfade so genannte G-Codes. Sie können solche Dinge beschreiben wie: Geschwindigkeit und Vorschübe, Anhalten des Motors usw.. Aber das Wichtigste sind die Bewegungen, die sie beschreiben. Diese Bewegungen sind ziemlich einfach: Sie können gerade Linien oder Kreisbögen sein. Anspruchsvollere Kurven wie B-Splines werden bereits von FreeCADs [[Image:Workbench_Path.svg|24px]] [[Path Workbench/de|Pfad Arbeitsbereich]] angenähert.
FreeCAD verwendet als interne Darstellungen für die erzeugten Pfade so genannte G-Codes. Sie können solche Dinge beschreiben wie: Geschwindigkeit und Vorschübe, Anhalten des Motors usw... Aber das Wichtigste sind die Bewegungen, die sie beschreiben. Diese Bewegungen sind ziemlich einfach: Sie können gerade Linien oder Kreisbögen sein. Anspruchsvollere Kurven wie B-Splines werden bereits von FreeCADs Arbeitsbereich [[Image:Workbench_CAM.svg|24px]] [[CAM_Workbench/de|CAM]] angenähert.


<span id="What_the_postprocessor_can_do_for_you"></span>
==Was der Nachbearbeiter für dich tun kann==
==Was der Postprozessor für dich tun kann==


Viele Fräsen verwenden ebenfalls G-Codes zur Steuerung des Fräsprozesses. Sie mögen fast wie die internen Codes aussehen, aber es kann einige Unterschiede geben:
Viele Fräsen verwenden ebenfalls G-Codes zur Steuerung des Fräsprozesses. Sie mögen fast wie die internen Codes aussehen, aber es kann einige Unterschiede geben:
* die Maschine kann eine spezielle Startsequenz haben
* Die Maschine kann eine spezielle Startsequenz haben.
* es kann eine spezielle Stoppsequenz haben
* Sie kann eine spezielle Stoppsequenz haben.
* Bögen können mit einem relativen oder einem absoluten Mittelpunkt definiert werden
* Bögen können mit einem relativen oder einem absoluten Mittelpunkt definiert werden.
* es kann Zeilennummern in einem bestimmten Format erfordern
* Sie kann Zeilennummern in einem bestimmten Format erfordern.
* es kann so genannte Festzyklen für vordefinierte Unterprozesse wie Bohren verwenden
* Sie kann so genannte Festzyklen für vordefinierte Unterprozesse wie Bohren verwenden.
* Vielleicht bevorzugst du die Ausgabe deines g-Codes entweder in metrischen oder zölligen Einheiten.
* Vielleicht bevorzugst du die Ausgabe deines G-Codes entweder in metrischen oder zölligen Einheiten.
* Es könnte nützlich sein, vor dem Aufruf eines Werkzeugwechsels eine Reihe von Bewegungen durchzuführen, um die Aktion für den Bediener zu erleichtern.
* Es könnte nützlich sein, vor dem Aufruf eines Werkzeugwechsels eine Reihe von Bewegungen durchzuführen, um die Aktion für den Bediener zu erleichtern.
* Vielleicht möchtest du Kommentare zur besseren Lesbarkeit hinzufügen oder sie unterdrücken, um das Programm klein zu halten.
* Vielleicht möchtest du Kommentare zur besseren Lesbarkeit hinzufügen oder sie unterdrücken, um das Programm klein zu halten.
Line 30: Line 35:
Darüber hinaus gibt es weitere Sprachen zur Steuerung einer Fräse, wie z.B. HPGL, DXF oder andere.
Darüber hinaus gibt es weitere Sprachen zur Steuerung einer Fräse, wie z.B. HPGL, DXF oder andere.


Der Nachbearbeiter ist ein Programm, das die internen Codes in eine vollständige Datei übersetzt, die auf deine Maschine hochgeladen werden kann.
Der Postprozessor ist ein Programm, das die internen Codes in eine vollständige Datei übersetzt, die auf deine Maschine hochgeladen werden kann.


<span id="Preparation_for_writing_your_own_postprocessor"></span>
==Vorbereitung zum Schreiben deines eigenen Nachbearbeiters==
==Vorbereitung zum Schreiben deines eigenen Postprozessors==


Du kannst mit einem sehr einfachen Modell beginnen, das zeigt, wie deine Maschine gerade Linien und Bögen liest. Bereite es mit einem beliebigen Programm vor, das für deine Maschine geeignet ist.
Du kannst mit einem sehr einfachen Modell beginnen, das zeigt, wie deine Maschine gerade Linien und Bögen liest. Bereite es mit einem beliebigen Programm vor, das für deine Maschine geeignet ist.
Line 44: Line 50:
[[File:Path PostProcessorModel.png]]
[[File:Path PostProcessorModel.png]]


Du kannst dir dann die Datei anschauen und sie mit der Ausgabe bestehender Nachbearbeiter wie {{FileName|linux_cnc_post.py}} oder {{FileName|grbl_post.py}} und versuche selbst, sie anzupassen, oder lade deine auf das Pfadforum https://forum.freecadweb.org/viewforum.php?f=15 hoch, um Hilfe zu bekommen.
Du kannst dir dann die Datei anschauen und sie mit der Ausgabe bestehender Postprozessoren wie {{FileName|linux_cnc_post.py}} oder {{FileName|grbl_post.py}} vergleichen und selbst versuchen, sie anzupassen; oder lade deine auf das [https://forum.freecadweb.org/viewforum.php?f=15 Path/CAM-Forum] hoch, um Hilfe zu bekommen.


<span id="Naming_convention"></span>
==Namenskonvention==
==Namenskonvention==


Für ein Dateiformat {{FileName|<filename>}} sollte der Nachbearbeiter den Namen {{FileName|<filename>_post.py}} erhalten
Der Postprozessor kann in FreeCADs Makro-Verzeichnis abgelegt werdn. Für ein Präfix {{FileName|<filename>}} sollte der Postprozessor den Namen {{FileName|<filename>_post.py}} erhalten. Bitte beachte, dass die Nachsilbe und die Erweiterung {{FileName|_post.py}} klein geschrieben werden müssen.


The new name should be reflected at the head of the parser arguments list in the {{FileName|<filename>_post.py}} file, e.g.:
Wenn du testest, leg es in dein Makroverzeichnis. Wenn es gut funktioniert, erwäge bitte, es anderen zur Verfügung zu stellen (poste es im FreeCAD Pfad Forum), damit es in Zukunft in die FreeCAD Distribution aufgenommen werden kann.


{{Code|lang=text|code=
==Andere vorhandene Nachbearbeiter==
parser = argparse.ArgumentParser(prog="grbl", add_help=False)
}}


Wenn du testest, leg es in dein Makroverzeichnis. Wenn es gut funktioniert, erwäge bitte, es anderen zur Verfügung zu stellen (poste es im FreeCAD Path/CAM-Forum), damit es in Zukunft in die FreeCAD-Distribution aufgenommen werden kann.
<div class="mw-translate-fuzzy">
Zum Vergleich kannst du dir die Nachbearbeiter ansehen, die mit deiner FreeCAD Installation geliefert werden. Sie befinden sich unter dem Mod Verzeichnis in Path/PathScripts/post. Weit verbreitet sind die Nachbearbeiter linuxcnc und grbl. Das Studium ihres Codes kann hilfreiche Einblicke geben.
</div>


<span id="Other_existing_postprocessors"></span>
==Programmierung deines eigenen Nachbearbeiters==
==Andere vorhandene Postprozessoren ==
In diesem Beitrag werden einige Interna der linuxcnc Nachbearbeiter diskutiert. Die gleiche Struktur wird auch in anderen Nachbearbeitern verwendet.


Zum Vergleich kannst du dir die Postprozessoren ansehen, die mit deiner FreeCAD-Installation geliefert werden. Sie befinden sich in dem Verzeichnis <Pfad_zu_deiner_FreeCAD-Distribution>/Mod/CAM/Path/Post/scripts. Weit verbreitet sind die Postprozessoren [http://linuxcnc.org/ linuxcnc] und [https://github.com/grbl/grbl grbl]. Ihre Codes zu untersuchen kann hilfreiche Einblicke geben.
<div class="mw-translate-fuzzy">

Ansehen von linuxcnc_post.py, du siehst die Exportfunktion (ab 0.19.20514 in Zeile 156)
<span id="Programming_your_own_postprocessor"></span>
</div>
==Einen eigenen Postprozessor programmieren==

In diesem Beitrag werden einige Interna des linuxcnc-Postprozessors diskutiert. Die gleiche Struktur wird auch in anderen Postprozessoren verwendet.

Beim ansehen von linuxcnc_post.py, siehst du die Exportfunktion (ab 0.19.20514 ist es in Zeile 156)


{{Code|code=
{{Code|code=
Line 73: Line 85:
...
...
}}
}}

it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc).
sammelt es Schritt für Schritt die verarbeiteten G-Codes in der Variablen "gcode" und erledigt den Gesamtexport der nachbearbeitbaren Objekte (Operationen, Werkzeuge, Aufträge usw.).
Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).
Die Exportfunktion erledigt den hochrangigen Kram, wie Kommentare und Kühlmittel, aber alle Objekte, die mehrere CAM-Befehle enthalten (Werkzeugwechsel und Operationen), werden an die Parse-Funktion delegiert (ab 0.19.20514 ist es in Zeile 288).


{{Code|code=
{{Code|code=
Line 84: Line 97:
...
...
}}
}}

Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.
Ähnlich der "Export"-Funktion werden die G-Codes in der Variablen "out" gesammelt geparst. In der Variablen "command" werden die Befehle, wie sie in der Funktion "inspect G-code" des Arbeitsbereichs CAM zu sehen sind, gespeichert und können zur weiteren Bearbeitung untersucht werden.


{{Code|code=
{{Code|code=
Line 91: Line 105:
command = c.Name
command = c.Name
}}
}}
It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.


Es erkennt die verschiedenen G, M, F, S und andere G-Codes. Indem es sich den letzten Befehl in der Variablen "lastcommand" merkt, kann es nachfolgende Wiederholungen von modalen Befehlen unterdrücken.
Both parse and export are just formatting strings and concatenating them together into what will be the final output.


Sowohl "parse" als auch "export" dienen lediglich der Formatierung von Zeichenketten und deren Verkettung zu der endgültigen Ausgabe.
You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.


Du wirst sehen, dass beide Funktionen auch die Funktion "Zeilennummer()" aufruft. Wenn der Benutzer Zeilennummern wünscht, gibt die Funktion "linenumber" die Zeichenkette zurück, die an der entsprechenden Stelle eingefügt werden soll, andernfalls gibt sie eine leere Zeichenkette zurück, so dass nichts hinzugefügt wird.

<span id="Related"></span>
==Verwandtes==
==Verwandtes==


* [[Image:Path_PostProcess.svg|24px]] [[Path_Post/de|Pfad NachBearbeitung]]
* [[Image:CAM_Post.svg|24px]] [[CAM_Post/de|CAM PostProzess]]


{{Docnav/de
|[[CAM_SetupSheet/de|SetupSheet]]
|[[CAM_fourth_axis/de|Fourth axis]]
|[[CAM_Workbench/de|CAM]]
|IconL=
|IconR=
|IconC=Workbench_CAM.svg
}}


{{Tutorials navi{{#translation:}}}}
{{CAM_Tools_navi{{#translation:}}}}
{{Path Tools navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 12:01, 5 April 2024

Diese Dokumentation ist noch nicht fertiggestellt. Bitte hilf mit und trage etwas zur Dokumentation bei.

Die Seite GuiBefehl Modell erklärt, wie Befehle dokumentiert werden sollten. Unter Category:UnfinishedDocu findest du weitere unvollständige Seiten wie diese (und unter Category:UnfinishedDocu/de unvollständige Übersetzungen). Siehe Category:Command Reference für sämtliche Befehle (und Category:UnfinishedDocu/de für vorhandene Übersetzungen).

Siehe WikiSeiten, um zu lernen, wie die Wiki-Seiten bearbeitet werden und FreeCAD Unterstützen, um andere Wege zu entdecken, wie du einen Beitrag leisten kannst.

Einführung

FreeCAD verwendet als interne Darstellungen für die erzeugten Pfade so genannte G-Codes. Sie können solche Dinge beschreiben wie: Geschwindigkeit und Vorschübe, Anhalten des Motors usw... Aber das Wichtigste sind die Bewegungen, die sie beschreiben. Diese Bewegungen sind ziemlich einfach: Sie können gerade Linien oder Kreisbögen sein. Anspruchsvollere Kurven wie B-Splines werden bereits von FreeCADs Arbeitsbereich CAM angenähert.

Was der Postprozessor für dich tun kann

Viele Fräsen verwenden ebenfalls G-Codes zur Steuerung des Fräsprozesses. Sie mögen fast wie die internen Codes aussehen, aber es kann einige Unterschiede geben:

  • Die Maschine kann eine spezielle Startsequenz haben.
  • Sie kann eine spezielle Stoppsequenz haben.
  • Bögen können mit einem relativen oder einem absoluten Mittelpunkt definiert werden.
  • Sie kann Zeilennummern in einem bestimmten Format erfordern.
  • Sie kann so genannte Festzyklen für vordefinierte Unterprozesse wie Bohren verwenden.
  • Vielleicht bevorzugst du die Ausgabe deines G-Codes entweder in metrischen oder zölligen Einheiten.
  • Es könnte nützlich sein, vor dem Aufruf eines Werkzeugwechsels eine Reihe von Bewegungen durchzuführen, um die Aktion für den Bediener zu erleichtern.
  • Vielleicht möchtest du Kommentare zur besseren Lesbarkeit hinzufügen oder sie unterdrücken, um das Programm klein zu halten.
  • Möglicherweise möchtest du eine benutzerdefinierte Kopfzeile einfügen, um das Programm für zukünftige Referenzen zu identifizieren oder zu dokumentieren.
  • ...

Darüber hinaus gibt es weitere Sprachen zur Steuerung einer Fräse, wie z.B. HPGL, DXF oder andere.

Der Postprozessor ist ein Programm, das die internen Codes in eine vollständige Datei übersetzt, die auf deine Maschine hochgeladen werden kann.

Vorbereitung zum Schreiben deines eigenen Postprozessors

Du kannst mit einem sehr einfachen Modell beginnen, das zeigt, wie deine Maschine gerade Linien und Bögen liest. Bereite es mit einem beliebigen Programm vor, das für deine Maschine geeignet ist.

Eine Datei für solche Pfade, die bei (0,0,0) beginnen und in Richtung Y gehen, wäre hilfreich. Stelle sicher, dass sich das Werkzeug selbst entlang dieser Bahn bewegt, d.h. es darf keine Werkzeugradiuskompensation angewendet werden.

Der Pfad in FreeCAD würde wie folgt aussehen. Bitte beachte den kleinen blauen Pfeil, er zeigt die Startrichtung an. Für einen allerersten Versuch dürftest du nur eine Ebene in der XY-Ebene angeben.

Du kannst dir dann die Datei anschauen und sie mit der Ausgabe bestehender Postprozessoren wie linux_cnc_post.py oder grbl_post.py vergleichen und selbst versuchen, sie anzupassen; oder lade deine auf das Path/CAM-Forum hoch, um Hilfe zu bekommen.

Namenskonvention

Der Postprozessor kann in FreeCADs Makro-Verzeichnis abgelegt werdn. Für ein Präfix <filename> sollte der Postprozessor den Namen <filename>_post.py erhalten. Bitte beachte, dass die Nachsilbe und die Erweiterung _post.py klein geschrieben werden müssen.

The new name should be reflected at the head of the parser arguments list in the <filename>_post.py file, e.g.:

parser = argparse.ArgumentParser(prog="grbl", add_help=False)

Wenn du testest, leg es in dein Makroverzeichnis. Wenn es gut funktioniert, erwäge bitte, es anderen zur Verfügung zu stellen (poste es im FreeCAD Path/CAM-Forum), damit es in Zukunft in die FreeCAD-Distribution aufgenommen werden kann.

Andere vorhandene Postprozessoren

Zum Vergleich kannst du dir die Postprozessoren ansehen, die mit deiner FreeCAD-Installation geliefert werden. Sie befinden sich in dem Verzeichnis <Pfad_zu_deiner_FreeCAD-Distribution>/Mod/CAM/Path/Post/scripts. Weit verbreitet sind die Postprozessoren linuxcnc und grbl. Ihre Codes zu untersuchen kann hilfreiche Einblicke geben.

Einen eigenen Postprozessor programmieren

In diesem Beitrag werden einige Interna des linuxcnc-Postprozessors diskutiert. Die gleiche Struktur wird auch in anderen Postprozessoren verwendet.

Beim ansehen von linuxcnc_post.py, siehst du die Exportfunktion (ab 0.19.20514 ist es in Zeile 156)

def export(objectslist, filename, argstring):
    # pylint: disable=global-statement
    ...
    gcode = ""
    ...
    ...

sammelt es Schritt für Schritt die verarbeiteten G-Codes in der Variablen "gcode" und erledigt den Gesamtexport der nachbearbeitbaren Objekte (Operationen, Werkzeuge, Aufträge usw.). Die Exportfunktion erledigt den hochrangigen Kram, wie Kommentare und Kühlmittel, aber alle Objekte, die mehrere CAM-Befehle enthalten (Werkzeugwechsel und Operationen), werden an die Parse-Funktion delegiert (ab 0.19.20514 ist es in Zeile 288).

def parse(pathobj):
    ...
    out = ""
    lastcommand = None
    ...
    ...

Ähnlich der "Export"-Funktion werden die G-Codes in der Variablen "out" gesammelt geparst. In der Variablen "command" werden die Befehle, wie sie in der Funktion "inspect G-code" des Arbeitsbereichs CAM zu sehen sind, gespeichert und können zur weiteren Bearbeitung untersucht werden.

for c in pathobj.Path.Commands:

            command = c.Name

Es erkennt die verschiedenen G, M, F, S und andere G-Codes. Indem es sich den letzten Befehl in der Variablen "lastcommand" merkt, kann es nachfolgende Wiederholungen von modalen Befehlen unterdrücken.

Sowohl "parse" als auch "export" dienen lediglich der Formatierung von Zeichenketten und deren Verkettung zu der endgültigen Ausgabe.

Du wirst sehen, dass beide Funktionen auch die Funktion "Zeilennummer()" aufruft. Wenn der Benutzer Zeilennummern wünscht, gibt die Funktion "linenumber" die Zeichenkette zurück, die an der entsprechenden Stelle eingefügt werden soll, andernfalls gibt sie eine leere Zeichenkette zurück, so dass nichts hinzugefügt wird.

Verwandtes