Skip to content

QCAD/CAM postprocesor

QCAD/CAM može izvoziti CAD crteže u razne formate koji se koriste u CAM-u (računalno potpomognuta proizvodnja). Ovi formati mogu biti dijalekti G-koda ili drugi, potpuno različiti formati. Svaki podržani CAM format definiran je u konfiguracijskoj datoteci (ili „postprocesoru”) koja je ECMAScript (JavaScript) datoteka koja implementira detalje formata. Sve dostupne konfiguracije pohranjene su unutar direktorija postprocessors. Nove implementacije formata mogu se dodati na isto mjesto.

Svaka konfiguracijska datoteka sadrži ECMAScript klasu s istim imenom kao datoteka skripte. Ako se datoteka skripte zove MyGCode.js, klasa definirana unutar skripte mora se zvati MyGCode.

ECMAScript klasa mora izravno ili neizravno proizlaziti iz klase CamExporterV2, koju definira QCAD/CAM. CamExporterV2 definira osnovnu strukturu konfiguracijskih klasa CAM izvoznika. Razne metode u CamExporterV2 pozivaju se za izvoz zaglavlja datoteke, raznih entiteta u CAD crtežu i podnožja. CamExporterV2 također se brine o raznim značajkama QCAD/CAM-a, na primjer kompenzaciji radijusa alata, ulazu / izlazu, rezanju unutarnjih kontura prije vanjskih kontura, optimizaciji putanje itd.

CamExporterV2 sam po sebi ne ispisuje ništa, ali bi sam proizveo praznu datoteku. CamExporterV2 nudi tekstualni tok (QTextStream) za pisanje u izvezenu datoteku. Ovaj tekstualni tok izložen je putem članske varijable this.stream.

Ako je željeni izlaz dijalekt G-koda (npr. G1 X10 Y20 za linearno kretanje), konfiguracija se može izvesti iz postojeće konfiguracije za G-kod pod nazivom GCodeBase, koja je definirana u datoteci GCodeBase.js. To je slučaj za većinu upravljača strojeva. Jedan takav primjer konfiguracije za ispis G-koda u milimetrima definiran je u datoteci GCodeMM.js i dostupan u korisničkom sučelju kao konfiguracija pod nazivom G-Code (G41/G42) [mm].

Stvorite datoteku s jedinstvenim imenom po vašem izboru. Za ovaj primjer nazivamo našu novu konfiguraciju MyGCode i pohranjujemo je u datoteku s istim imenom, tj. MyGCode.js pod direktorijem postprocessors vaše QCAD/CAM instalacije.

Za stvaranje i pisanje datoteke možete koristiti svoj omiljeni uređivač običnog teksta, na primjer Notepad pod Windowsom, TextEdit pod macOS-om ili vim, Emacs itd. pod Linux sustavima.

MyGCode.js mora definirati klasu pod nazivom MyGCode kako bi bila valjana konfiguracija za QCAD/CAM. Iako strogo govoreći u ECMAScriptu nema klasa, možemo stvoriti sličan koncept dodavanjem funkcija prototipnom objektu konstruktorske funkcije. Kako to točno funkcionira izvan je opsega ove dokumentacije. Međutim, postoji jednostavan predložak koji možete koristiti za sve konfiguracijske datoteke.

Za naš primjer, definicija klase MyGCode izgleda ovako (napominjemo da su retci koji počinju s // komentari i nisu obavezni):

// Uključite GCodeBase.js koji sadrži klasu 'GCodeBase',
// korištenu kao osnova za našu vlastitu konfiguraciju:
include("GCodeBase.js");
// Konstruktor naše klase:
function MyGCode(documentInterface, newDocumentInterface) {
// Pozovite konstruktor osnovne klase:
GCodeBase.call(this, documentInterface, newDocumentInterface);
}
// Izvedite našu klasu iz klase GCodeBase:
MyGCode.prototype = new GCodeBase();
// Prikazano ime prikazano u korisničkom sučelju:
MyGCode.displayName = "My G-Code";

Sada smo stvorili novu, potpuno funkcionalnu konfiguraciju pod nazivom „My G-Code” koja je spremna za korištenje u QCAD/CAM-u i proizvodi osnovni G-kod.

Konstruktor koji smo definirali iznad poziva konstruktor naše osnovne klase GCodeBase. U konstruktoru možemo postaviti neke parametre za našu konfiguraciju kao što je željena izlazna jedinica ili želimo li koristiti G41/G42 za kompenzaciju radijusa alata ili izračunati središte putanje alata.

Za konfiguriranje izlazne jedinice (to je jedinica koju očekuje vaš stroj ili upravljač), možemo postaviti člansku varijablu unit na Inch ili Millimeter, na primjer:

this.unit = RS.Inch;

ili

this.unit = RS.Millimeter;

Druge postavke koje se mogu konfigurirati u konstruktoru su:

Varijabla Moguće vrijednosti Zadano Opis
this.outputOffsetPath true ili false false Postavite na true za izračun kompenzacije radijusa alata umjesto korištenja G41/G42.
this.lineNumber Broj 10 Početni broj korišten za numeriranje redaka (N…).
this.lineNumberIncrement Broj 10 Povećanje broja retka iz retka u redak.
this.fileExtensions Polje [ "nc", "cnc" ] Popis nastavaka datoteka između kojih korisnik može birati pri izvozu kroz ovaj postprocesor.

Potpuni konstruktor mogao bi izgledati ovako:

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

Izlaz G-koda strukturiran je u blokove koda koji se zapisuju u izlaznu datoteku pri korištenju funkcije CAM izvoza u QCAD/CAM-u. Na primjer, prvi blok koda koji se zapisuje je blok koda „header”. Svaki blok koda definiran je u članskoj varijabli koja ga identificira imenom, na primjer this.header sadrži blok koda za zaglavlje datoteke.

Blokovi koda mogu se nadjačati kako bi sadržavali bilo koji kod / tekst. Blokovi koda obično sadrže varijable za ispis trenutnih X/Y koordinata, broja retka, brzine posmaka itd.

Recimo da se jedna linija izvozi u G-kod. Linija se izvozi s kompenzacijom radijusa alata lijevo od linije (G41). Blokovi koda koji se zapisuju u izlaznu datoteku su sljedeći:

Blok koda Opis Primjer izlaza
header Zaglavlje izlaza (uvijek prvi blok koda). G21 G17 G90 G40 G49 G80
rapidMoveZ Brzo kretanje do razine sigurnosti. G0 Z100
rapidMove Brzo kretanje do prve pozicije prve konture (ovdje početak ulaza za liniju). G0 X5 Y10
toolHeader Prvi blok kada novi alat stupa u akciju (izmjena alata). T1
rapidMoveZ Brzo kretanje dolje do razine zazora (lebdenje iznad materijala). G0 Z5
firstLinearMoveZ Rezanje u materijal brzinom uranjanja. G1 Z-5 F50
toolpathHeader Prvi blok nove putanje alata.
contourHeader Prvi blok nove konture unutar putanje alata.
singleZPassHeader Zaglavlje za jedan Z prolaz. Režemo cijelu dubinu u jednom prolazu.
zPassFirstHeader Prvo zaglavlje jednog ili više Z prolaza.
linearMoveCompensationLeft Linearno kretanje do početne točke linije duž ulaza, uključivanje kompenzacije radijusa alata. G41 X10 Y10 F500
linearMove Linearno kretanje duž linije do krajnje točke linije. X30 Y10
linearMoveCompensationOff Linearno kretanje od krajnje točke duž izlaza, isključivanje kompenzacije radijusa alata. G40 X35 Y10
zPassLastFooter Zadnje podnožje jednog ili nekoliko Z prolaza.
singleZPassFooter Podnožje za jedan Z prolaz.
contourFooter Kraj konture.
toolpathFooter Kraj putanje alata.
linearMoveZ Kretanje izvan materijala do razine zazora. Z5
rapidMoveZ Kretanje do razine sigurnosti. G0 Z100
toolFooter Kraj za ovaj alat.
footer Kraj programa. M30

Mnogi od ovih blokova koda obično se ne koriste i ne proizvode izlaz (prazan blok koda).

Članska varijabla Ime varijable Opis
inputFileName INFILENAME Ime ulazne datoteke (npr. DXF datoteka).
inputFilePath INFILEPATH Ime ulazne datoteke s potpunom putanjom.
fileName FILENAME Ime izlazne datoteke.
filePath FILEPATH Ime izlazne datoteke s potpunom putanjom.
dateTime DATETIME Datum i vrijeme izvoza.
lineNumber N Trenutni broj retka.
spindleSpeed S Brzina vretena, obično o/min.
feedRate F Brzina posmaka.
plungeRate FP Brzina uranjanja.
xHomePosition XH Početna pozicija kako je konfigurirana u CAM konfiguraciji.
yHomePosition YH
zHomePosition ZH
zSafety ZS Z razina sigurnosti za izmjene alata i početak / kraj.
zClearance ZU Z razina zazora za približavanje materijalu.
zClearancePass ZUP Z razina zazora između više prolaza.
zCuttingDepth ZD Z razina rezanja (ukupno).
xFirstPosition XF Prva pozicija prve konture u prvoj putanji alata.
yFirstPosition YF
xStartPosition X1 Početak entiteta (početna točka linije / luka).
yStartPosition Y1
zStartPosition Z1
xPosition X Trenutna ciljna pozicija. Krajnja točka trenutne linije / luka.
yPosition Y
zPosition Z
xRelPosition XR Trenutna ciljna pozicija kao relativna koordinata, relativno prema početnoj točki.
yRelPosition YR
zRelPosition ZR
iArcCenterInc I Središte luka, relativno prema početnoj točki.
jArcCenterInc J
iArcCenterAbs IA Središte luka, apsolutno.
jArcCenterAbs JA
arcRadius RADIUS Radijus luka.
arcDiameter DIAMETER Promjer luka.
arcSweep SWEEP Zahvat luka (kut koji pokriva luk u rad, negativan za smjer kazaljke na satu).
tool T Trenutni alat.
toolRadius TR Radijus alata.
toolDiameter TD Promjer alata.
toolpathOrder TOOLPATH_ORDER Redoslijed putanje alata u popisu putanja alata, počevši s 0 za prvu putanju alata.
toolCalls TOOL_CALLS Broj puta koliko je ovaj alat korišten.
toolpathName TOOLPATH_NAME Ime trenutne putanje alata (definirano od strane korisnika).
programName PROGRAM_NAME Ime programa kako ga je korisnik konfigurirao u CAM konfiguraciji.
xMin X_MIN Minimalne granice crteža.
yMin Y_MIN
zMin Z_MIN
xMax X_MAX Maksimalne granice crteža.
yMax Y_MAX
zMax Z_MAX

Za dodavanje ili promjenu G-kodova ili M-kodova ili drugih informacija u zaglavlju ili podnožju, konfiguracija može nadjačati članske varijable header i footer u konstruktoru, na primjer kako slijedi:

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

Za korištenje apsolutnih vrijednosti za I/J vrijednosti za središte lukova, možete nadjačati blokove koda luka kako slijedi:

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 automatski spaja DXF datoteku predloška s istim imenom kao datoteka postprocesora (ako je dostupna) pri postavljanju ili prebacivanju postprocesora. Recimo da se postprocesor zove „MyGCode”, implementiran u postprocessors/MyGCode.js. Stvorite DXF datoteku s definicijama alata u postprocessors/MyGCode.dxf. Ova datoteka može sadržavati definicije alata, zadane slojeve ili obris dostupne površine. Napomena: Svaki vidljivi sadržaj datoteke predloška automatski se postavlja na zaključani sloj pri spajanju, pa je samo vidljiv, ali ne i odabirljiv.