1include <BOSL2/std.scad>
 2
 3card_dimensions = [87,18.5]; //mm
 4card_thickness = 1.5; //mm
 5border_thickness = 1; //mm
 6border_height = 3; //mm
 7text_size = 5.5; //mm
 8text_padding = 2.5; //mm
 9text_line_spacing = 7; //mm
10text_thickness = 2; //mm
11text_contents = [
12["Dalibard Louis;65kg"],
13["12/02/2007;A+;177cm"],
14];
15/*
16text_contents = [
17["DOB:","12 feb. 2007"],
18["Blood type:","A+"],
19["Height:","177cm"],
20["Weight:","65kg"],
21["Medications:","None"],
22["Allergies:","None"],
23["Addr.:","10 r. d. Fécamp,"],
24["75012, France",""],
25];*/
26text_font = "Iosevka Curly:style=Bold";
27
28keyring_hole_padding = [5,18.5/2]; //mm
29keyring_hole_diameter = 4; //mm
30keyring_hole = true;
31
32rounding = 3; //mm
33resolution = 200;
34
35difference(){
36cuboid([card_dimensions.x,card_dimensions.y,card_thickness],anchor=BOTTOM+LEFT+FRONT,edges=[LEFT+FRONT,LEFT+BACK,RIGHT+FRONT,RIGHT+BACK],rounding=rounding,$fn=resolution);
37translate([card_dimensions.x-keyring_hole_padding.x,keyring_hole_padding.y,card_thickness/2])
38zcyl(d=keyring_hole_diameter,length=card_thickness,$fn=resolution);
39}
40translate([0,0,card_thickness])
41union(){
42difference(){
43cuboid([card_dimensions.x,card_dimensions.y,border_height],anchor=BOTTOM+LEFT+FRONT,edges=[LEFT+FRONT,LEFT+BACK,RIGHT+FRONT,RIGHT+BACK],rounding=rounding,$fn=resolution);
44translate([border_thickness,border_thickness,0])
45cuboid([card_dimensions.x-border_thickness*2,card_dimensions.y-border_thickness*2,border_height],anchor=BOTTOM+LEFT+FRONT,edges=[LEFT+FRONT,LEFT+BACK,RIGHT+FRONT,RIGHT+BACK],rounding=rounding-border_thickness,$fn=resolution);
46}
47linear_extrude(text_thickness)
48translate([0,card_dimensions.y-text_padding-text_size,0])
49for (i=[0:len(text_contents)-1]){
50translate([text_padding,-text_line_spacing*i,0])
51text(text_contents[i][0],font=text_font,size=text_size,halign="left",$fn=resolution);
52translate([card_dimensions.x-text_padding,-text_line_spacing*i,0])
53text(text_contents[i][1],font=text_font,size=text_size,halign="right",$fn=resolution);
54}
55}