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.
Osnovna struktura
Section titled “Osnovna struktura”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].
Izvođenje konfiguracije iz GCodeBase
Section titled “Izvođenje konfiguracije iz GCodeBase”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.
Konfiguracijske postavke
Section titled “Konfiguracijske postavke”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;}Definiranje izlaza G-koda
Section titled “Definiranje izlaza G-koda”Blokovi koda
Section titled “Blokovi koda”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).
Varijable
Section titled “Varijable”| Č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 |
Primjeri
Section titled “Primjeri”Promjena zaglavlja i podnožja
Section titled “Promjena zaglavlja i podnožja”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" ];Apsolutni I/J
Section titled “Apsolutni I/J”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]";Datoteka predloška postprocesora
Section titled “Datoteka predloška postprocesora”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.