QCAD/CAM-jälkiprosessori
QCAD/CAM voi viedä CAD-piirustuksia erilaisiin CAM:ssa (tietokoneavusteinen valmistus) käytettäviin muotoihin. Nämä muodot voivat olla G-koodin murteita tai muita, täysin erilaisia muotoja. Jokainen tuettu CAM-muoto määritellään määritystiedostossa (tai “jälkiprosessorissa”), joka on ECMAScript (JavaScript) -tiedosto, joka toteuttaa muodon yksityiskohdat. Kaikki saatavilla olevat määritykset tallennetaan hakemistoon postprocessors. Uusia muotototeutuksia voidaan lisätä samaan sijaintiin.
Perusrakenne
Section titled “Perusrakenne”Jokainen määritystiedosto sisältää ECMAScript-luokan, jonka nimi on sama kuin skriptitiedostolla. Jos skriptitiedoston nimi on MyGCode.js, skriptin sisällä määritetyn luokan nimen on oltava MyGCode.
ECMAScript-luokan on periydyttävä suoraan tai epäsuorasti luokasta CamExporterV2, jonka QCAD/CAM määrittelee. CamExporterV2 määrittelee CAM-viejän määritysluokkien perusrakenteen. CamExporterV2:n erilaisia metodeja kutsutaan tiedoston ylätunnisteen, CAD-piirustuksen eri kohteiden ja alatunnisteen viemiseksi. CamExporterV2 huolehtii myös QCAD/CAM:n eri ominaisuuksista, esimerkiksi työkalun säteen kompensaatiosta, sisäänmenosta / ulostulosta, sisäkonttuurien leikkaamisesta ennen ulkokonttuureja, polun optimoinnista jne.
CamExporterV2 ei tulosta itse mitään, vaan tuottaisi tyhjän tiedoston omillaan. CamExporterV2 tarjoaa tekstivirran (QTextStream) vietyyn tiedostoon kirjoittamiseen. Tämä tekstivirta on käytettävissä jäsenmuuttujan this.stream kautta.
Jos haluttu tuloste on G-koodin murre (esim. G1 X10 Y20 lineaariselle liikkeelle), määritys voidaan periyttää olemassa olevasta G-koodin määrityksestä nimeltä GCodeBase, joka määritellään tiedostossa GCodeBase.js. Näin on useimpien koneohjaimien kohdalla. Yksi tällainen esimerkkimääritys G-koodin tulostamiseksi millimetreinä on määritelty tiedostossa GCodeMM.js ja saatavilla käyttöliittymässä määrityksenä nimeltä G-Code (G41/G42) [mm].
Määrityksen periyttäminen GCodeBase:sta
Section titled “Määrityksen periyttäminen GCodeBase:sta”Luo tiedosto valitsemallasi yksilöllisellä nimellä. Tässä esimerkissä kutsumme uutta määritystämme nimellä MyGCode ja tallennamme sen samannimiseen tiedostoon, eli MyGCode.js QCAD/CAM-asennuksesi hakemiston postprocessors alle.
Voit käyttää suosikkitekstieditoriasi tiedoston luomiseen ja kirjoittamiseen, esimerkiksi Notepad Windowsissa, TextEdit macOS:ssä tai vim, Emacs jne. Linux-järjestelmissä.
MyGCode.js:n on määritettävä luokka nimeltä MyGCode ollakseen kelvollinen määritys QCAD/CAM:lle. Vaikka ECMAScriptissä ei tarkalleen ottaen ole luokkia, voimme luoda samankaltaisen käsitteen liittämällä funktioita konstruktorifunktion prototyyppiobjektiin. Kuinka tämä tarkalleen toimii, on tämän dokumentaation ulottumattomissa. On kuitenkin olemassa suoraviivainen malli, jota voit käyttää kaikille määritystiedostoille.
Esimerkissämme luokan MyGCode määritelmä näyttää tältä (huomaa, että //:llä alkavat rivit ovat kommentteja eivätkä ole pakollisia):
// Sisällytä GCodeBase.js, joka sisältää luokan 'GCodeBase',// jota käytetään pohjana omalle määritykselle:include("GCodeBase.js");
// Luokkamme konstruktori:function MyGCode(documentInterface, newDocumentInterface) { // Kutsu perusluokan konstruktoria: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Periytä luokkamme luokasta GCodeBase:MyGCode.prototype = new GCodeBase();
// Käyttöliittymässä näytettävä näyttönimi:MyGCode.displayName = "My G-Code";Nyt olemme luoneet uuden, täysin toimivan määrityksen nimeltä “My G-Code”, joka on valmis käytettäväksi QCAD/CAM:ssa ja tuottaa perus-G-koodia.
Määritysasetukset
Section titled “Määritysasetukset”Yllä määrittelemämme konstruktori kutsuu perusluokkamme GCodeBase konstruktoria. Konstruktorissa voimme asettaa joitakin määrityksemme parametreja, kuten halutun tulostusyksikön tai sen, haluammeko käyttää G41/G42:ta työkalun säteen kompensaatioon vai laskea työkalupolun keskipisteen.
Tulostusyksikön (se on yksikkö, jota koneesi tai ohjaimesi odottaa) määrittämiseksi voimme asettaa jäsenmuuttujan unit arvoon Inch tai Millimeter, esimerkiksi:
this.unit = RS.Inch;tai
this.unit = RS.Millimeter;Muita konstruktorissa määritettäviä asetuksia ovat:
| Muuttuja | Mahdolliset arvot | Oletus | Kuvaus |
|---|---|---|---|
this.outputOffsetPath |
true tai false | false | Aseta arvoon true laskeaksesi työkalun säteen kompensaation G41/G42:n käyttämisen sijaan. |
this.lineNumber |
Numero | 10 | Rivinumerointiin käytettävä alkunumero (N…). |
this.lineNumberIncrement |
Numero | 10 | Rivinumeron lisäys rivistä riviin. |
this.fileExtensions |
Taulukko | [ "nc", "cnc" ] |
Luettelo tiedostopäätteistä, joista käyttäjä voi valita tämän jälkiprosessorin kautta vietäessä. |
Täydellinen konstruktori voi näyttää tältä:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}G-koodin tulosteen määrittäminen
Section titled “G-koodin tulosteen määrittäminen”Koodilohkot
Section titled “Koodilohkot”G-koodin tuloste on jäsennelty koodilohkoihin, jotka kirjoitetaan tulostustiedostoon käytettäessä CAM-vientitoimintoa QCAD/CAM:ssa. Esimerkiksi ensimmäinen kirjoitettava koodilohko on koodilohko “header”. Jokainen koodilohko määritellään jäsenmuuttujassa, joka tunnistaa sen nimellä, esimerkiksi this.header sisältää tiedoston ylätunnisteen koodilohkon.
Koodilohkot voidaan ohittaa sisältämään mitä tahansa koodia / tekstiä. Koodilohkot sisältävät tyypillisesti muuttujia nykyisten X/Y-koordinaattien, rivinumeron, syöttönopeuden jne. tulostamiseksi.
Sanotaan, että yksittäinen viiva viedään G-koodiin. Viiva viedään työkalun säteen kompensaatiolla viivan vasemmalle puolelle (G41). Tulostustiedostoon kirjoitettavat koodilohkot ovat seuraavat:
| Koodilohko | Kuvaus | Esimerkkituloste |
|---|---|---|
header |
Tulosteen ylätunniste (aina ensimmäinen koodilohko). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Pikaliike turvatasolle. | G0 Z100 |
rapidMove |
Pikaliike ensimmäisen konttuurin ensimmäiseen sijaintiin (tässä viivan sisäänmenon alku). | G0 X5 Y10 |
toolHeader |
Ensimmäinen lohko, kun uusi työkalu tulee käyttöön (työkalunvaihto). | T1 |
rapidMoveZ |
Pikaliike alas vapaatasolle (leijunta materiaalin yläpuolella). | G0 Z5 |
firstLinearMoveZ |
Leikkaus materiaaliin upotusnopeudella. | G1 Z-5 F50 |
toolpathHeader |
Uuden työkalupolun ensimmäinen lohko. | |
contourHeader |
Uuden konttuurin ensimmäinen lohko työkalupolun sisällä. | |
singleZPassHeader |
Yksittäisen Z-läpiajon ylätunniste. Leikkaamme koko syvyyden yhdellä läpiajolla. | |
zPassFirstHeader |
Yksittäisen tai useiden Z-läpiajojen ensimmäinen ylätunniste. | |
linearMoveCompensationLeft |
Lineaarinen liike viivan alkupisteeseen sisäänmenoa pitkin, työkalun säteen kompensaation kytkeminen päälle. | G41 X10 Y10 F500 |
linearMove |
Lineaarinen liike viivaa pitkin viivan loppupisteeseen. | X30 Y10 |
linearMoveCompensationOff |
Lineaarinen liike loppupisteestä pois ulostuloa pitkin, työkalun säteen kompensaation kytkeminen pois päältä. | G40 X35 Y10 |
zPassLastFooter |
Yksittäisen tai useiden Z-läpiajojen viimeinen alatunniste. | |
singleZPassFooter |
Yksittäisen Z-läpiajon alatunniste. | |
contourFooter |
Konttuurin loppu. | |
toolpathFooter |
Työkalupolun loppu. | |
linearMoveZ |
Liike ulos materiaalista vapaatasolle. | Z5 |
rapidMoveZ |
Liike turvatasolle. | G0 Z100 |
toolFooter |
Tämän työkalun loppu. | |
footer |
Ohjelman loppu. | M30 |
Monet näistä koodilohkoista ovat tyypillisesti käyttämättömiä eivätkä tuota tulostetta (tyhjä koodilohko).
Muuttujat
Section titled “Muuttujat”| Jäsenmuuttuja | Muuttujan nimi | Kuvaus |
|---|---|---|
| inputFileName | INFILENAME | Syötetiedoston nimi (esim. DXF-tiedosto). |
| inputFilePath | INFILEPATH | Syötetiedoston nimi täydellisellä polulla. |
| fileName | FILENAME | Tulostustiedoston nimi. |
| filePath | FILEPATH | Tulostustiedoston nimi täydellisellä polulla. |
| dateTime | DATETIME | Viennin päivämäärä ja aika. |
| lineNumber | N | Nykyinen rivinumero. |
| spindleSpeed | S | Karanopeus, tyypillisesti r/min. |
| feedRate | F | Syöttönopeus. |
| plungeRate | FP | Upotusnopeus. |
| xHomePosition | XH | Kotipositio kuten CAM-määrityksessä on määritetty. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z-turvataso työkalunvaihdoille ja alulle / lopulle. |
| zClearance | ZU | Z-vapaataso materiaaliin lähestymistä varten. |
| zClearancePass | ZUP | Z-vapaataso useiden läpiajojen välillä. |
| zCuttingDepth | ZD | Z-leikkaustaso (yhteensä). |
| xFirstPosition | XF | Ensimmäisen konttuurin ensimmäinen sijainti ensimmäisessä työkalupolussa. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Kohteen alku (viivan / kaaren alkupiste). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Nykyinen kohdesijainti. Nykyisen viivan / kaaren loppupiste. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Nykyinen kohdesijainti suhteellisena koordinaattina, suhteessa alkupisteeseen. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Kaaren keskipiste, suhteessa alkupisteeseen. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Kaaren keskipiste, absoluuttinen. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Kaaren säde. |
| arcDiameter | DIAMETER | Kaaren halkaisija. |
| arcSweep | SWEEP | Kaaren pyyhkäisy (kaaren kattama kulma radiaaneina, negatiivinen myötäpäivään). |
| tool | T | Nykyinen työkalu. |
| toolRadius | TR | Työkalun säde. |
| toolDiameter | TD | Työkalun halkaisija. |
| toolpathOrder | TOOLPATH_ORDER | Työkalupolun järjestys työkalupolkujen luettelossa, alkaen 0:sta ensimmäiselle työkalupolulle. |
| toolCalls | TOOL_CALLS | Kuinka monta kertaa tätä työkalua on käytetty. |
| toolpathName | TOOLPATH_NAME | Nykyisen työkalupolun nimi (käyttäjän määrittämä). |
| programName | PROGRAM_NAME | Ohjelman nimi kuten käyttäjä on CAM-määrityksessä määrittänyt. |
| xMin | X_MIN | Piirustuksen minimiulottuvuus. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Piirustuksen maksimiulottuvuus. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Esimerkkejä
Section titled “Esimerkkejä”Ylä- ja alatunnisteen muuttaminen
Section titled “Ylä- ja alatunnisteen muuttaminen”Lisätäksesi tai muuttaaksesi G-koodeja tai M-koodeja tai muita tietoja ylä- tai alatunnisteessa, määritys voi ohittaa jäsenmuuttujat header ja footer konstruktorissa, esimerkiksi seuraavasti:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absoluuttinen I/J
Section titled “Absoluuttinen I/J”Käyttääksesi absoluuttisia arvoja kaarten keskipisteen I/J-arvoille voit ohittaa kaaren koodilohkot seuraavasti:
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]";Jälkiprosessorin mallitiedosto
Section titled “Jälkiprosessorin mallitiedosto”QCAD/CAM yhdistää automaattisesti jälkiprosessoritiedoston kanssa samannimisen DXF-mallitiedoston (jos saatavilla) asetettaessa tai vaihdettaessa jälkiprosessoria. Sanotaan, että jälkiprosessorin nimi on “MyGCode”, toteutettu tiedostossa postprocessors/MyGCode.js. Luo työkalumäärityksillä varustettu DXF-tiedosto sijaintiin postprocessors/MyGCode.dxf. Tämä tiedosto voi sisältää työkalumäärityksiä, oletustasoja tai käytettävissä olevan pinta-alan ääriviivan. Huomaa: Mallitiedoston näkyvä sisältö sijoitetaan yhdistettäessä automaattisesti lukitulle tasolle, joten se on vain näkyvä mutta ei valittavissa.