
Loading...

Excel is het eerste hulpmiddel waar de meeste mensen naar grijpen als ze een snijlijst moeten organiseren. Dat is logisch — je weet al hoe je het moet gebruiken, het staat op elke computer, en een tabel met onderdelen en afmetingen voelt als een spreadsheetprobleem. Totdat je probeert uit te zoeken hoe die onderdelen op een plaat passen. Dat is waar Excel vastloopt.
Elk houtbewerkingsforum, elk fabricage-Q&A-board, elke Excel-helpcommunity heeft dezelfde thread. Iemand plaatst een spreadsheet met onderdeelnamen, lengtes, breedtes en aantallen. Dan vragen ze: "Hoe zorg ik dat Excel me vertelt wat de meest efficiënte manier is om deze onderdelen uit mijn voorraadplaten te snijden?"
De antwoorden variëren van "gebruik Solver" tot "schrijf een VBA-macro" tot "dat kan niet — gebruik speciale software." De waarheid ligt ergens tussenin, en precies begrijpen waar Excel ophoudt nuttig te zijn, is de sleutel om te beslissen wanneer je een echte snijlijstoptimalisator nodig hebt.
Laten we Excel recht doen. Voor de eerste fase van het plannen van een snijlijst — het samenstellen van de onderdelenlijst zelf — is Excel prima. Sterker nog, het is goed.
Je kunt elk onderdeel vermelden met naam, lengte, breedte, dikte, aantal, materiaaltype, draadrichting en opmerkingen. Je kunt formules gebruiken om de totale oppervlakte, de totale kantenbandlengte en de geschatte materiaalkosten te berekenen. Je kunt onderdelen sorteren, filteren en groeperen op materiaal of op kast. Je kunt de spreadsheet delen met je team.
Als je alleen een onderdelenlijst nodig hebt — een gestructureerde tabel van wat je moet snijden — doet Excel het werk. Daarom laten CutGrid (en de meeste andere snijlijstoptimalisatoren) je rechtstreeks importeren vanuit Excel en CSV. De spreadsheet is een geweldige plek om je lijst op te bouwen. Het is gewoon niet de juiste plek om je indeling te optimaliseren.
Op het moment dat je vraagt "hoe moet ik deze onderdelen op mijn platen rangschikken?", heb je het gebied van spreadsheetformules verlaten en ben je het gebied van combinatorische optimalisatie binnengegaan. Dit is waarom dat belangrijk is.
Dit is niet zomaar jargon — het heeft een praktische betekenis. "NP-hard" betekent dat het aantal mogelijke rangschikkingen zo snel groeit dat geen enkele computer ze allemaal in een redelijke tijd kan proberen, zelfs niet voor bescheiden invoer.
Neem een eenvoudig voorbeeld: 20 onderdelen op één plaat. Elk onderdeel kan op elke positie worden geplaatst, en de meeste kunnen 90° worden gedraaid. Het aantal mogelijke rangschikkingen is astronomisch — veel meer dan het aantal atomen in het universum. Het vinden van de beste vereist gespecialiseerde algoritmen die de oplossingsruimte intelligent doorzoeken met behulp van heuristieken, niet brute kracht.
De Solver-invoegtoepassing van Excel kan eenvoudige lineaire optimalisatieproblemen aan. Maar 2D bin-packing met rotatie, zaagsnedeopeningen, draadrichting en meerdere platen is geen lineair probleem. Solver kan het ofwel helemaal niet modelleren, of het draait uren en produceert een middelmatig resultaat.
Zelfs als je op de een of andere manier een optimale rangschikking in Excel had berekend, zou je die nog steeds moeten tekenen. Een snijlijstoptimalisator produceert een visueel snijdiagram — een kleurgecodeerde kaart die precies laat zien waar elk onderdeel op elke plaat staat, met afmetingen, onderdeellabels en snijvolgorde. Dit is wat je afdrukt en meeneemt naar de zaag.
In Excel zou je handmatig rechthoeken moeten tekenen in een grafiek of een extern tekenprogramma. Voor elke plaat. Elke keer dat je een afmeting wijzigt of een onderdeel toevoegt.
Wanneer een zaagblad door materiaal gaat, verwijdert het een strook materiaal — de zaagsnede. Een typische paneelzaagsnede is 3 – 3,5 mm. Een snijlijstoptimalisator voegt deze ruimte automatisch in tussen elk paar aangrenzende onderdelen.
In Excel zou je handmatig zaagsnedemarges moeten toevoegen aan elke afmetingsberekening. Als je 40 onderdelen over meerdere platen hebt, zijn dat tientallen extra formules — elk een potentiële fout. En als je de zaagsnededwaarde wijzigt (omdat je van blad gewisseld bent), moet je elke formule bijwerken.
Een speciale optimalisator laat je kiezen tussen Guillotine- en Standaard (Plank)-algoritmen afhankelijk van je apparatuur. Guillotine zorgt ervoor dat elke snede van rand tot rand gaat (voor paneelzagen). Standaard maakt flexibele plaatsing mogelijk (voor CNC). Excel weet niet wat een guillotinesnede is.
Echte projecten gebruiken meerdere platen. Een keukenkaastproject met 40 onderdelen heeft mogelijk 3 – 4 platen MDF nodig. De optimalisator bepaalt welke onderdelen op welke plaat gaan om het totale afval over alle platen te minimaliseren — niet slechts één plaat tegelijk.
In Excel zou je handmatig onderdelen aan platen moeten toewijzen, dan handmatig moeten controleren of ze passen, en dan handmatig moeten herschikken als dat niet het geval is. Verander één afmeting en de hele toewijzing moet mogelijk opnieuw worden gedaan.
Wanneer je klaar bent met het snijden van een plaat, blijf je achter met restmateriaal — bruikbare stukken materiaal die te klein zijn voor het huidige project, maar perfect kunnen zijn voor het volgende. Een snijlijstoptimalisator houdt dit restmateriaal bij in je voorraadbibliotheek en hergebruikt het in toekomstige projecten.
Excel weet niet dat je restmateriaal bestaat.
Sommige vindingrijke gebruikers hebben VBA-macro's geschreven die eenvoudige 1D-snijoptimalisatie in Excel proberen. Deze werken voor lineaire materialen — lengtes snijden uit een staaf of buis — waarbij het probleem eendimensionaal is.
Een typische VBA-aanpak sorteert onderdelen op lengte (langste eerst), wijst ze toe aan voorraadlengtes met behulp van een first-fit decreasing-algoritme, en rapporteert de totale benodigde voorraad en het afval per staaf. Voor eenvoudig lineair snijden — aluminium profielen, houten stijlen, stalen buizen — kan dit redelijk goed werken.
Maar er zijn aanzienlijke beperkingen:
Alleen 1D. VBA-macro's voor 2D-plaatsnijden zijn uiterst zeldzaam en uiterst fragiel. De algoritmecomplexiteit neemt dramatisch toe wanneer je een tweede dimensie, rotatie en zaagsnede toevoegt.
Geen visuele uitvoer. De macro geeft je een tekstlijst — "Staaf 1: snijd 2400, snijd 1800, afval 300" — maar geen diagram. Je moet de indeling mentaal reconstrueren, wat fouten uitlokt.
Fragiele code. VBA-macro's breken wanneer je de spreadsheetstructuur wijzigt, kolommen hernoemt of het bestand opent in een andere versie van Excel. Ze zijn moeilijk te debuggen en onmogelijk te onderhouden tenzij je ze zelf hebt geschreven.
Geen zaagsnede, geen afsnede, geen draad. De meeste VBA-macro's negeren zaagsnede, plaatafsnedemarges en draadrichting. Het toevoegen van deze parameters maakt de code aanzienlijk complexer — en de meeste gebruikers die op dat niveau VBA kunnen schrijven, zouden beter af zijn met het schrijven van een zelfstandige applicatie.
Prestaties. VBA is traag. Een complexe 2D-optimalisatie die CutGrid minder dan een seconde kost, kan een VBA-macro minuten kosten — of Excel volledig laten crashen.
De ingebouwde Solver van Excel is een legitiem optimalisatiehulpmiddel. Het kan lineaire programmeerproblemen oplossen en heeft een evolutionaire solver voor niet-lineaire problemen. Sommige gebruikers hebben geprobeerd snijlijstoptimalisatie te modelleren met Solver.
De instelling is complex: je definieert beslissingsvariabelen (waar elk onderdeel wordt geplaatst), beperkingen (geen overlap, binnen plaatgrenzen, zaagsnedeopeningen) en een doelfunctie (minimaliseer afval). Voor zeer kleine problemen — 5 tot 8 onderdelen op één plaat — kan Solver soms een redelijke oplossing vinden.
Voor alles wat groter is, bereikt Solver zijn grenzen. De gratis versie is beperkt tot 200 beslissingsvariabelen. Zelfs de betaalde versie (OpenSolver of Solver-invoegtoepassingen) heeft moeite met de niet-lineaire beperkingen van 2D-packing. En je krijgt nog steeds geen visuele indeling — alleen een tabel met coördinaten.
Laten we dit concreet maken. Je bouwt een set van vijf boekenkasten van 18 mm berkenmultiplex. Voorraadplaat: 2440 × 1220 mm. Zaagsnede: 3 mm. Afsnede: 10 mm.
Je snijlijst:
Onderdeel | Lengte (mm) | Breedte (mm) | Aantal | Totaal |
|---|---|---|---|---|
Zijpaneel | 1800 | 300 | 10 | 10 |
Boven-/Onderpaneel | 564 | 300 | 10 | 10 |
Legplank | 564 | 280 | 15 | 15 |
Achterlat | 564 | 80 | 10 | 10 |
Plint | 600 | 100 | 5 | 5 |
Totaal: 50 onderdelen.
In Excel: Je vermeldt de onderdelen (2 minuten). Je berekent de totale oppervlakte van alle onderdelen: ongeveer 10,2 m². Elke plaat is 2,98 m². Je hebt dus minimaal 3,4 platen nodig — wat betekent minimaal 4 platen, waarschijnlijk 5 als je rekening houdt met zaagsnede en afsnede. Maar hoeveel heb je eigenlijk nodig? Je weet het niet, omdat je niet kunt zien hoe de onderdelen passen. Je raadt misschien 5 of 6 platen en koopt dienovereenkomstig. Als je het fout raadt, ga je terug naar de houthandel.
In CutGrid: Je voert dezelfde onderdelen in (of importeert het Excel-bestand — 30 seconden). Je stelt de zaagsnede in op 3 mm en de afsnede op 10 mm. Je klikt op Optimaliseren. In minder dan een seconde produceert CutGrid een indeling: 4 platen, 86% materiaalbenutting, met een duidelijk diagram dat precies laat zien waar elk onderdeel staat. Je exporteert de PDF en loopt naar de zaag.
Het verschil: Excel vertelde je "waarschijnlijk 5 platen, misschien 6." CutGrid vertelde je "precies 4 platen, zo snijd je ze, en dit zijn de resterende stukken die je kunt bewaren." Één plaat bespaard, €40 – €80 terug in je zak.
Eerlijk gezegd zijn er situaties waarin Excel echt voldoende is:
Je maakt een onderdelenlijst, geen optimalisatie. Als je alleen onderdelen met afmetingen wilt vermelden en de materiaaloppervlakte wilt berekenen, is Excel prima. Importeer die lijst dan in CutGrid voor de optimalisatiestap.
Je hebt 5 of minder onderdelen. Als je een kleine plank of een eenvoudige doos snijdt, kun je de onderdelen waarschijnlijk in je hoofd op een plaat rangschikken. Een optimalisator voegt onnodige complexiteit toe voor triviale projecten.
Je doet 1D lineair snijden met een eenvoudige macro. Voor het snijden van lengtes uit staven of buizen — waarbij het probleem eendimensionaal is en je een werkende VBA-macro hebt — kan Excel redelijke resultaten produceren. Het verschil tussen een eenvoudige VBA-macro en een speciale lineaire optimalisator is kleiner dan het verschil bij 2D-plaatoptimalisatie.
Je bent in het veld en hebt alleen je telefoon. Een snelle spreadsheet in Google Sheets om materiaalhoeveelheden te schatten is beter dan niets. Maar CutGrid werkt ook in elke browser — inclusief je telefoon — dus dit voordeel verdwijnt.
Voor veel werkplaatsen combineert de beste aanpak beide hulpmiddelen. Hier is een workflow die werkt:
Stap 1: Bouw je snijlijst in Excel. Gebruik de spreadsheet waarvoor hij goed is: gegevens organiseren. Vermeld onderdelen, bereken aantallen, houd materialen bij, schat kosten. Als je een sjabloon hebt dat je al jaren gebruikt, blijf het gebruiken.
Stap 2: Importeer in CutGrid. Sla je Excel-bestand op als .xlsx of .csv. Importeer het in CutGrid. De onderdelen, afmetingen, aantallen en materiaaltypen worden direct overgedragen — geen hertypen.
Stap 3: Optimaliseer en exporteer. Stel je zaagsnede, afsnede en algoritme in. Voer de optimalisatie uit. Exporteer het snijdiagram als PDF voor de werkvloer, of als DXF voor je CNC.
Stap 4: Werk je Excel-bestand bij. Na de optimalisatie exporteer je de resultaten terug naar Excel als je de gegevens in je bestaande workflow nodig hebt — kostenrapporten, inkooporders, voorraadupdates.
Deze workflow respecteert je bestaande proces en voegt het enige toe wat Excel niet kan: ruimtelijke optimalisatie.
Als je nieuwsgierig bent waarom dit probleem zo moeilijk is voor een spreadsheet, hier is de intuïtie.
Voor een 1D-probleem (lengtes snijden uit een staaf) groeit het aantal mogelijke rangschikkingen factorieel — 20 onderdelen hebben 20! (ongeveer 2,4 triljoen) mogelijke volgorden. Maar goede heuristieken zoals first-fit decreasing kunnen dit efficiënt oplossen omdat ze alleen hoeven te beslissen op welke staaf elke lengte gaat.
Voor een 2D-probleem (rechthoeken snijden uit een plaat) heeft elk onderdeel een X-positie, een Y-positie en een rotatie. De beperkingen (geen overlap, binnen grenzen, zaagsnedeopeningen) creëren een complex geometrisch probleem dat niet kan worden teruggebracht tot een eenvoudige volgorde. Het aantal beslissingsvariabelen groeit als 3n (drie variabelen per onderdeel), en de beperkingen groeien als n² (elk paar onderdelen mag niet overlappen).
Met 50 onderdelen zijn dat 150 beslissingsvariabelen en 2.500 niet-overlap-beperkingen. Excel's Solver is ontworpen voor problemen met tientallen variabelen, niet honderden. En zelfs als het de omvang aankon, zijn de geometrische beperkingen niet-lineair — ze omvatten "of/of"-voorwaarden die Solver slecht afhandelt.
Dit is waarom speciale snijlijstoptimalisatoren bestaan. Ze gebruiken gespecialiseerde algoritmen — plank-heuristieken, genetische algoritmen, gesimuleerd afkoelen en hybride benaderingen — die speciaal zijn gebouwd voor deze exacte klasse van problemen. Ze vinden bijna-optimale oplossingen in seconden, niet uren.
Excel is uitstekend voor het samenstellen van een onderdelenlijst. Blijf het gebruiken voor gegevensinvoer, berekening en organisatie. Het is niet voor niets het beste spreadsheetprogramma ter wereld.
Excel is geen indelingsoptimalisator. Op het moment dat je moet beslissen hoe onderdelen op platen passen, heb je een ander hulpmiddel nodig. Het 2D-nestprobleem is wiskundig moeilijk — te moeilijk voor Solver, te moeilijk voor VBA-macro's, en te visueel voor een raster van cellen.
Het echte afval zit niet in de softwarekosten — het zit in de extra platen. Een CutGrid-abonnement kost minder dan één plaat berkenmultiplex. Als de optimalisator je zelfs maar één plaat per project bespaart, verdient het zichzelf onmiddellijk terug.
Importeer, hertyp niet. CutGrid leest Excel en CSV van nature. Je spreadsheet is de invoer; de optimalisator is de motor; het snijdiagram is de uitvoer.
Importeer je spreadsheet in CutGrid en zie het verschil. Je onderdelenlijst blijft hetzelfde — je krijgt gewoon een slimmere indeling.