User:Dorkmo/Ideas/Battery/SCAD: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
Line 25: Line 25:
mesh_height = 10;
mesh_height = 10;


//begin underlying cage module
module cage()
module cage()
  {
  {
difference()
  difference()
{
  {
cube(size = [(tub_width-(spacing*3))/2,tub_length-(spacing*2),cage_height], center=false);
    cube(size = [(tub_width-(spacing*3))/2,tub_length-(spacing*2),cage_height], center=false);
//cut hole for poweder
//cut hole for powder to sit in
translate([cage_wall, cage_endwall, cage_base])
    translate([cage_wall, cage_endwall, cage_base])
cube(size = [((tub_width-(spacing*3))/2)-(cage_wall*2),(tub_length-(spacing*2))-(cage_endwall*2),cage_height-cage_base+1], center=false);
      cube(size = [((tub_width-(spacing*3))/2)-(cage_wall*2),(tub_length-(spacing*2))-(cage_endwall*2),cage_height-cage_base+1], center=false);
 
  }
//could make this into a module so it can be mirrored instead of the wall
}
 
//end cage
//end second row
        }
        }
     
      
      
 
//begin mesh hole grid module
 
 
module holes()
module holes()
{
{
    for (h = [1 : floor(((cage_height-cage_base-((((((sin(90)*(cage_wall/sin(90-mesh_angle))))-((sin(mesh_angle)*((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(sin(90))))))/sin(90))*sin(mesh_angle))))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing)])
  for (h = [1 : floor(((cage_height-cage_base-((((((sin(90)*(cage_wall/sin(90-mesh_angle))))-((sin(mesh_angle)*((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(sin(90))))))/sin(90))*sin(mesh_angle))))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing)])
  {
    translate(h*[0,0,mesh_spacing])
     {
     {
       translate(h*[0,0,mesh_spacing])
//scale command here to make openings perfect squares
       scale([1,1,(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/sin(90-mesh_angle))*sin(90))])
       {
       {
        scale([1,1,(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/sin(90-mesh_angle))*sin(90))])
        {
         rotate([0,90-mesh_angle,0])
         rotate([0,90-mesh_angle,0])
         {
         {
Line 61: Line 56:
               rotate([0,0,45])
               rotate([0,0,45])
               {
               {
//could put a scale command here to make opening a perfect square
                 cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);
                 cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);
               }
               }
Line 75: Line 69:
                 rotate([0,0,45])
                 rotate([0,0,45])
                 {
                 {
//could put a scale command here to make opening a perfect square
                  cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);          
                cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);
                 }
                  
               }
                
            }
           
          }
}}}}}}}}}
        }
      }
    }
  }
}
//end mesh hole grid module


//begin final cage construction
difference()
difference()
  {
  {
Line 98: Line 98:
   }
   }
  }
  }
//end cage


//calculate verticle height of mesh holes to take away from max height of holes
//calculate verticle height of mesh holes to take away from max height of holes

Revision as of 17:09, 12 November 2014

User:Dorkmo/Ideas/Battery/SCAD/Sandbox


inside cage


height = 60;
tub_width = 95;
tub_length = 70;
outsidewall = 5;
basethickness = 5;
tub_wall = 5;

spacing = 5;
cage_height = 40;
cage_wall = 10;
cage_endwall = 5;
cage_base = 5;
wedge_hieght = 10;

mesh_opening = 1 ;
mesh_angle = 35;
mesh_spacing = 2;
mesh_width = 17;
mesh_height = 10;

//begin underlying cage module
module cage()
 {
  difference()
   {
    cube(size = [(tub_width-(spacing*3))/2,tub_length-(spacing*2),cage_height], center=false);
//cut hole for powder to sit in
     translate([cage_wall, cage_endwall, cage_base])
      cube(size = [((tub_width-(spacing*3))/2)-(cage_wall*2),(tub_length-(spacing*2))-(cage_endwall*2),cage_height-cage_base+1], center=false);
   }
 }
//end cage
     
//begin mesh hole grid module
module holes()
 {
  for (h = [1 : floor(((cage_height-cage_base-((((((sin(90)*(cage_wall/sin(90-mesh_angle))))-((sin(mesh_angle)*((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(sin(90))))))/sin(90))*sin(mesh_angle))))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing)])
   {
    translate(h*[0,0,mesh_spacing])
     {
//scale command here to make openings perfect squares
      scale([1,1,(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/sin(90-mesh_angle))*sin(90))])
       {
        rotate([0,90-mesh_angle,0])
         {
          for (w = [1 : floor((((tub_length-(spacing*2))-(cage_endwall*2))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing)])
           {
            translate(w*[0,mesh_spacing,0])
             {
              rotate([0,0,45])
               {
                cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);
               }
             }
           }
//begin second row
         for (w = [0 : floor((((tub_length-(spacing*2))-(cage_endwall*2))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing)])
           {
            translate([mesh_spacing/2,mesh_spacing/2,-mesh_spacing/2])
             {
              translate(w*[0,mesh_spacing,0])
               {
                rotate([0,0,45])
                 {
                  cube(size = [mesh_opening,mesh_opening,(mesh_opening*2)+(sin(90)*(cage_wall/sin(90-mesh_angle)))], center=false);           
                 }
               }
             }
           }
         }
       }
     }
   }
 }
//end mesh hole grid module

//begin final cage construction
difference()
 {
  cage();
  translate([((tub_width-(spacing*3))/2)-cage_wall-((sin(mesh_angle)*sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/2), cage_endwall-(mesh_spacing/2)+(((((tub_length-(spacing*2))-(cage_endwall*2))-(((floor((((tub_length-(spacing*2))-(cage_endwall*2))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing))*mesh_spacing)+sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))))/2), cage_base])
   {
    holes();
   }
    translate([cage_wall+((sin(mesh_angle)*sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/2), cage_endwall-(mesh_spacing/2)+(((((tub_length-(spacing*2))-(cage_endwall*2))-(((floor((((tub_length-(spacing*2))-(cage_endwall*2))-(sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening))))/mesh_spacing))*mesh_spacing)+sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))))/2), cage_base])
   {

  mirror([1,0,0])
     {
      #holes();
     }
   }
 }
//end cage


//calculate verticle height of mesh holes to take away from max height of holes
//works okay up to 45 then bugs out. might be because its before the scale down
echo((((((sin(90)*(cage_wall/sin(90-mesh_angle))))-((sin(mesh_angle)*((sqrt((mesh_opening*mesh_opening)+(mesh_opening*mesh_opening)))/(sin(90))))))/sin(90))*sin(mesh_angle)));








 

single cell tub

height = 60;
oa_width = 80;
oa_length = 105;
outsidewall = 5;
basethickness = 5;
membranethickness = 5;
tub_wall = 5;

spacing = 5;
cage_height = 40;
cage_wall = 10;
cage_base = 5;

difference()
	{
		cube(size = [oa_width, oa_length, height], center=false);
		translate([outsidewall,outsidewall,basethickness])
			cube(size = [oa_width-(outsidewall*2), oa_length-(outsidewall*2), height-basethickness], center=false);
	}