Advertisement
Guest User

Untitled

a guest
Jul 31st, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. <craft>
  2. <parameter name="side1" type="int" default="3"/>
  3.  
  4. <script type="text/openjscad">
  5. function main(params) {
  6.  
  7. var length1, length2, length3, bar1, bar2, bar3;
  8. var width = params.width;
  9.  
  10. var hinge = mathhinge(width*2);
  11. hinge = hinge.scale([0.5,0.5,0.5]);
  12.  
  13. return hinge;
  14.  
  15. } // end of main
  16.  
  17. function mathhinge(width){
  18.  
  19. var length = width; // Length of the complete hinge
  20. var height = 3; // Height (diameter) of the hinge
  21. var clearance = 0.4; // Clearance between cones and holes
  22. var gap = 0.5; // Clearance between hinge and sides
  23.  
  24. // Parameters that the user does not get to specify
  25. var fn=24*1;
  26. var border = 2*1;
  27. var fudge = .01*1; // to preserve mesh integrity
  28. var corner = 1*1; // space between hinge and corner
  29. var hinge_radius = height/2;
  30. var cone_height = 1.7*hinge_radius;
  31.  
  32.  
  33. var hinge_module = hinge(hinge_radius, clearance, length, corner, cone_height, gap, fudge)
  34. .translate([-hinge_radius,0,0])
  35. .rotateY(90);
  36.  
  37. var bar1 = bar(length, border, height)
  38. .translate([0, hinge_radius+gap, 0]);
  39. var bar2 = bar(length, border, height)
  40. .translate([0, -2*border-hinge_radius-gap, 0]);
  41.  
  42. return union(hinge_module, bar1, bar2);
  43.  
  44. }
  45.  
  46. function hinge(hinge_radius, clearance,
  47. length, corner, cone_height, gap, fudge){
  48. var rad = hinge_radius;
  49. var clr = clearance;
  50. var len = (length-2*corner)/3;
  51. var con = cone_height;
  52.  
  53. // left outside hinge = (cylinder+box)-cone
  54. var outside = difference(
  55. union(
  56. cylinder({h:len-clr,r:rad})
  57. .translate([0,0,corner]),
  58. cube([2*rad,rad+gap,len-clr])
  59. .translate([-rad,0,corner])
  60. ),
  61. cylinder({h:con,r1:0,r2:rad})
  62. .translate([0,0,corner+len-con-clr+fudge])
  63. )
  64. // inside hinge = cylinder+box+cone+cone
  65. var inside = union(
  66. cylinder({h:len,r:rad})
  67. .translate([0,0,corner+len]),
  68. cube([2*rad,rad+gap,len])
  69. .translate([-rad,-rad-gap,corner+len]),
  70. cylinder({h:con,r1:0,r2:rad})
  71. .translate([0,0,corner+len-con]),
  72. cylinder({h:con,r1:rad,r2:0})
  73. .translate([0,0,corner+2*len])
  74. );
  75.  
  76. // right outside hinge = (cylinder+box)-cone
  77. var right = union(
  78. cylinder({h:len-clr,r:rad})
  79. .translate([0,0,corner+2*len+clr]),
  80. cube([2*rad,rad+gap,len-clr])
  81. .translate([-rad,0,corner+2*len+clr])
  82. );
  83. right = difference(
  84. right,
  85. cylinder({h:con,r1:rad,r2:0})
  86. .translate([0,0,corner+2*len+clr-fudge])
  87. );
  88.  
  89. return union(outside, inside, right);
  90. }
  91.  
  92. function bar(length, border, height){
  93. return cube([length,2*border,height]);
  94. }
  95. </script>
  96. </craft>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement