Přejít na hlavní obsah
← CutOptim Engine APIAPI pro nesting · POST /v1/optimize/nest

API pro nesting

API pro nesting od CutOptim rozmísťuje díly nepravidelného tvaru na tabule přes obyčejné HTTP. Obrysy — jako souřadnice nebo jako soubory DXF a SVG — a tabule pošlete v JSON na POST /v1/optimize/nest; odpověď obsahuje polohu a natočení každého dílu, počet tabulí, délku řezu a počet propalů a na požádání hotové rozložení v DXF a SVG.

Je to stejný tvarový nestingový engine, jaký používá aplikace CutOptim: ve výchozím stavu okamžitý a deterministický, s asynchronním hledáním max, když delší výpočet může ušetřit tabuli. Klíče si vystavíte sami, ceny jsou veřejné a POST /v1/validate/nest zkontroluje požadavek zdarma a bez klíče.

Skutečné volání nakreslené z jeho odpovědi

Čtyři typy dílů — L-úhelník, styčníkový plech, deska s drážkou a příruba poslaná jako soubor SVG — na jedné tabuli se zónou upnutí, které se díly musí vyhnout. Níže je výňatek ze skutečného těla požadavku; tabule je nakreslená ze souřadnic, které engine vrátil.

Požadavek (výňatek) · 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 }
}
Odpověď nakreslená ze sheets[].parts
Desky
1
sheetCount
Zaplnění
56,32 %
density
Umístěné díly
48 / 48
placed
Délka řezu
49 463
cutLength
Propaly
110
pierces

Ocelové díly řezané laserem: tři poslané jako souřadnice, příruba jako soubor SVG (source). Žádný díl nezasahuje do upínací zóny (exclusions) a všechny drží požadovaný odstup (minSeparation).

Co API pro nesting umí

  • Tvarový nesting libovolných polygonů s vnitřními otvory; díly zapadají do vydutých míst jiných dílů — 6 tabulí tam, kde stejné díly podle opsaného obdélníku potřebují 9.
  • Díly jako souřadnice nebo soubory: dokument SVG nebo DXF v parts[].source, nebo výkres s mnoha díly rozdělený přes POST /v1/import/nest. Nic se neukládá.
  • Natočení pro každý díl: seznam povolených úhlů v allowedRotations, nebo "continuous".
  • Tabule obdélníkové i polygonové, s vyloučenými zónami a zónami nižší kvality (stock[].exclusions), mezerou mezi díly (options.minSeparation) a samostatným okrajem tabule (options.edgeClearance).
  • Více formátů tabulí s cenou: engine vybere nejlevnější kombinaci a s options.respectStock při omezené zásobě umístí nejdřív povinné díly (parts[].priority).
  • Podle materiálu: díl označený materiálem se vnoří jen na tabule z téhož materiálu.
  • Soubory rozložení v odpovědi: include:["svg","dxf"] vrátí použité tabule jako SVG a jako DXF s hladinami STOCK, PARTS, HOLES a ZONES.

Okamžitě, nebo důkladně: lbf a max

Výchozí engine lbf odpovídá v rámci HTTP požadavku a pro stejný vstup vrací vždy stejné rozložení — plán za nabídkou je plán za zakázkou. S engine: "max" úloha běží asynchronně: dostanete id úlohy a dotazujete se GET /v1/jobs/{id}, přičemž hledání využije options.timeBudgetMs k nalezení rozložení na menší počet tabulí. Nikdy nevrátí nic horšího než lbf a hlásí deterministic: false, protože časově omezené hledání se může mezi běhy lišit. Úlohu s vyloučenými zónami nebo polygonovými tabulemi obslouží lbf s varováním.

Souřadnice, nebo soubory CAD

Díl je obrys: polygon v jednotce podle vaší volby, volitelně s otvory, a každá souřadnice v odpovědi se vrací ve stejné jednotce. Pokud máte díly ve výkresech, pošlete výkres — parts[].source přijímá dokument SVG nebo DXF a server z něj načte obrys a otvory stejným parserem, jaký používá aplikace CutOptim. Soubor s mnoha díly projde nejdřív přes POST /v1/import/nest, který vrátí jeden obrys na díl.

Co dostanete zpět

Každá použitá tabule uvádí své díly jako tuhou transformaci — name, x, y a rotation — takže svůj vlastní obrys otočíte a posunete; nic se znovu neaproximuje. K rozložení přijde sheetCount, density, placed a total, cutLength a pierces pro odhad strojního času, totalPrice, když tabule mají cenu, stockUsage pro každý formát a unplaced pro vše, co se nevešlo, s důvodem ve warnings. S include:["svg","dxf"] přijdou výkresy ve stejné odpovědi.

Tarify a limity

Studio stojí 49 € měsíčně za 3 000 požadavků, Scale 149 € měsíčně za 10 000 požadavků; ceny bez DPH. Měsíční limit je pevný strop na účet bez poplatků za překročení a zbývající kvóta se vrací v hlavičce odpovědi a přes GET /v1/usage. S bezplatným testovacím klíčem postavíte integraci dřív, než zaplatíte, a POST /v1/validate/nest zkontroluje jakýkoli požadavek bez klíče a bez čerpání kvóty.

Co (zatím) neumí

Raději to řekneme tady než na obchodní schůzce. Engine vnořuje díly podle vnějšího obrysu: nevkládá malé díly do otvorů větších (díl v dílu), neslučuje společné hrany do jednoho řezu (řez společnou linií) a negeneruje G-kód — dostanete polohy, délku řezu, počet propalů a soubory DXF nebo SVG pro vlastní CAM. Je to webová služba; žádnou knihovnu instalovat nemusíte.

Zavolejte ho ze svého kódu

Stejný malý požadavek ve třech jazycích: dva typy dílů, jeden formát tabule s cenou, mezera 5 mm a rozložení zpět jako SVG a DXF. Klíč nahraďte svým.

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);

Podle odvětví

Stejný endpoint vysvětlený pro dvě řemesla:

Časté dotazy

Existuje bezplatné API pro nesting?
Celou integraci můžete postavit a vyzkoušet zdarma: testovací klíč nic nestojí a POST /v1/validate/nest zkontroluje jakýkoli požadavek bez klíče a bez kvóty. Produkční provoz běží na placeném tarifu s pevnou měsíční cenou.
Mohu místo souřadnic poslat soubory DXF nebo SVG?
Ano. Vložte výkres do parts[].source a server z něj načte obrys a otvory. Soubor s mnoha díly projde přes POST /v1/import/nest, který vrátí jeden obrys na díl. Soubory se zpracují v paměti a neukládají se.
Je API pro nesting synchronní, nebo asynchronní?
Obojí. Výchozí engine lbf odpovídá v rámci požadavku, deterministicky. engine: "max" běží jako úloha na pozadí, na kterou se ptáte přes GET /v1/jobs/{id}; využije options.timeBudgetMs k hledání menšího počtu tabulí a nikdy nevrátí horší rozložení než lbf.
Podporuje nesting díl v dílu?
Zatím ne. Díly se vnořují podle vnějšího obrysu, takže malý díl se nedostane do otvoru většího. Je to v našem plánu vývoje; do té doby zůstává plocha velkých výřezů v rozložení prázdná.
Umí řez společnou linií nebo generuje G-kód?
Ne. Odpověď uvádí polohu a natočení každého dílu, délku řezu, počet propalů a rozložení v DXF nebo SVG, ze kterého váš CAM nebo software stroje vytvoří řezný program.
Kolik API pro nesting stojí?
Podle tarifu, ne podle počtu dílů: Studio stojí 49 € měsíčně za 3 000 požadavků a Scale 149 € měsíčně za 10 000 požadavků, bez DPH. Limit je pevný měsíční strop na účet bez poplatků za překročení.
Vrátí stejný požadavek vždy stejné rozložení?
S výchozím enginem lbf ano — stejný vstup dává stejný výstup, takže výsledky můžete cachovat a porovnávat. Asynchronní hledání max je časově omezené a v odpovědi to hlásí příznakem deterministic: false.

Benchmarky · Reference Engine API →