Für die Steuertexte, mit denen der Postprozessor konfiguriert wird, steht eine große Anzahl an Variablen zur Verfügung. Einige davon stammen direkt aus Einstellungsdialogen des CAM-Plug-Ins oder des Postprozessors, andere werden zur Laufzeit vom Postprozessor ermittelt und für die Ausgabe zur Verfügung gestellt. Alle Variablen (falls zutreffend) enthalten Werte in der aktuell eingestellten Einheit des Postprozessors. Die Zahlendarstellung (Dezimaltrenner, Nachkommastellen etc.) von numerischen Variableninhalten sowie die Abfrage und Zuweisung von Variablen erfolgt mittels Anweisungen in Texten.
Die nachfolgende Liste enthält alle Variablen, die seitens CAM-Plug-Ins und des Postprozessors zur Verfügung stehen und in den Steuertexten des Postprozessors verwendet werden können.
Generelle CAM-Variablen
Die generellen Variablen bleiben während der gesamten Ausgabe unverändert, es sei denn sie werden innerhalb eines Steuertexts explizit verändert, z.B. {=Q99 {#~Q99~+1}}. Allerdings werden nur Änderungen der Q/T-Parameter dauerhaft gespeichert. Die generellen Variablen entstammen entweder direkt dem Dialog "Generelle Parameter" des CAM-Plug-Ins oder werden wie hier beschrieben initialisiert.
~ToolChangeCommands~
| Diese Variable dient der Information und enthält eine bitweise Oder-Verknüpfung folgender Werte: |
| 0 = Werkzeugwechsel werden generell nicht ausgegeben, das heißt, der Steuertext für Werkzeugwechsel wird überhaupt nicht aufgerufen. |
| 1 = Bei jedem Werkzeugwechsel wird der Steuertext für Werkzeugwechsel aufgerufen. |
| Verwenden Sie den logischen Ausdruck (~ToolChangeCommands~&1), um auf diesen Wert zu testen. |
| 2 = Der Export wird gemäß der Position des Werkzeugs in der Werkzeugliste (siehe Werkzeugliste verwalten) sortiert. Das heißt, es werden immer erste alle Konturen/Zyklen des jeweiligen Werkzeugs ausgegeben bevor das nächste Werkzeug in der Liste gewählt wird. Das bedeutet in der Regel, dass weniger Werkzeugwechsel benötigt werden. Allerdings bewirkt dies normalerweise auch eine Änderung der Ausgabereihenfolge. |
~MachinePosX~
~MachinePosY~
| Diese Variablen enthalten die Koordinaten des aktuellen Referenzpunkts (dieser kann manuell an der Maschine/Schneidplotter eingegeben werden) bzw. die aktuelle Position des Werkzeugs/Schneidkopfs. Der tatsächliche Inhalt hängt vom dazu gehörigen Abfragetext des Dialogs "Sendeparameter editieren" ab (zum Beispiel "OR;" bzw. "OA;"). Die Maschinenposition wird optional jeweils vor dem direkten Senden der NC-Daten an der Maschine mittels serieller Schnittstelle abgefragt (die Abfrage ist nicht aktiv, falls die NC-Daten lediglich in eine Datei exportiert werden). Die Maschinenposition liegt üblicherweise in Maschinen-/Plottereinheiten (siehe Maschinen-/Schneidplotterhandbuch) vor. Falls die Abfrage nicht aktiv ist oder nicht erfolgreich war, enthält die Maschinenposition immer die Koordinate (0,0). |
~HighVel~
~LibraryName~
~GlobalComment~
| Kommentar zum aktuellen CAM-Projekt |
~CAMProjectName~
| Name des aktiven CAM-Projektes |
~CAMProjectPath~
| Dateiname des aktiven CAM-Projektes inklusive Pfad |
~Q0~ bis ~Q99~
| Werte der Q-Parameter 0 bis 99 |
~Q0:~ bis ~Q99:~
| Kommentare der Q-Parameter 0 bis 99 |
~T0~ bis ~T9~
| Werte der T-Parameter 0 bis 9 |
~T0:~ bis ~T9:~
| Kommentare der T-Parameter 0 bis 9 |
Postprozessor-Einstellungen-Variablen
Diese Postprozessor-Variablen bleiben während der gesamten Ausgabe unverändert, es sei denn sie werden innerhalb eines Steuertexts explizit verändert, z.B. {=Q199 {#~Q199~+1}}. Allerdings werden nur Änderungen der Q/T-Parameter dauerhaft gespeichert. Alle hier gelisteten Variablen basieren auf entsprechenden Einstellungen im Dialog "Postprozessor-Einstellungen".
~PrgName~
| Name des NC-Programms, welches durch Konvertierung des Dateinamens erzeugt wird (kein Pfad, keine Dateiendung, nur Großbuchstaben, Zahlen und '-'). |
~FileName~
| Dateiname des NC-Programms mit Pfad |
~Title~
~Info~
| Informationstext zum Postprozessor |
~Units~
| Aktuell eingestellte Kombination aus Einheiten für Koordinaten-/Längen-, Zeit- und Geschwindigkeitsangaben (nur zur Information). Winkel werden grundsätzlich in Grad ausgegeben (0°..+-360°) Alle Einheitenkonvertierungen werden vom Postprozessor ausgeführt: |
| 0 = [mm], [sec], [mm/min]; (DIN-ISO, Heidenhain) |
| 1 = [mm], [min], [mm/min] |
| 2 = [inch], [sec], [inch/sec] |
| 3 = [inch], [min], [inch/min] |
| 5 = [foot], [min], [foot/min] |
| 6 = [µm=1/1000mm], [sec], [µm/sec] |
| 7 = [pu=1/40mm], [sec], [pu/sec]; (original HP-GL/2 Plottereinheit) |
| 8 = [1/100mm], [msec], [cm/sec]; (Zünd-Plotter) |
| 10 = [m], [sec], [m/sec]; |
| 11 = [µm=1/1000mm], [msec], [µm/sec]; (isel-Zwischenformat) |
| 12 = [mm], [sec], [mm/sec] |
| 13 = [mm], [msec], [cm/sec]; |
| 14 = [cm], [msec], [cm/sec]; |
| Materialvorschub (material advance) aktiv (1) oder nicht aktiv (0), z.B. für großformatige Schneidplotter (Cutter) |
~MAWidth~
~MAHeight~
~MADirection~
| Richtung für Materialvorschub (0 = entlang der X-Achse, 1 = entlang der Y-Achse) |
~MAOverlapping~
| Überlappung der Materials nach dem Vorschub |
~Comment~
| Kommentar zum Postprozessor |
~SingleQuadrant~
| Ist diese Variable wahr (1), werden Kreisbögen jeweils an Ihren Quadrantenachsen (90°-Achsen bzgl. des Mittelpunkts) zerschnitten. Das heißt, jeder Kreisbogen liegt immer vollständig innerhalb eines einzigen Quadranten (nur zur Information, der Postprozessor zerschneidet die Kreisbögen falls nötig automatisch). Ansonsten (0) werden Kreisbögen lediglich auf einen maximalen Bogenwinkel von 180° beschränkt, können sich daher also über bis zu drei Quadranten erstrecken. Ein Vollkreis zum Beispiel wird entweder als vier 90°-Kreisbögen (jeweils einer pro Quadrant) oder als zwei 180°-Kreisbögen (welche die Quadrantenachsen jeweils beliebig schneiden können) exportiert. |
~Q100~ bis ~Q199~
| Werte der Q-Parameter 100 bis 199 |
~Q100:~ bis ~Q199:~
| Kommentare der Q-Parameter 100 bis 199 |
~T10~ bis ~T19~
| Werte der T-Parameter 10 bis 19 |
~T10:~ bis ~T19:~
| Kommentare der T-Parameter 10 bis 19 |
Postprozessor-Kette-Variablen
Die Postprozessor-Kette-Variablen werden jeweils vor der Ausführung einer Postprozessor-Kette initialisiert und bleiben während der gesamten Ausführung einer Postprozessor-Kette - also über mehrere Exportvorgänge hinweg - unverändert (Ausnahme ~PPChainIndex~). Diese Variablen können verwendet werden, um Werte, die von einem Postprozessor ermittelt wurden, in einem in der Kette folgenden Postprozessor weiterzuverwenden.
~PPChainIndex~
| Index des aktuellen Postprozessors während der Ausführung der Postprozessor-Kette (beginnend mit 0). Dieser Index ergibt sich aus der Reihenfolge der Postprozessoren in der Kette. Im Fall des Exports einer einzelnen Datei enthält ~PPChainIndex~ immer den Wert 0. |
~PPChainP0X~ bis ~PPChainP9X~
~PPChainP0Y~ bis ~PPChainP9Y~
~PPChainValue0~ bis ~PPChainValue9~
~PPChainCount0~ bis ~PPChainCount9~
~PPChainFlag0~ bis ~PPChainFlag9~
~PPChainText0~ bis ~PPChainText9~
| (8) Die Postprozessor-Kette-Variablen können zum Speichern von Werten innerhalb jedes beliebigen Steuertextes mit Hilfe einer Zuweisungsanweisung {=PPChainFlag1 {1}} benutzt werden. Sie werden einmalig vor der Ausführung einer Postprozessor-Kette bzw. vor dem Start eines einzelnen Exportvorgangs mit Null oder Leertext (~PPChainCmd1~ und ~PPChainCmd2~) initialisiert und ansonsten vom Postprozessor weder verändert noch aktiv benutzt. |
Werkzeug-Variablen
Die Werkzeug-Variablen verändern sich jeweils bei einem Werkzeugwechsel (Ausnahme für ~MillingRadiusComp~ siehe (*)). Sie entstammen dem Dialog "Werkzeugliste" des CAM-Plug-Ins. Wird eine Werkzeug-Variable in einem Steuertext verwendet, für den sich kein Werkzeug direkt ermitteln lässt (zum Beispiel der Steuertext für Programmstart), so werden die Werkzeug-Variablen mit dem Standardwerkzeug bzw. (falls der Benutzer kein Standardwerkzeug definiert hat) mit dem Werkzeug Nr. 0 initialisiert. Sie können innerhalb eines Steuertexts Q/T-Parameter explizit verändern, z.B. {=Q399 {#~Q399~+1}}. Diese Änderungen der Q/T-Parameter werden für das jeweilige Werkzeug dauerhaft gespeichert.
~ToolName~
~ToolIndex~
| Index des logischen Werkzeugs in der Werkzeugliste (das Setzen dieser Variablen auf -1 innerhalb des Steuertexts für Primärlauf, Materialvorschub oder Wiederholung erzwingt anschließend den Aufruf des Steuertexts für Werkzeugwechsel) |
~ToolComment~
~MachineToolNo~
| Maschinen-Werkzeugnummer des physischen Werkzeugs (das Setzen dieser Variablen auf -1 innerhalb des Steuertexts für Primärlauf, Materialvorschub oder Wiederholung erzwingt anschließend den Aufruf des Steuertexts für Werkzeugwechsel) |
~ZClearance~
| Sicherheitshöhe (nicht negativ, kann in allen Steuertexten explizit verwendet werden) |
~ZEngage~
| Betriebshöhe (nicht negativ) |
~InfeedDepth~
| Einstechtiefe (z.B. Fräser oder Bohrer, immer positiv oder 0) / Operationshöhe (z.B. Schneidmesser oder Laser, immer negativ oder 0). Falls ~ToolControl7~ 1 enthält, ist diese Variable als Operationshöhe zu verstehen. Im Fall Einstechtiefe gibt dieser Wert vor, wie Tief das Werkzeug ins Material eindringt (Z=<0). Im Fall Operationshöhe gibt dieser Wert vor, wie hoch über der Werkstückoberfläche (Z>=0) das Werkzeug operiert. |
~InfeedOffset~
| Einstechversatz / Operationsversatz (~ToolControl7~ ist 1) bzgl. der Werkstückoberfläche (Z=0). Ein positiver Wert bewirkt, dass die Werkstückoberfläche in Einstechrichtung verschoben wird (Senke). Bei einem negativen Wert wird die Werkstückoberfläche entgegen der Einstechrichtung verschoben (Plateau). Im Fall Operationsversatz (~ToolControl7~ ist 1), gilt analog dasselbe lediglich mit invertierten Vorzeichen. |
~InfeedNumberOfIncrements~
| Zustellanzahl (falls ~InfeedDepth~ 0 enthält, dann enthält diese Variable die Anzahl der Umläufe ohne Veränderung der Z-Achse). Wird für die Berechnung von Arbeitsvariablen ignoriert, falls ~ToolControl7~ gleich 1 ist. |
~InfeedIncrementValue~
| Zustelltiefe (nicht negativ). Wird für die Berechnung von Arbeitsvariablen ignoriert, falls ~ToolControl7~ gleich 1 ist. |
~ZEngage~ und die vier ~Infeed[..]~-Variablen werden benutzt, um die Arbeitsvariablen ~ZWorking~ und ~Z0~/~Z1~ zu berechnen (siehe auch ~SpecialMode~ und ~ToolControl7~).
Explizit sollten Sie die vier ~Infeed[..]~-Variablen nur in Steuertexten für Zyklen (Attribute) oder Punkten (Markierungen) verwenden.
~MovingVel~
~LoweringVel~
| Anfahr-/Einstechgeschwindigkeit |
~AltMovingVel~
| Alternative Vorschubgeschwindigkeit |
~Acceleration~
| Beschleunigung (Einheit nicht definiert) |
~ToolRadius~
| Werkzeugradius (nicht negativ) |
~ToolDiameter~
| Werkzeugdurchmesser (nicht negativ) |
~ToolLength~
| Werkzeuglänge (nicht negativ) |
~SpecialMode~
Es sind zwei Modi (bit-codiert) definiert:
| 0 = Alle Konturpunkte (auch ein möglicher Hilfspunkt) liegen auf ~Z1~. ~Z0~ und ~Z1~ sind in diesem Fall immer identisch.
1 = Schräges (Z-Achse) Anfahren des ersten Konturpunkts (ausgehend vom aktiven Hilfspunkt falls Radiuskorrektur aktiv ist) und schräges Wegfahren von der Kontur (vom letzten Punkt der Kontur zurück zum aktiven Hilfspunkt falls Radiuskorrektur aktiv ist) ist eingeschaltet. Falls Radiuskorrektur deaktiv ist, wird die Kontur graviert, das heißt, jeweils der erste und letzte Punkt der Kontur liegen auf ~Z0~, alle anderen Punkte liegen auf ~Z1~. |
~UserControl~
| 32-Bit-Steuerwert (aus Zusatzfunktionen) |
~ToolControl0~
| Werkzeugtyp. Folgende Werte sind definiert: |
| 1 = Fräsen / Drehen / Bohren |
| 2 = Wasserstrahlschneiden |
| 4 = Schneiden / Plotten / Positionieren |
| 5 = Konfigurierbares Werkzeug (Texte für Beschreibung und Einheit können vom Anwender eingegeben werden) |
~ToolControl1~
| Gibt an, ob das Kühlmittel (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl2~
| Gibt an, ob die Absaugung (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl3~
| Gibt an, ob das Gebläse (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl4~
| Gibt an, ob Option 1 (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl5~
| Gibt an, ob Option 2 (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl6~
| Gibt an, ob Option 3 (Optionstext/-bedeutung kann vom Benutzer editiert werden) ein- (1) oder ausgeschaltet (0) werden soll (aus Zusatzfunktionen) |
~ToolControl7~
| 0 = Die Steuerung der Z-Achse hängt ausschließlich von den ~Infeed[..]~-Variablen und ~SpecialMode~ ab.
1 = Das Werkzeug operiert immer auf derselben Höhe exakt auf (Z=0) oder über (Z>0) der Werkstückoberfläche. Das heißt, ~ZWorking~, ~Z0~ und ~Z1~ sind dann immer identisch und größer oder gleich Null (in Abhängigleit von ~InfeedOffset~ kann sich dieses Verhalten ändern). ~SpecialMode~ ist in diesem Fall immer 0. Dieser Modus ist aktiv, falls der Werkzeugtyp "Wasserstrahlschneiden", "Laserschneiden" oder "Schneiden / Plotten / Positionieren" gewählt ist oder der Benutzer im konfigurierbaren Werkzeug die Option "Immer oberhalb oder auf Material operieren (Z>=0)" aktiviert hat. |
~MillingSpindleRate~
| Fräsen/Drehen: Spindeldrehzahl |
~MillingSpindleDir~
| Fräsen/Drehen: Spindelrotationsrichtung (0 = im Uhrzeigersinn, 1 = gegen Uhrzeigersinn) |
~MillingRadiusComp~
| (*) Fräsen/Drehen: Radiuskorrektur (radius compensation): |
| 0 = Keine Radiuskorrektur aktiv bzw. Radiuskorrektur aufheben (G40) |
| 1 = Werkzeug verfährt außerhalb der geschlossenen Kontur. Kontur (siehe ~ContourDirection~) im Uhrzeigersinn: Werkzeug verfährt links (G41), Kontur gegen Uhrzeigersinn: Werkzeug verfährt rechts (G42). |
| Werkzeug verfährt links (G41) der offenen Kontur (unter Berücksichtigung der Laufrichtung des Objekts). |
| 2 = Werkzeug verfährt innerhalb der geschlossenen Kontur. Kontur (siehe ~ContourDirection~) im Uhrzeigersinn: Werkzeug verfährt links (G42), Kontur gegen Uhrzeigersinn: Werkzeug verfährt rechts (G41). |
| Werkzeug verfährt rechts (G42) der offenen Kontur (unter Berücksichtigung der Laufrichtung des Objekts). Der Werkzeugmittelpunkt hat dabei den Abstand des Werkzeugradius' von der Kontur. „Rechts“ und „links“ bezeichnet die Lage des Werkzeugs in Verfahrrichtung entlang der Kontur. |
~MillingDelay1~
| Fräsen/Drehen: Verzögerung 1 |
~MillingDelay2~
| Fräsen/Drehen: Verzögerung 2 |
~MillingAllowanceDepth~
| Fräsen/Drehen: Aufmaß Tiefe |
~MillingAllowanceSide~
| Fräsen/Drehen: Aufmaß Seite |
~MillingExtraParam1~
| Konfigurierbarer Zusatzparameter: Wert 1 |
~MillingExtraParam2~
| Konfigurierbarer Zusatzparameter: Wert 2 |
~WaterJetStartAbrasive~
| Wasserstrahlschneiden: Anschussabrasiv |
~WaterJetStartPressure~
| Wasserstrahlschneiden: Anschussdruck |
~WaterJetStartTime~
| Wasserstrahlschneiden: Anschusszeit |
~WaterJetCuttingAbrasive~
| Wasserstrahlschneiden: Schneidabrasiv |
~WaterJetCuttingPressure~
| Wasserstrahlschneiden: Schneiddruck |
~WaterJetCuttingAngleThreshold~
| Wasserstrahlschneiden: Winkelschwellwert |
~WaterJetCuttingAngleDelay~
| Wasserstrahlschneiden: Winkelverzögerung |
~WaterJetCuttingOffDelay~
| Wasserstrahlschneiden: Ausschaltverzögerung |
~LaserStartPower~
| Laserschneiden: Startleistung |
~LaserStartPulseFrequency~
| Laserschneiden: Startpulsfrequenz |
~LaserStartPulseDuration~
| Laserschneiden: Startpulsdauer |
~LaserStartTime~
| Laserschneiden: Startzeit |
~LaserCuttingPower~
| Laserschneiden: Schneidleistung |
~LaserCuttingPulseFrequency~
| Laserschneiden: Schneidpulsfrequenz |
~LaserCuttingPulseDuration~
| Laserschneiden: Schneidpulsdauer |
~LaserCuttingOffDelay~
| Laserschneiden: Ausschaltverzögerung |
~CuttingPower~
| Schneiden / Plotten / Positionieren: Dosierleistung |
~CuttingCutterPressure~
| Schneiden / Plotten / Positionieren: Messerdruck |
~CuttingOffset~
| Schneiden / Plotten / Positionieren: Offset (diese Variable wird auch aktiv vom Postprozessor genutzt, falls eine Bahnkorrektur eingeschaltet ist) |
~CuttingAngleThreshold~
| Schneiden / Plotten / Positionieren: Winkelschwellwert |
~CuttingOscillation~
| Schneiden / Plotten / Positionieren: Oszillation |
~CuttingQuality~
| Schneiden / Plotten / Positionieren: Qualität |
~CuttingStartAngle~
| Schneiden / Plotten / Positionieren: Startwinkel (diese Variable wird auch aktiv vom Postprozessor genutzt, falls eine Bahnkorrektur eingeschaltet ist) |
~CuttingDelay~
| Schneiden / Plotten / Positionieren: Verzögerung |
~ToolParam1~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 1 |
~ToolParam2~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 2 |
~ToolParam3~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 3 |
~ToolParam4~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 4 |
~ToolParam5~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 5 |
~ToolParam6~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 6 |
~ToolParam7~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 7 |
~ToolParam8~
| Editierbarer Parameter (aus konfigurierbarem Werkzeug): Wert 8 |
~Q200~ bis ~Q399~
| Werte der Q-Parameter 200 bis 399 |
~Q200:~ bis ~Q399:~
| Kommentare der Q-Parameter 200 bis 399 |
~T20~ bis ~T39~
| Werte der T-Parameter 20 bis 39 |
~T20:~ bis ~T39:~
| Kommentare der T-Parameter 20 bis 39 |
(*) | Diese Variable ändert sich jeweils bei einem Werkzeugwechsel. Sie wird darüber hinaus aber auch bei jedem Konturstart neu initialisiert, falls eine Radiuskorrektur aktiv ist (Wert ungleich 0). Das heißt, ob das Werkzeug innerhalb (rechts) bzw. außerhalb (links) der aktuellen geschlossenen (offenen) Kontur verfahren soll, ermittelt der Postprozessor automatisch anhand der Position des aktiven Hilfspunkts (~AuxX~/~AuxY~). |
Arbeitsvariablen
Die Arbeitsvariablen verändern sich während des Exports zu unterschiedlichen Zeiten bzw. sind nur in bestimmten Steuertexten verfügbar (enthalten also sinnvolle Daten). Bitte beachten Sie dazu die grünen Nummern in Klammern und die zugehörige Erläuterungen am Ende dieses Abschnitts.
Beim Aufruf eines Steuertextes für Werkzeugwechsel befindet sich das Werkzeug grundsätzlich auf Sicherheitshöhe (~ZClearance~). Am Ende des Steuertextes für Werkzeugwechsel muss das Werkzeug immer wieder mit Eilgeschwindigkeit auf Sicherheitshöhe zurückgefahren werden.
Wird der Steuertext für Konturstart aufgerufen und ~UpdateXYPosition~ ist wahr (1), dann befindert sich das Werkzeug auf Sicherheitshöhe (~ZClearance~), ansonsten befindet es sich im Material (oder im Abstand ~ZEngage~ darüber). Ist beim Aufruf des Steuertextes für Konturende ~UpdateXYPosition~ falsch (0) wird das Werkzeug mit Eilgeschwindigkeit auf Sicherheitshöhe gefahren (optional kann es vorher noch auf Arbeitshöhe (~ZWorking~) ausgezogen werden). Falls hier ~UpdateXYPosition~ wahr (1) ist, befindet sich das Werkzeug bereits auf Sicherheitshöhe.
~LineNumber~
| (1) Zeilennummer (Satznummer), die der Postprozessor (wie im Dialog "Postprozessor editieren" angegeben) für die Ausgabe der Zeilennummern (Satznummern) benutzt. Diese Variable muss in der ersten Zeile des Steuertextes für "Programmstart" mit Hilfe einer Zuweisungsanweisung initialisiert werden, z.B. {=LineNumber {#10}}. Sie wird vom Postprozessor für jede Zeile (Satznummer) inkrementiert (wie im Dialog "Postprozessor editieren" angegeben). |
~MachineToolMode~
| (2) Der Werkzeugwechselmodus ist eine bitweise Oder-Verknüpfung folgender Werte: |
| 0 = Dies ist nur ein logischer Werkzeugwechsel (~ToolIndex~ hat sich geändert), das heißt, das physische Werkzeug bleibt unverändert. Im Steuertext für Werkzeugwechsel kann man auch einfach auf wahr/falsch abfragen: {?~MachineToolMode~{$Physischer Werkzeugwechsel}{$Logischer Werkzeugwechsel}}. |
| 1 = Dies ist ein physischer Werkzeugwechsel (~MachineToolNo~ hat sich geändert). In diesem Fall hat sich immer auch ~ToolIndex~ geändert. |
| 2 = Dies ist der erste physische Werkzeugwechsel überhaupt. |
| 4 = Das aktuelle (~MachineToolNo~) physische Werkzeug ist vorher noch NICHT benutzt worden (ansonsten wurde es mindestens einmal benutzt). |
| Bitte beachten Sie, dass der Steuertext für Werkzeugwechsel überhaupt nicht aufgerufen wird, falls sich weder ~MachineToolNo~ noch ~ToolIndex~ geändert hat oder Werkzeugwechsel generell nicht ausgegeben werden ((~ToolChangeCommands~&1) liefert 0). |
~ZWorking~
| (3) Enthält die aktuelle Arbeitshöhe (positiv falls oberhalb des Materials, negativ falls im Material). ~ZWorking~ wird berechnet mit Hilfe von ~InfeedDepth~ (der vorherigen Z-Zustellung), ~ZEngage~ und ~InfeedOffset~. Die aktuelle Arbeitshöhe ist also identisch mit dem Betriebshöhe (~ZEngage~), falls es nur eine Zustellung gibt und der Einstechversatz (~InfeedOffset~) Null ist. |
~Z0~
| (3) Enthält die aktuelle Einstechtiefe bzw. Operationshöhe (falls ~ToolControl7~ gleich 1 ist) für den aktiven Hilfspunkt (falls Radiuskorrektur aktiv ist) oder den Start- und Endpunkt der aktuellen Kontur (positiv falls oberhalb des Materials, negativ falls im Material). |
~Z1~
| (3) Enthält die aktuelle Einstechtiefe bzw. Operationshöhe (falls ~ToolControl7~ gleich 1 ist) für alle anderen Punkte der aktuellen Kontur (positiv falls oberhalb des Materials, negativ falls im Material). |
~ZWorking~ und ~Z0~/~Z1~ werden berechnet mit Hilfe von ~InfeedDepth~, ~InfeedOffset~ und ~InfeedNumberOfIncrements~/~InfeedIncrementValue~. Für den Fall Einstechtiefe (~ToolControl7~ ist 0) werden ~InfeedDepth~ und ~InfeedOffset~ von den Arbeitsvariablen ~ZWorking~ und ~Z0~/~Z1~ subtrahiert. Im Fall Operationshöhe (~ToolControl7~ ist 1) passiert dies analog, allerdings haben ~InfeedDepth~ und ~InfeedOffset~ hier invertierte Vorzeichen.
Falls ~SpecialMode~ Null enthält oder ~ToolControl7~ 1 ist, dann ist ~Z0~ immer gleich ~Z1~.
~ZIncrementIndex~
| (3) Index der aktuellen Z-Zustellung bzw. des aktuellen Umlaufs (falls ~InfeedDepth~ 0 enthält). Falls ~InfeedNumberOfIncrements~ gleich 1 ist oder dies die erste Zustellung ist, enthält diese Variable den Wert 0. Mit jeder weiteren Zustellung erhöht sich der Wert dieser Variablen um 1. |
~UpdateXYPosition~
| (5) Gibt an, ob die aktuelle X/Y-Position des Werkzeugs geändert werden muss (1) oder nicht (0).
Konturstart: Falls ~UpdateXYPosition~ wahr ist (1), dann muss das Werkzeug, welches sich bereits auf Sicherheitshöhe (~ZClearance~) befindet, nun mit Eilgeschwindigkeit zum aktuellen Konturstartpunkt (~X1~/~X1~) bewegt und dann mit Eilgeschwindigkeit auf die Arbeitshöhe ~ZWorking~ abgesenkt werden. In jedem Fall (unabhängig davon, ob ~UpdateXYPosition~ war (1) oder falsch (0) ist) wird das Werkzeug abschließend auf die aktuelle Einstechtiefe ~Z0~/~Z1~ (abhängig von ~SpecialMode~) abgesenkt. Verwenden Sie im Steuertext für den Konturstart eine Bedingungsanweisung {?~UpdateXYPosition~ {$Text1}{$Text2}}, um die passenden Steuerkommandos auszugeben.
Konturende: Falls ~UpdateXYPosition~ wahr ist (1), dann befindet sich das Werkzeug bereits auf Sicherheitshöhe (~ZClearance~) und wird mit Eilgeschwindigkeit zum aktuellen Konturendpunkt (Objektvariablen ~X1~/~X1~) bewegt. Dieser Fall kann nur eintreten, wenn im Dialog "Werkzeugpfad" die Option "Doppelte Werkzeugpfade vermeiden" eingeschaltet ist und die Radiuskorrektur sowie Z-Zustellung nicht aktiv sind. Falls ~UpdateXYPosition~ falsch ist (0), wird das Werkzeug auf Sicherheitshöhe (~ZClearance~) ausgezogen, ohne die aktuelle X/Y-Position des Werkzeugs zu verändern. |
~X1~/~Y1~
| (4) Diese Variablen enthalten die X/Y-Koordinaten des Konturstartpunkts. Ihr Inhalt wird auch in die Variablen ~X0~/~Y0~ kopiert.
Falls ~UseAuxPoint~ wahr (1) ist, muss der aktive Hilfspunkt (~AuxX~/~AuxY~) zum Anfahren der Kontur verwendet werden. Das heißt, wie für ~UpdateXYPosition~ oben beschrieben, es wird der Hilfspunkt (~AuxX~/~AuxY~) angefahren und von diesem wird dann nach dem Absenken auf die aktuelle Einstechtiefe ~Z1~ der eigentliche Konturstartpunkt (~X1~/~X1~) mit Vorschubgeschwindigkeit und aktiver(!) Radiuskorrektur (G41/G42) angefahren.
Die Variablen ~X1~/~Y1~ sowie ~X0~/~Y0~ werden auch als Objektvariablen in den Steuertexten der jeweiligen Objekttypen verwendet. Die Variablen ~X1~/~Y1~ sind außerdem im Steuertext für Konturende verfügbar und enthalten dort den aktuellen Konturendpunkt. |
~UpdateCutterRotationOnly~
| (5) Gibt an, ob nur die Drehrichtung des Tangentialmessers aktualisiert werden soll (1) oder ob dies ein normaler Konturstart (0) bzw. ein normales Konturende (0) ist. ~UpdateCutterRotationOnly~ ist nur wahr (1), falls die Tangentialmesser-Bahnkorrektur (im Dialog "Postprozessor editieren") aktiv ist und der Winkelschwellwert des aktuellen Messers (wie im Dialog "Werkzeugliste" angegeben) überschritten ist. In diesem Fall wird der Steuertext für den Konturstart benutzt, um die Drehrichtung des Tangentialmessers zu aktualisieren, obwohl dies tatsächlich eine "Ecke" innerhalb der aktuellen Kontur ist. Die Variablen ~X1~/~Y1~ enthalten dann die X/Y-Koordinaten des aktuellen Eckpunkts. Die übrigen relevanten Objektvariablen enthalten ebenfalls gültige Werte für den aktuellen Eckpunkt.
Vor dem Aufruf des Steuertexts für Konturstart wird grundsätzlich der Steuertext für Konturende aufgerufen, so dass das Tangentialmesser immer auf Sicherheitshöhe (~ZClearance~) bewegt wurde, bevor die Drehung vorgenommen wird. |
~CutterRotation~
| (6) Enthält den aktuellen Drehwinkel des Tangentialmessers im Kontur- bzw. Objektstartpunkt und - falls die Tangentialmesser-Bahnkorrektur aktiv und der Winkelschwellwert überschritten ist - auch für den jeweiligen Eckpunkt (grundsätzlich nur für Linien und Kreisbögen). |
~ContourXYLength~
| (6) Enthält die exakte Länge der aktuellen Kontur bestehend aus Linien und Kreisbögen in der X/Y-Ebene (Z-Bewegungen werden nicht berücksichtigt). Die Länge von Bézier-Kurven (diese werden nur ausgegeben, falls die entsprechende Option im Reiter Objekt-Steuerung des Dialogs "Postprozessor editieren aktiv ist) wird lediglich mittels der jeweiligen Stützpunkte approximiert. |
~FirstContourElement~
| (6) Gibt an, ob dies das erste Element einer Kontur ist (1) oder nicht (0) |
~LastContourElement~
| (6) Gibt an, ob dies das letzte Element einer Kontur ist (1) oder nicht (0) |
~EngravingFirst~
| (6) Gibt an, ob dies das erste Element einer zu gravierenden Kontur ist (1) oder nicht (0). Der Inhalt dieser Variablen ist identisch mit folgendem logischen Ausdruck:
!~ContourSubprogramActive~ && ~FirstContourElement~ && (~SpecialMode~&1) && !~UseAuxPoint~ && !~ZIncrementIndex~ |
~EngravingSecond~
| (6) Gibt an, ob dies das zweite Element einer zu gravierenden Kontur ist (1) oder nicht (0). Die Definition ist analog zum ersten Element einer zu gravierenden Kontur. |
~EngravingLast~
| (6) Gibt an, ob dies das letzte Element einer zu gravierenden Kontur ist (1) oder nicht (0). Der Inhalt dieser Variablen ist identisch mit folgendem logischen Ausdruck:
!~ContourSubprogramActive~ && ~LastContourElement~ && !~FirstContourElement~ && (~SpecialMode~&1) && !~UseAuxPoint~ && !~ZIncrementIndex~ |
~ClosedContour~
| (6) Gibt an, ob die aktuelle Kontur geschlossen ist (1) oder nicht (0) |
~ContourIndex~
| (6) Index der aktuellen Kontur. Für Standardobjekte (zum Beispiel Rechteck oder Kreis) ist diese Variable immer 0. Erst wenn die aktuell aufgezählte Fläche oder Kurve mehr als eine Kontur hat, dann wird diese Variable entsprechend inkrementiert.
Falls das aktuelle aufgezählte Objekt eine Blockinstanz aus der aktiven CAM-Bibliothek ist, die ein Attribut mit dem Namen "CONTOUR-SUBPROGRAM" enthält, und die Variable ~ContourIndex~ sich innerhalb des Kontrolltexts für Zyklen (Attribute) befindet, dann enthält diese Variable die Anzahl von Konturen (in Unterprogrammen), die von diesem Zyklus bearbeitet werden. Die erste Kontur ist immer die äußere Kontur (Tasche) und die folgenden Konturen müssen immer innere Konturen (Inseln) sein. |
| Für Blockinstanzen aus der aktiven CAM-Bibliothek, die das Attribut mit dem Namen "CONTOUR-SUBPROGRAM" nicht enthalten, hat diese Variable immer den Wert 0. |
~LastContour~
| (6) Gibt an, ob die aktuelle Kontur die letzte bzw. einzige ist (1) oder nicht (0). |
~ContourDirection~
| (6) Drehrichtung der Kontur (0 = im Uhrzeigersinn, 1 = gegen Uhrzeigersinn). Falls die Kontur nicht geschlossen ist, enthält die Variable immer 0. |
~RealCircle~
| (6) Gibt für einen Kreisbogen an, ob es sich bei dem aufgezählten Objekt um einen "echten Vollkreis" mit dem Objekttyp "Kreis" handelt (1) oder nicht (0). Ein echter Vollkreis wird immer als eine Kontur mit zwei Kreisbögen (jeweils 180°) ausgegeben. Ob gerade der erste oder der zweite Kreisbogen ausgegeben wird, kann man anhand von ~FirstContourElement~ bzw. ~LastContourElement~ ermittlen. Im Steuertext für Kreisbogen können Sie dann zum Beispiel für den Fall "echter Vollkreis" auf die Objektvariablen für den Kreismittelpunkt (~XM~ und ~YM~) sowie auf den Radius (~Radius~) zugreifen. |
~MergeWithContour~
| (6) Wird der aktuelle Endpunkt einer Linie, eines Kreisbogens oder einer Bézier-Kurve bzw. der Konturstartpunkt (~X1~/~X1~) mit einem Zyklus verschmolzen, enthält diese Variable den Wert 1 bzw. -1 ansonsten den Wert 0 (für den Objekttyp Punkt (Markierung) enthalt diese Variable ebenfalls 0). Im Fall des Objekttyps Zyklus (Attribut) gibt diese Variable an, ob der aktuelle Steuertext zum Verschmelzen verwendet wird (1 bzw. -1) oder nicht (0). Das heißt, ob die aktuelle CAM-Blockinstanz ein Steuerattribut mit dem Namen "MERGE-WITH-CONTOUR" enthält (siehe Kapitel CAM-Blocktypen und Zyklus-/Steuerattribute) und der Einsetzpunkt der Blockinstanz exakt auf einem Definitionspunkt der Folgekontur liegt. |
| Wenn Sie im Steuertext eines Objekts bzw. des Konturstartpunkts nur testen möchten, ob ein Punkt mit einem Zyklus verschmolzen wird oder nicht, können Sie diese Variable wie einen Boolean abfragen ({?~MergeWithContour~ .. }). Enthält diese Variable im Steuertext für Zyklus (Attribut) den Wert -1, dann bedeutet dies, dass der aktuelle Aufruf lediglich der Initialisierung von Variablen dient. Der Wert 1 zeigt an, dass der Steuertext für Zyklus (Attribut) tatsächlich in die NC-Datei geschrieben wird. |
~UseAuxPoint~
| (6) Gibt an, ob der aktive Hilfspunkt (~AuxX~/~AuxY~) zum Anfahren an die Kontur bzw. Wegfahren von der Kontur verwendet werden soll (1) oder nicht (0). Dazu müssen alle folgenden Bedingungen erfüllt sein: |
| - Im Dialog "Postprozessor editieren" auf der Seite "Werkzeugpfad" ist die entsprechende Option aktiv. |
| - Die Radiuskorrektur (G41/G42) für das aktuelle Werkzeug ist aktiv. |
| - Das direkt zuvor aufgezählte Objekt (Markierungen werden bzgl. der Hilfspunktbehandlung vollständig ignoriert) war eine Blockinstanz aus der aktiven CAM-Bibliothek ohne passendes Zyklusattribut (siehe Bibliothek "CAM-Universal", Block "Hilfspunkt für Radiuskorrektur"). Diese Blockinstanz wird nun als Hilfspunkt genutzt. |
| - Der Modus Kontur-Unterprogramm ist nicht aktiv, das heißt, diese Kontur wird nicht in ein Unterprogramm kopiert. |
| Dieser Hilfspunkt wird dann im Steuertext für Konturstart, wie für ~UpdateXYPosition~ und ~X1~/~Y1~ beschrieben, angefahren.
Natürlich muss bei geschlossener Kontur im Steuertext für Konturende nach dem Anfahren des eigentlichen Konturstartpunkts ~X1~/~X1~ (gleichzeitig auch Konturendpunkt) auch wieder dieser Hilfspunkt (~AuxX~/~AuxY~) in aktueller Einstechtiefe ~Z0~ mit ausgeschalteter(!) Radiuskorrektur (G40) angefahren werden. Folgt auf eine offene Kontur direkt ein weiterer Hilfspunkt, dann wird vor dem Aufrufen des Steuertexts für Konturende der Inhalt der Variablen ~AuxX~/~AuxY~ mit diesem Hilfspunkt aktualisiert. Erst nach dem Wegfahren auf den Hilfspunkt darf das Werkzeug von der aktuellen Einstechtiefe ~Z0~ auf Sicherheitshöhe mit Eilgeschwindigkeit (~ZClearance~) hochgefahren werden (optional kann es vorher noch auf Arbeitshöhe (~ZWorking~) ausgezogen werden). |
~MovingVelRequired~
| (7) Gibt an, ob die Vorschubgeschwindigkeit gesetzt werden soll (1) oder nicht (0). Dies ist immer dann erforderlich, wenn zum Zeitpunkt des Aufrufs des Steuertextes für Objekte die Anfahr-/Einstechgeschwindigkeit noch aktiv ist (modal) und die Kontur nicht graviert wird. Der Inhalt dieser Variablen ist identisch mit folgendem logischen Ausdruck: |
| !~ContourSubprogramActive~ && ~FirstContourElement~ && (~ZIncrementIndex~ || (!~EngravingFirst~ && !~ZIncrementIndex~ && !~UseAuxPoint~) || (~UseAuxPoint~ && (~SpecialMode~&1))) |
| Die Variablen ~EngravingFirst~,~EngravingSecond~,~EngravingLast~ und ~MovingVelRequired~ sind gegenseitig exklusiv, das heißt, zu jedem beliebigen Zeitpunkt kann höchstens eine dieser Variablen den Wert 1 haben (sie können aber alle zur selben Zeit 0 sein). |
~StartOfCycleSequence~
| (2+7) Gibt an, ob der aktuelle Zyklus (Attribut) der erste ist (1) in einer neue Abfolge von Zyklen (Attributen) derselben CAM-Blockinstanz bzw. ob das Steuerattribut ENFORCE-CYCLE-SEQUENCE existiert oder nicht (0). |
~EndOfCycleSequence~
| (2+7) Gibt an, ob der aktuelle Zyklus (Attribut) der letzte ist (1) in der aktuellen Abfolge von Zyklen (Attributen) derselben CAM-Blockinstanz bzw. ob das Steuerattribut ENFORCE-CYCLE-SEQUENCE existiert oder nicht (0).
Sollte eine Abfolge nur aus einem einzelnen Zyklus (Attribut) bestehen, so enthalten beide Variablen den Wert 1. Ist der aktuelle Zyklus (Attribut) weder der erste noch der letzte ist in der aktuellen Abfolge von Zyklen (Attributen) derselben CAM-Blockinstanz oder enthält die Variable ~CycleCommands~ einen Leertext, so enthalten beide Variablen den Wert 0. Außerhalb des Steuertexts für Werkzeugwechsel bzw. Zyklus (Attribute) enthalten beide Variablen ebenfalls den Wert 0. |
| Falls ~ContourSubprogramActive~ true ist (1), dann signalisieren diese Variablen eine Abfolge von CAM-Blockinstanzen, die alle ein Attribut mit dem Namen "CONTOUR-SUBPROGRAM" enthalten. |
~PrevCycleBlockName~
| (1) Name des zuvor aufgezählten CAM-Blocks (siehe Objektvariable ~CycleBlockName~). Für den Fall, dass zuvor ein Konturobjekt aufgezählt oder ein Punkt (Markierung) exportiert wurde, enthält diese Variable einen Leertext. Falls bisher noch keine passende (siehe unten) Blockinstanz aus der aktiven CAM-Bibliothek aufgezählt wurde, enthält diese Variable ebenfalls einen Leertext. Falls die aufgezählte Blockinstanz aus der aktiven CAM-Bibliothek kein passendes Zyklusattribut hat (siehe Bibliothek "CAM-Universal", Block "Hilfspunkt für Radiuskorrektur") oder das passende Zyklusattribut einen Leertext enthält (siehe Bibliothek "CAM-Universal", Block "Dummy-Punkt"), dann ändert sich der Inhalt dieser Variablen nicht. |
~StartOfPointSequence~
| (7) Gibt an, ob der aktuelle Punkt (Markierung) der erste ist (1) in einer neue Abfolge von Punkten (Markierungen) oder nicht (0). |
~EndOfPointSequence~
| (7) Gibt an, ob der aktuelle Punkt (Markierung) der letzte ist (1) in der aktuellen Abfolge von Punkten (Markierungen) oder nicht (0). |
~MALength~
| (1) Die aktuelle Länge des Materialvorschubs ergibt sich aus ~MAWidth~ bzw. ~MAHeight~ und ~MAOverlapping~ (ist immer kleiner oder gleich ~MAWidth~ bzw. ~MAHeight~). |
~ContourSubprogramActive~
| (1) Diese Variable wird auf true (1) gesetzt, falls eine Blockinstanz aus der aktiven CAM-Bibliothek aufgezählt wird, die ein Attribut mit dem Namen "CONTOUR-SUBPROGRAM" enthält (der Inhalt des Attributs wird ignoriert) und außerdem muss im Dialog "Postprozessor editieren" auf der Seite "Allgemein" die entsprechende Option aktiv sein. Diese Variable wird auf false (0) zurückgesetzt, nachdem die Aufzählung der folgenden Kontur abgeschlossen ist. Andere Zyklen (Attribute) oder Punkte (Markierungen) beeinflussen diese Variable nicht. |
~CSLB~
| (1) Diese Variable ("CSLB" steht für "Contour Subprogram LaBel") enthält die Label-Nummer (>=1) des aktiven Kontur-Unterprogramms. Jedes Mal wenn ~ContourSubprogramActive~ auf false zurückgesetzt wird, wird diese Variable um 1 inkrementiert. Das erste Kontur-Unterprogramm beschreibt immer die äußere Kontur (Tasche) und die folgenden Kontur-Unterprogramme beschreiben immer innere Konturen (Inseln). |
~FrameXMin~
| (1) Minimale X-Koordinate des umfassenden Quaders aller Objekte |
~FrameYMin~
| (1) Minimale Y-Koordinate des umfassenden Quaders aller Objekte |
~FrameZMin~
| (1) Minimale Z-Koordinate des umfassenden Quaders aller Objekte |
~FrameXMax~
| (1) Maximale X-Koordinate des umfassenden Quaders aller Objekte |
~FrameYMax~
| (1) Maximale Y-Koordinate des umfassenden Quaders aller Objekte |
~FrameZMax~
| (1) Maximale Z-Koordinate des umfassenden Quaders aller Objekte |
~P0X~ bis ~P5X~,
~P0Y~ bis ~P5Y~,
~P0~ bis ~P9~,
~Cmd1~ und ~Cmd2~,
~PStartX~ und ~PStartY~,
~PEndX~ und ~PEndY~,
~FlagStart~ und ~FlagEnd~,
~Flag0~ bis ~Flag4~,
~Count0~ bis ~Count4~,
~Value0~ bis ~Value4~
| (1) Diese benutzerdefinierten Variablen können zum Speichern von temporären Werten innerhalb jedes beliebigen Steuertextes mit Hilfe einer Zuweisungsanweisung {=Flag1 {1}} benutzt werden. Sie werden einmalig vor dem Start des Exportvorgangs mit Null oder Leertext (~Cmd1~ und ~Cmd2~) initialisiert und ansonsten vom Postprozessor niemals verändert noch aktiv benutzt. |
~ExportAbortCode~ und ~ExportAbortText~
(1) Die Variable ~ExportAbortCode~ ist mit Null initialisiert. Wird dieser Variablen eine ganze Zahl ungleich Null in einem beliebigen Steuertext zugewiesen (z.B. {=ExportAbortCode {1}}), so wird der Export gestoppt, ohne dass dabei eine Datei erzeugt wird. Anschließend erscheint eine Meldung, die sowohl den Wert der Variablen ~ExportAbortCode~ als auch den Textinhalt der Variablen ~ExportAbortText~ (diese ist mit einem Leertext initialisiert) anzeigt. Zweckmäßigerweise sollte daher der Textinhalt der Variablen ~ExportAbortText~ immer zusammen mit ~ExportAbortCode~ im selben Steuertext geändert werden (z.B. {=ExportAbortText {$Fehlerhafter Werkzeugparameter}}). Bei Bedarf kann der anzuzeigende Text Zeilenumbrüche enthalten. Fügen Sie dazu an den gewünschten Stellen die Zeichenfolge \n ein (z.B. {=ExportAbortText {$Fehlerhafter Werkzeugparameter.\nBitte überprüfen Sie die Werkzeugliste.}}).
~ExportNotification~
(1) Die Variable ~ExportNotification~ ist mit einem Leertext initialisiert. Enthält die Variable nach dem Export einen Text, so wird dieser als Mitteilung kurzzeitig auf der CAD6-Zeichenfläche angezeigt bzw. ist über den Befehl Verwalten > Mitteilungen verfügbar. Der Textinhalt der Variablen kann in jedem Steuertext gesetzt werden (z.B. {=ExportNotification {$Ein Zyklus wurde exportiert.}}). Die so in einem Steuertext jeweils gesetzten Texte werden automatisch aneinandergehängt und am Ende zusammen angezeigt. Soll nur ein einziger Text als Mitteilung am Ende angezeigt werden, so muss dieser mit der Zeichenkette \0 beginnen (z.B. {=ExportNotification {$\0Es gab mindestens einen Werkzeugwechsel.}}). Die Zeichenfolge \n erzeugt einen Zeilenumbruch.
(1) | Diese Variable ist während des gesamten Exportvorgangs verfügbar. |
(2) | Diese Variable ist während eines Werkzeugwechsels definiert. |
(3) | Diese Variable ist immer (insbesondere in Steuertexten für Objekte) definiert, ihr Wert wird bei bei jedem Konturstart unter Verwendung von Parametern des aktiven Werkzeugs aktualisiert. |
(4) | Diese Variable ist nur während des Konturstarts definiert (inkl. Kontur-Unterprogramm). |
(5) | Diese Variable ist während des Konturstarts/-endes definiert (inkl. Kontur-Unterprogramme). |
(6) | Diese Variable ist während des Konturstarts/-endes (inkl. Kontur-Unterprogramme) und in Steuertexten der relevanten Objekte definiert. |
(7) | Diese Variable ist im Steuertext des jeweiligen Objektes definiert. |
(8) | Diese Variable ist während der Ausführung einer Postprozessor-Kette - also über mehrere Exportvorgänge hinweg - verfügbar. |
Objektvariablen
Die hier beschriebenen Objektvariablen enthalten im allgemeinen nur sinnvolle Daten während des Exports des jeweiligen Objekttyps, das heißt, sie können auch nur in dem dazugehörigen Objekt-Steuertext verwendet werden. Es gibt jedoch Ausnahmen: Die Variablen ~AuxX~ und ~AuxY~ enthalten möglicherweise auch beim Konturstart-/ende (siehe ~UseAuxPoint~) sinnvolle Daten, dies gilt auch für die Variablen ~PrevX~/~PrevY~ und ~XIncr~/~YIncr~ (siehe unten). Die Objektmerkmal-Variablen sind darüber hinaus auch im Steuertext für Werkzeugwechsel gültig (siehe unten). Die Variablen ~X0~/~Y0~ und ~X1~/~Y1~ werden außerdem als Arbeitsvariablen während des Konturstarts verwendet und enthalten im Steuertext für Konturende den aktuellen Konturendpunkt.
Wenn die Steuertexte der Objekttypen Linie, Kreisbogen und Bézier-Kurve aufgerufen werden, dann befindet sich das Werkzeug grundsätzlich immer auf der aktuellen Einstechtiefe ~Z0~/~Z1~ (also bereits im Material). Das Anfahren des Startpunkts in Sicherheitshöhe (~ZClearance~) mit Eilgeschwindigkeit und das Absenken bzw. Einstechen wird vom Steuertext für Konturstart (zu diesem Zeitpunkt befindet sich das Werkzeug auf Sicherheitshöhe) erledigt. Ebenso wird das Werkzeug im Steuertext für Konturende wieder ausgezogen und auf Sicherheitshöhe gefahren. Das heißt, die Steuertexte der Objekttypen Linie, Kreisbogen und Bézier-Kurve enthalten ausschließlich Vorschubbefehle, die sich immer auf die aktuelle Einstechtiefe ~Z0~/~Z1~ beziehen. Innerhalb dieser Steuertexte wird also niemals ein Werkzeug explizit ausgezogen oder auf Sicherheitshöhe gefahren.
Dies gilt aber NICHT für die Objekttypen Zyklus (Attribut) und Punkt (Markierung), denn diese haben nichts mit den Steuertexten für Konturstart/-ende zu tun (es sind schließlich auch keine Konturen). Für die Steuertexte der Objekttypen Zyklus (Attribut) und Punkt (Markierung) gilt Folgendes: Das Werkzeug muss als erstes immer zum jeweiligen Einsetzpunkt in Sicherheitshöhe (zu diesem Zeitpunkt befindet sich das Werkzeug auf Sicherheitshöhe) mit Eilgeschwindigkeit bewegt werden, dann wird der eigentliche Zyklus bzw. der entsprechende Abschnitt mit Sätzen (Zeilen) aus dem Steuertext für Punkt (Markierung) ausgeführt (Absenken/Einstechen, Bohren, Gewindeschneiden etc.) und am Ende muss das Werkzeug auch immer wieder auf Sicherheitshöhe zurückgefahren werden.
Objekttyp Linie:
~X0~
| X-Koordinate des Startpunkts |
~Y0~
| Y-Koordinate des Startpunkts |
~X1~
| X-Koordinate des Endpunkts |
~Y1~
| Y-Koordinate des Endpunkts |
~dX~
~dY~
~Len~
| Länge (Betrag) des Vektors vom Startpunkt zum Endpunkt |
~Angle0~
| Winkel des Startpunkts relativ zum Ursprung |
~Angle1~
| Winkel des Endpunkts relativ zum Ursprung |
~Angle2~
| Steigung des Vektors vom Startpunkt zum Endpunkt |
~Angle3~
~Angle4~
~NoXMove~
| Gibt an, ob die X-Achse bezüglich des vorherigen Endpunkts (~PrevX~) noch unverändert ist (1) oder nicht (0). |
~NoYMove~
| Gibt an, ob die Y-Achse bezüglich des vorherigen Endpunkts (~PrevY~) noch unverändert ist (1) oder nicht (0). |
~DiagonalMove~
| Gibt an, ob die aktuelle Bewegung auf einer 45°-Diagonalen ausgeführt wird (1) oder nicht (0). Hat eine der Variablen ~NoXMove~ oder ~NoYMove~ den Wert 1, so enthält diese Variable immer den Wert 0. |
Objekttyp Kreisbogen:
~X0~
| X-Koordinate des Startpunkts |
~Y0~
| Y-Koordinate des Startpunkts |
~X1~
| X-Koordinate des Endpunkts |
~Y1~
| Y-Koordinate des Endpunkts |
~X2~
| X-Koordinate eines dritten Punktes auf dem Kreisbogen |
~Y2~
| Y-Koordinate eines dritten Punktes auf dem Kreisbogen |
~XM~
| X-Koordinate des Mittelpunktes des Kreises |
~YM~
| Y-Koordinate des Mittelpunktes des Kreises |
~XMRel~
| X-Koordinate des Mittelpunktes des Kreises, relativ zum Startpunkt |
~YMRel~
| Y-Koordinate des Mittelpunktes des Kreises, relativ zum Startpunkt |
~Radius~
~Angle0~
| Startwinkel des Kreisbogens |
~Angle1~
| Endwinkel des Kreisbogens |
~Angle2~
| Bogenwinkel des Kreisbogens (negativ = im Uhrzeigersinn, positiv = gegen Uhrzeigersinn) |
~Direction~
| Drehrichtung des Kreisbogens (0 = im Uhrzeigersinn, 1 = gegen Uhrzeigersinn) |
~Len~
~Angle3~
| Steigung der Kreistangente im Startpunkt |
~Angle4~
| Steigung der Kreistangente im Endpunkt |
Objekttyp Bézier-Kurve:
~X0~
| X-Koordinate des Startpunkts |
~Y0~
| Y-Koordinate des Startpunkts |
~X1~
| X-Koordinate des Endpunkts |
~Y1~
| Y-Koordinate des Endpunkts |
~X2~
| X-Koordinate des ersten Kontrollpunkts |
~Y2~
| Y-Koordinate des ersten Kontrollpunkts |
~X3~
| X-Koordinate des zweiten Kontrollpunkts |
~Y3~
| Y-Koordinate des zweiten Kontrollpunkts |
~dX~
~dY~
~Len~
| Länge (Betrag) des Vektors vom Startpunkt zum Endpunkt |
~Angle0~
| Winkel des Startpunkts relativ zum Ursprung |
~Angle1~
| Winkel des Endpunkts relativ zum Ursprung |
~Angle2~
| Steigung des Vektors vom Startpunkt zum Endpunkt |
~Angle3~
~Angle4~
Objekttyp Zyklus (Attribut):
Falls die aktuelle CAM-Blockinstanz ein Steuerattribut mit dem Namen "MERGE-WITH-CONTOUR" enthält (siehe Kapitel CAM-Blocktypen und Zyklus-/Steuerattribute), werden die Variablen ~AuxX~ und ~AuxY~ nicht verändert, und auch alle übrigen geometrischen Variablen bleiben unverändert. Zum Zeitpunkt des Verschmelzens enthalten diese Variablen dann die aktuellen Werte des jeweiligen Objekttyps der Kontur. Enthält die aktuelle CAM-Blockinstanz ein Steuerattribut mit dem Namen "CONTOUR-SUBPROGRAM" so werden die geometrischen Variablen ebenfalls nicht aktualisiert.
~AuxX~
| X-Koordinate des Hilfspunkts (identisch mit Einsetzpunkt) |
~AuxY~
| Y-Koordinate des Hilfspunkts (identisch mit Einsetzpunkt) |
| Die Variablen ~AuxX~ und ~AuxY~ werden nur von diesem Objekttyp verändert. Sie werden auch dann aktualisiert, wenn die entsprechende Exportoption im Dialog "Postprozessor editieren" deaktiviert ist bzw. der aktuelle CAM-Block kein passendes Zyklusattribut hat (siehe Bibliothek "CAM-Universal", Block "Hilfspunkt für Radiuskorrektur"), das heißt, der Steuertext dieses Objekttyps also gar nicht nicht aufgerufen wird. In diesem Fall genügt es, dass das eine Blockinstanz gewählt ist und daher aufgezählt wird. |
| Der Hilfspunkt (siehe ~UseAuxPoint~) kann verwendet werden, um eine Kontur anzufahren bzw. um von einer Kontur wegzufahren mit aktivierter/deaktivierter Radiuskorrektur. |
~X0~/~X1~
| X-Koordinate des Einsetzpunkts des Zyklus' |
~Y0~/~Y1~
| Y-Koordinate des Einsetzpunkts des Zyklus' |
~CycleCommands~
| Enthält den aneinander gehängten Textinhalt aller passenden Zyklusattribute der aktuellen CAM-Blockinstanz (üblicherweise mit den NC-Kommandos für den eigentlichen Zyklus, wie zum Beispiel Bohren, Gewindeschneiden etc.). Diese Variable sollte im Steuertext für Zyklen (Attribute) immer in einer separaten Zeile stehen. Enthält diese Variable einen Leertext, so wird jene gesamte Zeile beim Export ignoriert (siehe Bibliothek "CAM-Universal", Block "Dummy-Punkt"). |
~CycleBlockName~
| Name des aktuellen CAM-Blocks (siehe Arbeitsvariable ~PrevCycleBlockName~) |
~CycleURL~
| Enthält die URL (Speicherort) einer Textdatei mit den NC-Kommandos für den eigentlichen Zyklus (zum Beispiel Bohren, Gewindeschneiden etc.). |
~Len~
| Länge (Betrag) des Vektors vom Ursprung zum Einsetzpunkt |
~Angle0~
| Winkel des Einsetzpunkts relativ zum Ursprung |
~Angle1~
| ~Angle1~ ist gleich ~Angle0~ |
~dX~
| Horizontale Skalierung der CAM-Blockinstanz, so wie sie im Dialog des Befehls "Merkmale ändern" (Taster "Speziell") angezeigt wird. |
~dY~
| Vertikale Skalierung der CAM-Blockinstanz, so wie sie im Dialog des Befehls "Merkmale ändern" (Taster "Speziell") angezeigt wird. |
~Angle2~
| Rotation der CAM-Blockinstanz, so wie sie im Dialog des Befehls "Merkmale ändern" (Taster "Speziell") angezeigt wird. |
Objekttyp Punkt (Markierung):
~X0~/~X1~
| X-Koordinate des Einsetzpunkts |
~Y0~/~Y1~
| Y-Koordinate des Einsetzpunkts |
~Len~
| Länge (Betrag) des Vektors vom Ursprung zum Einsetzpunkt |
~Angle0~
| Winkel des Einsetzpunkts relativ zum Ursprung |
~Angle1~
| ~Angle1~ ist gleich ~Angle0~ |
Gültig in Steuertexten aller Objekttypen sowie in Steuertexten für Konturstart-/ende:
~PrevX~
| X-Koordinate des vorherigen End-/Konturstartpunkts bzw. des vorherigen Einsetzpunkts |
~PrevY~
| Y-Koordinate des vorherigen End-/Konturstartpunkts bzw. des vorherigen Einsetzpunkts |
| Diese Variablen werden zum passenden Zeitpunkt mit dem jeweiligen Inhalt der Variablen ~X1~ und ~Y1~ initialisiert. Im Fall der Objekttypen Zyklus (Attribut) und Punkt (Markierung) kann es vorkommen, dass sich das Werkzeug, nachdem der jeweilige Steuertext für den Zyklus bzw. Punkt abgearbeitet wurde, nicht mehr auf der Position (~X1~/~Y1~) befindet. Normalerweise ist dies unerheblich. Werden jedoch inkrementelle (relative) Koordinaten ausgegeben, so muss am Ende noch die Position (~X1~/~Y1~) in Sicherheitshöhe angefahren werden. Dies stellt sicher, dass die folgenden inkrementellen Koordinaten korrekt sind. |
~XIncr~
| Inkrementelle (relative) X-Koordinate des vorherigen End-/Einsetzpunkts. Der Inhalt ist tatsächlich folgender Term (inkl. umschließender Klammern): (~X1~-~PrevX~). |
~YIncr~
| Inkrementelle (relative) Y-Koordinate des vorherigen End-/Einsetzpunkts. Der Inhalt ist tatsächlich folgender Term (inkl. umschließender Klammern): (~Y1~-~PrevY~). |
Während des Konturstarts/-endes enthalten diese Variablen den letzten gültigen End-/Einsetzpunkt bzw. die resultierenden inkrementellen Koordinaten.
Gültig in Steuertexten aller Objekttypen sowie in Steuertexten für Konturstart-/ende und Werkzeugwechsel:
Die folgenden Variablen enthalten jeweils ein aktuelles Objektmerkmal (nach dem Auflösen sämtlicher Vererbungen für den Export, siehe Generelle Parameter und Ebenen, Stifte und Vererbung). Der Inhalt ist eine Kopie des Inhalts des entsprechenden Mitglieds der Struktur MKI_XPROPERTY. Bei Namen wurde der entsprechende Index aus dieser Struktur verwendet, um den Namen des Linienmusters, Stiftes oder der Ebene zu ermitteln.
~LineWidth~
| Linienbreite (verwenden Sie die Bedingungsanweisung, siehe Anweisungen in Texten) |
~LineTypeName~
| Linienmustername (verwenden Sie die Text-Vergleichs-Anweisung, siehe Anweisungen in Texten) |
~LineTypeScale~
| Linienmusterskalierung (verwenden Sie die Bedingungsanweisung, siehe Anweisungen in Texten) |
~LineMode~
| Linienendstil, Linienverbindung, Polylinienoptimierung und Linienbreitendarstellung im Modellbereich (siehe bitweises UND in Termauswertung) |
~LineColor~
| Linienfarbe (immer Farbmodel "RGB", siehe MKI_COLORVALUE) |
~LineAlpha~
~FillMode~
| Füllmodus (da nur konturierte Objekte exportiert werden, können hier die Füllmodi MKI_FILLMODE_FILLED und MKI_FILLMODE_ERASER nicht auftreten). |
~FillColor~
| Füllfarbe (immer Farbmodel "RGB", siehe MKI_COLORVALUE) |
~FillAlpha~
~PenName~
~LayerName~
~PageIndex~
| Seitenindex (siehe Mitglied "Page" der Struktur MKI_XPROPERTY) |
~UseFlag~
| Vererbungsflags (siehe Mitglied "Flag" der Struktur MKI_XPROPERTY) |
Datenbankvariablen und Zeichnungsvariablen
Falls das aktuelle Objekt der aktiven Datenbank zugewiesen worden ist, kann auf die Zellen seines Datensatzes zugegriffen werden, indem der entsprechende Spaltentitel als Variablenname eingegeben wird, zum Beispiel ~ObjectComment~. Bitte stellen Sie sicher, dass es bei den Spaltentiteln und den oben genannten Variablennamen keinen Namenskonflikt gibt. Datenbankvariablen dürfen sowohl innerhalb der Steuertexte für Konturstart und -ende als auch innerhalb aller Steuertexte für Objekte verwendet werden. Datenbankvariablen stehen nur zur Verfügung, wenn in den Postprozessor-Einstellungen im Dialog "Objekt-Steuerung" die Option "Aktive Datenbank beim Export berücksichtigen" aktiv ist.
Natürlich können Sie auch eine Datenbankanfrage, wie sie in der CAD6 Referenz beschrieben ist (siehe Variablen), in jedem beliebigen Steuertext verwenden. Darüber hinaus können Sie frei definierbare und feste Zeichnungsvariablen (siehe Variablen) in allen Steuertexten verwenden, zum Beispiel für den Dateinamen der Zeichnung (~%z0~) oder das aktuelle Datum (~%d2~).
Lokale Attribute, Konturattribute und Punktattribute
Auf lokale Attribute sowie Kontur- und Punktattribute von Objekten, also z.B. Linien, Kurven, Flächen oder Instanzen (außer Zyklus- bzw. Steuerattribute), können Sie in allen relevanten Steuertexten zugreifen, indem Sie den Attributnamen als Variablennamen verwenden, zum Beispiel ~Z-Tiefe~. Bitte beachten Sie, dass die maximale Textlänge auf 500 Zeichen pro Variable begrenzt ist. Sollte also ein Attribut einen längeren Text enthalten, wird dieser automatisch abgeschnitten.
Diese Variablen werden vom Postprozessor dynamisch für jedes aufgezählte Objekt erzeugt. Das heißt, sie existieren nur, falls im jeweiligen Objekt die entsprechenden lokalen Attribute bzw. Kontur- und Punktattribute auch tatsächlich definiert sind. Daher sollten Sie die Nicht-Existenz-Anweisung in Steuertexten verwenden:
{!Z-Tiefe {$}
{$
G01 Z{+~Z-Tiefe~} F{#~LoweringVel~}{?~ToolControl1~{$ M08}}
}}
Ansonsten erscheint in der exportierten NC-Datei an der entsprechenden Stelle der Text (***UNDEFINIERT***), falls die Variable nicht existiert.
|