diff --git a/notebook_nueva/model.stl b/notebook_nueva/model.stl index 6bf7d16..203cc99 100644 Binary files a/notebook_nueva/model.stl and b/notebook_nueva/model.stl differ diff --git a/notebook_nueva/modelo.py b/notebook_nueva/modelo.py index c3b5ddb..3a7b63f 100644 --- a/notebook_nueva/modelo.py +++ b/notebook_nueva/modelo.py @@ -6,6 +6,7 @@ import battery_holder import usb_hub import zero_holder as cpu_holder import screen_pillars +import keyboard from utils import extrude_shape, punch_hole, punch_hole2 # Base for the notebook. Basically a kbd base that extends back @@ -28,37 +29,6 @@ thickness = 27 + shell_t # 27 inside ti_radius = 2.35 ti_depth = 6.25 -# Positions are determined by measuring the keyboard - -kbd_pillar_positions = [ - (18.25, -16), - (142.5, -25.5), - (kbd_width - 20, -16), - (23.5, -79.5), - (145.5, -82.5), - (kbd_width - 19, -79.5), -] - - -# 2-level mounting pillars for the kbd -# Width of these need to be tweaked for -# each specific keyboard -kbd_pillars = ( - cq.Sketch() - .push(kbd_pillar_positions) - .circle(2.2, mode="a") - # Holes for self-tapping screws - .circle(1.1, mode="s") -) - -kbd_lower_pillars = ( - cq.Sketch() - .push(kbd_pillar_positions) - .circle(4, mode="a") - # Holes for self-tapping screws - .circle(1.1, mode="s") -) - # These are placed where convenient, and are used to join the top and bottom # parts of the case. # Measured from top-left corner OUTSIDE @@ -91,10 +61,6 @@ usb_offset = 48 def model(): # Create the basic shape of the case bottom. - - # Currently also adds keyboard stuff and things to connect - # to the screen case, but that should be refactored - # out (FIXME) model = ( cq.Workplane("XY") .workplane(offset=thickness / 2) @@ -105,34 +71,23 @@ def model(): .fillet(2) .faces(">Z") .shell(-shell_t) - # Slanted mounting pillars on the kbd top - .faces(">Z") - .workplane(centerOption="CenterOfBoundBox") - # Top-left kbd corner inside the box - .center(-width / 2 + shell_t, kbd_height - height / 2 + shell_t) - .transformed(rotate=cq.Vector(kbd_angle, 0, 0)) - # These two offsets push the keyboard "down" into the case - # and need to be adjusted per-keyboard - .tag("sloped") - .workplane(offset=-2.5) - .placeSketch(kbd_pillars) - .extrude(-1000) - .workplaneFromTagged("sloped") - .workplane(offset=-5.5) - .placeSketch(kbd_lower_pillars) - .extrude(-1000) - # Remove the excess extrusion - .workplaneFromTagged("mid_height") - .transformed(offset=cq.Vector(0, 0, -thickness / 2)) - .split(keepTop=True) - # Slope for the beyboard - .workplaneFromTagged("sloped") - .split(keepBottom=True) ) # Now the basic box shape is in place, start adding things # and cutting holes. + model = keyboard.add( + model=model, + width=width, + height=height, + thickness=thickness, + bottom_face=">Z", # Yes >Z + back_face=None, + offset_x=0, + offset_y=height - keyboard.kbd_height, + shell_t=shell_t, + ) + model = usb_hub.add( model=model, width=width,