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 # Base for the notebook. Basically a kbd base that extends back # as much as possible # Thickness of the outer material shell_t = 3 # Size of the kbd board kbd_height = 95.5 kbd_width = 305 # Size of the whole object width = kbd_width + 2 * shell_t height = 159 thickness = 27 + shell_t # 27 inside # Insert Positions ti_radius = 2.35 ti_depth = 6.25 # These are placed where convenient, and are used to join the top and bottom # parts of the case. # Measured from top-left corner OUTSIDE mounting_pillar_positions = [ (6, 6), (6, 36), (120, 6), (170, 6), (width - 6, 6), (width - 6, 30), (120, 48), (170, 48), ] screen_pillars.init(mounting_pillar_positions, thickness - shell_t) # Offset for the USB port from back-left corner # of the case to left side of the hub usb_offset_x = width - audio_plug.item_w - usb_hub.item_w # CPU holder position from back-left corner of the case cpu_offset_x = 177 cpu_offset_y = 2 # Battery holder position from back-left corner of the case battery_offset_x = 15 battery_offset_y = 3 def model(): # Create the basic shape of the case bottom. model = ( cq.Workplane("XY") .workplane(offset=thickness / 2) .tag("mid_height") # Hollow box .box(width, height, thickness) .edges("|Z") .fillet(2) .faces(">Z") .shell(-shell_t) ) # Now the basic box shape is in place, start adding things # and cutting holes. model = usb_hub.add( model=model, width=width, height=height, thickness=thickness, bottom_face="