Pascaprosesor QCAD/CAM
QCAD/CAM dapat mengekspor gambar CAD ke berbagai format yang digunakan dalam CAM (manufaktur berbantuan komputer). Format-format ini dapat berupa dialek G-Code atau format lain yang sepenuhnya berbeda. Setiap format CAM yang didukung didefinisikan dalam file konfigurasi (atau “pascaprosesor”) yang merupakan file ECMAScript (JavaScript) yang mengimplementasikan detail format. Semua konfigurasi yang tersedia disimpan di dalam direktori postprocessors. Implementasi format baru dapat ditambahkan ke lokasi yang sama.
Struktur Dasar
Section titled “Struktur Dasar”Setiap file konfigurasi berisi kelas ECMAScript dengan nama yang sama dengan file skrip. Jika file skrip bernama MyGCode.js, kelas yang didefinisikan di dalam skrip harus bernama MyGCode.
Kelas ECMAScript harus diturunkan secara langsung atau tidak langsung dari kelas CamExporterV2, yang didefinisikan oleh QCAD/CAM. CamExporterV2 mendefinisikan struktur dasar kelas konfigurasi pengekspor CAM. Berbagai metode dalam CamExporterV2 dipanggil untuk mengekspor header file, berbagai entitas dalam gambar CAD, dan footer. CamExporterV2 juga menangani berbagai fitur QCAD/CAM, misalnya kompensasi radius pahat, lead in / lead out, memotong kontur dalam sebelum kontur luar, optimasi jalur, dll.
CamExporterV2 tidak mengeluarkan apa pun dengan sendirinya, tetapi akan menghasilkan file kosong sendiri. CamExporterV2 menawarkan aliran teks (QTextStream) untuk menulis ke file yang diekspor. Aliran teks ini diekspos melalui variabel anggota this.stream.
Jika keluaran yang diinginkan adalah dialek G-Code (mis. G1 X10 Y20 untuk gerakan linear), konfigurasi dapat diturunkan dari konfigurasi yang ada untuk G-Code yang disebut GCodeBase, yang didefinisikan dalam file GCodeBase.js. Ini berlaku untuk sebagian besar pengontrol mesin. Salah satu contoh konfigurasi tersebut untuk mengeluarkan G-Code dalam Milimeter didefinisikan dalam file GCodeMM.js dan tersedia di antarmuka pengguna sebagai konfigurasi yang disebut G-Code (G41/G42) [mm].
Menurunkan Konfigurasi dari GCodeBase
Section titled “Menurunkan Konfigurasi dari GCodeBase”Buat file dengan nama unik pilihan Anda. Untuk contoh ini, kita menamai konfigurasi baru kita MyGCode dan menyimpannya dalam file dengan nama yang sama, yaitu MyGCode.js di bawah direktori postprocessors dari instalasi QCAD/CAM Anda.
Anda dapat menggunakan editor teks biasa favorit Anda untuk membuat dan menulis file, misalnya Notepad di Windows, TextEdit di macOS, atau vim, Emacs, dll. di sistem Linux.
MyGCode.js harus mendefinisikan kelas bernama MyGCode agar menjadi konfigurasi yang valid untuk QCAD/CAM. Meskipun secara teknis tidak ada kelas di ECMAScript, kita dapat membuat konsep serupa dengan melampirkan fungsi ke objek prototipe dari fungsi konstruktor. Bagaimana persisnya ini bekerja berada di luar cakupan dokumentasi ini. Namun, ada templat sederhana yang dapat Anda gunakan untuk semua file konfigurasi.
Untuk contoh kita, definisi kelas MyGCode terlihat seperti ini (perhatikan bahwa baris yang dimulai dengan // adalah komentar dan tidak diperlukan):
// Sertakan GCodeBase.js yang berisi kelas 'GCodeBase',// digunakan sebagai dasar untuk konfigurasi kita sendiri:include("GCodeBase.js");
// Konstruktor dari kelas kita:function MyGCode(documentInterface, newDocumentInterface) { // Panggil konstruktor kelas dasar: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Turunkan kelas kita dari kelas GCodeBase:MyGCode.prototype = new GCodeBase();
// Nama tampilan yang ditampilkan di antarmuka pengguna:MyGCode.displayName = "My G-Code";Sekarang, kita telah membuat konfigurasi baru yang berfungsi penuh bernama “My G-Code” yang siap digunakan di QCAD/CAM dan menghasilkan G-Code dasar.
Preferensi Konfigurasi
Section titled “Preferensi Konfigurasi”Konstruktor yang kita definisikan di atas memanggil konstruktor dari kelas dasar kita GCodeBase. Dalam konstruktor, kita dapat mengatur beberapa parameter untuk konfigurasi kita seperti unit keluaran yang diinginkan atau jika kita ingin menggunakan G41/G42 untuk kompensasi radius pahat atau menghitung pusat jalur pahat.
Untuk mengonfigurasi unit keluaran (itu adalah unit yang diharapkan oleh mesin atau pengontrol Anda), kita dapat mengatur variabel anggota unit ke Inch atau Millimeter, misalnya:
this.unit = RS.Inch;atau
this.unit = RS.Millimeter;Pengaturan lain yang dapat dikonfigurasi dalam konstruktor adalah:
| Variabel | Nilai yang Mungkin | Default | Deskripsi |
|---|---|---|---|
this.outputOffsetPath |
true atau false | false | Atur ke true untuk menghitung kompensasi radius pahat alih-alih menggunakan G41/G42. |
this.lineNumber |
Angka | 10 | Angka awal yang digunakan untuk penomoran baris (N…). |
this.lineNumberIncrement |
Angka | 10 | Penambahan nomor baris dari baris ke baris. |
this.fileExtensions |
Array | [ "nc", "cnc" ] |
Daftar ekstensi file yang dapat dipilih pengguna saat mengekspor melalui pascaprosesor ini. |
Konstruktor lengkap mungkin terlihat seperti ini:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Mendefinisikan Keluaran G-Code
Section titled “Mendefinisikan Keluaran G-Code”Blok Kode
Section titled “Blok Kode”Keluaran G-Code disusun ke dalam blok kode yang ditulis ke file keluaran saat menggunakan fungsi ekspor CAM di QCAD/CAM. Misalnya, blok kode pertama yang ditulis adalah blok kode “header”. Setiap blok kode didefinisikan dalam variabel anggota yang mengidentifikasinya berdasarkan nama, misalnya this.header berisi blok kode untuk header file.
Blok kode dapat ditimpa untuk berisi kode / teks apa pun. Blok kode biasanya berisi variabel untuk mengeluarkan koordinat X/Y saat ini, nomor baris, laju pemakanan, dll.
Katakanlah satu garis diekspor ke G-Code. Garis diekspor dengan kompensasi radius pahat di sebelah kiri garis (G41). Blok kode yang ditulis ke file keluaran adalah sebagai berikut:
| Blok kode | Deskripsi | Contoh keluaran |
|---|---|---|
header |
Header keluaran (selalu blok kode pertama). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Gerakan cepat ke level keselamatan. | G0 Z100 |
rapidMove |
Gerakan cepat ke posisi pertama kontur pertama (di sini awal lead in untuk garis). | G0 X5 Y10 |
toolHeader |
Blok pertama saat pahat baru mulai bertindak (pergantian pahat). | T1 |
rapidMoveZ |
Gerakan cepat turun ke level jarak bebas (melayang di atas material). | G0 Z5 |
firstLinearMoveZ |
Memotong ke dalam material pada laju plunge. | G1 Z-5 F50 |
toolpathHeader |
Blok pertama dari jalur pahat baru. | |
contourHeader |
Blok pertama dari kontur baru dalam jalur pahat. | |
singleZPassHeader |
Header untuk satu lintasan Z. Kita memotong seluruh kedalaman dalam satu lintasan. | |
zPassFirstHeader |
Header pertama dari satu atau beberapa lintasan Z. | |
linearMoveCompensationLeft |
Gerakan linear ke titik awal garis sepanjang lead in, mengaktifkan kompensasi radius pahat. | G41 X10 Y10 F500 |
linearMove |
Gerakan linear sepanjang garis ke titik akhir garis. | X30 Y10 |
linearMoveCompensationOff |
Gerakan linear menjauh dari titik akhir sepanjang lead out, menonaktifkan kompensasi radius pahat. | G40 X35 Y10 |
zPassLastFooter |
Footer terakhir dari satu atau beberapa lintasan Z. | |
singleZPassFooter |
Footer untuk satu lintasan Z. | |
contourFooter |
Akhir kontur. | |
toolpathFooter |
Akhir jalur pahat. | |
linearMoveZ |
Gerakan keluar dari material ke level jarak bebas. | Z5 |
rapidMoveZ |
Gerakan ke level keselamatan. | G0 Z100 |
toolFooter |
Akhir untuk pahat ini. | |
footer |
Akhir program. | M30 |
Banyak dari blok kode ini biasanya tidak digunakan dan tidak menghasilkan keluaran (blok kode kosong).
Variabel
Section titled “Variabel”| Variabel anggota | Nama variabel | Deskripsi |
|---|---|---|
| inputFileName | INFILENAME | Nama file masukan (mis. file DXF). |
| inputFilePath | INFILEPATH | Nama file masukan dengan jalur lengkap. |
| fileName | FILENAME | Nama file keluaran. |
| filePath | FILEPATH | Nama file keluaran dengan jalur lengkap. |
| dateTime | DATETIME | Tanggal dan waktu ekspor. |
| lineNumber | N | Nomor baris saat ini. |
| spindleSpeed | S | Kecepatan spindel, biasanya rpm. |
| feedRate | F | Laju pemakanan. |
| plungeRate | FP | Laju plunge. |
| xHomePosition | XH | Posisi asal seperti yang dikonfigurasi dalam konfigurasi CAM. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Level keselamatan Z untuk pergantian pahat dan awal / akhir. |
| zClearance | ZU | Level jarak bebas Z untuk mendekati material. |
| zClearancePass | ZUP | Level jarak bebas Z antara beberapa lintasan. |
| zCuttingDepth | ZD | Level pemotongan Z (total). |
| xFirstPosition | XF | Posisi pertama dari kontur pertama dalam jalur pahat pertama. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Awal entitas (titik awal garis / busur). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Posisi target saat ini. Titik akhir garis / busur saat ini. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Posisi target saat ini sebagai koordinat relatif, relatif terhadap titik awal. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Pusat busur, relatif terhadap titik awal. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Pusat busur, absolut. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Radius busur. |
| arcDiameter | DIAMETER | Diameter busur. |
| arcSweep | SWEEP | Sapuan busur (sudut yang dicakup oleh busur dalam rad, negatif untuk searah jarum jam). |
| tool | T | Pahat saat ini. |
| toolRadius | TR | Radius pahat. |
| toolDiameter | TD | Diameter pahat. |
| toolpathOrder | TOOLPATH_ORDER | Urutan jalur pahat dalam daftar jalur pahat, dimulai dengan 0 untuk jalur pahat pertama. |
| toolCalls | TOOL_CALLS | Berapa kali pahat ini telah digunakan. |
| toolpathName | TOOLPATH_NAME | Nama jalur pahat saat ini (didefinisikan pengguna). |
| programName | PROGRAM_NAME | Nama program seperti yang dikonfigurasi oleh pengguna dalam konfigurasi CAM. |
| xMin | X_MIN | Batas minimum gambar. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Batas maksimum gambar. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Contoh
Section titled “Contoh”Mengubah Header dan Footer
Section titled “Mengubah Header dan Footer”Untuk menambah atau mengubah G-Codes atau M-Codes atau informasi lain di header atau footer, konfigurasi dapat menimpa variabel anggota header dan footer dalam konstruktor, misalnya sebagai berikut:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];I/J Absolut
Section titled “I/J Absolut”Untuk menggunakan nilai absolut untuk nilai I/J untuk pusat busur, Anda dapat menimpa blok kode busur sebagai berikut:
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]";File Templat Pascaprosesor
Section titled “File Templat Pascaprosesor”QCAD/CAM secara otomatis menggabungkan file templat DXF dengan nama yang sama dengan file pascaprosesor (jika tersedia) saat menyetel atau beralih pascaprosesor. Katakanlah, pascaprosesor bernama “MyGCode”, diimplementasikan di postprocessors/MyGCode.js. Buat file DXF dengan definisi pahat di postprocessors/MyGCode.dxf. File ini mungkin berisi definisi pahat, layer default, atau garis luar area permukaan yang tersedia. Catatan: Setiap konten yang terlihat dari file templat secara otomatis ditempatkan pada layer terkunci saat menggabungkan, sehingga hanya terlihat tetapi tidak dapat dipilih.