--- /dev/null
+/*
+ * TODO
+ ** make more parametric
+ ** add parameter to specify number of wires/pins
+ */
+
+$fn=10; //Minimum nuber of circle segments
+
+module conn_male(size=23, thickness=1.5, full=false) {
+ difference() {
+ union() {
+ translate([0,size*0.3,0]) cube([size-(thickness*2),(size-(thickness*2))*2,size-(thickness*2)], center=true);
+ translate([size/3,(size/3)-thickness]) rotate([0,0,145]) cube([size*0.2,size/4,size-(thickness*2)], center=true);
+ }
+ if(!full) {
+ translate([0,size/2,0]) cube([size-(thickness*4),size*1.5,size+1], center=true);
+ rotate([0,90,0])
+ for(i = [(size/3)-thickness,-(size/3)+thickness])
+ translate([i,0,0])
+ rotate([90,0,0])
+ cylinder(size*2, size/10, size/10);
+ }
+ }
+}
+
+module conn_female(size=23, thickness=1.5) {
+ difference() {
+ cube(size, center=true);
+ conn_male(size, thickness=thickness, full=true);
+ for(i = [size/4,-size/4])
+ translate([i,0,0])
+ rotate([90,0,0]) cylinder(size*2, size/10, size/10);
+ }
+}
+
+module connector(size=10, thickness=1.5, gap=0.6, design=false) {
+ if(!design) {
+ //Print
+ translate([0,size*1.5,-(thickness+gap/2)]) conn_male(size-gap,thickness);
+ conn_female(size,thickness);
+ } else {
+ //Design
+ conn_male(size-gap,thickness);
+ % conn_female(size,thickness);
+ }
+}
+
+//connector(design=true);
+connector();
\ No newline at end of file