diff --git a/polyhaus.scad b/polyhaus.scad new file mode 100644 index 0000000..7f29e83 --- /dev/null +++ b/polyhaus.scad @@ -0,0 +1,118 @@ +// The Parameters of the House +// all in mm +level=3500; +wallstrength=500; +ceilingstrength=300; +floorstrength=200; +ringdiameter=14000; +ringstrength=2500; +garagediameter=ringdiameter+2000; +garageheigth=4000; +sides=6; + +// The House Modules +module ngon( + diameter=5, + height=level) + { + cylinder( + h=height, + r=diameter/2, + $fn=6 + ); + }; + + + +module garage( + garageheigth=garageheigth, + garagediameter=garagediameter) + { + //color([0.1,0.1,1]) + #translate( + [0,0,-garageheigth]) { + living( + floorheight=2*floorheigth, + ceilingheigth=2*ceilingheigth + ) + }; + }; +}; +module ring( + ringdiameter=ringdiameter, + ringstrength=ringstrength, + ringheigth=level +) +{ + difference() { + ngon( + height=ringheigth, + diameter=ringdiameter, + $fn=6); + %translate ([0,0, -1]) ngon( + height=ringheigth+2, + diameter=ringdiameter-ringstrength, + $fn=6); + }; +}; +module living( + ringdiameter=ringdiameter, + ringstrength=ringstrength, + ringheigth=level, + floorstrength=floorstrength, + ceilingstrength=ceilingstrength, + wallstrength=wallstrength, +{ + #difference() { + %ring(); + translate([0,0,+floorstrength]) +ring(ringdiameter=ringdiameter-wallstrength, + ringstrength=ringstrength-2*wallstrength, + ringheigth=level-floorstrength-ceilingstrength); + }; +}; + +outer_wall_woodwidth=50; + +outer_wall_strawwidth=50; +module outer_wall( + ringdiameter=ringdiameter, + ringstrength=ringstrength, + ringheigth=level, + floorstrength=floorstrength, + + ceilingstrength=ceilingstrength) + +{ +side_length=; +radius_in_circle=; +elements=floor(sidelength/(outer_wall_woodwidth+outer_wall_strawwidth)); + for (side in [1:sides]) +{ +if (elements%2==1) +{ +//center the middle one +for (spar in [0:elements]) +{ +translate ( +[0, +radius_inner_circle, +spar*(outer_wall_woodwidth+outer_wall_strawwidth +]) spar(); +translate ( +[0, +radius_inner_circle, +-spar*(outer_wall_woodwidth+outer_wall_strawwidth +]) spar(); +} +} + +} +}; + +living(); + +translate([0,0,level]) living(); +garage(); + +