Μετάβαση στο περιεχόμενο

Μετεπεξεργαστής QCAD/CAM

Το QCAD/CAM μπορεί να εξαγάγει σχέδια CAD σε διάφορες μορφές που χρησιμοποιούνται στο CAM (κατασκευή με τη βοήθεια υπολογιστή). Αυτές οι μορφές μπορεί να είναι διάλεκτοι G-Code ή άλλες, εντελώς διαφορετικές μορφές. Κάθε υποστηριζόμενη μορφή CAM ορίζεται σε ένα αρχείο διαμόρφωσης (ή «μετεπεξεργαστή») που είναι ένα αρχείο ECMAScript (JavaScript) που υλοποιεί τις λεπτομέρειες της μορφής. Όλες οι διαθέσιμες διαμορφώσεις αποθηκεύονται μέσα στον κατάλογο postprocessors. Νέες υλοποιήσεις μορφών μπορούν να προστεθούν στην ίδια τοποθεσία.

Κάθε αρχείο διαμόρφωσης περιέχει μια κλάση ECMAScript με το ίδιο όνομα όπως το αρχείο σεναρίου. Εάν το αρχείο σεναρίου ονομάζεται MyGCode.js, η κλάση που ορίζεται μέσα στο σενάριο πρέπει να ονομάζεται MyGCode.

Η κλάση ECMAScript πρέπει να προέρχεται άμεσα ή έμμεσα από την κλάση CamExporterV2, η οποία ορίζεται από το QCAD/CAM. Η CamExporterV2 ορίζει τη βασική δομή των κλάσεων διαμόρφωσης εξαγωγέα CAM. Διάφορες μέθοδοι στην CamExporterV2 καλούνται για την εξαγωγή της κεφαλίδας του αρχείου, των διαφόρων οντοτήτων στο σχέδιο CAD και του υποσέλιδου. Η CamExporterV2 φροντίζει επίσης για τα διάφορα χαρακτηριστικά του QCAD/CAM, για παράδειγμα την αντιστάθμιση ακτίνας εργαλείου, είσοδο / έξοδο, κοπή εσωτερικών περιγραμμάτων πριν από τα εξωτερικά περιγράμματα, βελτιστοποίηση διαδρομής κ.λπ.

Η CamExporterV2 δεν εξάγει τίποτα από μόνη της, αλλά θα παρήγαγε ένα κενό αρχείο από μόνη της. Η CamExporterV2 προσφέρει μια ροή κειμένου (QTextStream) για εγγραφή στο εξαγόμενο αρχείο. Αυτή η ροή κειμένου εκτίθεται μέσω της μεταβλητής μέλους this.stream.

Εάν η επιθυμητή έξοδος είναι μια διάλεκτος G-Code (π.χ. G1 X10 Y20 για γραμμική κίνηση), η διαμόρφωση μπορεί να προέρχεται από την υπάρχουσα διαμόρφωση για G-Code που ονομάζεται GCodeBase, η οποία ορίζεται στο αρχείο GCodeBase.js. Αυτό ισχύει για τους περισσότερους ελεγκτές μηχανών. Ένα τέτοιο παράδειγμα διαμόρφωσης για την έξοδο G-Code σε χιλιοστά ορίζεται στο αρχείο GCodeMM.js και είναι διαθέσιμο στη διεπαφή χρήστη ως η διαμόρφωση που ονομάζεται G-Code (G41/G42) [mm].

Δημιουργήστε ένα αρχείο με ένα μοναδικό όνομα της επιλογής σας. Για αυτό το παράδειγμα, ονομάζουμε τη νέα μας διαμόρφωση MyGCode και την αποθηκεύουμε σε ένα αρχείο με το ίδιο όνομα, δηλαδή MyGCode.js κάτω από τον κατάλογο postprocessors της εγκατάστασης QCAD/CAM.

Μπορείτε να χρησιμοποιήσετε τον αγαπημένο σας επεξεργαστή απλού κειμένου για να δημιουργήσετε και να γράψετε το αρχείο, για παράδειγμα Notepad στα Windows, TextEdit στο macOS ή vim, Emacs κ.λπ. σε συστήματα Linux.

Το MyGCode.js πρέπει να ορίζει μια κλάση που ονομάζεται MyGCode για να είναι έγκυρη διαμόρφωση για το QCAD/CAM. Παρόλο που αυστηρά μιλώντας δεν υπάρχουν κλάσεις στο ECMAScript, μπορούμε να δημιουργήσουμε μια παρόμοια έννοια συνδέοντας συναρτήσεις στο αντικείμενο πρωτοτύπου μιας συνάρτησης κατασκευαστή. Το πώς ακριβώς λειτουργεί αυτό είναι πέρα από το πεδίο εφαρμογής αυτής της τεκμηρίωσης. Ωστόσο, υπάρχει ένα απλό πρότυπο που μπορείτε να χρησιμοποιήσετε για όλα τα αρχεία διαμόρφωσης.

Για το παράδειγμά μας, ο ορισμός της κλάσης MyGCode μοιάζει ως εξής (σημειώστε ότι οι γραμμές που ξεκινούν με // είναι σχόλια και δεν απαιτούνται):

// Συμπεριλάβετε το GCodeBase.js που περιέχει την κλάση 'GCodeBase',
// που χρησιμοποιείται ως βάση για τη δική μας διαμόρφωση:
include("GCodeBase.js");
// Κατασκευαστής της κλάσης μας:
function MyGCode(documentInterface, newDocumentInterface) {
// Καλέστε τον κατασκευαστή της βασικής κλάσης:
GCodeBase.call(this, documentInterface, newDocumentInterface);
}
// Παραγάγετε την κλάση μας από την κλάση GCodeBase:
MyGCode.prototype = new GCodeBase();
// Όνομα εμφάνισης που εμφανίζεται στη διεπαφή χρήστη:
MyGCode.displayName = "My G-Code";

Τώρα, δημιουργήσαμε μια νέα, πλήρως λειτουργική διαμόρφωση που ονομάζεται «My G-Code» η οποία είναι έτοιμη να χρησιμοποιηθεί στο QCAD/CAM και παράγει βασικό G-Code.

Ο κατασκευαστής που ορίσαμε παραπάνω καλεί τον κατασκευαστή της βασικής μας κλάσης GCodeBase. Στον κατασκευαστή, μπορούμε να ορίσουμε ορισμένες παραμέτρους για τη διαμόρφωσή μας, όπως την επιθυμητή μονάδα εξόδου ή εάν θέλουμε να χρησιμοποιήσουμε G41/G42 για αντιστάθμιση ακτίνας εργαλείου ή να υπολογίσουμε το κέντρο της διαδρομής του εργαλείου.

Για να διαμορφώσουμε τη μονάδα εξόδου (αυτή είναι η μονάδα που αναμένεται από τη μηχανή ή τον ελεγκτή σας), μπορούμε να ορίσουμε τη μεταβλητή μέλους unit σε Inch ή Millimeter, για παράδειγμα:

this.unit = RS.Inch;

ή

this.unit = RS.Millimeter;

Άλλες ρυθμίσεις που μπορούν να διαμορφωθούν στον κατασκευαστή είναι:

Μεταβλητή Πιθανές τιμές Προεπιλογή Περιγραφή
this.outputOffsetPath true ή false false Ορίστε σε true για υπολογισμό αντιστάθμισης ακτίνας εργαλείου αντί για χρήση G41/G42.
this.lineNumber Αριθμός 10 Αρχικός αριθμός που χρησιμοποιείται για την αρίθμηση γραμμών (N…).
this.lineNumberIncrement Αριθμός 10 Αύξηση αριθμού γραμμής από γραμμή σε γραμμή.
this.fileExtensions Πίνακας [ "nc", "cnc" ] Λίστα επεκτάσεων αρχείων από τις οποίες μπορεί να επιλέξει ο χρήστης κατά την εξαγωγή μέσω αυτού του μετεπεξεργαστή.

Ένας πλήρης κατασκευαστής μπορεί να μοιάζει ως εξής:

function MyGCode(documentInterface, newDocumentInterface) {
GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch;
this.outputOffsetPath = true;
this.lineNumber = 1;
this.lineNumberIncrement = 1;
}

Η έξοδος G-Code δομείται σε μπλοκ κώδικα που γράφονται στο αρχείο εξόδου κατά τη χρήση της λειτουργίας εξαγωγής CAM στο QCAD/CAM. Για παράδειγμα, το πρώτο μπλοκ κώδικα που γράφεται είναι το μπλοκ κώδικα «header». Κάθε μπλοκ κώδικα ορίζεται σε μια μεταβλητή μέλους που το αναγνωρίζει με το όνομα, για παράδειγμα το this.header περιέχει το μπλοκ κώδικα για την κεφαλίδα του αρχείου.

Τα μπλοκ κώδικα μπορούν να παρακαμφθούν ώστε να περιέχουν οποιονδήποτε κώδικα / κείμενο. Τα μπλοκ κώδικα συνήθως περιέχουν μεταβλητές για την έξοδο των τρεχουσών συντεταγμένων X/Y, τον αριθμό γραμμής, τον ρυθμό πρόωσης κ.λπ.

Ας πούμε ότι μια μεμονωμένη γραμμή εξάγεται σε G-Code. Η γραμμή εξάγεται με αντιστάθμιση ακτίνας εργαλείου στα αριστερά της γραμμής (G41). Τα μπλοκ κώδικα που γράφονται στο αρχείο εξόδου είναι τα εξής:

Μπλοκ κώδικα Περιγραφή Παράδειγμα εξόδου
header Κεφαλίδα της εξόδου (πάντα το πρώτο μπλοκ κώδικα). G21 G17 G90 G40 G49 G80
rapidMoveZ Ταχεία κίνηση στο επίπεδο ασφαλείας. G0 Z100
rapidMove Ταχεία κίνηση στην πρώτη θέση του πρώτου περιγράμματος (εδώ η αρχή της εισόδου για τη γραμμή). G0 X5 Y10
toolHeader Πρώτο μπλοκ όταν ένα νέο εργαλείο τίθεται σε δράση (αλλαγή εργαλείου). T1
rapidMoveZ Ταχεία κίνηση προς τα κάτω στο επίπεδο διάκενου (αιώρηση πάνω από το υλικό). G0 Z5
firstLinearMoveZ Κοπή στο υλικό με ρυθμό βύθισης. G1 Z-5 F50
toolpathHeader Πρώτο μπλοκ μιας νέας διαδρομής εργαλείου.
contourHeader Πρώτο μπλοκ ενός νέου περιγράμματος εντός μιας διαδρομής εργαλείου.
singleZPassHeader Κεφαλίδα για μεμονωμένο πέρασμα Z. Κόβουμε ολόκληρο το βάθος σε ένα μεμονωμένο πέρασμα.
zPassFirstHeader Πρώτη κεφαλίδα μεμονωμένων ή πολλαπλών περασμάτων Z.
linearMoveCompensationLeft Γραμμική κίνηση στο σημείο εκκίνησης της γραμμής κατά μήκος της εισόδου, ενεργοποίηση της αντιστάθμισης ακτίνας εργαλείου. G41 X10 Y10 F500
linearMove Γραμμική κίνηση κατά μήκος της γραμμής στο τελικό σημείο της γραμμής. X30 Y10
linearMoveCompensationOff Γραμμική κίνηση μακριά από το τελικό σημείο κατά μήκος της εξόδου, απενεργοποίηση της αντιστάθμισης ακτίνας εργαλείου. G40 X35 Y10
zPassLastFooter Τελευταίο υποσέλιδο μεμονωμένων ή πολλαπλών περασμάτων Z.
singleZPassFooter Υποσέλιδο για μεμονωμένο πέρασμα Z.
contourFooter Τέλος περιγράμματος.
toolpathFooter Τέλος διαδρομής εργαλείου.
linearMoveZ Κίνηση έξω από το υλικό στο επίπεδο διάκενου. Z5
rapidMoveZ Κίνηση στο επίπεδο ασφαλείας. G0 Z100
toolFooter Τέλος για αυτό το εργαλείο.
footer Τέλος προγράμματος. M30

Πολλά από αυτά τα μπλοκ κώδικα είναι συνήθως αχρησιμοποίητα και δεν παράγουν έξοδο (κενό μπλοκ κώδικα).

Μεταβλητή μέλους Όνομα μεταβλητής Περιγραφή
inputFileName INFILENAME Όνομα αρχείου εισόδου (π.χ. αρχείο DXF).
inputFilePath INFILEPATH Όνομα αρχείου εισόδου με πλήρη διαδρομή.
fileName FILENAME Όνομα αρχείου εξόδου.
filePath FILEPATH Όνομα αρχείου εξόδου με πλήρη διαδρομή.
dateTime DATETIME Ημερομηνία και ώρα εξαγωγής.
lineNumber N Τρέχων αριθμός γραμμής.
spindleSpeed S Ταχύτητα ατράκτου, συνήθως σ.α.λ.
feedRate F Ρυθμός πρόωσης.
plungeRate FP Ρυθμός βύθισης.
xHomePosition XH Θέση εκκίνησης όπως διαμορφώθηκε στη διαμόρφωση CAM.
yHomePosition YH
zHomePosition ZH
zSafety ZS Επίπεδο ασφαλείας Z για αλλαγές εργαλείων και έναρξη / τέλος.
zClearance ZU Επίπεδο διάκενου Z για προσέγγιση στο υλικό.
zClearancePass ZUP Επίπεδο διάκενου Z μεταξύ πολλαπλών περασμάτων.
zCuttingDepth ZD Επίπεδο κοπής Z (συνολικό).
xFirstPosition XF Πρώτη θέση του πρώτου περιγράμματος στην πρώτη διαδρομή εργαλείου.
yFirstPosition YF
xStartPosition X1 Έναρξη οντότητας (σημείο εκκίνησης γραμμής / τόξου).
yStartPosition Y1
zStartPosition Z1
xPosition X Τρέχουσα θέση στόχου. Τελικό σημείο της τρέχουσας γραμμής / τόξου.
yPosition Y
zPosition Z
xRelPosition XR Τρέχουσα θέση στόχου ως σχετική συντεταγμένη, σε σχέση με το σημείο εκκίνησης.
yRelPosition YR
zRelPosition ZR
iArcCenterInc I Κέντρο τόξου, σε σχέση με το σημείο εκκίνησης.
jArcCenterInc J
iArcCenterAbs IA Κέντρο τόξου, απόλυτο.
jArcCenterAbs JA
arcRadius RADIUS Ακτίνα τόξου.
arcDiameter DIAMETER Διάμετρος τόξου.
arcSweep SWEEP Σάρωση τόξου (γωνία που καλύπτεται από το τόξο σε rad, αρνητική για δεξιόστροφη).
tool T Τρέχον εργαλείο.
toolRadius TR Ακτίνα εργαλείου.
toolDiameter TD Διάμετρος εργαλείου.
toolpathOrder TOOLPATH_ORDER Σειρά διαδρομής εργαλείου στη λίστα διαδρομών εργαλείου, ξεκινώντας με 0 για την πρώτη διαδρομή εργαλείου.
toolCalls TOOL_CALLS Πλήθος φορών που έχει χρησιμοποιηθεί αυτό το εργαλείο.
toolpathName TOOLPATH_NAME Όνομα της τρέχουσας διαδρομής εργαλείου (καθορισμένο από τον χρήστη).
programName PROGRAM_NAME Όνομα προγράμματος όπως διαμορφώθηκε από τον χρήστη στη διαμόρφωση CAM.
xMin X_MIN Ελάχιστη έκταση σχεδίου.
yMin Y_MIN
zMin Z_MIN
xMax X_MAX Μέγιστη έκταση σχεδίου.
yMax Y_MAX
zMax Z_MAX

Αλλαγή της κεφαλίδας και του υποσέλιδου

Ενότητα με τίτλο «Αλλαγή της κεφαλίδας και του υποσέλιδου»

Για να προσθέσετε ή να αλλάξετε G-Codes ή M-Codes ή άλλες πληροφορίες στην κεφαλίδα ή το υποσέλιδο, μια διαμόρφωση μπορεί να παρακάμψει τις μεταβλητές μέλους header και footer στον κατασκευαστή, για παράδειγμα ως εξής:

this.header = [ "[N] G0 Z100" ];
this.footer = [ "[N] G0 Z100", "[N] M30" ];

Για να χρησιμοποιήσετε απόλυτες τιμές για τις τιμές I/J για το κέντρο των τόξων, μπορείτε να παρακάμψετε τα μπλοκ κώδικα τόξων ως εξής:

this.firstArcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";
this.arcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";
this.firstArcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";
this.arcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";

Το QCAD/CAM συγχωνεύει αυτόματα ένα αρχείο προτύπου DXF με το ίδιο όνομα όπως το αρχείο μετεπεξεργαστή (εάν είναι διαθέσιμο) κατά τον ορισμό ή την εναλλαγή του μετεπεξεργαστή. Ας πούμε ότι ο μετεπεξεργαστής ονομάζεται «MyGCode», υλοποιημένος στο postprocessors/MyGCode.js. Δημιουργήστε ένα αρχείο DXF με τους ορισμούς εργαλείων στο postprocessors/MyGCode.dxf. Αυτό το αρχείο μπορεί να περιέχει ορισμούς εργαλείων, προεπιλεγμένα επίπεδα ή το περίγραμμα της διαθέσιμης επιφάνειας. Σημείωση: Οποιοδήποτε ορατό περιεχόμενο του αρχείου προτύπου τοποθετείται αυτόματα σε ένα κλειδωμένο επίπεδο κατά τη συγχώνευση, οπότε είναι μόνο ορατό αλλά όχι επιλέξιμο.