Peata CAD: DXF-lahtilõigete genereerimine ja pesastamine Chromiumiga
Traditsioonilised joonisegenereerimise lähenemised toetuvad tugevalt raskepärasele lauaarvutitarkvarale ja suletud API-dele. Kaasaegne lähenemine viib geomeetriakerneli veebi.
Selles artiklis vaatame, kuidas kasutada Chromiumi mootorit (Puppeteeri või Playwrighti kaudu) ja JavaScripti DXF-failide automaatseks genereerimiseks, valideerimiseks ja pesastamiseks.
:::tip Miks Chromium?
Insenerile ei ole brauser pelgalt lehe vaatur, vaid võimas vektorrenderdusmootor (SVG/Canvas) riistvaralise kiirendusega.
Platvormist sõltumatu: genereerimine toimib ühtemoodi Windowsis, Linuxi serverites ja Docker-konteinerite sees.
Visuaalne silumine: näed täpselt, mis masinasse läheb.
Teekide kättesaadavus: NPM-i ökosüsteem (Maker.js, OpenJSCAD) võimaldab 2D-geomeetria töötlust kiiremini kui LISP või VBA.
:::
Lahenduse arhitektuur
Automatiseerimise töövoog pesastamiseks või lahtilõike genereerimiseks näeb välja selline:
Frontend/loogika: JS-skript genereerib parameetrite põhjal detaili geomeetria (SVG-tee).
Mootor (Chromium): peata brauser renderdab geomeetria, arvutab lõikepunkte (pesastamiseks) või teisendab Bézier'-kõverad kaarteks/polüjoonteks.
Väljund: tulemuse serialiseerimine DXF-vormingusse.
Tehniline teostus
Selle asemel et jooni käsitsi joonistada, kasutame arvutusteks DOM-i.
Stack:
Node.js - käituskeskkond.
Puppeteer - peata Chromiumi juhtimine.
Maker.js - teek CAD-operatsioonideks ja DXF-ekspordiks.
Koodinäide (Node.js)
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
// 1. Launch a "clean" browser
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 2. Inject construction logic (e.g., box flat pattern)
// In a real project, maker.js would be injected here
const dxfContent = await page.evaluate(() => {
// Assume makerjs is loaded in the page context
const model = new makerjs.models.Rectangle(100, 50);
// Add holes or bend lines
const hole = new makerjs.paths.Circle([10, 10], 5);
makerjs.model.addPath(model, hole, 'hole_1');
// Export to DXF string
return makerjs.exporter.toDXF(model, { units: 'mm' });
});
// 3. Save file for production
fs.writeFileSync('flat-pattern.dxf', dxfContent);
console.log('DXF generated successfully.');
await browser.close();
})();
Interaktiivne näide
MDX-iga saab isegi interaktiivseid elemente otse postitusse põimida. Käivita allpool DXF-ringi generaator, muuda koodilõiku ja laadi uuendatud DXF kohe alla:
Rakendus pesastamiseks
Pesastamisalgoritmid (nagu SVGnest või Deepnest) nõuavad mahukaid geomeetriaarvutusi. Nende käivitamine Chromiumi keskkonnas võimaldab kasutada WebAssembly (WASM) mooduleid. See kiirendab detailide paigutuse arvutust puhta JS-iga võrreldes märgatavalt ja lubab kohese ekspordi DXF-i.
Kokkuvõte
Chromiumi kasutamine CAD-ülesannete jaoks kõrvaldab sõltuvuse serveripoolsetest SolidWorksi või AutoCAD-i litsentsidest. See võimaldab ehitada pilvekonfiguraatoreid (CPQ), mis tarnivad laserlõikuseks valmis failid silmapilkselt.
