diff --git a/notebook_nueva/.vscode/settings.json b/notebook_nueva/.vscode/settings.json new file mode 100644 index 0000000..d59a47a --- /dev/null +++ b/notebook_nueva/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "python.formatting.provider": "black", + "emeraldwalk.runonsave": { + "commands": [ + { + "match": ".py", + "isAsync": true, + "cmd": "make" + } + } + } \ No newline at end of file diff --git a/notebook_nueva/Makefile b/notebook_nueva/Makefile new file mode 100644 index 0000000..7bb2cc9 --- /dev/null +++ b/notebook_nueva/Makefile @@ -0,0 +1,6 @@ +STL_FILES = base.stl hinged_lid.stl simple_lid.stl tandy_lid.stl + +all: $(STL_FILES) + +%.stl: %.py dimensions.py + python $< \ No newline at end of file diff --git a/notebook_nueva/front_bezel.stl b/notebook_nueva/front_bezel.stl deleted file mode 100644 index 81fead3..0000000 Binary files a/notebook_nueva/front_bezel.stl and /dev/null differ diff --git a/notebook_nueva/left_hinged_lid.stl b/notebook_nueva/left_hinged_lid.stl deleted file mode 100644 index 5348182..0000000 Binary files a/notebook_nueva/left_hinged_lid.stl and /dev/null differ diff --git a/notebook_nueva/left_screen_mount.stl b/notebook_nueva/left_screen_mount.stl deleted file mode 100644 index 84a0f8f..0000000 Binary files a/notebook_nueva/left_screen_mount.stl and /dev/null differ diff --git a/notebook_nueva/left_side.stl b/notebook_nueva/left_side.stl deleted file mode 100644 index 1479c68..0000000 Binary files a/notebook_nueva/left_side.stl and /dev/null differ diff --git a/notebook_nueva/left_side_lid.stl b/notebook_nueva/left_side_lid.stl deleted file mode 100644 index cb0aedb..0000000 Binary files a/notebook_nueva/left_side_lid.stl and /dev/null differ diff --git a/notebook_nueva/lid.py b/notebook_nueva/lid.py deleted file mode 100644 index f8f1a39..0000000 --- a/notebook_nueva/lid.py +++ /dev/null @@ -1,108 +0,0 @@ -import cadquery as cq -from cadquery import exporters - -import dimensions as dim -from utils import extrude_shape2, hex_vents, punch_hole - - -def model(): - # Create the basic shape of the case lid - model = ( - cq.Workplane("XY") - # Hollow box - .box(dim.width, dim.sl_height, dim.sl_thickness) - .edges("|Z and >Y") - .fillet(2) - ) - - # Make many holes - vent = hex_vents(size=6, width=dim.width * 0.9, height=dim.sl_height * 0.9)[0] - model = punch_hole( - model=model, - face=">Z", - w=dim.width, - h=dim.sl_height, - x_offset=0.05 * dim.width, - y_offset=0.05 * dim.sl_height, - hole=vent, - depth=dim.sl_thickness, - ) - - # Add screw holes - for position in dim.mounting_pillar_positions: - model = ( - model.faces(">Z") - .workplane(centerOption="CenterOfBoundBox") - .center( - -dim.width / 2 + position[0], - dim.sl_height / 2 - position[1] - dim.shell_t, - ) - .placeSketch(cq.Sketch().circle(dim.m4_top / 2 + 1.5)) - .extrude(-dim.sl_thickness) - .faces(">Z") - .workplane(centerOption="CenterOfBoundBox") - .center( - -dim.width / 2 + position[0], - dim.sl_height / 2 - position[1] - dim.shell_t, - ) - .cskHole(dim.m4_bottom, dim.m4_top, 82, depth=None) - ) - - # Add front lip - - model = ( - model.faces(">Z") - .workplane(centerOption="CenterOfBoundBox") - .center(0, -dim.sl_height / 2 + dim.sl_lip_thickness / 2) - .placeSketch( - cq.Sketch().trapezoid(dim.width - 2 * dim.shell_t, dim.sl_lip_thickness, 90) - ) - .extrude(-dim.sl_front_lip - dim.sl_thickness) - ) - - return model - - -def decorative_cover(): - # A decorative thingie to cover the ugly seam in the middle - model = cq.Workplane("XY").box(10, dim.sl_height, 1).edges("|Z").fillet(1) - vent = hex_vents( - size=6, width=dim.width * 0.9, height=dim.sl_height * 0.9, density=0.775 - )[0] - - model = extrude_shape2( - model=model, - face=">Z", - w=dim.width, - h=dim.sl_height, - x_offset=0.05 * dim.width, - y_offset=0.05 * dim.sl_height, - hole=vent, - depth=3, - ) - return model - - -if __name__ == "__main__": - model = model() - exporters.export(model, "lid.stl") - - cover = decorative_cover() - exporters.export(cover, "lid_cover.stl") - - exporters.export( - model, - "lid.svg", - opt={ - "projectionDir": (0, 0, 1), - }, - ) - - exporters.export( - model.faces(">X").workplane(offset=-dim.width / 2).split(keepTop=True), - "right_side_lid.stl", - ) - exporters.export( - model.faces(">X").workplane(offset=-dim.width / 2).split(keepBottom=True), - "left_side_lid.stl", - ) diff --git a/notebook_nueva/lid.stl b/notebook_nueva/lid.stl deleted file mode 100644 index a4ef5d1..0000000 Binary files a/notebook_nueva/lid.stl and /dev/null differ diff --git a/notebook_nueva/lid_cover.stl b/notebook_nueva/lid_cover.stl deleted file mode 100644 index 939be39..0000000 Binary files a/notebook_nueva/lid_cover.stl and /dev/null differ diff --git a/notebook_nueva/model.stl b/notebook_nueva/model.stl deleted file mode 100644 index ee39a77..0000000 Binary files a/notebook_nueva/model.stl and /dev/null differ diff --git a/notebook_nueva/model.svg b/notebook_nueva/model.svg deleted file mode 100644 index 09bbd51..0000000 --- a/notebook_nueva/model.svg +++ /dev/null @@ -1,3147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notebook_nueva/modelo.py b/notebook_nueva/modelo.py deleted file mode 100644 index 4a094d8..0000000 --- a/notebook_nueva/modelo.py +++ /dev/null @@ -1,208 +0,0 @@ -import cadquery as cq -from cadquery import exporters -from cq_warehouse.drafting import Draft - -import audio_plug -import battery_holder -import hdmi_out -import keyboard -import screen_pillars -import usb_hub -import zero_holder as cpu_holder -import dimensions as dim - -# Base for the notebook. Basically a kbd base that extends back -# as much as possible - -screen_pillars.init(dim.mounting_pillar_positions, dim.base_thickness - dim.shell_t) - - -def model(): - # Create the basic shape of the case bottom. - model = ( - cq.Workplane("XY") - .workplane(offset=dim.base_thickness / 2) - .tag("mid_height") - # Hollow box - .box(dim.width, dim.height, dim.base_thickness) - .edges("|Z") - .fillet(2) - .faces(">Z") - .shell(-dim.shell_t) - ) - - # Now the basic box shape is in place, start adding things - # and cutting holes. - - model = usb_hub.add( - model=model, - width=dim.width, - height=dim.height, - thickness=dim.base_thickness, - bottom_face="Z") - .transformed(rotate=(dim.tl_scr_angle, 0, 0)) - # Move the screen "lower" so it doesn't interfere - # so much with the back - .center(0, -2) - .tag("slanted") - # Arbitrary huge trapezoid to cut off the material *in front* - # of the inclined screen - .placeSketch(cq.Sketch().trapezoid(1000, 1000, 90, mode="a")) - .cutBlind(1000) - # Trim the top - .workplaneFromTagged("mid_height") - .workplane(offset=21) - .placeSketch(cq.Sketch().trapezoid(1000, 1000, 90, mode="a")) - .cutBlind(100) - # Make bottom smaller to fit with base - .faces(">X") - .workplane(centerOption="CenterOfBoundBox") - .center(-dim.tl_height / 2, -dim.tl_full_thickness / 2) - .placeSketch( - cq.Sketch() - .polygon( - [ - (dim.tl_height_bottom, 0), - (dim.tl_height_bottom, dim.tl_full_thickness / 3), - (dim.tl_height, dim.tl_full_thickness - 21), - (dim.tl_height, dim.tl_full_thickness), - (dim.tl_height + 5, dim.tl_full_thickness + 5), - (dim.tl_height + 5, 0), - (dim.tl_height_bottom, 0), - ] - ) - .vertices() - .fillet(3) - ) - .cutBlind(-1000) - # Fillet top of the object - .edges("|X and >Z") - .fillet(3) - # Cut off viewport hole so we can see the screen - .workplaneFromTagged("slanted") - .placeSketch(viewport_cutout) - .cutBlind(-dim.shell_t) - # Make hole for screen assembly so the whole screen fits - .workplaneFromTagged("slanted") - .workplane(offset=-dim.shell_t, centerOption="CenterOfBoundBox") - # Left bezel is wider than right one, so this hole is displaced to the left - .center(-3, 0) - .placeSketch(screen_cutout) - .cutBlind(-dim.scr_thickness) - # Make it hollow - .faces("(0, -10, 5)") - .fillet(2) - ) - - -if __name__ == "__main__": - model = model() - exporters.export(model, "screen_mount.stl") - - offset_width = -dim.width / 2 - - right_side = ( - model.faces(">X") - .workplane(centerOption="CenterOfBoundBox", offset=offset_width) - .split(keepTop=True) - ) - - exporters.export(right_side, "right_screen_mount.stl") - - left_side = ( - model.faces(">X") - .workplane(centerOption="CenterOfBoundBox", offset=offset_width) - .split(keepBottom=True) - ) - - exporters.export(left_side, "left_screen_mount.stl") diff --git a/notebook_nueva/screen_mount.stl b/notebook_nueva/screen_mount.stl deleted file mode 100644 index 9874bcb..0000000 Binary files a/notebook_nueva/screen_mount.stl and /dev/null differ