API pro nesting plechu
Ano — API pro nesting plechu existuje. Rozmisťování nepravidelných plechových dílů — konzol, výztuh, přírub, těsnění — na tabule plechu je úloha nestingu podle skutečného tvaru a CutOptim Engine API ji řeší přes HTTP na POST /v1/optimize/nest. Váš ERP, MES nebo kalkulační software pošle obrysy dílů a rozměry tabulí jako JSON a dostane zpět rozmístěné rozvržení, umístění každého dílu a počet tabulí — pro laser, plazmu i vodní paprsek.
Funguje to už dnes. Nestingové jádro (jagua-rs, geometrické kolizní jádro) v produkci běží za POST /v1/optimize/nest — jiná třída algoritmu než obdélníkový gilotinový packer, který vrací nest podle skutečného tvaru, ne obdélníkový plán řezání.
Všechny formáty, enginy, limity a ukázky kódu pro vývojáře: API pro nesting CutOptim
{
"parts": [
{ "name": "gusset",
"polygon": [[0,0],[400,0],[0,400]],
"qty": 16, "allowedRotations": [0,90,180,270] },
{ "name": "bracket",
"polygon": [[0,0],[350,0],[350,120],[120,120],[120,350],[0,350]],
"qty": 10, "allowedRotations": "continuous",
"meta": { "part": "BRK-350" } }
],
"stock": [
{ "w": 3000, "h": 1500, "qty": 12,
"exclusions": [{ "polygon": [[0,0],[250,0],[0,250]], "quality": 0 }] }
],
"options": { "minSeparation": 2, "edgeClearance": 10 }
}Nesting není součástí veřejného dema — spusťte tento příklad s bezplatným testovacím klíčem. Vytvořit bezplatný testovací klíč
- Funguje už dnes na
POST /v1/optimize/nest— libovolné polygonální díly (s otvory), nejen obdélníky. - Vyloučené zóny po jednotlivých tabulích rozmisťují kolem vady plechu, otisku upínky nebo předtištěné plochy (
stock[].exclusions). - Rozdělení podle materiálu: označte díly a tabule a každý díl se rozmisťuje jen na tabuli vlastního materiálu.
- Připojte objekt meta (číslo dílu, řádek zakázky) a vrátí se u každé umístěné kopie, takže nest sedí s vaším ERP.
- Několik velikostí tabulí: nest je porovná podle plochy tabulí, nebo podle ceny s
minimizeCost, a může je míchat — poloprázdná poslední tabule se přesune na menší velikost. - Na reprezentativní zakázce o 272 dílech použil nest 6 tabulí, kde tytéž díly podle opsaného obdélníku potřebují 9 — poctivá metrika je počet tabulí, ne procento zaplnění.
- Validace zdarma:
POST /v1/validate/nestzkontroluje zakázku bez klíče a bez kvóty.
Proč to plechaři potřebují
Plech je drahý a nepravidelné díly jím plýtvají: obdélníkový packer bere opsaný obdélník každého dílu jako plný, takže vzduch uvnitř výztuhy nebo L-konzoly přijde nazmar. Nesting podle skutečného tvaru zaklesává skutečné obrysy do sebe a tento vzduch získá zpět. Na reprezentativní zakázce o 272 dílech použil nest 6 tabulí, kde tytéž díly podle opsaného obdélníku potřebují 9 — poctivá metrika je počet tabulí na týchž dílech, ne procento zaplnění.
Co posíláte a co se vrátí
Pošlete každý díl jako polygon (s volitelnými otvory) a množství, k tomu rozměry tabulí. Odpověď vrací každé umístění jako tuhou transformaci (rotace ve stupních, poté posun x/y), počet tabulí, zaplnění a díly, které se nevešly. Označte díly a tabule štítkem material a zakázka se rozdělí podle materiálu — díl se rozmisťuje jen na tabuli vlastního materiálu — a každý objekt meta (číslo dílu z vašeho ERP, řádek zakázky) se vrátí doslovně u každé umístěné kopie, takže nest sedí s vaším systémem. Každá tabule navíc nese řádek zásoby, ze kterého byla vyřezána, délku řezu a počet propalů; stockUsage sčítá tabule a cenu podle velikosti tabule.
Vyloučené zóny — rozmisťování kolem vady
Vyloučené zóny po jednotlivých tabulích (stock[].exclusions) umožňují enginu rozmisťovat kolem vady plechu, otisku upínky nebo předtištěné plochy — zóna s quality 0 je zakázaná oblast pro každý díl. Otáčení může být spojité nebo diskrétní seznam; options.minSeparation nastavuje rozestup mezi díly podle šířky hořáku nebo paprsku a options.edgeClearance odstup od okraje tabule. Rozvržení je deterministické: připnuté seed zopakuje stejný nest pro nabídku nebo audit.
Okamžitě pro nabídku, max pro zakázku
POST /v1/optimize/nest odpovídá synchronně s enginem lbf — deterministicky a v rámci požadavku, dost rychle, aby se zakázka dala nacenit, zatímco zákazník čeká. Když se zakázka uvolňuje na stroj, pošlete stejné tělo s engine: "max" a dotazujte GET /v1/jobs/{id}: nejdřív spustí lbf, pak stráví časový rozpočet, který nastavíte (options.timeBudgetMs), hledáním rozvržení s méně tabulemi a nikdy nevrátí víc. Odpověď má v obou případech stejnou podobu; tabuli s vyloučenými zónami v té úloze stále obsluhuje lbf, s upozorněním.
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 nesting plechu?
POST /v1/optimize/nest. Pošlete každý díl jako polygon (s volitelnými otvory) a k tomu rozměry tabulí a dostanete zpět rozmístěné rozvržení, umístění každé kopie a počet tabulí — pro laser, plazmu nebo vodní paprsek. Je to geometrické kolizní jádro, které v produkci běží už dnes.Zvládne vady plechu nebo oblasti upínek?
stock[].exclusions) — polygony, od kterých engine drží každý díl pryč. Zóna s quality 0 je zakázaná oblast, takže můžete rozmisťovat kolem vady, otisku upínky nebo předtištěné plochy. Obdélníkové API tuto schopnost vyjádřit neumí.Mohu díly označit čísly dílů z mého ERP?
Kolik tabulí ušetří?
Dokáže vybírat mezi několika velikostmi tabulí?
options.minimizeCost — takže odpověď nezávisí na pořadí, v jakém je uvedete. Může velikosti i míchat: každá tabule, ta nejméně zaplněná jako první, se znovu rozmístí na levnější nebo menší velikosti a nahradí se, když je plán jako celek lepší, takže se poloprázdná poslední tabule často přesune na menší velikost. sheets[].stock a stockUsage říkají, z jaké velikosti každá tabule pochází.Hlásí, kolik tabule malá zakázka využije?
usedWidth, usedHeight a usedArea — opsaný obdélník jejích umístěných dílů od rohu tabule — takže nabídka může účtovat pás nebo opsaný obdélník místo celé tabule. Nejméně zaplněná tabule se ve výchozím stavu kompaktuje směrem k tomuto rohu, s podmnožinami natočení, která každý díl povoluje; počet tabulí a cena se nikdy nezmění.