From ffe7e41f5dd3b3a1e2f58efe2f520ddd6003e073 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Tue, 16 May 2023 08:31:47 +0200 Subject: [PATCH] Access card holder --- access-card-holder.scad | 53 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 access-card-holder.scad diff --git a/access-card-holder.scad b/access-card-holder.scad new file mode 100644 index 0000000..b6d2248 --- /dev/null +++ b/access-card-holder.scad @@ -0,0 +1,53 @@ +infty = 200; +eps = 0.01; + +card_x = 86 + 0.5; +card_y = 54 + 0.5; +card_z = 1.2; +corner_r = 2.5; + +body_h = 10; +wall = 1.2; + +clip_h = 4; +clip_hole_d = 5; + +module credit_card() { + hull() { + translate([corner_r, corner_r, 0]) + cylinder(r = corner_r, h = card_z, $fn = 32); + translate([card_x - corner_r, corner_r, 0]) + cylinder(r = corner_r, h = card_z, $fn = 32); + translate([corner_r, card_y - corner_r, 0]) + cylinder(r = corner_r, h = card_z, $fn = 32); + translate([card_x - corner_r, card_y - corner_r, 0]) + cylinder(r = corner_r, h = card_z, $fn = 32); + } +} + +difference() { + translate([0, 2*wall+card_z, 0]) + rotate([90, 0, 0]) + hull() { + cube([body_h, body_h, 2*wall+card_z]); + translate([sqrt(card_x^2+card_y^2) + 2*wall - body_h/2, body_h/2, 0]) + cylinder(r = body_h/2, h = 2*wall+card_z, $fn = 12); + + } + % translate([wall, wall, body_h/2-0.3*corner_r]) // !!! heuristka + rotate([0, atan((card_y-corner_r)/(card_x-corner_r)), 0]) + translate([0, card_z, 0]) + rotate([90, 0, 0]) + credit_card(); + + translate([body_h, wall+card_z-eps, -eps]) + cube([sqrt(card_x^2+card_y^2) + 2*wall - 2*body_h, wall+2*eps, body_h+2*eps]); +} + +// clip with hole +translate([-clip_hole_d/2, wall+card_z/2, 0]) +difference() { + cylinder(r = clip_hole_d/2 + wall, h = clip_h, $fn = 32); + translate([0, 0, -eps]) + cylinder(r = clip_hole_d/2, h = clip_h + 2*eps); +} -- 2.43.0