Preskoči na glavni sadržaj
← CutOptim Engine APIAPI za nesting · POST /v1/optimize/nest

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.

Zahtjev (izvadak) · POST /v1/optimize/nest
{
  "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 }
}
Odgovor, nacrtan iz sheets[].parts
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 preko POST /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
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"]
  }'
Python
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"])
JavaScript
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:

Česta pitanja

Postoji li besplatan API za nesting?
Cijelu integraciju možete izgraditi i isprobati besplatno: testni ključ ne stoji ništa, a 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?
Da. Stavite crtež u 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?
Oboje. Zadani motor lbf odgovara unutar zahtjeva, deterministički. 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?
Još ne. Dijelovi se raspoređuju prema vanjskoj konturi, pa mali dio ne završava u otvoru većega. To je u našem planu razvoja; dotad površina velikih izreza u rasporedu ostaje prazna.
Radi li rez zajedničkom linijom ili generira G-kod?
Ne. Odgovor daje položaj i zakret svakog dijela, duljinu reza, broj probijanja i raspored u DXF-u ili SVG-u, koji vaš CAM ili softver stroja pretvara u program rezanja.
Koliko stoji API za nesting?
Po paketu, ne po broju dijelova: Studio stoji 49 € mjesečno za 3.000 zahtjeva, a Scale 149 € mjesečno za 10.000 zahtjeva, bez PDV-a. Ograničenje je čvrsta mjesečna gornja granica po računu bez naplate prekoračenja.
Vraća li isti zahtjev uvijek isti raspored?
Uz zadani motor lbf da — isti ulaz daje isti izlaz, pa rezultate možete spremati u predmemoriju i uspoređivati. Asinkrona max pretraga vremenski je ograničena i to javlja oznakom deterministic: false u odgovoru.

Mjerila · Pročitajte API referencu →