Skip to content

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.

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].

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.

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;
}

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 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

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" ];

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]";

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.