API per il taglio di legname strutturale e travi
Sì, esiste un’API per tagliare a misura il legname strutturale. Tagliare travetti, puntoni, montanti, listelli e tavole a misura è un problema di cutting stock 1D con una regola in più che il taglio lineare semplice ignora: la sezione deve corrispondere. Un pezzo 50×150 non può uscire da una barra 50×100. La CutOptim Engine API lo risolve via HTTP su POST /v1/optimize/wood: il tuo gestionale, il software di preventivazione o quello del deposito legname invia in JSON la distinta di taglio e il materiale disponibile e riceve il piano di taglio ottimizzato, abbinato e risolto per sezione, con il numero di barre e la resa.
È una modalità a sé, non un involucro di /v1/optimize/1d: il taglio 1D lineare tratta ogni barra come intercambiabile, mentre il legno ha un’identità — la sezione deve corrispondere. Inviare N richieste 1D raggruppate costa N chiamate per un solo lavoro, sposta su di te l’abbinamento del materiale e dà un totale che non coincide con quello dell’app. Questo endpoint fa l’abbinamento e restituisce l’intero lavoro in una sola chiamata, per sezione e complessivo.
{
"parts": [
{ "name": "Rafter", "sw": 50, "sh": 150, "length": 3200, "qty": 8 },
{ "name": "Noggin", "sw": 50, "sh": 100, "length": 600, "qty": 24,
"meta": { "ref": "C24-50x100" } }
],
"stock": [
{ "name": "C24 50x150", "sw": 50, "sh": 150, "length": 4800, "qty": 20, "price": 18.4 },
{ "name": "C24 50x100", "sw": 50, "sh": 100, "length": 4800, "qty": 30, "price": 12.5 }
],
"options": { "kerf": 3 }
}- Già disponibile su
POST /v1/optimize/wood— lo stesso motore dell’app, con riconoscimento della sezione. - Sezioni abbinate e risolte in modo indipendente: un pezzo 50×150 si taglia solo da materiale 50×150.
- sections[] porta rods, totali e piano di taglio per sezione; unmatched riporta la domanda senza alcun materiale.
- Deterministico e legato a una versione: riproduci un preventivo di taglio per una verifica o un ordine ripetuto.
- Lo sfrido riportato è il residuo utilizzabile — il kerf che lo libera è già detratto (per barra).
- Validazione gratuita:
POST /v1/validate/woodcontrolla un lavoro senza chiave e senza quota.
Perché ne hanno bisogno falegnami e rivendite di legname
Il legname strutturale si compra in lunghezze elevate e si taglia in molti pezzi, e tagliare nell’ordine della lista lascia uno sfrido corto su quasi ogni lunghezza. Un ottimizzatore che conosce la sezione ridistribuisce i tagli all’interno di ciascuna sezione in modo che ognuna richieda il minor numero di lunghezze possibile. Dentro un flusso di preventivazione, gestionale o cassa, l’API lo fa su ogni commessa in automatico: una rivendita edile può calcolare e pianificare un servizio di taglio direttamente dall’ordine, e il piano si riconcilia con ciò che il deposito taglia davvero.
Abbinamento della sezione: la parte del problema che l’1D ignora
Ogni pezzo e ogni riga di materiale porta due lati di sezione, sw e sh, in qualsiasi ordine (50×150 e 150×50 sono la stessa barra girata). Il motore divide il lavoro per sezione, abbina ogni pezzo solo a materiale di sezione compatibile e risolve ogni sezione in modo indipendente. La risposta arriva come sections[], ciascuna con le proprie rods, i propri totali e il proprio piano di taglio, più le metriche complessive — e la domanda la cui sezione non ha alcun materiale viene riportata a parte in unmatched, distinta dai pezzi che avevano materiale e semplicemente non ci stavano, perché il rimedio è diverso.
Deterministico: riproducibile per preventivi e verifiche
La stessa richiesta restituisce sempre lo stesso piano di taglio: nessuna casualità, nessun orologio nell’algoritmo. Un preventivo di taglio costruito da una chiamata API si riproduce a distanza di mesi per una verifica o un ordine ripetuto, e i risultati si possono mettere in cache e confrontare nei test. Lo sfrido riportato su ogni barra è il residuo utilizzabile — il kerf che lo libera è già detratto — e ogni oggetto meta che allegi (un codice articolo, una riga d’ordine) torna su ogni taglio posizionato, così il piano si riconcilia con il tuo sistema.
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 taglio di legno o legname strutturale?
POST /v1/optimize/wood. Invii in JSON la distinta di taglio e il materiale, ciascuno con due lati di sezione, e ricevi il piano di taglio ottimizzato, abbinato e risolto per sezione, con il numero di barre, la resa e gli sfridi utilizzabili. È lo stesso motore che gira nell’app, via HTTP.Perché non usare semplicemente l’endpoint 1D per il legno?
Cosa succede a un pezzo la cui sezione non è a magazzino?
POST /v1/validate/wood, senza chiave e senza quota.Tiene conto dello spessore della lama e della squadratura delle teste?
options.kerf è lo spessore della lama, detratto a ogni taglio; options.trim.start e options.trim.end riservano il taglio di squadratura a ciascuna estremità di una lunghezza. Lo sfrido riportato su ogni barra è il residuo utilizzabile dopo entrambi, e options.minOffcut riporta solo i residui abbastanza lunghi da tenere. Le stesse opzioni valgono per ogni sezione del lavoro.Può pianificare solo con il legname che ho nel deposito?
options.respectStock e la quantità di ogni riga di materiale diventa un limite rigido, sezione per sezione. I pezzi che hanno materiale corrispondente ma non ci stanno tornano in unplaced, mentre quelli la cui sezione non è affatto a magazzino tornano in unmatched, così il piano ti dice se tagliare lunghezze maggiori o acquistare una sezione mancante.