Huishoudelijke Laserprojecten

Van Cuttle naar OpenSCAD

Ik heb de eerste generatie houders ontworpen met Cuttle. Dit was een uitstekende manier om te beginnen met lasersnijden en parametrische CAD: de mogelijkheid om te schakelen tussen het handmatig verschuiven van controlepunten en het schrijven van logica in de node tree hielp me om intuïtie op te bouwen over hoe een onderdeel wordt geconstrueerd. Ik heb een paar maanden een Pro-abonnement genomen en was tevreden over de waarde die ik daarvoor terugkreeg.

Ik was echter niet tevreden over het eigenaarschap van mijn ontwerpen in Cuttle. Hoewel je ontwerpen kunt exporteren (als SVG of andere formaten), vond ik geen manier om het geparametriseerde ontwerp zelf te exporteren. Mocht de Cuttle-service verdwijnen, dan zou ik vastzitten zonder een manier om nieuwe parameters in te stellen. Dit geldt ook voor het delen van het ontwerp: iedereen die het geparametriseerde ontwerp wil gebruiken, moet via Cuttle gaan.

Daarom ben ik op een zondag begonnen met de OpenSCAD-tutorial.

Waarom OpenSCAD?

Voornamelijk omdat ik me de naam herinnerde. Ik heb geen ervaring met FreeCAD, dus ik kan geen vergelijking maken. (Ik heb TinkerCAD gebruikt voor enkele basisontwerpen, maar dat lijkt geen parametrisch ontwerp te ondersteunen.)

Ik heb gemerkt dat OpenSCAD, en met name de taal, soms verwarrend kan zijn. Maar voor mijn niveau van projecten en interesse is het prima. Bovendien is het libre en gratis, dus daar is weinig over te klagen.

Project: Kabelbox

Mijn partner vroeg om een box om de wirwar van kabels op haar bureau te verbergen. Ze gaf me een kleine schets met de geschatte breedte, gatgroottes, enzovoort. Dit was relatief eenvoudig te realiseren in OpenSCAD.

De gaten zijn opgebouwd uit overlappende cirkels en rechthoeken; de vingerverbindingen (finger joins) zijn toegevoegd of verwijderde rechthoeken. De box was functioneel, maar vrij eenvoudig: de grote voor- en achterzijden, de meest zichtbare delen, waren gewoon vlak hout. Om het wat meer flair te geven, heb ik een silhouet van een kattenkop gemaakt van een ellips en twee driehoeken, die ik vervolgens willekeurig als uitsparingen over de voor- en achterzijden heb verspreid.

Materialen en broncode

Materialen Veel snijfaciliteiten zijn voorzichtig met welke materialen door de snijder gaan. Met een goede reden: niet alle afwerkingen of lijmen zijn mensvriendelijk wanneer ze worden gelaserd. Voor dit project gebruikte ik Glowforge Proofgrade Medium Maple Plywood. Ik redeneerde dat materiaal van een laserbed, specifiek verkocht voor lasersnijden, veilig zou zijn.

Glowforge is wel duurder dan willekeurig multiplex uit de bouwmarkt. Als je een veilig en goedkoper alternatief kunt vinden, is dat geweldig.

Bronnen De bronbestanden zijn beschikbaar, samen met een redo rule (script) om de SVG uit het OpenSCAD-bestand te genereren. Let op: het exportscript vereist een recente build van OpenSCAD om de lijndikte (stroke width) van de geëxporteerde SVG te kunnen configureren. Ik gebruik OpenSCAD versie 2025.09.22, wat werkt.

Project: Servethouder

Mijn partner wilde een houder voor papieren servetten, maar vond in winkels niets dat esthetisch aansprekend was. Ik heb hetzelfde kattenkop-motief van de kabelbox overgenomen en vergroot voor de voor- en achterpanelen.

Om diepte te creëren en de houder rechtop te laten staan, hebde ik "snorharen" toegevoegd die met halflap-verbindingen aan de panelen zijn bevestigd. Ik wilde dat de onderkant van het paneel en de uiteinden van de onderste snorharen het tafelblad raken. Het paneel draagt het meeste gewicht, maar de snorharen voorkomen dat het object omrolt.

Voor de eenvoud heb ik de snorharen gemodelleerd alsof ze vanuit het centrum van de ellips vertrekken. Dit leidde tot een trigonometrisch probleem. Om te zorgen dat de tips van de snorharen de tafel raken, gegeven:

  1. De hoek van de onderste snorhaar.
  2. De kleine (verticale) straal van de ellips.

We lossen dit op door te berekenen hoe ver de tips van de snorharen van het centrum afliggen. De grote (horizontale) as, de kleine (verticale) as en de snorhaar vormen samen een rechthoekige driehoek. De relevante hoek is de daling van de snorhaar ten opzichte van de verticale as. Door dit op te lossen voor $L$, bepalen we de lengte. De snorharen zelf zijn korter — een andere parameter is "hoe ver van het centrum de snorhaar begint" — maar we kunnen beginnen met de totale lengte en die offset aftrekken om de vorm van de snorhaar te bepalen.

Ik gebruikte onbehandeld hout voor dit project, wat ik erg mooi vond. Hierdoor kon ik een afwerking kiezen die de natuurlijke (kersenhout) kleur van het hout naar voren bracht. De afwerking hielp ook om een fout te maskeren: ik was vergeten de kerf (de breedte van de lasersnijstraal) te meten voor het snijden, waardoor de onbehandelde delen wat los zaten. De afwerking werkt als een mild kleefmiddel dat de delen bij elkaar houdt.

Materialen en broncode

Materialen Voor dit project gebruikte ik Glowforge Proofgrade Raw Thin Cherry Plywood. De "Proofgrade Raw" materialen zijn goedkoper dan de "proofgrade" materialen uit het vorige project. Het verschil lijkt te zitten in het feit of het hout vooraf is afgewerkt of dat dit zelf moet gebeuren. Voor dit project heb ik wat handmatig geschuurd en een poly-coating aangebracht voor het resultaat.

Bronnen De bronbestanden zijn beschikbaar, inclusief het script om de SVG vanuit OpenSCAD te produceren (zie bovenstaande opmerking over versie 2025.09.22).

Lessen: Lasersnijden

Ik heb niet veel theoretisch onderzoek gedaan naar deze scene, dus wellicht is dit al algemene kennis.

  • Laat de maskeringstape zitten. Ik had veel brandplekken rond de randen van mijn eerste generatie toetsenbordhouders. De tape vermindert het snijvermogen enigszins, maar zorgt voor veel schonere sneden.
  • Multiplex is beter dan spaanplaat. Ik heb geprobeerd met spaanplaat te werken, maar dat vereist meer vermogen om te snijden en ziet er minder mooi uit. Kies voor multiplex; onbehandeld als je het zelf wilt afwerken, of vooraf afgewerkt.
  • Kerf-correcties. Ik begrijp nog steeds niet volledig hoe ik kerf correct moet afhandelen. Bij een ander project dat ik tegelijk met de servethouder maakte, bleef ik de correcties voor de vingerverbindingen verkeerd toepassen; verwarrend genoeg gaven de "tab" en "slot" delen steeds asymmetrische resultaten.

Lessen: OpenSCAD

Zelfs na deze projecten ben ik nog steeds soms in de war door OpenSCAD. Sommige expressies hebben zij-effecten (zoals "voeg een object toe"), en deze effecten kunnen worden onderdrukt of getransformeerd (bijv. roteren), maar de expressie zelf produceert geen waarde. Ik kan bijvoorbeeld geen vierkant construeren om vervolgens de bounding-box ervan te bepalen; zodra het vierkant is gemaakt, is dat het, ik kan het niet meer aanpassen.

OpenSCAD is absoluut een tool voor "power users" in vergelijking met Cuttle. Ik zou het niet noodzakelijkerwijs aanraden als startpunt, maar voor mensen die al kunnen programmeren (of dat willen leren) is het erg fijn. De WASM-port van OpenSCAD is ook een spannende ontwikkeling om de tool toegankelijker te maken.

Hier zijn enkele zaken die OpenSCAD voor mij nuttiger hebben gemaakt:

Gebruik je favoriete editor

Je hoeft niet de OpenSCAD IDE te gebruiken; het programma kan automatisch herladen en opnieuw renderen wanneer de broncode op de schijf wijzigt. Ik gebruik Neovim aan de ene kant van het scherm en OpenSCAD aan de andere kant. Let er wel op dat je parameters slechts op één plek aanpast.

Maak 2D- en 3D-toegangspunten

Voor lasersnijprojecten definieer ik elk onderdeel dat gesneden moet worden als een 2D OpenSCAD-module. Ik gebruik functies en extra modules om het ontwerp op te splitsen, maar elk onderdeel heeft een eigen module als toegangspunt. Vervolgens definieer ik twee top-level modules:

  1. Een twod (2D) module: Deze plaatst elk onderdeel één keer op het x-y vlak, met voldoende tussenruimte om overlappingen te voorkomen.
  2. Een threed (3D) module: Deze gebruikt linear_extrude om een 3D-versie van elk onderdeel te maken en rangschikt ze in de 3D-ruimte zoals ze na montage zouden staan.

Onderdelen die meerdere keren voorkomen, worden in de 3D-view meerdere keren geplaatst, maar in de 2D-view slechts één keer (omdat ik de uiteindelijke indeling op de plaat vaak pas bij de lasersnijder bepaal via de SVG-import).

Door te schakelen tussen deze views kan ik in de 3D-view controleren of de onderdelen passen, terwijl ik de 2D-view gebruik voor de SVG-export. Dit is een groot voordeel ten opzichte van Cuttle; veel van mijn mislukte prototypes bij de toetsenbordhouders waren het gevolg van uitlijningsfouten in drie dimensies die ik in een 2D-view niet kon herkennen.

Probeer BOSL2

De BOSL2-bibliotheek is extreem nuttig. Het biedt quality-of-life functies zoals struct_set, geometrische hulpmiddelen zoals Bézier-curves, en utilities voor het berekenen van tabs (iets wat ik zelf opnieuw heb uitgevonden omdat ik niet wist dat het al bestond).

***

Voetnoten

  1. Ik heb geen commerciële relatie met Glowforge of andere leveranciers. Ik heb zelf betaald voor de materialen; de faciliteiten en de lasersnijder werden ter beschikking gesteld door mijn lokale bibliotheek.
  2. Dit project wordt geplaatst zodra ik klaar ben met de overige bijbehorende ambachten.