Salta al contenuto principale
← CutOptim Engine APIEngine API · nesting · già disponibile

API di nesting per il taglio laser

Sì, esiste un’API per il nesting del taglio laser. Tagliare pezzi irregolari al laser è un problema di nesting true-shape: un pezzo è un poligono qualsiasi, non un rettangolo, e i pezzi si incastrano nelle rientranze concave gli uni degli altri. La CutOptim Engine API lo risolve via HTTP su POST /v1/optimize/nest: il tuo CAD/CAM, il gestionale o il software di preventivazione invia i contorni dei pezzi e le lastre a magazzino in JSON e riceve il layout annidato, il posizionamento di ogni pezzo e il numero di lastre.

È già disponibile. Il nesting è una classe di algoritmo diversa dal packer rettangolare guillotine — un motore geometrico di collisione (jagua-rs) che gira in produzione dietro POST /v1/optimize/nest — e restituisce quindi un nesting true-shape, non un piano di taglio rettangolare.

Tutti i formati, i motori, i limiti e gli esempi di codice per sviluppatori: API di nesting CutOptim

POST /v1/optimize/nest
{
  "parts": [
    { "name": "bracket",
      "polygon": [[0,0],[300,0],[300,100],[100,100],[100,300],[0,300]],
      "qty": 12, "allowedRotations": "continuous" },
    { "name": "gusset",
      "polygon": [[0,0],[280,0],[140,240]],
      "qty": 8, "allowedRotations": [0,90,180,270] }
  ],
  "stock": [{ "w": 3000, "h": 1500, "qty": 20 }],
  "options": { "minSeparation": 0.3, "edgeClearance": 5 }
}

Il nesting non è incluso nella demo pubblica — esegui questo esempio con una chiave di test gratuita. Crea una chiave di test gratuita

  • Già disponibile su POST /v1/optimize/nest — pezzi poligonali qualsiasi (con fori), non solo rettangoli.
  • Le zone di esclusione per lastra tengono i pezzi lontani da un difetto, dall’impronta di un morsetto o da un’area prestampata (stock[].exclusions).
  • Rotazione continua o discreta, minSeparation per la distanza tra i pezzi ed edgeClearance per il bordo della lastra.
  • Lunghezza di taglio e numero di forature per lastra, più lastre e prezzo per formato (stockUsage) — più formati possono essere mescolati dove costa meno.
  • Su un lavoro rappresentativo di 272 pezzi il nesting ha usato 6 lastre dove gli stessi pezzi per bounding box ne richiedono 9: la metrica onesta è il numero di lastre, non una percentuale di densità.
  • Deterministico: un seed fissato fa restituire alla stessa richiesta lo stesso nesting, per preventivi e verifiche.
  • Validazione gratuita: POST /v1/validate/nest controlla un lavoro senza chiave e senza quota.

Perché le officine laser hanno bisogno del nesting true-shape

Un packer rettangolare considera pieno il bounding box di ogni pezzo, quindi l’aria nelle rientranze di una squadra a L o di un fazzoletto triangolare va sprecata. Il nesting true-shape incastra i contorni reali e recupera quell’aria. Su un lavoro rappresentativo di 272 pezzi il nesting ha usato 6 lastre dove gli stessi pezzi disposti per bounding box ne richiedono 9: la metrica onesta è il numero di lastre sugli stessi pezzi, non una percentuale di densità (un bounding box mostra una densità più alta per un risultato peggiore).

Cosa invii e cosa ottieni

Invii ogni pezzo come contorno poligonale (con eventuali fori interni) e una quantità, più le lastre a magazzino. La risposta dà il posizionamento di ogni copia come trasformazione rigida — una rotazione in gradi, poi una traslazione x/y — e non un poligono riemesso: ruota il contorno in ingresso e aggiungi lo spostamento per ricostruire esattamente il posizionamento. Restituisce anche il numero di lastre, la densità per lastra e complessiva, e gli eventuali pezzi che non ci stavano — e per ogni lastra la riga di materiale da cui è stata ricavata, la lunghezza di taglio (il contorno che il fascio percorre, profili e fori) e il numero di forature, con stockUsage che totalizza lastre e prezzo per formato. Se indichi più formati di lastra, il nesting li confronta — per area della lastra, o per prezzo con minimizeCost — e può mescolarli dove costa meno, per esempio spostando su un formato più piccolo l’ultima lastra mezza vuota. Chiedi include:["svg","dxf"] e il layout ottenuto torna come file direttamente nella risposta.

Zone di esclusione e rotazione continua

Due cose che un’API rettangolare non sa esprimere arrivano con il motore di nesting. Le zone di esclusione per lastra (stock[].exclusions) tengono ogni pezzo lontano da un difetto, dall’impronta di un morsetto o da un’area prestampata: una zona con quality 0 è una regione vietata in modo assoluto. La rotazione può essere continua (qualsiasi angolo) o una lista discreta; options.minSeparation imposta la distanza tra i pezzi (la larghezza del fascio) e options.edgeClearance la distanza dal bordo della lastra, così le due possono differire. Il layout è deterministico: imposta options.seed e la stessa richiesta restituisce lo stesso nesting.

Istantaneo per il preventivo, max per l’ordine

POST /v1/optimize/nest risponde in modo sincrono con il motore lbf — deterministico e dentro la richiesta, abbastanza veloce da calcolare il prezzo di un lavoro mentre il cliente attende. Quando il lavoro viene rilasciato alla macchina, invia lo stesso corpo con engine: "max" e interroga GET /v1/jobs/{id}: esegue prima lbf, poi impiega un budget di tempo che imposti tu (options.timeBudgetMs) cercando un layout con meno lastre, e non ne restituisce mai di più. La risposta ha la stessa struttura in entrambi i casi; una lastra con zone di esclusione è comunque servita da lbf all’interno di quel lavoro, con un avviso.

Risorsa scaricabile
Scheda sintetica API nesting taglio laser

Una sintesi di due pagine (PDF in inglese): il problema, cosa invii e cosa ricevi, una richiesta e una risposta, e come costruire sul motore. Pronta da stampare, con un QR che rimanda a questa pagina.

PDF2 pagineGratis
Scarica il PDF

Domande frequenti

Esiste un’API per il nesting del taglio laser?
Sì. Il nesting true-shape di poligoni irregolari è la quarta modalità della CutOptim Engine API, POST /v1/optimize/nest. Invii ogni pezzo come contorno poligonale (con eventuali fori) più le lastre a magazzino e ricevi il layout annidato, il posizionamento di ogni copia e il numero di lastre. È un motore geometrico di collisione, una classe di algoritmo diversa dal packer rettangolare guillotine, e oggi gira in produzione.
In cosa il nesting true-shape è diverso dal packing rettangolare?
Un packer rettangolare dispone bounding box, quindi l’aria vuota dentro un pezzo irregolare va sprecata; il nesting true-shape incastra i contorni reali nelle rientranze concave gli uni degli altri. La metrica confrontabile è il numero di lastre sugli stessi pezzi: su un lavoro rappresentativo di 272 pezzi il nesting ha usato 6 lastre contro 9 per bounding box. Una percentuale di densità NON è confrontabile tra i due, perché un packer a bounding box considera pieno lo spazio delle rientranze e mostra una densità più alta per un risultato peggiore.
Può evitare un’area danneggiata o l’impronta di un morsetto sulla lastra?
Sì. Ogni lastra può portare zone di esclusione (stock[].exclusions) — poligoni da cui il motore tiene lontani i pezzi. Una zona con quality 0 è una regione vietata in modo assoluto per ogni pezzo, così puoi annidare intorno a un difetto, all’impronta di un morsetto o a un’area prestampata. È una capacità che l’API rettangolare non sa esprimere.
Posso validare gratis una richiesta mentre integro?
Sì. POST /v1/validate/nest convalida lo schema dello stesso corpo che accetta l’endpoint nest, senza risolverlo — gratis, senza chiave API e senza quota — così il tuo team può confermare che il payload sia corretto mentre costruisce l’integrazione. L’Engine API vera e propria ha una prova di 14 giorni.
Restituisce la lunghezza di taglio e il numero di forature?
Sì. Ogni lastra porta cutLength — il perimetro sommato dei contorni e dei fori dei suoi pezzi posizionati, nella tua unità — e pierces, uno per ogni contorno chiuso; metrics totalizza entrambi. È la lunghezza geometrica del contorno: taglio a linea comune, ingressi e micro-ponti non sono inclusi, perché li aggiunge il CAM della tua macchina, quindi è una base solida per tempo macchina e gas, non il percorso utensile definitivo.
Il mio sistema di preventivazione può addebitare solo la parte usata di una lastra?
L’API gli fornisce i numeri; la regola di addebito resta tua. Ogni lastra porta usedWidth e usedHeight — il punto più lontano che i suoi pezzi posizionati raggiungono dall’origine della lastra, nella tua unità — e usedArea, il loro prodotto (stockUsage lo totalizza per formato). Un taglio orizzontale è usedHeight × la larghezza della lastra, uno verticale usedWidth × l’altezza della lastra, un bounding box usedArea. Entrambi i motori compattano per impostazione predefinita la lastra meno piena verso quell’angolo, provando sottoinsiemi di rotazioni tra quelle che ogni pezzo consente e mai un angolo nuovo, senza cambiare numero di lastre, prezzo o pezzi posizionati; options.compact: false lo disattiva. Se addebiti una striscia invece del riquadro, options.compactFor: "horizontal" mantiene la minima altezza usata e "vertical" la minima larghezza usata. Quanto si riduca l’area usata dipende dai pezzi.

Caso d’uso lavorazione della lamiera (app) · Benchmark