Nirastich Tile

Info | No Wrap | Fullscreen | Raw Text | | | Fork

  1. StudDiameter = 5;
  2. StudHeight = 1.8;
  3. BaseSize = 8;
  4. PlateHeight = 3.2;
  5. WallThickness = 1.6;
  6. InnerHeightTolerance = 0.5;
  7.  
  8. difference() {
  9.     tile(2,8);
  10.     translate([2,4,PlateHeight-0.0001]) linear_extrude(1) text("Nirastich",7.5,halign="left",valign="bottom",font="Liberation Sans:style=Bold");
  11.     translate([46,4,PlateHeight-0.0001]) linear_extrude(1) text(".com",5,halign="left",valign="bottom",font="Liberation Sans:style=Bold");
  12. }
  13.  
  14. module brick(depth, width) {
  15.     union() {
  16.         difference() {
  17.             cube([width*BaseSize,depth*BaseSize,3*PlateHeight]);
  18.             translate([WallThickness,WallThickness,-1])
  19.                 cube([width*BaseSize-2*WallThickness,depth*BaseSize-2*WallThickness,2*PlateHeight+StudHeight+InnerHeightTolerance+1]);
  20.             tol(depth,width);
  21.         }
  22.         if (depth > 1 && width > 1) {
  23.             for (a = [1:depth-1]) {
  24.                 for (b = [1:width-1]) {
  25.                     translate([b*BaseSize,a*BaseSize,0]) tube(2*PlateHeight+StudHeight+InnerHeightTolerance);
  26.                 }
  27.             }
  28.         }
  29.        
  30.         if (depth <= 1 && width > 1) {
  31.             for (a = [1:width-1]) {
  32.                 translate([a*BaseSize,BaseSize/2,0]) smalltube(2*PlateHeight+StudHeight+InnerHeightTolerance);
  33.             }
  34.         }
  35.        
  36.         if (depth > 1 && width <= 1) {
  37.             for (a = [1:depth-1]) {
  38.                 translate([BaseSize/2,a*BaseSize,0]) smalltube(2*PlateHeight+StudHeight+InnerHeightTolerance);
  39.             }
  40.         }
  41.        
  42.         for (a = [1:depth]) {
  43.             for (b = [1:width]) {
  44.                 translate([b*BaseSize,a*BaseSize,3*PlateHeight])stud();
  45.             }
  46.         }
  47.     }
  48. }
  49.  
  50. module plate(depth, width) {
  51.     union() {
  52.         difference() {
  53.             cube([width*BaseSize,depth*BaseSize,PlateHeight]);
  54.             translate([WallThickness,WallThickness,-1])
  55.                 cube([width*BaseSize-2*WallThickness,depth*BaseSize-2*WallThickness,StudHeight+InnerHeightTolerance+1]);
  56.             tol(depth,width);
  57.         }
  58.         if (depth > 1 && width > 1) {
  59.             for (a = [1:depth-1]) {
  60.                 for (b = [1:width-1]) {
  61.                     translate([b*BaseSize,a*BaseSize,0])tube(StudHeight+InnerHeightTolerance);
  62.                 }
  63.             }
  64.         }
  65.        
  66.         if (depth <= 1 && width > 1) {
  67.             for (a = [1:width-1]) {
  68.                 translate([a*BaseSize,BaseSize/2,0]) smalltube(StudHeight+InnerHeightTolerance);
  69.             }
  70.         }
  71.        
  72.         if (depth > 1 && width <= 1) {
  73.             for (a = [1:depth-1]) {
  74.                 translate([BaseSize/2,a*BaseSize,0]) smalltube(StudHeight+InnerHeightTolerance);
  75.             }
  76.         }
  77.        
  78.         for (a = [1:depth]) {
  79.             for (b = [1:width]) {
  80.                 translate([b*BaseSize,a*BaseSize,PlateHeight])stud();
  81.             }
  82.         }
  83.     }
  84. }
  85.  
  86. module tile(depth, width) {
  87.     union() {
  88.         difference() {
  89.             cube([width*BaseSize,depth*BaseSize,PlateHeight]);
  90.             translate([WallThickness,WallThickness,-1])
  91.                 cube([width*BaseSize-2*WallThickness,depth*BaseSize-2*WallThickness,StudHeight+InnerHeightTolerance+1]);
  92.             groove(depth,width);
  93.             tol(depth,width);
  94.         }
  95.         if (depth > 1 && width > 1) {
  96.             for (a = [1:depth-1]) {
  97.                 for (b = [1:width-1]) {
  98.                     translate([b*BaseSize,a*BaseSize,0])tube(StudHeight+1);
  99.                 }
  100.             }
  101.         }
  102.        
  103.         if (depth <= 1 && width > 2) {
  104.             for (a = [1:width-1]) {
  105.                 translate([a*BaseSize,BaseSize/2,0]) smalltube(StudHeight+InnerHeightTolerance);
  106.             }
  107.         }
  108.        
  109.         if (depth > 2 && width <= 1) {
  110.             for (a = [1:depth-1]) {
  111.                 translate([BaseSize/2,a*BaseSize,0]) smalltube(StudHeight+InnerHeightTolerance);
  112.             }
  113.         }
  114.     }
  115. }
  116.  
  117. module groove(depth, width) {
  118.     GrooveSize = 0.5;
  119.     difference() {
  120.         cube([width*BaseSize,depth*BaseSize,GrooveSize]);
  121.         translate([GrooveSize,GrooveSize,-1])
  122.             cube([width*BaseSize-2*GrooveSize,depth*BaseSize-2*GrooveSize,GrooveSize+2]);
  123.     }
  124. }
  125.  
  126. module tol(depth, width) {
  127.     Tolerance = 0.1;
  128.     difference() {
  129.         cube([width*BaseSize,depth*BaseSize,10]);
  130.         translate([Tolerance,Tolerance,0])
  131.             cube([width*BaseSize-2*Tolerance,depth*BaseSize-2*Tolerance,10]);
  132.     }
  133. }
  134.  
  135. module tube(height) {
  136.     OuterDiameter = 6.5;
  137.     InnerDiameter = 5;
  138.     difference() {
  139.         cylinder($fn=50,h=height,r1=OuterDiameter/2,r2=OuterDiameter/2);
  140.         translate([0,0,-0.5]) cylinder($fn=50,h=StudHeight+2,r1=InnerDiameter/2,r2=InnerDiameter/2);
  141.     }
  142. }
  143.  
  144. module smalltube(height) {
  145.     OuterDiameter = WallThickness*2;
  146.     InnerDiameter = 0;
  147.     difference() {
  148.         cylinder($fn=50,h=height,r1=OuterDiameter/2,r2=OuterDiameter/2);
  149.         translate([0,0,-0.5]) cylinder($fn=50,h=StudHeight+2,r1=InnerDiameter/2,r2=InnerDiameter/2);
  150.     }
  151. }
  152.  
  153. module stud() {
  154.     translate([-BaseSize/2,-BaseSize/2,0]) cylinder($fn=50,h=StudHeight,r1=StudDiameter/2,r2=StudDiameter/2);
  155. }