Fűrészáru- és szerkezeti faanyag-vágás API
Igen, van API a szerkezeti fűrészáru hosszra vágásához. Gerendák, szarufák, oszlopok, lécek és deszkák hosszra vágása 1D szabási feladat (cutting stock) egy extra szabállyal, amelyet az egyszerű lineáris vágás figyelmen kívül hagy: a keresztmetszetnek egyeznie kell. Egy 50×150-es darab nem jöhet ki egy 50×100-as rúdból. A CutOptim Engine API ezt a POST /v1/optimize/wood végponton oldja meg HTTP-n — az ERP-d, az árajánlatkészítő vagy a fatelep szoftvered JSON-ban elküldi a darablistát és a rendelkezésre álló alapanyagot, és visszakapja az optimalizált vágástervet, keresztmetszetenként párosítva és megoldva, a rudak számával és a kihasználással.
Ez önálló mód, nem a /v1/optimize/1d burkolója: a lineáris 1D minden rudat felcserélhetőnek tekint, a fűrészárunak viszont identitása van — a keresztmetszetnek egyeznie kell. Ha helyette N csoportosított 1D kérést küldesz, az egy munkához N hívás, az alapanyag-párosítás rád hárul, és az összesítés nem egyezik azzal, amit az app mutat. Ez a végpont elvégzi a párosítást, és az egész munkát egyetlen hívásban adja vissza, keresztmetszetenként és munkaszinten is.
{
"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 }
}- Már ma él a
POST /v1/optimize/woodvégponton — ugyanaz a motor, mint az appban, keresztmetszet-tudatosan. - A keresztmetszeteket külön párosítja és oldja meg: az 50×150-es darab csak 50×150-es alapanyagból vágható.
- A sections[] keresztmetszetenként hordozza a rudakat, az összesítést és a vágástervet; az unmatched az alapanyag nélküli igényt jelenti.
- Determinisztikus és verzióhoz kötött — egy vágási árajánlat auditra vagy ismétlődő rendelésre reprodukálható.
- A jelentett maradék a használható maradék — a levágással járó fűrészrés már le van vonva (rudanként).
- Ingyenes ellenőrzés: a
POST /v1/validate/woodkulcs és kvóta nélkül ellenőrzi a munkát.
Miért kell az ácsoknak és a fakereskedőknek
A szerkezeti fűrészáru hosszú szálakban érkezik, és sok darabra vágják, a lista sorrendjében vágva pedig szinte minden szálon marad egy rövid maradék. Egy keresztmetszet-tudatos optimalizáló az egyes keresztmetszeteken belül rendezi át a vágásokat, hogy mindegyikhez a lehető legkevesebb szál kelljen. Árazó, ERP vagy kasszarendszeri folyamatban az API ezt minden munkánál automatikusan elvégzi — egy építőanyag-kereskedő közvetlenül a rendelésből árazhat és tervezhet vágási szolgáltatást, a terv pedig egyezik azzal, amit a telep ténylegesen levág.
Keresztmetszet-párosítás — a feladat része, amit az 1D elhagy
Minden darab és minden alapanyag-sor két keresztmetszeti oldalt visel, sw és sh néven, bármelyik sorrendben (az 50×150 és a 150×50 ugyanaz a rúd, megfordítva). A motor keresztmetszet szerint particionálja a munkát, minden darabot csak kompatibilis keresztmetszetű alapanyaghoz párosít, és minden keresztmetszetet külön old meg. A válasz sections[] tömbként érkezik, mindegyikben saját rudakkal, saját összesítéssel és saját vágástervvel, plusz munkaszintű mutatókkal — az az igény pedig, amelynek a keresztmetszetéhez egyáltalán nincs alapanyag, külön jelenik meg az unmatched listában, elkülönítve azoktól a darabokat, amelyekhez volt alapanyag, csak nem fértek el, mert a megoldás más.
Determinisztikus — reprodukálható árajánlathoz és auditáláshoz
Ugyanaz a kérés mindig ugyanazt a vágástervet adja vissza: nincs véletlenszerűség, nincs óra az algoritmusban. Az API-hívásból készült vágási árajánlat hónapokkal később is reprodukálható egy audithoz vagy egy ismétlődő rendeléshez, az eredmények pedig cache-elhetők és tesztekben összevethetők. Az egyes rudakon jelentett maradék a használható maradék — a levágással járó fűrészrés már le van vonva —, a csatolt meta objektum (cikkszám, rendelési sor) pedig minden elhelyezett vágásnál visszajön, így a terv egyeztethető a saját rendszeredben.
Kétoldalas összefoglaló (PDF, angol nyelven) — a probléma, mit küldesz és mit kapsz vissza, egy kérés és egy válasz, és hogyan építhetsz a motorra. Nyomtatásra kész, QR-kóddal erre az oldalra.
Gyakori kérdések
Van API fűrészáru vagy szerkezeti faanyag vágásához?
POST /v1/optimize/wood. JSON-ban küldöd a vágási listát és az alapanyagot, mindegyiket két keresztmetszeti oldallal, és visszakapod az optimalizált vágástervet, keresztmetszetenként párosítva és megoldva, a rudak számával, a kihasználással és a használható maradékkal. Ugyanaz a motor, amelyik az appot hajtja, HTTP-n.Miért nem használom egyszerűen az 1D végpontot a fűrészáruhoz?
Mi történik azzal a darabbal, amelynek a keresztmetszete nincs készleten?
POST /v1/validate/wood végponton is, kulcs és kvóta nélkül.Számol a fűrészlap vastagságával és a végek derékszögre vágásával?
options.kerf a fűrészlap vastagsága, minden vágásnál levonódik; az options.trim.start és az options.trim.end a hosszak mindkét végén a derékszögre vágásnak tart fenn helyet. Az egyes rudakon jelentett maradék mindkettő után megmaradó használható rész, az options.minOffcut pedig csak a megtartásra érdemes hosszúságú maradékokat jelenti. Ugyanezek a beállítások a munka minden keresztmetszetére érvényesek.Tud csak a telepemen lévő fűrészáruval tervezni?
options.respectStock értéket, és minden alapanyag-sor mennyisége kemény korláttá válik, keresztmetszetenként. Az a darab, amelyhez van megfelelő alapanyag, de nem fér el, az unplaced listában jön vissza, az a darab pedig, amelynek a keresztmetszete egyáltalán nincs készleten, az unmatched listában, így a terv megmondja, hogy hosszabb szálakat kell-e vágni, vagy egy hiányzó keresztmetszetet kell venni.