Nesting API
A CutOptim nesting API sima HTTP-n helyez el szabálytalan alakú darabokat táblákon. A körvonalakat — koordinátaként vagy DXF- és SVG-fájlként — és a táblákat JSON-ban küldöd a POST /v1/optimize/nest végpontra; a válaszban ott van minden darab helye és elforgatása, a lapszám, a vágáshossz és a beszúrások száma, kérésre pedig a kész elrendezés DXF-ben és SVG-ben.
Ez ugyanaz a valódi alakos motor, amelyet a CutOptim app is használ: alapból azonnali és determinisztikus, és van aszinkron max keresés, ha egy hosszabb futás egy táblát spórolhat. A kulcsot magad kéred, az árak nyilvánosak, a POST /v1/validate/nest pedig ingyen, kulcs nélkül ellenőriz egy kérést.
Egy valódi hívás, a válaszából rajzolva
Négy darabtípus — egy L-konzol, egy merevítőlemez, egy hosszlyukas lemez és egy SVG-fájlként küldött karima — egy táblán, amelyen egy befogási zónát el kell kerülniük. Lent a valódi kérés egy részlete; a táblát a motor által visszaadott koordinátákból rajzoltuk.
{
"parts": [
{ "name": "bracket", "polygon": […], "qty": 12, … },
{ "name": "gusset", "polygon": […], "qty": 14, … },
{ "name": "plate", "polygon": […], "holes": […], "qty": 12, … },
{ "name": "flange", "source": { … }, "qty": 10, … }
],
"stock": [{ "w": 2500, "h": 1250, "exclusions": […], … }],
"options": { "minSeparation": 5, "edgeClearance": 10 }
}- Lapok
- 1
- sheetCount
- Kitöltés
- 56,32%
- density
- Elhelyezett darabok
- 48 / 48
- placed
- Vágáshossz
- 49 463
- cutLength
- Beszúrások
- 110
- pierces
Lézerrel vágott acél alkatrészek: hármat koordinátákkal küldünk, a karimát SVG-fájlként (source). Egyik darab sem lóg bele a befogási zónába (exclusions), és mind tartja a kért távközt (minSeparation).
Mit tud a nesting API
- Tetszőleges, belső kivágásos poligonok valódi alakos nestingje: a darabok egymás homorú zugaiba illeszkednek — 6 tábla, ahol ugyanezek a darabok befoglaló téglalappal 9-et igényelnek.
- Darabok koordinátaként vagy fájlként: SVG- vagy DXF-dokumentum a
parts[].sourcemezőben, vagy egy sok darabos rajz szétbontása aPOST /v1/import/nestvégponttal. Semmit nem tárolunk. - Forgatás darabonként: az engedett szögek listája az
allowedRotationsmezőben, vagy "continuous". - Táblák téglalapként vagy poligonként, kizárt és gyengébb minőségű zónákkal (
stock[].exclusions), darabtávolsággal (options.minSeparation) és külön szélhagyással (options.edgeClearance). - Több táblaméret árral: a motor a legolcsóbb kombinációt választja, korlátozott készletnél (
options.respectStock) pedig a kötelező darabokat (parts[].priority) helyezi el először. - Anyagtudatos: az anyaggal megjelölt darab csak az azonos anyagú táblákra kerül.
- Elrendezés-fájlok a válaszban: az
include:["svg","dxf"]a felhasznált táblákat SVG-ként és STOCK, PARTS, HOLES és ZONES rétegű DXF-ként adja vissza.
Azonnal vagy alaposan: lbf és max
Az alapértelmezett lbf motor a HTTP-kérésen belül válaszol, és ugyanarra a bemenetre mindig ugyanazt az elrendezést adja — az árajánlat mögötti terv a megrendelés mögötti terv. Az engine: "max" esetén a feladat aszinkron fut: kapsz egy job-azonosítót, a GET /v1/jobs/{id} végpontot kérdezed, a keresés pedig az options.timeBudgetMs keretében kevesebb táblás elrendezést keres. Soha nem ad rosszabbat az lbf-nél, és deterministic: false jelzést ad, mert egy időkorlátos keresés futásonként eltérhet. A kizárt zónás vagy poligon-táblás feladatot az lbf szolgálja ki, figyelmeztetéssel.
Koordináták vagy CAD-fájlok
Egy darab egy körvonal: egy általad választott mértékegységben megadott poligon, opcionális lyukakkal, és a válasz minden koordinátája ugyanebben az egységben jön vissza. Ha a darabjaid rajzokban vannak, küldd a rajzot — a parts[].source SVG- vagy DXF-dokumentumot fogad, és a szerver ugyanazzal a beolvasóval olvassa ki a körvonalat és a lyukakat, mint a CutOptim app. Egy sok darabos fájl előbb a POST /v1/import/nest végponton megy át, amely darabonként egy körvonalat ad vissza.
Mit kapsz vissza
Minden felhasznált tábla merev transzformációként sorolja fel a darabjait — name, x, y és rotation —, vagyis a saját körvonaladat forgatod és tolod el; semmi nem lesz újra közelítve. Az elrendezés mellett jön a sheetCount, a density, a placed és a total, a gépidő-becsléshez a cutLength és a pierces, a totalPrice, ha a tábláknak van ára, táblaméretenként a stockUsage, és az unplaced mindarra, ami nem fért el, az okkal a warnings mezőben. Az include:["svg","dxf"] kéréssel a rajzok ugyanabban a válaszban érkeznek.
Csomagok és korlátok
A Studio havidíja 49 EUR, ebben 3000 kérés van, a Scale havidíja 149 EUR, ebben 10 000 kérés; az árak nettók. A havi keret fiókonkénti kemény plafon, túllépési díj nélkül, a maradék keret pedig egy válaszfejlécben és a GET /v1/usage végponton jön vissza. Ingyenes tesztkulccsal még fizetés előtt megépítheted az integrációt, a POST /v1/validate/nest pedig bármely kérést kulcs és keret nélkül ellenőriz.
Amit (még) nem tud
Ezt inkább itt mondjuk el, mint egy értékesítési hívásban. A motor a külső körvonaluk szerint helyezi el a darabokat: nem tesz kis darabot nagyobb darab lyukába (part-in-part), nem vonja össze a közös éleket egy vágásba (common-line), és nem ír G-kódot — pozíciókat, vágáshosszt és beszúrásszámot, valamint DXF- vagy SVG-fájlt kapsz a saját CAM-edhez. Webszolgáltatás; telepíthető könyvtár nincs.
Hívd a saját kódodból
Ugyanaz a kis kérés három nyelven: két darabtípus, egy árazott táblaméret, 5 mm távköz, és az elrendezés SVG-ben és DXF-ben. A kulcsot cseréld a sajátodra.
curl https://api.cutoptim.com/v1/optimize/nest \
-H "Authorization: Bearer co_live_…" \
-H "Content-Type: application/json" \
-d '{
"parts": [
{ "name": "bracket", "polygon": [[0,0],[300,0],[300,100],[100,100],[100,300],[0,300]], "qty": 12, "allowedRotations": [0,90,180,270] },
{ "name": "plate", "polygon": [[0,0],[240,0],[240,160],[0,160]], "holes": [[[60,65],[180,65],[180,95],[60,95]]], "qty": 8 }
],
"stock": [{ "w": 2500, "h": 1250, "price": 96 }],
"options": { "minSeparation": 5 },
"include": ["svg", "dxf"]
}'import requests
body = {
"parts": [
{ "name": "bracket", "polygon": [[0,0],[300,0],[300,100],[100,100],[100,300],[0,300]], "qty": 12, "allowedRotations": [0,90,180,270] },
{ "name": "plate", "polygon": [[0,0],[240,0],[240,160],[0,160]], "holes": [[[60,65],[180,65],[180,95],[60,95]]], "qty": 8 }
],
"stock": [{ "w": 2500, "h": 1250, "price": 96 }],
"options": { "minSeparation": 5 },
"include": ["svg", "dxf"]
}
r = requests.post("https://api.cutoptim.com/v1/optimize/nest",
headers={"Authorization": "Bearer co_live_…"}, json=body, timeout=30)
plan = r.json()
print(plan["metrics"]["sheetCount"], len(plan["sheets"]))
open("nest.dxf", "w").write(plan["dxf"])const body = {
"parts": [
{ "name": "bracket", "polygon": [[0,0],[300,0],[300,100],[100,100],[100,300],[0,300]], "qty": 12, "allowedRotations": [0,90,180,270] },
{ "name": "plate", "polygon": [[0,0],[240,0],[240,160],[0,160]], "holes": [[[60,65],[180,65],[180,95],[60,95]]], "qty": 8 }
],
"stock": [{ "w": 2500, "h": 1250, "price": 96 }],
"options": { "minSeparation": 5 },
"include": ["svg", "dxf"]
};
const r = await fetch("https://api.cutoptim.com/v1/optimize/nest", {
method: "POST",
headers: { "Authorization": "Bearer co_live_…", "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const plan = await r.json();
console.log(plan.metrics.sheetCount, plan.sheets.length);Iparág szerint
Ugyanaz a végpont, két szakmára elmagyarázva:
Szabálytalan poligonok valódi alakú nestingje, kizárási zónákkal.
Valódi alakú nesting lemezre, lézeres, plazmás vagy vízsugaras vágáshoz.
Gyakori kérdések
Van ingyenes nesting API?
POST /v1/validate/nest pedig bármely kérést kulcs és keret nélkül ellenőriz. Az éles forgalom fizetős, fix havi díjas csomagon fut.Küldhetek DXF- vagy SVG-fájlt koordináták helyett?
parts[].source mezőbe, és a szerver kiolvassa belőle a körvonalat és a lyukakat. A sok darabos fájl a POST /v1/import/nest végponton megy át, amely darabonként egy körvonalat ad vissza. A fájlokat memóriában dolgozzuk fel, nem tároljuk.Szinkron vagy aszinkron a nesting API?
engine: "max" háttérfeladatként fut, amelyet a GET /v1/jobs/{id} végponton kérdezel le; az options.timeBudgetMs keretében kevesebb táblát keres, és soha nem ad rosszabb elrendezést az lbf-nél.Tud part-in-part nestinget?
Tud common-line vágást vagy G-kódot?
Mennyibe kerül a nesting API?
Ugyanarra a kérésre mindig ugyanazt az elrendezést kapom?
deterministic: false jelzi.