API za nesting
CutOptim API za nesting raspoređuje dijelove nepravilnog oblika na ploče običnim HTTP-om. Konture — kao koordinate ili kao datoteke DXF i SVG — i ploče šaljete u JSON-u na POST /v1/optimize/nest; odgovor sadrži položaj i zakret svakog dijela, broj ploča, duljinu reza i broj probijanja te, na zahtjev, gotov raspored u DXF-u i SVG-u.
To je isti motor za nesting po stvarnom obliku koji koristi aplikacija CutOptim: zadano trenutačan i determinističan, s asinkronom max pretragom kad duži izračun može uštedjeti ploču. Ključeve izdajete sami, cijene su javne, a POST /v1/validate/nest besplatno i bez ključa provjerava zahtjev.
Stvarni poziv, nacrtan iz njegova odgovora
Četiri vrste dijelova — L-kutnik, ojačanje, ploča s utorom i prirubnica poslana kao SVG datoteka — na jednoj ploči sa zonom stezanja koju dijelovi moraju izbjeći. Ispod je izvadak stvarnog tijela zahtjeva; ploča je nacrtana iz koordinata koje je motor vratio.
{
"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 }
}- Ploče
- 1
- sheetCount
- Popunjenost
- 56,32 %
- density
- Postavljeni dijelovi
- 48 / 48
- placed
- Duljina reza
- 49.463
- cutLength
- Probijanja
- 110
- pierces
Čelični dijelovi rezani laserom: tri poslana kao koordinate, prirubnica kao SVG datoteka (source). Nijedan dio ne ulazi u zonu stezanja (exclusions) i svi drže traženi razmak (minSeparation).
Što radi API za nesting
- Nesting po stvarnom obliku za proizvoljne poligone s unutarnjim otvorima; dijelovi ulaze u udubljenja drugih dijelova — 6 ploča ondje gdje isti dijelovi po opisanom pravokutniku trebaju 9.
- Dijelovi kao koordinate ili kao datoteke: SVG ili DXF dokument u
parts[].source, ili crtež s mnogo dijelova podijeljen prekoPOST /v1/import/nest. Ništa se ne pohranjuje. - Zakret po dijelu: popis dopuštenih kutova u
allowedRotations, ili "continuous". - Ploče pravokutne ili poligonalne, sa zabranjenim zonama i zonama slabije kvalitete (
stock[].exclusions), razmakom između dijelova (options.minSeparation) i zasebnim rubnim razmakom (options.edgeClearance). - Više formata ploča s cijenom: motor bira najjeftiniju kombinaciju, a uz
options.respectStock, kod ograničene zalihe, najprije postavlja obvezne dijelove (parts[].priority). - Prema materijalu: dio označen materijalom postavlja se samo na ploče istog materijala.
- Datoteke rasporeda u odgovoru:
include:["svg","dxf"]vraća korištene ploče kao SVG i kao DXF sa slojevima STOCK, PARTS, HOLES i ZONES.
Odmah ili temeljito: lbf i max
Zadani motor lbf odgovara unutar HTTP zahtjeva i za isti ulaz uvijek vraća isti raspored — plan iza ponude je plan iza narudžbe. Uz engine: "max" posao se izvodi asinkrono: dobivate id posla i pitate GET /v1/jobs/{id}, a pretraga koristi options.timeBudgetMs da pronađe raspored na manje ploča. Nikad ne vraća ništa lošije od lbf-a i javlja deterministic: false, jer se vremenski ograničena pretraga može razlikovati između pokretanja. Posao sa zabranjenim zonama ili poligonalnim pločama poslužuje lbf, uz upozorenje.
Koordinate ili CAD datoteke
Dio je kontura: poligon u jedinici po vašem izboru, s neobaveznim otvorima, a svaka koordinata u odgovoru vraća se u istoj jedinici. Ako su vam dijelovi u crtežima, pošaljite crtež — parts[].source prima SVG ili DXF dokument, a poslužitelj iz njega čita konturu i otvore istim parserom koji koristi aplikacija CutOptim. Datoteka s mnogo dijelova najprije prolazi kroz POST /v1/import/nest, koji vraća jednu konturu po dijelu.
Što dobivate natrag
Svaka korištena ploča navodi svoje dijelove kao krutu transformaciju — name, x, y i rotation — pa vlastitu konturu zakrećete i pomičete; ništa se ne aproksimira ponovno. Uz raspored stižu sheetCount, density, placed i total, cutLength i pierces za procjenu strojnog vremena, totalPrice kad ploče imaju cijenu, stockUsage po formatu te unplaced za sve što nije stalo, s razlogom u warnings. Uz include:["svg","dxf"] crteži stižu u istom odgovoru.
Paketi i ograničenja
Studio stoji 49 € mjesečno za 3.000 zahtjeva, Scale 149 € mjesečno za 10.000 zahtjeva; cijene su bez PDV-a. Mjesečno ograničenje je čvrsta gornja granica po računu bez naplate prekoračenja, a preostala kvota vraća se u zaglavlju odgovora i preko GET /v1/usage. S besplatnim testnim ključem izgradite integraciju prije plaćanja, a POST /v1/validate/nest provjerava svaki zahtjev bez ključa i bez trošenja kvote.
Što (još) ne radi
Radije to kažemo ovdje nego na prodajnom sastanku. Motor raspoređuje dijelove prema vanjskoj konturi: ne stavlja male dijelove u otvore većih (dio u dijelu), ne spaja zajedničke rubove u jedan rez (rez zajedničkom linijom) i ne piše G-kod — dobivate položaje, duljinu reza, broj probijanja te DXF ili SVG datoteke za vlastiti CAM. To je web-usluga; nema biblioteke za instalaciju.
Pozovite ga iz svog koda
Isti mali zahtjev na tri jezika: dvije vrste dijelova, jedan format ploče s cijenom, razmak od 5 mm i raspored natrag kao SVG i DXF. Zamijenite ključ svojim.
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);Po djelatnosti
Isti endpoint, objašnjen za dvije struke:
Nesting nepravilnih poligona po stvarnom obliku, sa zonama isključenja.
Nesting po stvarnom obliku na ploče lima za laser, plazmu ili vodeni mlaz.
Česta pitanja
Postoji li besplatan API za nesting?
POST /v1/validate/nest provjerava svaki zahtjev bez ključa i bez kvote. Produkcijski promet radi na plaćenom paketu s fiksnom mjesečnom cijenom.Mogu li umjesto koordinata poslati DXF ili SVG datoteke?
parts[].source i poslužitelj iz njega čita konturu i otvore. Datoteka s mnogo dijelova prolazi kroz POST /v1/import/nest, koji vraća jednu konturu po dijelu. Datoteke se obrađuju u memoriji i ne pohranjuju se.Je li API za nesting sinkron ili asinkron?
engine: "max" radi kao pozadinski posao koji provjeravate preko GET /v1/jobs/{id}; koristi options.timeBudgetMs za traženje manjeg broja ploča i nikad ne vraća lošiji raspored od lbf-a.Podržava li nesting dio u dijelu?
Radi li rez zajedničkom linijom ili generira G-kod?
Koliko stoji API za nesting?
Vraća li isti zahtjev uvijek isti raspored?
deterministic: false u odgovoru.