// Rotor Mag
//---------------------------------------------------------------------
//def
//Technisch
$fa=0.01;
Pi=3.14159265;
D_Dart=12.6;
MatH=4;
//Rotor
//design
AnzSchrauben=6;
SchraubenD=3;
AnzSpikes=12;
AnzDarts=60;
Space=1;
WandSchraube=2;
MechAusenR=20;
StegMondestBreite=6;
MechRand=20;
//Trommel
AusenRand=15;
MagBaseX=50;
MagBaseZ=81;
MagInX=75;
MagInZ=15;
//-----------------------------------------------------------------
//Berechnet
//Rotor
R_Dart=D_Dart/2;
Winkel=360/AnzDarts;
R_Scheibe=(R_Dart+Space)/sin(Winkel/2);
R_DartRing=(R_Dart+Space)/tan(Winkel/2);
R_DartAusenRing=R_DartRing+D_Dart/2;
R_Ausen=R_DartAusenRing+AusenRand;
R_AussparungAusen=R_Scheibe-R_Dart-StegMondestBreite;
//Trommel
R_AusenBase=R_Ausen;
MagBaseY=sqrt(pow(R_AusenBase,2)-pow(MagBaseX/2,2));
MagBaseW=2*asin(MagBaseX/2/R_AusenBase);
PlankeB=2*(R_AusenBase*cos(Winkel/2))*sin(Winkel/2);
PlankeY=sqrt(pow(R_AusenBase,2)-pow(PlankeB/2,2));
//MagAdapter
xUntere45Schiene=sqrt(2*pow((R_DartRing-D_Dart/2),2))+MagInZ/2;
//------------------------------------------------------------------
//Out
echo("D_Dart",D_Dart);
echo("R_Dart",R_Dart);
echo("Winkel",Winkel);
echo("R_Scheibe",R_Scheibe);
echo("R_DartRing",R_DartRing);
echo("R_AussparungAusen",R_AussparungAusen);
//Main
rotor();
//projection(cut=true) translate(v = [0, 0, 0]) rotor();
Ausenkranz();
//------------------------------------------------------------------
//Module
module Ausenkranz()
{
echo("R_AusenBase",R_AusenBase);
echo("MagBaseY",MagBaseY);
echo("MagBaseW",MagBaseW);
echo("PlankeB",PlankeB);
echo("PlankeY",PlankeY);
difference()
{
cylinder (h = MatH, r=R_Ausen, center = true); //AusenRing
cylinder (h = MatH, r=R_DartAusenRing, center = true); //Freilasen für Darts
//translate(v = [0, MagBaseY+MatH/2, 0]) cube(size = [MagBaseX,3*MatH,MatH], center = true);
for(i = [0 : Winkel : 36])
{
rotate ([0,0,i]) translate(v = [0, PlankeY+MatH/2, 0]) cube(size = [PlankeB,MatH,MatH], center = true);
}
}
for(i = [0 : Winkel : 360])
{
rotate ([0,0,i]) translate(v = [0, PlankeY+MatH/2, 0]) cube(size = [2*MatH,MatH,MatH], center = true);
}
}
module rotor()
{
AusspRaW=360/AnzSpikes;
AusspRaK=abs(((R_DartRing-R_Dart-StegMondestBreite)*tan(AusspRaW/2)-StegMondestBreite)/(tan(AusspRaW/2)+1));
AusspRaR=R_DartRing-R_Dart-StegMondestBreite-AusspRaK;
InnenpRaK=abs(((MechAusenR+MechRand+StegMondestBreite)*tan(AusspRaW/2)-StegMondestBreite)/(tan(AusspRaW/2)-1));
InnenpRaR=MechAusenR+MechRand+StegMondestBreite+InnenpRaK;
echo("AusspRaW",AusspRaW);
echo("AusspRaK",AusspRaK);
echo("AusspRaR",AusspRaR);
echo("InnenpRaK",InnenpRaK);
echo("InnenpRaR",InnenpRaR);
difference()
{
cylinder (h = MatH, r=R_Scheibe, center = true); //AusenRing
cylinder (h = MatH, r=MechAusenR, center = true); //Freilasen für Mechanik
for(i = [0 : Winkel : 360])
{
rotate ([0,0,i]) translate(v = [R_DartRing, 0, 0]) cylinder (h = MatH, r=R_Dart, center = true); //Darts
}
for(i = [0 : AusspRaW : 360])
{
rotate ([0,0,i])
linear_extrude(height = 4, center = true)
hull()
{
translate(v = [AusspRaR, 0, 0]) circle ( AusspRaK);
translate(v = [InnenpRaR, 0, 0]) circle ( InnenpRaK);
}
}
for(i = [0+(AusspRaW/2) : AusspRaW : 360+(AusspRaW/2)])
{
rotate ([0,0,i]) translate(v = [MechAusenR+MechRand+2*MatH, 0, 0]) cube(size = [2*MatH,MatH,MatH], center = true);
rotate ([0,0,i]) translate(v = [R_DartRing-R_Dart-StegMondestBreite-MatH, 0, 0]) cube(size = [2*MatH,MatH,MatH], center = true);
}
for(i = [0+(AusspRaW/2) : AusspRaW : 360+(AusspRaW/2)])
{
rotate ([0,0,i]) translate(v = [MechAusenR+MechRand/2, 0, 0]) cylinder (h = MatH, r=SchraubenD/2, center = true);
}
}
}
//------------------------------------------------------------------
//Helper
module ring(ri,ra,h)
{
difference()
{
cylinder (h = h, r=ra, center = true);
cylinder (h = h, r=ri, center = true);
}
}