API di nesting per lamiera
Sì, esiste un’API per il nesting della lamiera. Disporre pezzi irregolari di lamiera — staffe, fazzoletti, flange, guarnizioni — su piastre a magazzino è un problema di nesting true-shape, e la CutOptim Engine API lo risolve via HTTP su POST /v1/optimize/nest. Il tuo gestionale, l’MES o il software di preventivazione invia in JSON i contorni dei pezzi e i formati delle piastre e riceve il layout annidato, il posizionamento di ogni pezzo e il numero di piastre — per laser, plasma o getto d’acqua.
È già disponibile. Il motore di nesting (jagua-rs, un motore geometrico di collisione) gira in produzione dietro POST /v1/optimize/nest — una classe di algoritmo diversa dal packer rettangolare guillotine — e restituisce un nesting true-shape anziché un piano di taglio rettangolare.
Tutti i formati, i motori, i limiti e gli esempi di codice per sviluppatori: API di nesting CutOptim
{
"parts": [
{ "name": "gusset",
"polygon": [[0,0],[400,0],[0,400]],
"qty": 16, "allowedRotations": [0,90,180,270] },
{ "name": "bracket",
"polygon": [[0,0],[350,0],[350,120],[120,120],[120,350],[0,350]],
"qty": 10, "allowedRotations": "continuous",
"meta": { "part": "BRK-350" } }
],
"stock": [
{ "w": 3000, "h": 1500, "qty": 12,
"exclusions": [{ "polygon": [[0,0],[250,0],[0,250]], "quality": 0 }] }
],
"options": { "minSeparation": 2, "edgeClearance": 10 }
}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 annidano intorno a un difetto della piastra, all’impronta di un morsetto o a un’area prestampata (
stock[].exclusions). - Partizione per materiale: etichetta pezzi e piastre e ogni pezzo viene annidato solo su piastra del proprio materiale.
- Allega un oggetto meta (codice pezzo, riga d’ordine) e torna su ogni copia posizionata, così il nesting si riconcilia con il tuo gestionale.
- Più formati di piastra: il nesting li confronta per area della piastra, o per prezzo con
minimizeCost, e può mescolarli — l’ultima piastra mezza vuota passa a un formato più piccolo. - 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 piastre, non una percentuale di densità.
- Validazione gratuita:
POST /v1/validate/nestcontrolla un lavoro senza chiave e senza quota.
Perché ne hanno bisogno le officine di lavorazione lamiera
La lamiera costa e i pezzi irregolari la sprecano: un packer rettangolare considera pieno il bounding box di ogni pezzo, quindi l’aria dentro un fazzoletto o una squadra a L viene buttata. 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 per bounding box ne richiedono 9: la metrica onesta è il numero di piastre sugli stessi pezzi, non una percentuale di densità.
Cosa invii e cosa ottieni
Invii ogni pezzo come poligono (con eventuali fori) e una quantità, più i formati delle piastre. La risposta dà ogni posizionamento come trasformazione rigida (una rotazione in gradi, poi una traslazione x/y), il numero di piastre, la densità e gli eventuali pezzi che non ci stavano. Se etichetti pezzi e piastre con un material, il lavoro viene diviso per materiale — un pezzo viene annidato solo su piastra del proprio materiale — e ogni oggetto meta (il codice pezzo del gestionale, la riga d’ordine) torna identico su ogni copia posizionata, così il nesting si riconcilia con il tuo sistema. Ogni piastra porta inoltre la riga di materiale da cui è stata ricavata, la lunghezza di taglio e il numero di forature, e stockUsage totalizza piastre e prezzo per formato.
Zone di esclusione: annida intorno a un difetto
Le zone di esclusione per lastra (stock[].exclusions) permettono al motore di annidare intorno a un difetto della piastra, all’impronta di un morsetto o a un’area prestampata: una zona con quality 0 è una regione vietata in modo assoluto per ogni pezzo. La rotazione può essere continua o una lista discreta; options.minSeparation imposta la distanza tra i pezzi per la larghezza della torcia o del fascio, e options.edgeClearance la distanza dal bordo della piastra. Il layout è deterministico: un seed fissato riproduce lo stesso nesting per un preventivo o una verifica.
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 piastre, 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.
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.
Domande frequenti
Esiste un’API per il nesting della lamiera?
POST /v1/optimize/nest. Invii ogni pezzo come poligono (con eventuali fori) più i formati delle piastre e ricevi il layout annidato, il posizionamento di ogni copia e il numero di piastre — per laser, plasma o getto d’acqua. È un motore geometrico di collisione che oggi gira in produzione.Gestisce i difetti della piastra o le aree dei morsetti?
stock[].exclusions) — poligoni da cui il motore tiene lontano ogni pezzo. Una zona con quality 0 è una regione vietata in modo assoluto, 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 etichettare i pezzi con i codici del mio gestionale?
Quante piastre fa risparmiare?
Può scegliere tra più formati di piastra?
options.minimizeCost — così il risultato non dipende dall’ordine in cui li elenchi. Può anche mescolare i formati: ogni piastra, dalla meno piena, viene annidata di nuovo sui formati più economici o più piccoli e sostituita quando l’intero piano migliora, quindi l’ultima piastra mezza vuota passa spesso a un formato più piccolo. sheets[].stock e stockUsage indicano da quale formato proviene ogni piastra.Indica quanta parte di una piastra usa un lavoro piccolo?
usedWidth, usedHeight e usedArea — il bounding box dei suoi pezzi posizionati a partire dall’angolo della piastra — così un preventivo può addebitare una striscia o il bounding box invece dell’intera piastra. La piastra meno piena viene compattata per impostazione predefinita verso quell’angolo, con sottoinsiemi di rotazioni tra quelle che ogni pezzo consente; numero di piastre e prezzo non cambiano mai.