Ugrás a tartalomhoz
← CutOptim Engine APINesting API · POST /v1/optimize/nest

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.

Kérés (részlet) · 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 }
}
Válasz, a sheets[].parts alapján rajzolva
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[].source mezőben, vagy egy sok darabos rajz szétbontása a POST /v1/import/nest végponttal. Semmit nem tárolunk.
  • Forgatás darabonként: az engedett szögek listája az allowedRotations mező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
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);

Iparág szerint

Ugyanaz a végpont, két szakmára elmagyarázva:

Gyakori kérdések

Van ingyenes nesting API?
A teljes integrációt ingyen megépítheted és tesztelheted: a tesztkulcs nem kerül semmibe, a 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?
Igen. Tedd a rajzot a 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?
Mindkettő. Az alapértelmezett lbf motor a kérésen belül, determinisztikusan válaszol. Az 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?
Még nem. A darabokat a külső körvonaluk szerint helyezzük el, így kis darab nem kerül nagyobb darab lyukába. Rajta van a fejlesztési tervünkön; addig a nagy kivágások területe üresen marad az elrendezésben.
Tud common-line vágást vagy G-kódot?
Nem. A válasz megadja minden darab helyét és elforgatását, a vágáshosszt és a beszúrások számát, valamint az elrendezést DXF-ben vagy SVG-ben, amelyből a CAM- vagy gépszoftvered készít vágóprogramot.
Mennyibe kerül a nesting API?
Csomag szerint, nem darabszám szerint: a Studio havidíja 49 EUR (3000 kérés), a Scale havidíja 149 EUR (10 000 kérés), nettó. A keret fiókonkénti kemény havi plafon, túllépési díj nélkül.
Ugyanarra a kérésre mindig ugyanazt az elrendezést kapom?
Az alapértelmezett lbf motorral igen — ugyanaz a bemenet ugyanazt a kimenetet adja, így az eredmény cache-elhető és összehasonlítható. Az aszinkron max keresés időkorlátos, és ezt a válaszban a deterministic: false jelzi.

Benchmarkok · Engine API-referencia →