Parametrische kistjes

Herbruikbaarheid van een design

Thingiverse.com is overladen van kistjes gemaakt met uit lasergesneden plaatmateriaal. Eén ding hebben bijna al deze modellen gemeen. Je moet plaatmateriaal hebben met een specifieke dikte en heel vaak heb je lijm nodig of moet er extra gesneden worden om de kistjes vlot in elkaar te krijgen.

Met wat grasduinen op het internet kwam ik uit op een website, waarin gesproken werd over de vorm van de lippen bij lasergesneden doosjes. Meestal moeten inkepingen en lippen apart uitgesneden worden, om deze strak in elkaar te laten passen en geen lijm te moeten gebruiken. Door de lippen en inkepingen een boogje of zigzag te geven kan je dit voorkomen. Dit levert echter een tweede probleem op, het ontwerp wordt heel specifiek voor een bepaalde dikte van plaat en bijzonder tijdrovend om uit te tekenen: elk lipje moet hetzelfde zigzag lijntje krijgen en bij zo'n kistje spreken we al snel van enkele 10-tallen lippen en inkepingen.

'Dit moet anders kunnen', dacht ik. Na wat zoekwerk ontdekte ik dat je via de programmeertaal postscript rechtstreeks vormen kan programmeren en dit zonder enige tekenwerk. Een postscript bestand kan je gewoon aanpassen met een eenvoudig tekstprogramma, waardoor het aanpassen van de parameters bijzonder vlot en universeel wordt.
Het programmeren bleek echter niet evident. Postscript werkt namelijk met een 'stack' principe. De bewerking
2 x 2 - 1
moet in Postscript als volgt ingegeven worden:
2 2 mul 1 sub
Ik kan je verzekeren als de bewerkingen wat complexer worden geraak je al snel het noorden kwijt. Hieronder vind je een stukje uit de code:

/hypotenuselen xtablen 2 exp ytablen 2 exp add sqrt def
ytablen xtablen atan neg rotate
0 hypotenuselen 12 div zigzagwidth hypotenuselen 6 div zigzagwidth
hypotenuselen 4 div rcurveto
0 hypotenuselen 12 div zigzagwidth 2 mul neg hypotenuselen 6 div
zigzagwidth 2 mul neg hypotenuselen 4 div rcurveto
0 hypotenuselen 12 div zigzagwidth 2 mul hypotenuselen 6 div
zigzagwidth 2 mul hypotenuselen 4 div rcurveto
0 hypotenuselen 12 div zigzagwidth neg hypotenuselen 6 div
zigzagwidth neg hypotenuselen 4 div rcurveto
ytablen xtablen atan rotate

Meer info op: https://www.thingiverse.com/thing:1203203