Di. 5 Feb. 2019 09:48:47 CET /home/jens/Documents/polyhaus
This commit is contained in:
parent
76e6e23c7e
commit
64d7ec6ace
1 changed files with 161 additions and 90 deletions
189
polyhaus.scad
189
polyhaus.scad
|
|
@ -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])
|
|
||||||
#translate(
|
|
||||||
[0,0,-garageheigth]) {
|
|
||||||
living(
|
|
||||||
floorheight=2*floorheigth,
|
|
||||||
ceilingheigth=2*ceilingheigth
|
|
||||||
)
|
)
|
||||||
};
|
{
|
||||||
};
|
//color([0.1,0.1,1])
|
||||||
|
#translate([0,0,-garageheigth])
|
||||||
|
living(
|
||||||
|
floorstrength=2*floorstrength,
|
||||||
|
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
|
||||||
{
|
)
|
||||||
#difference() {
|
{
|
||||||
|
|
||||||
|
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() {
|
||||||
%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] )
|
||||||
if (elements%2==1)
|
{
|
||||||
{
|
echo(side);
|
||||||
//center the middle one
|
rotate(
|
||||||
for (spar in [0:elements])
|
[0,0,2*angle]
|
||||||
{
|
)
|
||||||
translate (
|
{
|
||||||
[0,
|
if (elements%2==1)
|
||||||
radius_inner_circle,
|
{
|
||||||
spar*(outer_wall_woodwidth+outer_wall_strawwidth
|
echo("DEBUG uneven number");
|
||||||
]) spar();
|
// center the middle modeline
|
||||||
translate (
|
for (spar= [0:elements])
|
||||||
[0,
|
{
|
||||||
radius_inner_circle,
|
offset= 0.5* outer_wall_strawwidth + spar*(outer_wall_woodwidth+outer_wall_strawwidth);
|
||||||
-spar*(outer_wall_woodwidth+outer_wall_strawwidth
|
translate (
|
||||||
]) spar();
|
[
|
||||||
}
|
0,
|
||||||
}
|
radius_in_circle,
|
||||||
|
offset
|
||||||
}
|
] )
|
||||||
|
spar(
|
||||||
|
width=outer_wall_woodwidth,
|
||||||
|
depth=wallstrength,
|
||||||
|
height=level
|
||||||
|
);
|
||||||
|
translate (
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
radius_in_circle,
|
||||||
|
-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();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue