chiark / gitweb /
pin-hinge: wip
[reprap-play.git] / pin-hinge.scad
1 // -*- C -*-
2
3 include <utils.scad>
4
5 $hinge_pin_dia = 0.795 + 0.35;
6 $hinge_main_dia = 4.0;
7 $hinge_inter_gap = 0.50;
8 $hinge_prong_minwidth = 3.0;
9 $hinge_noncrit_gap = 1.0;
10
11 $fa = 3;
12 $fs = 0.05;
13
14 module HingePinPlan(){
15   circle(r= $hinge_pin_dia/2);
16 }
17
18 module HingeProngPlan(behind){
19   hull(){
20     circle(r= $hinge_main_dia/2);
21     polygon([[0,0],
22              [-$hinge_main_dia/2, -behind],
23              [+$hinge_main_dia/2, -behind]]);
24   }
25 }
26
27 module HingeGapPlan() {
28   circle(r = $hinge_main_dia/2 + $hinge_inter_gap);
29 }
30
31 module PlanDemo(){
32   HingeProngPlan(5);
33   %HingeGapPlan();
34   translate([0,0,1]) color("red") HingePinPlan();
35 }
36
37 module HingePositive(l, behind){
38   linextr_x_yz(0, l)
39     HingeProngPlan(behind);
40 }  
41
42 module HingeNegative(l){
43   eff_l = l + $hinge_inter_gap;
44   pairs = floor(eff_l / (2*($hinge_prong_minwidth + $hinge_inter_gap)));
45   stride = eff_l / pairs;
46   prong_width = stride/2 - $hinge_inter_gap;
47   linextr_x_yz(-0.1, l+0.1)
48     HingePinPlan();
49   for (i=[0:pairs-1]) {
50     translate(stride * i * [1,0,0])
51       linextr_x_yz(0 + (i==0 ? -0.1 : 0), prong_width + $hinge_inter_gap)
52       HingeGapPlan();
53   }
54 }
55
56 module Demo(){
57   difference(){
58     HingePositive(30, 10);
59     %HingeNegative(30);
60   }
61 }
62
63 //PlanDemo();
64 Demo();