Postprozessor

Diskussionen rund um das CAM (Computer-Aided Manufacturing) Add-On von QCAD 3

Moderators: andrew, Husky

Post Reply
magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Postprozessor

Post by magdanc » Thu Aug 02, 2018 7:54 pm

Hallo,
seit einigen Tagen habe ich das QCAD CAM und kommen für meine Verhältnisse gut mit den Funktionen zurecht. Je mehr ich mich auseinandersetze ahne ich im Ansatz die Leistungsfähigkeit und die Möglichkeiten.

Da mich die CAM Funktionalität interessiert bin ich auch gleich am ausprobieren einen Postprozessor anzupassen.
Allerding muß ich eingestehen, daß ich so manche Abläufe noch nicht so richtig nachvollziehen kann.

Im speziellen bekomme ich es nicht hin die eine X/Y Koordinate im Script durch eine if/else zu prüfen und dann eine Variable neu zuzuweisen:

Beispiel:

Code: Select all

    this.decimals = 0;
    this.registerVariable("xPosition",           "X",                    false, "", "DEFAULT",  { factor: 10 });
    this.registerVariable("yPosition",           "Y",                    false, "", "DEFAULT",  { factor: 10 });

	var postGCodeX = "";
	var postGCodeY = "";

	if(this.xPosition >= 0){
		postGCodeX = "+[X]";
	}
	else{
		postGCodeX = "[X]";
	}
	if(this.yPosition >= 0){
		postGCodeY = "+[Y]";
	
	}
	else{
		postGCodeY = "[Y]";
	}
	
	this.rapidMove =                [
	        "5",
	postGCodeX + postGCodeY,
    //    "[X] [Y]",
        "6"
    ];
Habt ihr eine Idee, wie ich eine solche Abfrag in dem Script plazieren kann?

Viele Grüße
Wolfgang
Last edited by magdanc on Sun Aug 26, 2018 7:16 pm, edited 1 time in total.
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Fri Aug 03, 2018 10:01 am

Dieser Code befindet sich im Konstruktor des Postprozessors und wird nur einmal ausgeführt, bei der Initialisierung des Postprozessors.

Um das Vorzeichen (+/-) bei X/Y Werten zu forcieren, können Sie einfach die Option "sign" setzen:

Code: Select all

this.registerVariable("xPosition",           "X",                    false, "", "DEFAULT",  { factor: 10, sign: true });
this.registerVariable("yPosition",           "Y",                    false, "", "DEFAULT",  { factor: 10, sign: true });
Um wirklich bei der Formatierung von Zahlenwerten einzugreifen, müsste stattdessen die Funktion "formatValue" überschrieben werden.

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Sat Aug 04, 2018 8:41 am

Hallo andrew,

danke für die präzise Lösung, hat sofort geklappt -- auch ohne von hinten über den Rücken ....

Bin auch schon etwas weiter - immer mehr fällt mir ein, wie ich die Cam -Ausgabe erweitern könnte. Inspiriert durch Beiträge in diesem Forum ;-)

So sieht der erste Entwurf aus:
Image

essi-code

Code: Select all

3
QCAD/CAM
4
81
5
+491+494
6
29
53
+227+758+133-133+
54
5
+99+600
6
30
53
+99+100
+1100+100
+1100+600
+99+600
54
Ich vermute mal, daß die Koordinaten als "Absolut-Vermaßung" noch nicht stimmen - werden die im CAM incremental ausgegeben?


leadin und leadout fehlt mir noch, dann kann ich auch schon den ersten Praxistest angehen.
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Sat Aug 04, 2018 4:22 pm

magdanc wrote:
Sat Aug 04, 2018 8:41 am
Ich vermute mal, daß die Koordinaten als "Absolut-Vermaßung" noch nicht stimmen - werden die im CAM incremental ausgegeben?
X und Y sind absolut, I und J incremental (für G2,G3 in G-Code).

Für absolute Werte für Bogenzentren können stattdessen IA und JA verwendet werden.

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Fri Aug 10, 2018 2:18 pm

Es sind noch einmal ein paar Themen aufgetreten. Den ersten Entwurf des Postprozessors lege ich auch schon einmal anbei.
1) Teilkreise
2) Vollkreise
3) Vorzeichen (+/-) bei einem 0-Wert
4) Anfahrweg
5) Anfahrwegtyp

zu 1)
Die Teilkreise, Bögen sehen gut aus

zu 2) Beispiel T2
Vollkreise werden leider im Moment nur halbe Kreise
=> hier muß die Zielposition identisch mit der Start-Position sein.
Image
Image

zu 3) Beispiel T1
Wenn ein Wert 0 beträgt wird leider kein Vorzeichen geschrieben.
Ein Vorzeichen ist mir sogar lieber als die 0, mir würde also ein einfaches "+" reichen
Image
Image

zu 4) Wenn bestehende Werkzeugwege geprüft oder neu gesetzt werden sollen ist in der Darstellung immer der Anfahrwegtyp auf "kein" gesetzt
Image

zu 5)
Kann ich mir einen Bogen als Anfahrwegtyp definieren, der nicht vom Zentrum aus beginnt?
Image

und noch eine kleine Frage:
Bei der Maschine ist "längs vor +X" und "quer links +Y", also ein 90° verdrehtes Koordinatensystem. Kann ich das in QCAD ebenfalls drehen?
Attachments
T2.dxf
(114.58 KiB) Downloaded 29 times
T1.dxf
(114.02 KiB) Downloaded 29 times
EssiPlasmaMM.js
Version 1 - veraltet
(3.11 KiB) Downloaded 29 times
Last edited by magdanc on Fri Aug 17, 2018 5:10 pm, edited 1 time in total.
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Thu Aug 16, 2018 3:32 pm

magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Vollkreise werden leider im Moment nur halbe Kreise
=> hier muß die Zielposition identisch mit der Start-Position sein.
Wie müsste hier die Ausgabe im "mpg" Format genau sein?
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Wenn ein Wert 0 beträgt wird leider kein Vorzeichen geschrieben.
Das wurde für die nächste Version behoben:
http://www.qcad.org/bugtracker/index.ph ... sk_id=1799

Als Workaround:

Code: Select all

EssiPlasmaMM.prototype.formatValue = function(value, decimals, options) {
    var ret = GCodeBase.prototype.formatValue.call(this, value, decimals, options);
    if (ret==="0") {
        ret = "+0";
    }
    return ret;
};
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
zu 4) Wenn bestehende Werkzeugwege geprüft oder neu gesetzt werden sollen ist in der Darstellung immer der Anfahrwegtyp auf "kein" gesetzt
Anfahrwege können grundsätzlich nur in Kombination mit Radiuskorrektur (aussen oder innen) benutzt werden, da sonst gar nicht definiert ist von welcher Seite der Anfahrweg beginnen soll. Ist "Seite" auf "Auf" definiert, kann nicht mit Anfahrwegen gearbeitet werden.
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Kann ich mir einen Bogen als Anfahrwegtyp definieren, der nicht vom Zentrum aus beginnt?
Ja, aber nur wenn die Radiuskorrektur von QCAD/CAM berechnet wird (this.outputOffsetPath = true; im Konstruktor).
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Bei der Maschine ist "längs vor +X" und "quer links +Y", also ein 90° verdrehtes Koordinatensystem. Kann ich das in QCAD ebenfalls drehen?
Nein. Es kann entweder gedreht gezeichnet werden oder im Postprocessor X/Y ausgewechselt werden.

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Fri Aug 17, 2018 5:09 pm

Vielen Dank andrew,

dann auch schon die Version 2 des Postprozessors.

Die Vollkreise habe ich hinbekommen, habe mir einen Standard G-Code angesehen und dabei festgestellt, daß ein Vollkreis als zwei Teilkreise exportiert wird.

Alles andere hat mit deiner Hilfe gut geklappt.

Das die Anfahrwegtypen immer auf none standen war ein Bedienungsfehler von mir. Eine Geometrie, der bereits ein Werkzeugweg zugewiesen war habe ich markiert und dann mit "Profilwerkzeug hinzufügen" wiederholt aufgerufen, das klappt natürlich nicht, es muß natürlich ein bestehender Werkzeugweg editiert werden.

Das mit der Seite des Anfahrweges habe ich so erst mal nicht gemacht, da im NC-Export nur die Geometrie enthalten sein soll. Eine Korrektur durch ein Werkzeug darf da nicht rein. Also habe ich eine Werkzeug mit dem Durchmesser "0" definiert, aber damit bekomme ich auch Schwierigkeiten beim Export. Also definiere ich einen so kleinen Durchmesser, dass dieser sich nicht auf die zu exportierende Geometrie auswirkt.

Bögen als Anfahrtstypen funktioniert auch, nur daß ich hier und da mit dem Startpunkt noch nicht einverstanden bin. Dies gehört aber nicht in dasThema "Postprozessor". Werde ich bei Gelegenheit noch etwas ausprobieren und ggfls. noch einmal ansprechen.

Praktisch ausprobieren werde ich es frühestens in zwei Wochen können. In meiner Demo sieht das Ergebnis aber schon sehr brauchbar aus.
Image


Das ESSI-Format wird verwendet für Brennschneidmaschinen:
  • Plasma
  • Autogen
  • Laser
  • Wasserstrahl
  • ...
Attachments
EssiPlasmaMM.js
Version 2
(3.75 KiB) Downloaded 28 times
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Mon Aug 27, 2018 5:25 pm

Die ersten beiden Praxistests:

1. Eine Hausnummer:
2mm Baustahl
Image

Image



2. Mixstab
2mm Edelstahl
Image

Image

Image

Eindrücke bei der Hausnummer
Die Schwingungen liegen eher an meinem Improvisieren: Keine Höhenregelung, eventuell hat die Platte geschwungen.

Eindrücke der Teile für den Mixstab
Am Postprozessor habe ich noch eine Kleinigkeit geändert, daß über einen Bohrer im NC-Code ein Punktsignieren erfolgt. Dies dient sozusagen dem Körnen für ein späters Loch bohren. Hat mit meiner Testanlage aber nicht geklappt, deshalb ist es im Zentrum der Platte auch nicht zu sehen.
Beim Anschneiden ist der Brenner immer abgesackt und hat Kollsion verursacht. Entweder war die Automatikverzögerung an der Maschine zu Kurz, bis diese auf Geschwindigkeit ist oder ich werde den Postprozessor auf die Anschneidstreke ändern, daß keine Höhenautomatik aktiv ist, werde aber noch ein paar Tests machen und schauen, wie ich zurecht kommen.
Attachments
EssiPlasmaMM.js
Version 3
(3.87 KiB) Downloaded 27 times
Last edited by magdanc on Sun Sep 16, 2018 11:24 am, edited 1 time in total.
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Tue Sep 04, 2018 6:28 pm

Bei der Ausfahrtstrecke habe ich noch ein Problem:

Von der Kontur zu Lead Out wird derzeit die Höhenautomatik nicht abgeschaltet. Das bewirkt bei Innenkonturen ein Absacken des Brenners und eine Beschädigung der Düsenkappe.
Image

Gibt es eine Funktion, über die ich vor Beginn der Ausfahrtstecke eine G-Code Sequenz über den Postprozessor in den exportierten Code einfügen kann?

In ESSI ist das eine "48"

Code: Select all

-896+190-519+519-		; Letzes Segment
-929+228			; Ausfahrt
54				; Programmende
So soll es sein

Code: Select all

-896+190-519+519-		; Letzes Segment
48				; Höhenautomatik aus
-929+228			; Ausfahrt
54				; Programmende
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Tue Sep 04, 2018 8:55 pm

Für den Ausfahrweg ("lead out") wird this.linearMoveCompensationOff geschrieben, also z.B.:

Code: Select all

this.linearMoveCompensationOff = ["48", "[X!][Y!]"];

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Wed Sep 05, 2018 8:15 am

this.linearMoveCompensationOff hat leider keinen Einfluss, Lead Out wird darüber nicht geschrieben.
Muß ich hierfür noch etwas einstellen, bzw. aktivieren?
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Wed Sep 05, 2018 8:44 am

Das kann ich hier nicht nachvollziehen. Allenfalls DXF Datei anhängen bitte - dort sind alle Einstellungen vorhanden, die ich zum Nachvollziehen benötige.

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Wed Sep 05, 2018 6:15 pm

Anbei ein Beispiel

Der erzeugte Code:

Code: Select all

3
QCAD/CAM
lead out.mpg
EssiPlasmaMM V004
4
81
5
+383+186
6
29
53
+316+183+352+147+
+83+416+199+299-
+316+183+199+299-
+313+116+352+147+
54
5
+555+90
6
29
53
+555+140
+555+460
+560+465+560+460-
+1060+465
+1065+460+1060+460-
+1065+140
+1060+135+1060+140-
+560+135
+510+135
54
Attachments
lead out.dxf
Test für Lead out
(122.34 KiB) Downloaded 23 times
EssiPlasmaMM.js
Version 4
(3.95 KiB) Downloaded 22 times
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

User avatar
andrew
Site Admin
Posts: 5606
Joined: Fri Mar 30, 2007 6:07 am

Re: Postprozessor

Post by andrew » Thu Sep 06, 2018 9:26 pm

Mit

Code: Select all

this.outputOffsetPath = true
werden die Codes

Code: Select all

this.linearMoveCompensationLeft
this.linearMoveCompensationRight
this.linearMoveCompensationOff
gar nicht verwendet. Die Kompensation wird stattdessen berechnet und Anfahrwege werden als Teil der Kontur ausgegeben.

Es gibt verschiedene Möglichkeiten, den Ausfahrweg abzufangen. Am Besten wohl im writeEntity:

Code: Select all

EssiPlasmaMM.prototype.writeEntity = function() {
    var leadOut = this.getEntityOptionBool(this.currentEntity, "CamLeadOut", false) ||
                  this.getEntityOptionBool(this.currentEntity, "CamOvercutOut", false);

    if (leadOut) {
        this.writeLinearMoveCompensationOff();
        return;
    }

    ...
};
Mit einem Ausfahrweg, der einen Bogen darstellt wird das aber wohl nicht funktionieren, denn this.linearMoveCompensationOff schreibt ja immer eine lineare Bewegung.

Also wäre es evtl. einfacher um den Code "48" einzuschieben und danach den Ausfahrweg normal zu schreiben:

Code: Select all

EssiPlasmaMM.prototype.writeEntity = function() {

    var leadOut = this.getEntityOptionBool(this.currentEntity, "CamLeadOut", false) ||
                  this.getEntityOptionBool(this.currentEntity, "CamOvercutOut", false);

    if (leadOut) {
        this.writeLine("48");
    }

    ...
};

magdanc
Junior Member
Posts: 10
Joined: Thu Aug 02, 2018 7:32 pm

Re: Postprozessor

Post by magdanc » Fri Sep 07, 2018 4:22 am

Ich würde sagen, ab jetzt ist der Postprozessor praxistauglich.

Nächste Woche werde ich wohl meine Testmaschine von einem Test wieder rückrüsten und kann dann auch weitere Versuche machen

:-)
Attachments
EssiPlasmaMM.js
Version 5
(4.31 KiB) Downloaded 18 times
QCAD CAM 3.21.2.0 - Windows10 X64
https://github.com/magdanc/Magda-NC

Post Reply

Return to “QCAD/CAM”