From 8ee471d48eb34342df036f396e3b4a7b1bcbc46f Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sun, 16 Apr 2023 22:46:27 -0300 Subject: [PATCH] move to right place --- simple_lid.py | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 simple_lid.py diff --git a/simple_lid.py b/simple_lid.py new file mode 100644 index 0000000..9ddf3f0 --- /dev/null +++ b/simple_lid.py @@ -0,0 +1,107 @@ +import cadquery as cq + +import dimensions as dim +from utils import extrude_shape2, hex_vents, punch_hole, export + + +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() + export(model, "simple_lid.stl") + + cover = decorative_cover() + export(cover, "simple_lid_cover.stl") + + export( + model, + "simple_lid.svg", + opt={ + "projectionDir": (0, 0, 1), + }, + ) + + export( + model.faces(">X").workplane(offset=-dim.width / 2).split(keepTop=True), + "simple_lid_right.stl", + ) + export( + model.faces(">X").workplane(offset=-dim.width / 2).split(keepBottom=True), + "simple_lid_left.stl", + )