use ; // rows finger_colums=[-1,0,1,2,3,4]; finger_rows = [ 4, // -1 4, // 0 4, // 1 4, // 2 4, // 3 4, // 3 ]; angle_switch_x=[ [-10,0,10,20,30], // -1 [-10,0,10,20,30], // 0 [-10,0,10,20,30], // 1 [-10,0,10,20,30], // 2 [-10,0,10,20,30], // 3 [-10,0,10,20,30], // 4 ]; offset_switch_y=[ [0,0,0,0,0], // -1 [0,0,0,0,0], // 0 [0,0,0,0,0], // 1 [0,0,0,0,0], // 2 [0,0,0,0,0], // 3 [0,0,0,0,0], // 4 ]; offset_switch_z=[ [0,0,0,0,0], // -1 [0,0,0,0,0], // 0 [0,0,0,0,0], // 1 [0,0,0,0,0], // 2 [0,0,0,0,0], // 3 [0,0,0,0,0], // 4 ]; angle_switch_y=[ [0,0,0,0,0], // -1 [0,0,0,0,0], // 0 [0,0,0,0,0], // 1 [0,0,0,0,0], // 2 [0,0,0,0,0], // 3 [0,0,0,0,0], // 4 ]; keycaps_row=[ [3,4,3,2,1,1], // -1 [3,4,3,2,1,1], // 0 [3,4,3,2,1,1], // 1 [3,4,3,2,1,1], // 2 [3,4,3,2,1,1], // 3 [3,4,3,2,1,1], // 4 ]; row_offset=[ -15.1, -13.1, -13.15, -13.1 ]; //for(idx_x=[1:len(finger_colums)]) { for(idx_x=[0:len(finger_colums)-1]) { for(idx_y=[0:finger_rows[idx_x]-1]) { // first try finger_offset=19.0; //translate([finger_offset*finger_colums[idx_x],finger_offset*idx_y,0]) //rotate([angle_switch_x[idx_x][idx_y],angle_switch_y[idx_x][idx_y],0]) // switch($t=$t, travel_max = 4, kap_type="sa", kap_row = keycaps_row[idx_x][idx_y]); // second try // translate([0,0,42]) // lower by radius of keycaps // rotate([20*(idx_y-2),0,0]) // translate([0,0,-42]) // lower by radius of keycaps // translate([0,0,row_offset[keycaps_row[idx_x][idx_y]-1]]) // bring keycaps in heigth // switch($t=$t, travel_max = 4, kap_type="sa", kap_row = keycaps_row[idx_x][idx_y]); // third try // cos alpha = b/c translate([0,offset_switch_y[idx_x][idx_y],offset_switch_z[idx_x][idx_y]]) rotate([angle_switch_x[idx_x][idx_y],angle_switch_y[idx_x][idx_y],0]) translate([0,0,row_offset[keycaps_row[idx_x][idx_y]-1]]) // bring keycaps in heigth switch($t=$t, travel_max = 4, kap_type="sa", kap_row = keycaps_row[idx_x][idx_y]); } }