Holzzuschnitt-API für Konstruktionsholz
Ja — es gibt eine API zum Ablängen von Konstruktionsholz. Deckenbalken, Sparren, Ständer, Latten und Bretter auf Länge zu schneiden ist ein 1D-Zuschnittproblem mit einer zusätzlichen Regel, die der einfache Linearzuschnitt ignoriert: Der Querschnitt muss passen. Ein Teil 50×150 lässt sich nicht aus einer Stange 50×100 schneiden. Die CutOptim Engine API löst das über HTTP unter POST /v1/optimize/wood — Ihr ERP, Ihre Kalkulations- oder Holzhandelssoftware sendet die Schnittliste und das verfügbare Material als JSON und erhält den optimierten Schnittplan, nach Querschnitt zugeordnet und gelöst, mit Stangenzahl und Ausbeute zurück.
Das ist ein eigener Modus, kein Wrapper um /v1/optimize/1d: Der lineare 1D-Zuschnitt behandelt jede Stange als austauschbar, Holz dagegen hat eine Identität — der Querschnitt muss passen. N gruppierte 1D-Anfragen stattdessen zu senden kostet N Aufrufe für einen Auftrag, verlagert die Materialzuordnung zu Ihnen und ergibt eine Summe, die nicht mit dem übereinstimmt, was die App zeigt. Dieser Endpunkt übernimmt die Zuordnung und liefert den ganzen Auftrag in einem Aufruf zurück, je Abschnitt und auftragsweit.
{
"parts": [
{ "name": "Rafter", "sw": 50, "sh": 150, "length": 3200, "qty": 8 },
{ "name": "Noggin", "sw": 50, "sh": 100, "length": 600, "qty": 24,
"meta": { "ref": "C24-50x100" } }
],
"stock": [
{ "name": "C24 50x150", "sw": 50, "sh": 150, "length": 4800, "qty": 20, "price": 18.4 },
{ "name": "C24 50x100", "sw": 50, "sh": 100, "length": 4800, "qty": 30, "price": 12.5 }
],
"options": { "kerf": 3 }
}- Heute live auf
POST /v1/optimize/wood— dieselbe Engine wie die App, querschnittsbewusst. - Abschnitte werden unabhängig zugeordnet und gelöst: Ein Teil 50×150 wird nur aus Material 50×150 geschnitten.
- sections[] trägt rods, Summen und Schnittplan je Abschnitt; unmatched meldet Bedarf ganz ohne Material.
- Deterministisch und versionsfixiert — reproduzieren Sie ein Zuschnittangebot für ein Audit oder einen Wiederholauftrag.
- Das gemeldete Reststück ist der nutzbare Rest — die Sägeschnittbreite des freistellenden Schnitts ist bereits abgezogen (je Stange).
- Kostenlose Validierung:
POST /v1/validate/woodprüft einen Auftrag ohne Schlüssel und ohne Kontingent.
Warum Zimmerer und Holzhändler das brauchen
Konstruktionsholz wird in langen Längen gekauft und auf viele Teile geschnitten, und wer in Listenreihenfolge sägt, hinterlässt auf fast jeder Länge einen kurzen Rest. Ein querschnittsbewusster Optimierer ordnet die Schnitte innerhalb jedes Querschnitts so neu an, dass jeder Querschnitt mit möglichst wenigen Längen auskommt. In einem Kalkulations-, ERP- oder Kassenablauf erledigt die API das bei jedem Auftrag automatisch — ein Baustoffhändler kann einen Zuschnittservice direkt aus der Bestellung kalkulieren und planen, und der Plan stimmt mit dem überein, was das Holzlager tatsächlich schneidet.
Querschnitts-Zuordnung — der Teil des Problems, den 1D weglässt
Jedes Teil und jede Materialzeile trägt zwei Querschnittsseiten, sw und sh, in beliebiger Reihenfolge (50×150 und 150×50 sind derselbe umgedrehte Balken). Die Engine teilt den Auftrag nach Querschnitt auf, ordnet jedes Teil nur Material mit kompatiblem Querschnitt zu und löst jeden Abschnitt unabhängig. Die Response kommt als sections[] zurück, jeweils mit eigenen rods, eigenen Summen und eigenem Schnittplan, dazu auftragsweite metrics — und Bedarf, dessen Querschnitt überhaupt kein Material hat, wird getrennt in unmatched gemeldet, abgegrenzt von Teilen, für die Material da war und die schlicht nicht gepasst haben, weil die Abhilfe eine andere ist.
Deterministisch — reproduzierbar für Angebote und Audits
Dieselbe Anfrage liefert immer denselben Schnittplan: kein Zufall, keine Uhr im Algorithmus. Ein Zuschnittangebot, das auf einem API-Aufruf beruht, lässt sich Monate später für ein Audit oder einen Wiederholauftrag reproduzieren, und Ergebnisse lassen sich cachen und in Tests vergleichen. Das auf jeder Länge gemeldete Reststück ist der nutzbare Rest — die Sägeschnittbreite des freistellenden Schnitts ist bereits abgezogen —, und jedes meta-Objekt, das Sie anhängen (eine Artikelnummer, eine Auftragsposition), kommt bei jedem platzierten Schnitt zurück, sodass der Plan mit Ihrem System übereinstimmt.
Eine Zusammenfassung auf zwei Seiten (PDF in English) — das Problem, was Sie senden und zurückbekommen, ein Request und eine Response und wie Sie auf der Engine aufbauen. Druckfertig, mit QR-Code zurück zu dieser Seite.
FAQ
Gibt es eine API für den Zuschnitt von Holz und Konstruktionsholz?
POST /v1/optimize/wood. Sie senden die Schnittliste und das Material als JSON, jeweils mit zwei Querschnittsseiten, und erhalten den optimierten Schnittplan, je Abschnitt zugeordnet und gelöst, mit Stangenzahl, Ausbeute und nutzbaren Reststücken zurück. Es ist dieselbe Engine, die die App antreibt, über HTTP.Warum nicht einfach den 1D-Endpunkt für Holz nutzen?
Was passiert mit einem Teil, dessen Querschnitt nicht auf Lager ist?
POST /v1/validate/wood prüfen, ohne Schlüssel und ohne Kontingent.Kann es Sägeblattbreite und Besäumschnitt an den Enden berücksichtigen?
options.kerf ist die Sägeblattbreite, die bei jedem Schnitt abgezogen wird; options.trim.start und options.trim.end reservieren den Besäumschnitt an jedem Ende einer Länge. Das auf jeder Länge gemeldete Reststück ist der nutzbare Rest nach beidem, und options.minOffcut meldet nur Reststücke, die lang genug zum Aufheben sind. Dieselben Optionen gelten für jeden Querschnitt im Auftrag.Kann es nur mit dem Holz planen, das in meinem Lager liegt?
options.respectStock, und die Menge jeder Materialzeile wird zur harten Grenze, Abschnitt für Abschnitt. Teile mit passendem Material, die nicht passen, kommen in unplaced zurück, während Teile, deren Querschnitt überhaupt nicht auf Lager ist, in unmatched zurückkommen — so sagt Ihnen der Plan, ob Sie längere Längen schneiden oder einen fehlenden Querschnitt kaufen müssen.