Hier heb je de complete code: ReuleauxD.scad .... gewoon aanklikken om OpenSCAD te openen.
Deze ijzeren kolom wordt (bijvoorbeeld) gebruikt in combinatie met een houten voet. Het is een mooi werkstuk, met een vrij lastig profiel aan beide uiteinden. We gaan het op de draaibank maken.
Een commentaar vooraf. De vorm van dit werkstuk is niet vreselijk praktisch. Door de flinke uitkragingen aan de einden moeten we in het midden een verhoudingsgewijs grote hoeveelheid materiaal verspanen, d.w.z. door draaien verwijderen. Dat is niet efficient. Beter ware het geweest, de kolom in gietijzer te gieten, en alle versieringen al in de gietvorm aan te brengen. Dan hoefden we alleen de eindvlakken te bewerken en de boringen daarin te maken.
Maar nee, de tekening is onverbiddelijk. Dus beginnen we met het op lengte zagen van een stuk rondijzer van voldoende diameter. Aan het ene uiteinde boren we een blind centrisch gat dia. 5 en aan het andere uiteinde eentje van dia. 8. In deze gaten zullen op het eind van het bewerkingsproces schroefdraden worden getapt voor resp. de spanner en de draadstift in de schroefbus van de voet.
Het werk wordt nu "tussen de centers" op de draaibank opgespannen. Het eind met de grote boring zetten we op het center in de vaste kop; het andere op een meedraaiend center in de losse kop. Een meenemer op het vooreind doet het werk met de hoofdspil meedraaien. Om de flauw kegelvormige kolom te draaien, verstellen we de losse kop enige cm zijwaarts. Als het kolomlijf aan de maat is, gaat de losse kop weer terug in zijn normale positie en profileren we de twee uiteinden volgens het voorgeschreven model.
De profielen voor de uiteinden van de virtuele kolom programmeer ik in 2D met cirkels en vierkanten (optellen en aftrekken) waarna ik het profiel roterend extrudeer rond de z-as.
Ik bouw het model als een module, met als (enige) parameter de hoogte van de kolom L . Het voordeel daarvan is natuurlijk dat ik de kolomhoogte heel makkelijk kan aanpassen - slechts 1x een nieuwe waarde voor L intypen en geen moeizaam gerommel in de code. Ook is het heel handig om bijvoorbeeld gelijk TWEE kolommen neer te zetten (desgewenst van verschillende lengte). Zo kun je makkelijk hele zuilengalerijen neerzetten.
ReuleauxKolom (250);
module ReuleauxKolom (L) {
color ("gray")
difference() {
union() {
// topprofiel
translate ([0,0,L])
rotate_extrude (angle=360,convexity=10) {
difference() {
union() {
translate ([0,-4,0]) square ([10,4]);
translate ([10,-4,0]) circle (4);
}; // einde union
translate ([0,-19,0]) suare ([40,15]);
}; // einde difference
difference() {
translate ([0,-8,0]) square ([11,4]);
translate ([12,-7.8,0]) circle (4);
}; // einde difference
translate ([0,-15]) square ([7.7,7]);
translate ([0,-16.5]) square ([8.7,1.5]);
}; // einde extrude topprofiel
// lijf
cylinder (L-16,12,8);
// bodemprofiel
translate ([0,0,8])
rotate_extrude (angle=360,convexity=10) {
difference() {
union() {
translate ([4,-7.,0]) square ([10,4]);
translate ([14,-4,0]) circle (4);
}; // einde union
translate ([0,-3.8,0]) square ([40,15]);
}; // einde difference
difference() {
translate ([4,-4.4,0]) square ([11,4]);
translate ([16,0,0]) circle (4);
}; // einde difference
}; // einde extrude bodemprofiel
}; // einde union
// boren gaten in de uiteinden
translate ([0,0,L-30]) cylinder (50,2.5,2.5);
translate ([0,0,-5]) cylinder (35,4,4);
}; // einde difference
}; // einde module
Voor de grap, heb ik in de complete code nog één enkele regel toegevoegd ....