API pro řezání dřeva a konstrukčního řeziva
Ano — API pro řezání konstrukčního dřeva na délku existuje. Dělení trámů, krokví, sloupků, latí a prken na délku je 1D úloha dělení tyčového materiálu s jedním pravidlem navíc, které prosté lineární řezání ignoruje: průřez se musí shodovat. Díl 50×150 nelze vyřezat z tyče 50×100. CutOptim Engine API to řeší přes HTTP na POST /v1/optimize/wood — váš ERP, kalkulační software nebo software řezivářského skladu pošle seznam řezů a dostupný materiál jako JSON a dostane zpět optimalizovaný plán řezání, přiřazený a vyřešený po jednotlivých průřezech, s počtem tyčí a využitím.
Je to samostatný režim, ne obal nad /v1/optimize/1d: lineární 1D bere každou tyč jako zaměnitelnou, kdežto dřevo má identitu — průřez se musí shodovat. Poslat místo toho N seskupených 1D požadavků stojí N volání na jednu zakázku, přenese přiřazování materiálu na vás a vrátí součet, který se neshoduje s tím, co ukazuje aplikace. Tento endpoint přiřazení provede a vrátí celou zakázku jedním voláním, po průřezech i za celek.
{
"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 }
}- Funguje už dnes na
POST /v1/optimize/wood— stejný engine jako aplikace, s ohledem na průřez. - Průřezy se přiřazují a řeší nezávisle: díl 50×150 se řeže jen z materiálu 50×150.
- sections[] nese tyče, součty a plán řezání za každý průřez; unmatched hlásí poptávku, pro kterou není žádný materiál.
- Deterministické a s připnutou verzí — nabídku na řezání lze zopakovat kvůli auditu nebo opakované zakázce.
- Hlášený zbytek je použitelný zůstatek — šířka řezu, která ho uvolňuje, je už odečtena (u každé tyče).
- Validace zdarma:
POST /v1/validate/woodzkontroluje zakázku bez klíče a bez kvóty.
Proč to potřebují tesaři a obchodníci se dřevem
Konstrukční dřevo se nakupuje v dlouhých délkách a řeže se na mnoho dílů a řezání v pořadí seznamu nechá krátký odřezek téměř na každé délce. Optimalizátor, který zná průřez, přeskládá řezy uvnitř každého průřezu, aby každý potřeboval co nejméně délek. V kalkulačním, ERP nebo pokladním procesu to API dělá u každé zakázky automaticky — stavebniny mohou službu řezání nacenit a naplánovat rovnou z objednávky a plán sedí s tím, co sklad skutečně nařeže.
Přiřazení průřezu — část úlohy, kterou 1D zahazuje
Každý díl i každý řádek zásoby nese dvě strany průřezu, sw a sh, v libovolném pořadí (50×150 a 150×50 je tentýž hranol otočený). Engine rozdělí zakázku podle průřezu, každý díl přiřadí jen k materiálu odpovídajícího průřezu a každý průřez řeší nezávisle. Odpověď přijde jako sections[], každá s vlastními tyčemi, vlastními součty a vlastním plánem řezání, plus metriky za celou zakázku — a poptávka, jejíž průřez nemá žádný materiál, se hlásí zvlášť v unmatched, odděleně od dílů, které materiál měly a prostě se nevešly, protože náprava je jiná.
Deterministické — reprodukovatelné pro nabídky a audity
Stejný požadavek vrací vždy stejný plán řezání: žádná náhoda, žádné hodiny v algoritmu. Nabídku na řezání sestavenou z volání API lze po měsících zopakovat kvůli auditu nebo opakované zakázce a výsledky lze cachovat a v testech porovnávat. Zbytek hlášený u každé tyče je použitelný zůstatek — šířka řezu je už odečtena — a každý objekt meta, který připojíte (číslo artiklu, řádek zakázky), se vrátí u každého umístěného řezu, takže plán sedí s vaším systémem.
Dvoustránkové shrnutí (PDF v angličtině) — problém, co posíláte a co dostanete zpět, ukázka požadavku a odpovědi a jak na jádru stavět. Připraveno k tisku, s QR kódem zpět na tuto stránku.
Časté dotazy
Existuje API pro řezání dřeva nebo konstrukčního řeziva?
POST /v1/optimize/wood. Pošlete seznam řezů a materiál jako JSON, každé se dvěma stranami průřezu, a dostanete zpět optimalizovaný plán řezání přiřazený a vyřešený po jednotlivých průřezech, s počtem tyčí, využitím a použitelnými zbytky. Je to stejný engine, který pohání aplikaci, přes HTTP.Proč pro dřevo prostě nepoužít endpoint 1D?
Co se stane s dílem, jehož průřez není skladem?
POST /v1/validate/wood, bez klíče a bez kvóty.Zohlední šířku kotouče a začištění konců?
options.kerf je šířka pilového kotouče, odečtená u každého řezu; options.trim.start a options.trim.end rezervují čelní ořez na každém konci délky. Zbytek hlášený u každé tyče je použitelný zůstatek po obojím a options.minOffcut hlásí jen zbytky dost dlouhé na to, aby se vyplatilo je ponechat. Stejné volby platí pro každý průřez v zakázce.Dokáže plánovat jen z dřeva, které mám na skladě?
options.respectStock a množství každého řádku zásoby se stane tvrdým limitem, průřez po průřezu. Díly, které odpovídající materiál mají, ale nevešly se, se vrátí v unplaced, kdežto díly, jejichž průřez vůbec není skladem, se vrátí v unmatched, takže plán řekne, jestli řezat delší délky, nebo dokoupit chybějící průřez.