Μετεπεξεργαστής 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].
Παραγωγή διαμόρφωσης από την GCodeBase
Ενότητα με τίτλο «Παραγωγή διαμόρφωσης από την GCodeBase»Δημιουργήστε ένα αρχείο με ένα μοναδικό όνομα της επιλογής σας. Για αυτό το παράδειγμα, ονομάζουμε τη νέα μας διαμόρφωση 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
Ενότητα με τίτλο «Ορισμός της εξόδου G-Code»Μπλοκ κώδικα
Ενότητα με τίτλο «Μπλοκ κώδικα»Η έξοδος 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
Ενότητα με τίτλο «Απόλυτα I/J»Για να χρησιμοποιήσετε απόλυτες τιμές για τις τιμές 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. Αυτό το αρχείο μπορεί να περιέχει ορισμούς εργαλείων, προεπιλεγμένα επίπεδα ή το περίγραμμα της διαθέσιμης επιφάνειας. Σημείωση: Οποιοδήποτε ορατό περιεχόμενο του αρχείου προτύπου τοποθετείται αυτόματα σε ένα κλειδωμένο επίπεδο κατά τη συγχώνευση, οπότε είναι μόνο ορατό αλλά όχι επιλέξιμο.