Zum Hauptinhalt springen

Headless CAD: DXF-Abwicklungen mit Chromium erzeugen und verschachteln

· 3 Minuten Lesezeit
Yurii
Ingenieur für CAD-Automatisierung

Traditionelle Ansätze zur Zeichnungserstellung stützen sich stark auf schwergewichtige Desktop-Software und proprietäre APIs. Der moderne Ansatz verlagert den Geometriekern ins Web.

In diesem Artikel zeigen wir, wie sich mit der Chromium-Engine (über Puppeteer oder Playwright) und JavaScript DXF-Dateien automatisch erzeugen, validieren und verschachteln (Nesting) lassen.

:::tip Warum Chromium?

Für einen Ingenieur ist ein Browser nicht nur ein Seitenbetrachter, sondern eine leistungsfähige Vektor-Rendering-Engine (SVG/Canvas) mit Hardwarebeschleunigung.

Plattformunabhängig: Die Generierung funktioniert identisch unter Windows, auf Linux-Servern und in Docker-Containern.

Visuelles Debugging: Sie sehen exakt, was an die Maschine geht.

Bibliotheksvielfalt: Das NPM-Ökosystem (Maker.js, OpenJSCAD) ermöglicht 2D-Geometriebearbeitung schneller als LISP oder VBA.

:::

Lösungsarchitektur

Der Automatisierungsworkflow für das Nesting oder die Erzeugung einer Abwicklung sieht so aus:

Frontend/Logik: Ein JS-Skript erzeugt die Bauteilgeometrie (SVG-Pfad) auf Basis von Parametern.

Engine (Chromium): Der Headless-Browser rendert die Geometrie, berechnet Schnittpunkte (für das Nesting) oder wandelt Bézierkurven in Bögen/Polylinien um.

Ausgabe: Serialisierung des Ergebnisses ins DXF-Format.

Technische Umsetzung

Statt Linien manuell zu zeichnen, nutzen wir das DOM für die Berechnungen.

Stack:

Node.js - Laufzeitumgebung.

Puppeteer - Steuerung von Headless-Chromium.

Maker.js - Bibliothek für CAD-Operationen und DXF-Export.

Codebeispiel (Node.js)

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
// 1. Einen "sauberen" Browser starten
const browser = await puppeteer.launch();
const page = await browser.newPage();

// 2. Konstruktionslogik injizieren (z. B. Abwicklung eines Kastens)
// In einem realen Projekt würde hier maker.js injiziert
const dxfContent = await page.evaluate(() => {
// Angenommen, makerjs ist im Seitenkontext geladen
const model = new makerjs.models.Rectangle(100, 50);

// Bohrungen oder Biegelinien hinzufügen
const hole = new makerjs.paths.Circle([10, 10], 5);
makerjs.model.addPath(model, hole, 'hole_1');

// Als DXF-String exportieren
return makerjs.exporter.toDXF(model, { units: 'mm' });
});

// 3. Datei für die Fertigung speichern
fs.writeFileSync('flat-pattern.dxf', dxfContent);

console.log('DXF generated successfully.');
await browser.close();
})();

Interaktives Beispiel

Mit MDX lassen sich sogar interaktive Elemente direkt in den Beitrag einbetten. Starten Sie unten den DXF-Kreisgenerator, passen Sie den Codeausschnitt an und laden Sie die aktualisierte DXF-Datei sofort herunter:

Anwendung für das Nesting

Nesting-Algorithmen (wie SVGnest oder Deepnest) erfordern aufwendige Geometrieberechnungen. Werden sie in der Chromium-Umgebung ausgeführt, lassen sich WebAssembly-Module (WASM) nutzen. Das beschleunigt die Berechnung der Teileplatzierung im Vergleich zu reinem JS erheblich und erlaubt den sofortigen Export nach DXF.

Fazit

Der Einsatz von Chromium für CAD-Aufgaben beseitigt die Abhängigkeit von serverseitigen SolidWorks- oder AutoCAD-Lizenzen. So lassen sich Cloud-Konfiguratoren (CPQ) aufbauen, die schnittfertige Dateien für das Laserschneiden in Sekundenschnelle liefern.

LinkedInGitHub