diff options
-rw-r--r-- | resources/separable_thumb1.PNG | bin | 0 -> 794001 bytes | |||
-rw-r--r-- | resources/separable_thumb2.PNG | bin | 0 -> 800252 bytes | |||
-rw-r--r-- | resources/trackball_test.PNG | bin | 0 -> 742543 bytes | |||
-rw-r--r-- | src/dactyl_manuform.py | 234 | ||||
-rw-r--r-- | src/generate_configuration.py | 56 | ||||
-rw-r--r-- | src/run_config.json | 51 |
6 files changed, 229 insertions, 112 deletions
diff --git a/resources/separable_thumb1.PNG b/resources/separable_thumb1.PNG Binary files differnew file mode 100644 index 0000000..6435d05 --- /dev/null +++ b/resources/separable_thumb1.PNG diff --git a/resources/separable_thumb2.PNG b/resources/separable_thumb2.PNG Binary files differnew file mode 100644 index 0000000..736ff1a --- /dev/null +++ b/resources/separable_thumb2.PNG diff --git a/resources/trackball_test.PNG b/resources/trackball_test.PNG Binary files differnew file mode 100644 index 0000000..3d8deba --- /dev/null +++ b/resources/trackball_test.PNG diff --git a/src/dactyl_manuform.py b/src/dactyl_manuform.py index 0e79458..b68ffb4 100644 --- a/src/dactyl_manuform.py +++ b/src/dactyl_manuform.py @@ -273,6 +273,16 @@ def single_plate(cylinder_segments=100, side="right"): return plate +def plate_pcb_cutout(side="right"): + shape = box(*plate_pcb_size) + shape = translate(shape, (0, 0, -plate_pcb_size[2]/2)) + shape = translate(shape, plate_pcb_offset) + + if side == "left": + shape = mirror(shape, 'YZ') + + return shape + def trackball_cutout(segments=100, side="right"): if trackball_modular: hole_diameter = ball_diameter + 2 * (ball_gap + ball_wall_thickness + trackball_modular_clearance+trackball_modular_lip_width)-.1 @@ -504,6 +514,19 @@ def key_holes(side="right"): return shape +def plate_pcb_cutouts(side="right"): + debugprint('plate_pcb_cutouts()') + # hole = single_plate() + cutouts = [] + for column in range(ncols): + for row in range(nrows): + if (column in [2, 3]) or (not row == lastrow): + cutouts.append(key_place(plate_pcb_cutout(side=side), column, row)) + + # cutouts = union(cutouts) + + return cutouts + def caps(): caps = None @@ -640,7 +663,7 @@ def thumborigin(): origin[i] = origin[i] + thumb_offsets[i] if thumb_style == 'MINIDOX': - origin[1] = origin[1] - .4*(trackball_Usize-1)*sa_length + origin[1] = origin[1] - .4*(minidox_Usize-1)*sa_length return origin @@ -720,6 +743,10 @@ def default_thumb_1x_layout(shape, cap=False): shapes = union(shape_list) return shapes +def default_thumb_pcb_plate_cutouts(side="right"): + shape = default_thumb_1x_layout(plate_pcb_cutout(side=side)) + shape = union([shape, default_thumb_15x_layout(plate_pcb_cutout(side=side))]) + return shape def default_thumb_15x_layout(shape, cap=False, plate=True): debugprint('thumb_15x_layout()') @@ -756,6 +783,9 @@ def default_thumb_15x_layout(shape, cap=False, plate=True): def adjustable_plate_size(Usize=1.5): return (Usize * sa_length - mount_height) / 2 +def usize_dimention(Usize=1.5): + return Usize * sa_length + def adjustable_plate_half(Usize=1.5): debugprint('double_plate()') @@ -771,6 +801,14 @@ def adjustable_plate(Usize=1.5): top_plate = adjustable_plate_half(Usize) return union((top_plate, mirror(top_plate, 'XZ'))) +def adjustable_square_plate(Uwidth=1.5, Uheight=1.5): + width = usize_dimention(Usize=Uwidth) + height = usize_dimention(Usize=Uheight) + print("width: {}, height: {}, thickness:{}".format(width, height, web_thickness)) + shape = box(width, height, web_thickness) + shape = difference(shape, [box(mount_width-.01, mount_height-.01, 2*web_thickness)]) + shape = translate(shape, (0, 0, web_thickness/2)) + return shape def double_plate_half(): debugprint('double_plate()') @@ -864,6 +902,31 @@ def thumb_connectors(side='right', style_override=None): return default_thumb_connectors() +def thumb_pcb_plate_cutouts(side='right', style_override=None): + if style_override is None: + _thumb_style = thumb_style + else: + _thumb_style = style_override + + if _thumb_style == "MINI": + return mini_thumb_pcb_plate_cutouts(side) + elif _thumb_style == "MINIDOX": + return minidox_thumb_pcb_plate_cutouts(side) + elif _thumb_style == "CARBONFET": + return carbonfet_thumb_pcb_plate_cutouts(side) + + elif "TRACKBALL" in _thumb_style: + if (side == ball_side or ball_side == 'both'): + if _thumb_style == "TRACKBALL_ORBYL": + return tbjs_thumb_pcb_plate_cutouts(side) + elif _thumb_style == "TRACKBALL_CJ": + return tbcj_thumb_pcb_plate_cutouts(side) + else: + return thumb_pcb_plate_cutouts(side, style_override=other_thumb) + + else: + return default_thumb_pcb_plate_cutouts(side) + def default_thumbcaps(): t1 = default_thumb_1x_layout(sa_cap(1), cap=True) if not default_1U_cluster: @@ -876,6 +939,7 @@ def default_thumb(side="right"): shape = default_thumb_1x_layout(rotate(single_plate(side=side), (0, 0, -90))) shape = union([shape, default_thumb_15x_layout(rotate(single_plate(side=side), (0, 0, -90)))]) shape = union([shape, default_thumb_15x_layout(double_plate(), plate=False)]) + shape = difference(shape, [default_thumb_pcb_plate_cutouts()]) return shape @@ -1130,6 +1194,11 @@ def mini_thumb(side="right"): return shape +def mini_thumb_pcb_plate_cutouts(side="right"): + shape = mini_thumb_1x_layout(plate_pcb_cutout(side=side)) + shape = union([shape, mini_thumb_15x_layout(plate_pcb_cutout(side=side))]) + return shape + def mini_thumb_post_tr(): return translate(web_post(), @@ -1321,9 +1390,11 @@ def minidox_thumb(side="right"): shape = minidox_thumb_fx_layout(rotate(single_plate(side=side), [0.0, 0.0, -90])) shape = union([shape, minidox_thumb_fx_layout(adjustable_plate(minidox_Usize))]) # shape = minidox_thumb_1x_layout(single_plate(side=side)) + return shape - - +def minidox_thumb_pcb_plate_cutouts(side="right"): + shape = minidox_thumb_fx_layout(plate_pcb_cutout(side=side)) + shape = union([shape, minidox_thumb_fx_layout(plate_pcb_cutout())]) return shape def minidox_thumb_post_tr(): @@ -1484,6 +1555,11 @@ def carbonfet_thumb(side="right"): return shape +def carbonfet_thumb_pcb_plate_cutouts(side="right"): + shape = carbonfet_thumb_1x_layout(plate_pcb_cutout(side=side)) + shape = union([shape, carbonfet_thumb_15x_layout(plate_pcb_cutout())]) + return shape + def carbonfet_thumb_post_tr(): return translate(web_post(), [(mount_width / 2) - post_adj, (mount_height / 1.15) - post_adj, 0] @@ -1630,7 +1706,7 @@ def tbjs_thumb_position_rotation(): rot = [10, -15, 5] pos = thumborigin() # Changes size based on key diameter around ball, shifting off of the top left cluster key. - shift = [-.9*tbjs_key_diameter/2+27-42, -.1*tbjs_key_diameter/2+3-20, -5] + shift = [-.9*tbjs_key_diameter/2+27-42, -.1*tbjs_key_diameter/2+3-25, -5] for i in range(len(pos)): pos[i] = pos[i] + shift[i] + tbjs_translation_offset[i] @@ -1703,16 +1779,17 @@ def tbjs_thumb_1x_layout(shape): tbjs_thumb_br_place(rotate(shape, [0, 0, thumb_plate_br_rotation])), ]) +def tbjs_thumb_pcb_plate_cutouts(side="right"): + return tbjs_thumb_1x_layout(plate_pcb_cutout(side=side)) + def tbjs_thumb_fx_layout(shape): - return union([ - # tbjs_thumb_tl_place(rotate(shape, [0, 0, thumb_plate_tr_rotation])), - # tbjs_thumb_tlold_place(rotate(shape, [0, 0, thumb_plate_tl_rotation])), - # tbjs_thumb_mlold_place(rotate(shape, [0, 0, thumb_plate_ml_rotation])), - # tbjs_thumb_mr_place(rotate(shape, [0, 0, thumb_plate_mr_rotation])), - # tbjs_thumb_bl_place(rotate(shape, [0, 0, thumb_plate_bl_rotation])), - # tbjs_thumb_br_place(rotate(shape, [0, 0, thumb_plate_br_rotation])), - ]) + return [ + tbjs_thumb_tl_place(rotate(shape, [0, 0, thumb_plate_tr_rotation])), + tbjs_thumb_mr_place(rotate(shape, [0, 0, thumb_plate_mr_rotation])), + tbjs_thumb_bl_place(rotate(shape, [0, 0, thumb_plate_bl_rotation])), + tbjs_thumb_br_place(rotate(shape, [0, 0, thumb_plate_br_rotation])), + ] def trackball_layout(shape): return union([ @@ -1722,14 +1799,16 @@ def trackball_layout(shape): def tbjs_thumbcaps(): t1 = tbjs_thumb_1x_layout(sa_cap(1)) + # t1 = tbjs_thumb_fx_layout(sa_cap(1)) # t1.add(tbjs_thumb_15x_layout(rotate(sa_cap(1), [0, 0, rad2deg(pi / 2)]))) return t1 def tbjs_thumb(side="right"): - shape = tbjs_thumb_fx_layout(rotate(single_plate(side=side), [0.0, 0.0, -90])) - shape = union([shape, tbjs_thumb_fx_layout(double_plate())]) - shape = union([shape, tbjs_thumb_1x_layout(single_plate(side=side))]) + # shape = tbjs_thumb_fx_layout(rotate(single_plate(side=side), [0.0, 0.0, -90])) + shape = tbjs_thumb_1x_layout(single_plate(side=side)) + # shape = tbjs_thumb_fx_layout(adjustable_square_plate(Uwidth=tbjs_Uwidth, Uheight=tbjs_Uheight)) + shape = union([shape, *tbjs_thumb_fx_layout(adjustable_square_plate(Uwidth=tbjs_Uwidth, Uheight=tbjs_Uheight))]) # shape = union([shape, trackball_layout(trackball_socket())]) # shape = tbjs_thumb_1x_layout(single_plate(side=side)) @@ -1739,28 +1818,28 @@ def tbjs_thumb(side="right"): def tbjs_thumb_post_tr(): debugprint('thumb_post_tr()') return translate(web_post(), - [(mount_width / 2) - post_adj, ((mount_height/2) + adjustable_plate_size(trackball_Usize)) - post_adj, 0] + [(mount_width / 2) + adjustable_plate_size(tbjs_Uwidth) - post_adj, ((mount_height/2) + adjustable_plate_size(tbjs_Uheight)) - post_adj, 0] ) def tbjs_thumb_post_tl(): debugprint('thumb_post_tl()') return translate(web_post(), - [-(mount_width / 2) + post_adj, ((mount_height/2) + adjustable_plate_size(trackball_Usize)) - post_adj, 0] + [-(mount_width / 2) - adjustable_plate_size(tbjs_Uwidth) + post_adj, ((mount_height/2) + adjustable_plate_size(tbjs_Uheight)) - post_adj, 0] ) def tbjs_thumb_post_bl(): debugprint('thumb_post_bl()') return translate(web_post(), - [-(mount_width / 2) + post_adj, -((mount_height/2) + adjustable_plate_size(trackball_Usize)) + post_adj, 0] + [-(mount_width / 2) - adjustable_plate_size(tbjs_Uwidth) + post_adj, -((mount_height/2) + adjustable_plate_size(tbjs_Uheight)) + post_adj, 0] ) def tbjs_thumb_post_br(): debugprint('thumb_post_br()') return translate(web_post(), - [(mount_width / 2) - post_adj, -((mount_height/2) + adjustable_plate_size(trackball_Usize)) + post_adj, 0] + [(mount_width / 2) + adjustable_plate_size(tbjs_Uwidth) - post_adj, - ((mount_height/2) + adjustable_plate_size(tbjs_Uheight)) + post_adj, 0] ) @@ -1821,21 +1900,21 @@ def tbjs_thumb_connectors(): triangle_hulls( [ tbjs_place(tbjs_post_l()), - tbjs_thumb_bl_place(web_post_tl()), + tbjs_thumb_bl_place(tbjs_thumb_post_tl()), tbjs_place(tbjs_post_bl()), - tbjs_thumb_bl_place(web_post_tr()), - tbjs_thumb_br_place(web_post_tl()), + tbjs_thumb_bl_place(tbjs_thumb_post_tr()), + tbjs_thumb_br_place(tbjs_thumb_post_tl()), tbjs_place(tbjs_post_bl()), - tbjs_thumb_br_place(web_post_tr()), + tbjs_thumb_br_place(tbjs_thumb_post_tr()), tbjs_place(tbjs_post_br()), - tbjs_thumb_br_place(web_post_tr()), + tbjs_thumb_br_place(tbjs_thumb_post_tr()), tbjs_place(tbjs_post_br()), - tbjs_thumb_mr_place(web_post_br()), + tbjs_thumb_mr_place(tbjs_thumb_post_br()), tbjs_place(tbjs_post_r()), - tbjs_thumb_mr_place(web_post_bl()), - tbjs_thumb_tl_place(web_post_br()), + tbjs_thumb_mr_place(tbjs_thumb_post_bl()), + tbjs_thumb_tl_place(tbjs_thumb_post_br()), tbjs_place(tbjs_post_r()), - tbjs_thumb_tl_place(web_post_bl()), + tbjs_thumb_tl_place(tbjs_thumb_post_bl()), tbjs_place(tbjs_post_tr()), key_place(web_post_bl(), 0, cornerrow), tbjs_place(tbjs_post_tl()), @@ -1847,10 +1926,10 @@ def tbjs_thumb_connectors(): hulls.append( triangle_hulls( [ - tbjs_thumb_bl_place(web_post_tr()), - tbjs_thumb_br_place(web_post_tl()), - tbjs_thumb_bl_place(web_post_br()), - tbjs_thumb_br_place(web_post_bl()), + tbjs_thumb_bl_place(tbjs_thumb_post_tr()), + tbjs_thumb_br_place(tbjs_thumb_post_tl()), + tbjs_thumb_bl_place(tbjs_thumb_post_br()), + tbjs_thumb_br_place(tbjs_thumb_post_bl()), ] ) ) @@ -1859,10 +1938,10 @@ def tbjs_thumb_connectors(): hulls.append( triangle_hulls( [ - tbjs_thumb_br_place(web_post_tr()), - tbjs_thumb_mr_place(web_post_br()), - tbjs_thumb_br_place(web_post_br()), - tbjs_thumb_mr_place(web_post_tr()), + tbjs_thumb_br_place(tbjs_thumb_post_tr()), + tbjs_thumb_mr_place(tbjs_thumb_post_br()), + tbjs_thumb_br_place(tbjs_thumb_post_br()), + tbjs_thumb_mr_place(tbjs_thumb_post_tr()), ] ) ) @@ -1870,10 +1949,10 @@ def tbjs_thumb_connectors(): hulls.append( triangle_hulls( [ - tbjs_thumb_mr_place(web_post_bl()), - tbjs_thumb_tl_place(web_post_br()), - tbjs_thumb_mr_place(web_post_tl()), - tbjs_thumb_tl_place(web_post_tr()), + tbjs_thumb_mr_place(tbjs_thumb_post_bl()), + tbjs_thumb_tl_place(tbjs_thumb_post_br()), + tbjs_thumb_mr_place(tbjs_thumb_post_tl()), + tbjs_thumb_tl_place(tbjs_thumb_post_tr()), ] ) ) @@ -1991,6 +2070,10 @@ def tbcj_thumb(side="right"): tb = tbcj_place(tbcj_holder()) return union([t, tb]) +def tbcj_thumb_pcb_plate_cutouts(side="right"): + t = tbcj_thumb_layout(plate_pcb_cutout(side=side)) + return t + def tbcj_thumbcaps(): t = tbcj_thumb_layout(sa_cap(1)) return t @@ -2512,21 +2595,21 @@ def tbjs_thumb_connection(side='right'): triangle_hulls( [ key_place(web_post_bl(), 0, cornerrow), - tbjs_thumb_tl_place(web_post_bl()), + tbjs_thumb_tl_place(tbjs_thumb_post_bl()), key_place(web_post_br(), 0, cornerrow), - tbjs_thumb_tl_place(web_post_tl()), + tbjs_thumb_tl_place(tbjs_thumb_post_tl()), key_place(web_post_bl(), 1, cornerrow), - tbjs_thumb_tl_place(web_post_tl()), + tbjs_thumb_tl_place(tbjs_thumb_post_tl()), key_place(web_post_br(), 1, cornerrow), - tbjs_thumb_tl_place(web_post_tr()), + tbjs_thumb_tl_place(tbjs_thumb_post_tr()), key_place(web_post_bl(), 2, lastrow), - tbjs_thumb_tl_place(web_post_tr()), + tbjs_thumb_tl_place(tbjs_thumb_post_tr()), key_place(web_post_bl(), 2, lastrow), - tbjs_thumb_mr_place(web_post_tl()), + tbjs_thumb_mr_place(tbjs_thumb_post_tl()), key_place(web_post_br(), 2, lastrow), key_place(web_post_bl(), 3, lastrow), - tbjs_thumb_mr_place(web_post_tr()), - tbjs_thumb_mr_place(web_post_tl()), + tbjs_thumb_mr_place(tbjs_thumb_post_tr()), + tbjs_thumb_mr_place(tbjs_thumb_post_tl()), key_place(web_post_br(), 2, lastrow), ] @@ -2540,24 +2623,24 @@ def tbjs_thumb_walls(): print('thumb_walls()') # thumb, walls shape = wall_brace( - tbjs_thumb_mr_place, .5, 1, web_post_tr(), + tbjs_thumb_mr_place, .5, 1, tbjs_thumb_post_tr(), (lambda sh: key_place(sh, 3, lastrow)), 0, -1, web_post_bl(), ) shape = union([shape, wall_brace( - tbjs_thumb_mr_place, .5, 1, web_post_tr(), - tbjs_thumb_br_place, 0, -1, web_post_br(), + tbjs_thumb_mr_place, .5, 1, tbjs_thumb_post_tr(), + tbjs_thumb_br_place, 0, -1, tbjs_thumb_post_br(), )]) shape = union([shape, wall_brace( - tbjs_thumb_br_place, 0, -1, web_post_br(), - tbjs_thumb_br_place, 0, -1, web_post_bl(), + tbjs_thumb_br_place, 0, -1, tbjs_thumb_post_br(), + tbjs_thumb_br_place, 0, -1, tbjs_thumb_post_bl(), )]) shape = union([shape, wall_brace( - tbjs_thumb_br_place, 0, -1, web_post_bl(), - tbjs_thumb_bl_place, 0, -1, web_post_br(), + tbjs_thumb_br_place, 0, -1, tbjs_thumb_post_bl(), + tbjs_thumb_bl_place, 0, -1, tbjs_thumb_post_br(), )]) shape = union([shape, wall_brace( - tbjs_thumb_bl_place, 0, -1, web_post_br(), - tbjs_thumb_bl_place, -1, -1, web_post_bl(), + tbjs_thumb_bl_place, 0, -1, tbjs_thumb_post_br(), + tbjs_thumb_bl_place, -1, -1, tbjs_thumb_post_bl(), )]) shape = union([shape, wall_brace( @@ -2570,11 +2653,11 @@ def tbjs_thumb_walls(): )]) shape = union([shape, wall_brace( tbjs_place, -1, 0, tbjs_post_l(), - tbjs_thumb_bl_place, -1, 0, web_post_tl(), + tbjs_thumb_bl_place, -1, 0, tbjs_thumb_post_tl(), )]) shape = union([shape, wall_brace( - tbjs_thumb_bl_place, -1, 0, web_post_tl(), - tbjs_thumb_bl_place, -1, -1, web_post_bl(), + tbjs_thumb_bl_place, -1, 0, tbjs_thumb_post_tl(), + tbjs_thumb_bl_place, -1, -1, tbjs_thumb_post_bl(), )]) return shape @@ -3556,9 +3639,7 @@ def teensy_holder(): def screw_insert_shape(bottom_radius, top_radius, height): debugprint('screw_insert_shape()') if bottom_radius == top_radius: - base = translate(cylinder(radius=bottom_radius, height=height), - (0, 0, -height / 2) - ) + base = cylinder(radius=bottom_radius, height=height) else: base = translate(cone(r1=bottom_radius, r2=top_radius, height=height), (0, 0, -height / 2)) @@ -3703,23 +3784,25 @@ def thumb_screw_insert_holes(side='right'): ) def thumb_screw_insert_outers(offset=0.0, side='right'): - bottom_radius = screw_insert_bottom_radius + 1.6 - top_radius = screw_insert_top_radius + 1.6 + # screw_insert_bottom_radius + screw_insert_wall + # screw_insert_top_radius + screw_insert_wall + bottom_radius = screw_insert_outer_radius + top_radius = screw_insert_outer_radius height = screw_insert_height + 1.5 - return thumb_screw_insert(bottom_radius, top_radius, height, offset, side=side) + return thumb_screw_insert(bottom_radius, top_radius, height, offset=offset, side=side) def screw_insert_holes(side='right'): return screw_insert_all_shapes( screw_insert_bottom_radius, screw_insert_top_radius, screw_insert_height+.02, offset=-.01, side=side ) -def screw_insert_outers(side='right'): - return screw_insert_all_shapes( - screw_insert_bottom_radius + 1.6, - screw_insert_top_radius + 1.6, - screw_insert_height + 1.5, - side=side - ) +def screw_insert_outers(offset=0.0, side='right'): + # screw_insert_bottom_radius + screw_insert_wall + # screw_insert_top_radius + screw_insert_wall + bottom_radius = screw_insert_outer_radius + top_radius = screw_insert_outer_radius + height = screw_insert_height + 1.5 + return screw_insert_all_shapes(bottom_radius, top_radius, height, offset=offset, side=side) def screw_insert_screw_holes(side='right'): return screw_insert_all_shapes(1.7, 1.7, 350, side=side) @@ -3841,6 +3924,9 @@ def model_side(side="right"): if show_caps: shape = add([shape, ball]) + if plate_pcb_clear: + shape = difference(shape, [plate_pcb_cutouts(side=side)]) + main_shape = shape #BUILD THUMB @@ -3873,6 +3959,8 @@ def model_side(side="right"): thumb_section = difference(thumb_section, [tbcutout]) thumb_section = union([thumb_section, sensor]) + if plate_pcb_clear: + thumb_section = difference(thumb_section, [thumb_pcb_plate_cutouts(side=side)]) block = box(350, 350, 40) block = translate(block, (0, 0, -20)) diff --git a/src/generate_configuration.py b/src/generate_configuration.py index dfd5c67..bc7eb9e 100644 --- a/src/generate_configuration.py +++ b/src/generate_configuration.py @@ -44,7 +44,12 @@ shape_config = { 11 # controls overall height# original=9 with centercol=3# use 16 for centercol=2 ), - 'web_thickness': 4.0, + + 'extra_width': 2.5, # extra space between the base of keys# original= 2 + 'extra_height': 1.0, # original= 0.5 + + + 'web_thickness': 4.0 + 1.1, 'post_size': 0.1, # post_adj': post_size / 2 'post_adj': 0, @@ -71,8 +76,8 @@ shape_config = { 'minidox_separable_thumb_screw_xy_locations': [[-37, -34], [-62, 12], [10, -25]], 'carbonfet_thumb_screw_xy_locations': [[-48, -37]], 'carbonfet_separable_thumb_screw_xy_locations': [[-48, -37], [-52, 10], [12, -35]], - 'orbyl_thumb_screw_xy_locations': [[-53, -60]], - 'orbyl_separable_thumb_screw_xy_locations': [[-53, -60], [-67, 10], [8, -40]], + 'orbyl_thumb_screw_xy_locations': [[-53, -68]], + 'orbyl_separable_thumb_screw_xy_locations': [[-53, -68], [-66, 8], [10, -40]], 'tbcj_thumb_screw_xy_locations': [[-40, -75]], 'tbcj_separable_thumb_screw_xy_locations': [[-40, -75], [-63, 10], [15, -40]], @@ -84,7 +89,6 @@ shape_config = { 'thumb_plate_bl_rotation': 0.0, # Bottom right plate rotation tweaks as thumb cluster is crowded for hot swap, etc. ############################## # EXPERIMENTAL - 'separable_thumb': True, #creates a separable thumb section with additional screws to hold it down. Only attached at base. ############################## @@ -109,6 +113,9 @@ shape_config = { ########################################## 'other_thumb': 'DEFAULT', # cluster used for second thumb except if ball_side == 'both' 'tbjs_key_diameter': 70, + 'tbjs_Uwidth': 1.2, # size for inner key near trackball + 'tbjs_Uheight': 1.2, # size for inner key near trackball + # Offsets are per key and are applied before rotating into place around the ball # X and Y act like Tangential and Radial around the ball # 'tbjs_translation_offset': (0, 0, 10), # applied to the whole assy @@ -145,8 +152,7 @@ shape_config = { 'trackball_modular_ring_height': 10.0, # height mount ring down from ball height. Covers gaps on elevated ball. 'trackball_modular_clearance': 0.5, # height of ball from ring, used to create identical position to fixed. - 'trackball_Usize': 1.5, # size for inner key near trackball - 'ball_side': 'right', #'left', 'right', or 'both' + 'ball_side': 'both', #'left', 'right', or 'both' 'ball_diameter': 34.0, 'ball_wall_thickness': 3, # should not be changed unless the import models are changed. 'ball_gap': 1.0, @@ -169,9 +175,6 @@ shape_config = { ############################## - 'extra_width': 2.5, # extra space between the base of keys# original= 2 - 'extra_height': 1.0, # original= 0.5 - 'wall_z_offset': 15, # length of the first downward_sloping part of the wall 'wall_x_offset': 5, # offset in the x and/or y direction for the first downward_sloping part of the wall (negative) 'wall_y_offset': 6, # offset in the x and/or y direction for the first downward_sloping part of the wall (negative) @@ -225,11 +228,11 @@ shape_config = { 'sa_profile_key_height': 12.7, 'sa_length': 18.5, 'sa_double_length': 37.5, - 'plate_thickness': 4+1.1, + 'plate_thickness': 4 + 1.1, 'plate_rim': 1.5 + 0.5, # Undercut style dimensions - 'clip_thickness': 1.4, + 'clip_thickness': 1.3, 'clip_undercut': 1.0, 'undercut_transition': .2, # NOT FUNCTIONAL WITH OPENSCAD, ONLY WORKS WITH CADQUERY @@ -327,11 +330,17 @@ shape_config = { } }, - 'screws_offset': 'INSIDE', #'OUTSIDE', 'INSIDE', 'ORIGINAL' + 'screws_offset': 'INSIDE', # 'OUTSIDE', 'INSIDE', 'ORIGINAL' 'screw_insert_height': 3.8, - 'screw_insert_bottom_radius': 5.31 / 2, - 'screw_insert_top_radius': 5.1 / 2, + + # 'screw_insert_bottom_radius': 5.31 / 2, #Designed for inserts + # 'screw_insert_top_radius': 5.1 / 2, #Designed for inserts + + 'screw_insert_bottom_radius': 2.5 / 2, # Designed for self tapping + 'screw_insert_top_radius': 2.5 / 2, # Designed for self tapping + + 'screw_insert_outer_radius': 4.25, # Common to keep interface to base # Does anyone even use these? I think they just get in the way. 'wire_post_height': 7, @@ -351,7 +360,7 @@ shape_config = { # 'USB_TEENSY' = Teensy holder, no RJ9 # 'EXTERNAL' = square cutout for a holder such as the one from lolligagger. # 'NONE' = No openings in the back. - 'controller_mount_type': 'PCB_MOUNT', + 'controller_mount_type': 'EXTERNAL', 'external_holder_height': 12.5, 'external_holder_width': 28.75, @@ -384,27 +393,34 @@ shape_config = { ## Bottom Plate Dimensions ################################### # COMMON DIMENSION - 'screw_hole_diameter': 2, + 'screw_hole_diameter': 3, # USED FOR CADQUERY ONLY 'base_thickness': 3.0, # thickness in the middle of the plate 'base_offset': 3.0, # Both start flat/flush on the bottom. This offsets the base up (if positive) 'base_rim_thickness': 5.0, # thickness on the outer frame with screws - 'screw_cbore_diameter': 4.0, - 'screw_cbore_depth': 2.0, + 'screw_cbore_diameter': 6.0, + 'screw_cbore_depth': 2.5, # Offset is from the top inner corner of the top inner key. ################################### ## HOLES ON PLATE FOR PCB MOUNT ################################### - 'plate_holes': False, + 'plate_holes': True, 'plate_holes_xy_offset': (0.0, 0.0), 'plate_holes_width': 14.3, 'plate_holes_height': 14.3, - 'plate_holes_diameter': 1.7, + 'plate_holes_diameter': 1.6, 'plate_holes_depth': 20.0, ################################### + ## EXPERIMENTAL + 'plate_pcb_clear': False, + 'plate_pcb_size': (18.5, 18.5, 5), + 'plate_pcb_offset': (0, 0, 0),# this is off of the back of the plate size. + ################################### + + ################################### ## SHOW PCB FOR FIT CHECK ################################### 'pcb_width': 18.0, diff --git a/src/run_config.json b/src/run_config.json index 54c20bb..29f573a 100644 --- a/src/run_config.json +++ b/src/run_config.json @@ -20,7 +20,9 @@ 7 ], "keyboard_z_offset": 11, - "web_thickness": 4.0, + "extra_width": 2.5, + "extra_height": 1.0, + "web_thickness": 5.1, "post_size": 0.1, "post_adj": 0, "thumb_style": "TRACKBALL_ORBYL", @@ -101,20 +103,20 @@ "orbyl_thumb_screw_xy_locations": [ [ -53, - -60 + -68 ] ], "orbyl_separable_thumb_screw_xy_locations": [ [ -53, - -60 + -68 ], [ - -67, - 10 + -66, + 8 ], [ - 8, + 10, -40 ] ], @@ -174,6 +176,8 @@ ], "other_thumb": "DEFAULT", "tbjs_key_diameter": 70, + "tbjs_Uwidth": 1.2, + "tbjs_Uheight": 1.2, "tbjs_translation_offset": [ 0, 0, @@ -236,8 +240,7 @@ "trackball_modular_ball_height": 3.0, "trackball_modular_ring_height": 10.0, "trackball_modular_clearance": 0.5, - "trackball_Usize": 1.5, - "ball_side": "right", + "ball_side": "both", "ball_diameter": 34.0, "ball_wall_thickness": 3, "ball_gap": 1.0, @@ -268,8 +271,6 @@ "pinky_1_5U": false, "first_1_5U_row": 0, "last_1_5U_row": 5, - "extra_width": 2.5, - "extra_height": 1.0, "wall_z_offset": 15, "wall_x_offset": 5, "wall_y_offset": 6, @@ -322,7 +323,7 @@ "sa_double_length": 37.5, "plate_thickness": 5.1, "plate_rim": 2.0, - "clip_thickness": 1.4, + "clip_thickness": 1.3, "clip_undercut": 1.0, "undercut_transition": 0.2, "plate_file": null, @@ -430,12 +431,13 @@ }, "screws_offset": "INSIDE", "screw_insert_height": 3.8, - "screw_insert_bottom_radius": 2.655, - "screw_insert_top_radius": 2.55, + "screw_insert_bottom_radius": 1.25, + "screw_insert_top_radius": 1.25, + "screw_insert_outer_radius": 4.25, "wire_post_height": 7, "wire_post_overhang": 3.5, "wire_post_diameter": 2.6, - "controller_mount_type": "PCB_MOUNT", + "controller_mount_type": "EXTERNAL", "external_holder_height": 12.5, "external_holder_width": 28.75, "external_holder_xoffset": -5.0, @@ -489,21 +491,32 @@ 22 ], "pcb_screw_y_offset": -2, - "screw_hole_diameter": 2, + "screw_hole_diameter": 3, "base_thickness": 3.0, "base_offset": 3.0, "base_rim_thickness": 5.0, - "screw_cbore_diameter": 4.0, - "screw_cbore_depth": 2.0, - "plate_holes": false, + "screw_cbore_diameter": 6.0, + "screw_cbore_depth": 2.5, + "plate_holes": true, "plate_holes_xy_offset": [ 0.0, 0.0 ], "plate_holes_width": 14.3, "plate_holes_height": 14.3, - "plate_holes_diameter": 1.7, + "plate_holes_diameter": 1.6, "plate_holes_depth": 20.0, + "plate_pcb_clear": false, + "plate_pcb_size": [ + 18.5, + 18.5, + 5 + ], + "plate_pcb_offset": [ + 0, + 0, + 0 + ], "pcb_width": 18.0, "pcb_height": 18.0, "pcb_thickness": 1.5, |