Hier heb je de complete code: Gatenplaat.scad .... gewoon aanklikken om OpenSCAD te openen.
Stel, er moet een hele ris gaten geboord worden in een stuk blanke staalplaat.
Die gaten dienen op een strak raster te liggen. Vroeger gebruikte je een kolomboormachine (zie bijvoorbeeld DEZE pagina) en tekende je eerst alle gaten af; daarna centerde je ze met centerpons en een tik-met-de-hamer. Het centertje zorgde er voor, dat de boor niet wegliep. Gebeurde dat, dan was het hele werk bedorven en kon je opnieuw beginnen. Je deed er goed aan, het werk stevig in een machineklem vast te zetten.
Zou je heel veel van deze gatenplaten moeten produceren, allemaal gelijk, dan zou je er goed aan gedaan hebben, te investeren in de aanschaf van een meerspillige boormachine. Die had bijvoorbeeld 6 boorspillen, zodat je steeds 6 gaten tegelijk kon boren. Dat versnelde de productie met op z'n minst een factor 6.
Met een moderne CNC-boor/freesbank is deze klus heel wat makkelijker en sneller geworden. En met virtueel boren ben je zelfs NOG veel sneller klaar.
De blanke staalplaat meet 20x20 cm. Hij is 4 mm dik. De te boren gaten zijn dia. 6 mm. De boor is uiteraard een cilinder. Hij moet voldoende lang zijn om door de plaat heen te komen, anders krijg je blinde gaten. Vroeger hadden blinde gaten altijd een conische bodem (tophoek 118°) maar bij virtueel boren van blinde gaten krijg je een vlakke bodem.
Virtueel boren is een kwestie van "difference() {}" met andere woorden aftrekken.
Het regelmatige boorpatroon bouw je op met twee geneste "for"-statements (9 gaten in de x-richting en 13 in de y-richting). Eigenlijk werk je hier dus op een x-y-coordinaten-boormachine. De "for .... translate" beweegt als het ware de kruisslede van deze boormahine in x- dan wel y-richting.
Virtueel boren geeft geen spanen en ook geen bramen aan de gaten. Grote gaten hoef je niet eerst voor te boren. En je veiligheidsbril mag je thuis in z'n brillekoker laten ....
Oh, en gebroken boren of botte boren komen gewoon niet voor. Gooi het borenslijp-apparaatje maar weg.
color ("Silver")
difference() {
cube ([200,200,4],true);
for (i=[-4:1:4])
for (j=[-6:1:6])
translate ([i*20,j*12,-2])
cylinder (8,3,3);
};