Modul - Werkzeugskript <PRO>
Dieses Lua-Modul wird im Werkzeugeditor eingesetzt und stellt Funktionen zur Verfügung, um die Werkzeuggeometrie zu erstellen. Mit diesem Modul können Konstruktionselemente wie Linien und Bögen erzeugt werden, aus denen das Rotationsprofil für das Werkzeug erzeugt wird. Die Ausrichtung und Abmessungen der Konstruktionselemente unterliegen gewissen Einschränkungen:
- Die Elemente dürfen nicht die Werkzeugachse kreuzen
- Die Elemente dürfen keinen Hinterschnitt in beiden Richtungen in der Geometrie erzeugen
Mit anderen Worten, der Endpunkt eines Elements hat immer einen größeren oder in eine Richtung gleichen Wert als der Startpunkt.
Skriptablauf
Ein Werkzeugskript funktioniert nach folgendem Prinzip: Das Skript wird von der obersten Zeile bis zur letzten Zeile abgearbeitet. Bevor der Befehl für die Erzeugung eines Elements gegeben wird, werden durch Funktionen die Parameter für dieses Element festgelegt. Nach Erzeugung eines Elements, werden alle Parameter zurückgesetzt und müssen für das folgende Element neu gesetzt werden.
Das Werkzeug wird ausgehend von der Werkzeugspitze konstruiert. Das erste Element beginnt stets bei X0 und Z0. Die Geometrie endet immer am maximalen Radius des Werkzeugendes, in der Regel am Schaftende.
Das folgende Beispielskript für die Erzeugung eines Torusfräsers soll dies verdeutlichen:
to_x(3) -- Das nächste Element
-- endet an Position X3
to_z(0) -- Das nächste Element
-- endet an Position Z0
line() -- Erzeuge eine Linie mit
-- den gesetzten Parametern
tangent() -- Das Nächste schließt sich dem
-- letzten Element tangential an
arc_rad(3) -- Der Bogenradius beträgt 3
slope_out(0) -- Der Austrittswinkel verläuft
-- parallel zur Werkzeugachse
arc_a() -- Erzeuge einen Bogen im
-- Uhrzeigersinn
tangent() -- Das Nächste schließt sich dem
-- letzten Element tangential an
length(30) -- und die Linie hat eine
-- Länge von 30
line() -- erzeuge die Linie mit den
-- gesetzten Parametern
cutedge(5) -- Die Werkzeugschneide
-- reicht bis zu Z5
Parameterfunktionen
Alle Längenangaben werden als Nutzereinheiten interpretiert.
Nicht alle Funktionen sind miteinander kompatibel, da einige Kombinationen Widersprüche erzeugen können. Zum Beispiel ist es nicht möglich, einen Winkel mit slope_in() anzugeben, wenn der Zielpunkt einer Linie bereits durch to_x() und to_z() bestimmt wurde und sich daraus der Winkel ableitet.
Ein weiteres Beispiel betrifft einen Bogen, der mithilfe der Funktion tangent() tangential an eine Linie anschließt. In diesem Fall ist der Eintrittswinkel bereits festgelegt und kann nicht zusätzlich mit slope_in() angegeben werden.
Funktion | slope_in(grad) |
---|---|
Element | Bögen, Linien |
Beschreibung | Gibt den Eintrittswinkel für das nächste Element an. |
Wertebereich | 0°-90° 0°: Der Winkel steht parallel zur Werkzeugachse (vertikal) 90°: Der Winkel ist horizontal |
Beispiel | slope_in(45) -- zB. für Gravurwerkzeugspitze |
Funktion | slope_out(grad) |
---|---|
Element | Bögen |
Beschreibung | Gibt den Austrittswinkel für den Bogen an. |
Wertebereich | 0°-90° 0°: Der Winkel steht parallel zur Werkzeugachse (vertikal) 90°: Der Winkel ist horizontal |
Beispiel | slope_out(0) -- Element endet in vertikaler Ausrichtung |
Funktion | tangent() |
---|---|
Element | Bögen, Linien |
Beschreibung | Das nächste Element schließt sich tangential dem letzten Element an. Durch diese Funktion wird der Eintrittsradius des nächsten Elements bestimmt. |
Beispiel | tangent() -- Element schließt sich tangential an. |
Funktion | to_x(abs_position) |
---|---|
Element | Linien |
Beschreibung | Gibt die absolute X-Zielposition der Linie vor. Die Linie muss dabei nicht zwingend horizontal verlaufen. |
Wertebereich | Die Zielposition muss größer oder gleich der Startposition sein. |
Beispiel | to_x(30) -- Linie endet an Position X30 |
Funktion | to_z(abs_position) |
---|---|
Element | Linien |
Beschreibung | Gibt die absolute Z-Zielposition der Linie vor. Die Linie muss dabei nicht zwingend vertikal verlaufen. |
Wertebereich | Die Zielposition muss größer oder gleich der Startposition sein. |
Beispiel | to_x(30) -- Linie endet an Position X30 |
Funktion | length(wert) |
---|---|
Element | Linien |
Beschreibung | Bestimmt die Länge der Linie, unabhängig der Ausrichtung |
Wertebereich | > 0 |
Beispiel | length(5) -- Die Linie hat eine Länge von 5 |
Funktion | arc_rad(radius) |
---|---|
Element | Bögen |
Beschreibung | Bestimmt den Radius für einen Bogen. |
Wertebereich | > 0 |
Beispiel | arc_rad(3) -- Der Bogen hat einen Radius von 3 |
Erzeugung
Die nachfolgenden Funktionen erstellen die Konstruktionselemente basierend auf den zuvor festgelegten Parametern.
Optional kann ein Fehlerbeschreibungs-String als Argument übergeben werden. Sollte die Erstellung des Elements fehlschlagen, wird diese Fehlerbeschreibung als Fehlermeldung angezeigt. Dies erleichtert die Lokalisierung von Fehlern bei komplexen Geometrien.
Funktion | line(optional_error_string) |
---|---|
Element | Linie |
Beschreibung | Erzeugt eine Linie mit den zuvor festgelegten Parametern. Es muss sichergestellt werden, dass der Wert für den Endpunkt in beiden Richtungen größer oder gleich dem Startpunkt ist. |
Beispiel | line("Schaftübergang konnte nicht erzeugt werden.") |
Funktion | arc_a(optional_error_string) |
---|---|
Element | Bogen im Uhrzeigersinn |
Beschreibung | Erzeugt einen Bogen im Uhrzeigersinn mit den zuvor festgelegten Parametern. Unabhängig von der Berechnung der Ein- und Austrittswinkel muss gewährleistet sein, dass der Austrittswinkel kleiner als der Eintrittswinkel ist. |
Beispiel | arc_a("Bogen für Werkzeugspitze konnte nicht erzeugt werden") |
Funktion | arc_b(optional_error_string) |
---|---|
Element | Bogen gegen den Uhrzeigersinn |
Beschreibung | Erzeugt einen Bogen gegen den Uhrzeigersinn mit den zuvor festgelegten Parametern. Unabhängig von der Berechnung der Ein- und Austrittswinkel muss gewährleistet sein, dass der Austrittswinkel größer als der Eintrittswinkel ist. |
Beispiel | arc_b("Bogen für Abrundfräser konnte nicht erzeugt werden") |
Allgemeine Funktionen
Die folgenden Funktionen betreffen das Werkzeug im Allgemeinen.
Funktion | cutedge(position_z) |
---|---|
Beschreibung | Die Werkzeugschneide reicht bis zu dieser Höhe. Die Funktion ist für alle Werkzeuge notwendig. Sie ist unabhängig von anderen Funktionen und kann sich an einer beliebigen Stelle im Skript befinden. |
Wertebereich | > 0 |
Beispiel | cutedge(12) -- Die Werkzeugschneidgeometrie reicht bis zu Z12 |
Funktion | autocolltol() |
---|---|
Beschreibung | Dieser Befehl aktiviert die automatische Berechnung der Kollisionstoleranz. Die Kollisionstoleranz wird im Kapitel über die vordefinierten Werkzeuge näher beschrieben. |
Beispiel | autocolltol() -- Aktiviert die automatische Berechnung der Kollisionstoleranz |