Di. 5 Feb. 2019 09:48:47 CET /home/jens/Documents/polyhaus

This commit is contained in:
927589452 2019-02-05 09:48:47 +01:00
parent 76e6e23c7e
commit 64d7ec6ace

View file

@ -13,106 +13,177 @@ sides=6;
// The House Modules // The House Modules
module ngon( module ngon(
diameter=5, diameter=5,
height=level) height=level,
sides=sides
)
{ {
cylinder( cylinder(
h=height, h=height,
r=diameter/2, r=diameter/2,
$fn=6 $fn=sides
); );
}; };
module garage( module garage(
garageheigth=garageheigth, garageheigth=garageheigth,
garagediameter=garagediameter) garagediameter=garagediameter
)
{ {
//color([0.1,0.1,1]) //color([0.1,0.1,1])
#translate( #translate([0,0,-garageheigth])
[0,0,-garageheigth]) {
living( living(
floorheight=2*floorheigth, floorstrength=2*floorstrength,
ceilingheigth=2*ceilingheigth ceilingstrength=2*ceilingstrength
) );
};
};
}; };
module ring( module ring(
ringdiameter=ringdiameter, ringdiameter=ringdiameter,
ringstrength=ringstrength, ringstrength=ringstrength,
ringheigth=level ringheigth=level
) )
{ {
//do the math for the radii
angle=(0.5*360/sides);
radius_in_circle=(asin(angle)*ringdiameter)-wallstrength;
side_length=2*acos(0.5*360/sides)*radius_in_circle;
radius_in_diameter=radius_in_circle/ asin(angle);
#
difference() { difference() {
ngon( ngon(
height=ringheigth, height=ringheigth,
diameter=ringdiameter, diameter=ringdiameter,
$fn=6); sides=sides
);
%translate ([0,0, -1]) ngon( %translate ([0,0, -1]) ngon(
height=ringheigth+2, height=ringheigth+2,
diameter=ringdiameter-ringstrength, diameter=radius_in_diameter,
$fn=6); sides=sides
);
}; };
}; };
module living( module living(
ringdiameter=ringdiameter, ringdiameter=ringdiameter,
ringstrength=ringstrength, ringstrength=ringstrength,
ringheigth=level, ringheigth=level,
floorstrength=floorstrength, floorstrength=floorstrength,
ceilingstrength=ceilingstrength, ceilingstrength=ceilingstrength,
wallstrength=wallstrength, wallstrength=wallstrength
)
{ {
angle=(0.5*360/sides);
radius_in_circle=(asin(angle)*ringdiameter)-wallstrength;
radius_in_diameter=radius_in_circle/ asin(angle);
side_length=2*acos(0.5*360/sides)*radius_in_circle;
#difference() { #difference() {
%ring(); %ring();
translate([0,0,+floorstrength]) translate([0,0,+floorstrength])
ring(ringdiameter=ringdiameter-wallstrength, ring(
ringdiameter=radius_in_diameter,
ringstrength=ringstrength-2*wallstrength, ringstrength=ringstrength-2*wallstrength,
ringheigth=level-floorstrength-ceilingstrength); ringheigth=level-(floorstrength+ceilingstrength));
}; };
}; };
outer_wall_woodwidth=50; outer_wall_woodwidth=50;
outer_wall_strawwidth=1000;
module spar(
width,
depth,
height
)
{
translate(
[0.5*width,
0.5*depth,
0] )
cube(
width,
depth,
height
);
}
outer_wall_strawwidth=50;
module outer_wall( module outer_wall(
ringdiameter=ringdiameter, ringdiameter=ringdiameter,
ringstrength=ringstrength, ringstrength=ringstrength,
ringheigth=level, ringheigth=level,
floorstrength=floorstrength, floorstrength=floorstrength,
ceilingstrength=ceilingstrength
ceilingstrength=ceilingstrength) )
{ {
side_length=; angle=0.5*360/sides;
radius_in_circle=; radius_in_circle=(asin(angle)*ringdiameter)-wallstrength;
elements=floor(sidelength/(outer_wall_woodwidth+outer_wall_strawwidth)); side_length=2*acos(angle)*radius_in_circle;
for (side in [1:sides]) elements=floor(side_length/(outer_wall_woodwidth+outer_wall_strawwidth));
for (side=[1:sides] )
{
echo(side);
rotate(
[0,0,2*angle]
)
{ {
if (elements%2==1) if (elements%2==1)
{ {
//center the middle one echo("DEBUG uneven number");
for (spar in [0:elements]) // center the middle modeline
for (spar= [0:elements])
{ {
offset= 0.5* outer_wall_strawwidth + spar*(outer_wall_woodwidth+outer_wall_strawwidth);
translate ( translate (
[0, [
radius_inner_circle, 0,
spar*(outer_wall_woodwidth+outer_wall_strawwidth radius_in_circle,
]) spar(); offset
] )
spar(
width=outer_wall_woodwidth,
depth=wallstrength,
height=level
);
translate ( translate (
[0, [
radius_inner_circle, 0,
-spar*(outer_wall_woodwidth+outer_wall_strawwidth radius_in_circle,
]) spar(); -offset
] )
spar();
}
}
if (elements%2==0)
{
echo("DEBUG even number");
// center the middle modeline
for (spar= [0:elements])
{
offset= 0.5* outer_wall_strawwidth + spar*(outer_wall_woodwidth+outer_wall_strawwidth);
translate (
[0,
radius_in_circle,
offset] )
spar(
width=outer_wall_woodwidth,
depth=wallstrength,
height=level
);
translate (
[0,
radius_in_circle,
-offset
] )
spar();
}
} }
} }
} }
}; };
living(); //living();
//translate([0,0,level]) living();
translate([0,0,level]) living(); //garage();
garage(); outer_wall();