Advertisement
Guest User

Untitled

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