15 module credit_card() {
17 translate([corner_r, corner_r, 0])
18 cylinder(r = corner_r, h = card_z, $fn = 32);
19 translate([card_x - corner_r, corner_r, 0])
20 cylinder(r = corner_r, h = card_z, $fn = 32);
21 translate([corner_r, card_y - corner_r, 0])
22 cylinder(r = corner_r, h = card_z, $fn = 32);
23 translate([card_x - corner_r, card_y - corner_r, 0])
24 cylinder(r = corner_r, h = card_z, $fn = 32);
29 translate([0, 2*wall+card_z, 0])
32 cube([body_h, body_h, 2*wall+card_z]);
33 translate([sqrt(card_x^2+card_y^2) + 2*wall - body_h/2, body_h/2, 0])
34 cylinder(r = body_h/2, h = 2*wall+card_z, $fn = 12);
37 % translate([wall, wall, body_h/2-0.3*corner_r]) // !!! heuristka
38 rotate([0, atan((card_y-corner_r)/(card_x-corner_r)), 0])
39 translate([0, card_z, 0])
43 translate([body_h, wall+card_z-eps, -eps])
44 cube([sqrt(card_x^2+card_y^2) + 2*wall - 2*body_h, wall+2*eps, body_h+2*eps]);
48 translate([-clip_hole_d/2, wall+card_z/2, 0])
50 cylinder(r = clip_hole_d/2 + wall, h = clip_h, $fn = 32);
51 translate([0, 0, -eps])
52 cylinder(r = clip_hole_d/2, h = clip_h + 2*eps);