You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.2 KiB

from cadquery import exporters
from cq_warehouse.extensions import Workplane
from cq_warehouse.fastener import *
from cq_warehouse.thread import *
from cqmore.curve import archimedeanSpiral, circle
from cqmore.polygon import regularPolygon, star
from cqmore.polyhedron import polarZonohedra, Polyhedron, superellipsoid
from svg_path import addSvgPath
from svgpathtools import svg2paths
import cadquery as cq
import cqmore
from math import ceil, floor
side_width = 5
bottom_width = 5
middle_width = 2
panel_width = 1.2
amp_bottom_height = 19 + bottom_width + middle_width # how tall the pcb is
battery_width = 26
battery_height = 17
amp_width = 62
amp_length = 60
amp_height = battery_height + amp_bottom_height
panel_component_diameter = 7.8
panel_distance = 10.5 + (
panel_component_diameter / 2
) # distance between each panel component
panel_dist_from_side = 2
panel_dist_from_bottom = 0 # how far the panel components are from the bottom
result = Workplane().box(amp_length, amp_width, middle_width)
result = (
result.workplane(offset=0)
.center(0, -(amp_width / 2))
.line(0, amp_width, forConstruction=True)
.vertices()
.box(amp_length, side_width, amp_height)
)
result = (
result.workplane(offset=amp_height / 2)
.center(0, amp_width / 2)
.box(amp_length, amp_width + bottom_width, bottom_width)
)
result = (
result.workplane(offset=-7.8)
.center((amp_width / 2) - (panel_width / 2) - 1, 0)
.box(panel_width, amp_width, amp_height)
)
panel_holes = (
Workplane("ZY")
.workplane(offset=-(amp_length / 2))
.center(panel_component_diameter + panel_dist_from_bottom, 0)
.line(0, panel_distance, forConstruction=True)
.vertices()
.cylinder(side_width, panel_component_diameter / 2)
)
panel_holes_2 = (
Workplane("ZY")
.workplane(offset=-(amp_length / 2))
.center(panel_component_diameter + panel_dist_from_bottom, 0)
.line(0, -(panel_distance), forConstruction=True)
.vertices()
.cylinder(side_width, panel_component_diameter / 2)
)
result = result.cut(panel_holes)
result = result.cut(panel_holes_2)
cq.exporters.export(result, "/home/deck/model_files/amp_case.step")
try:
show_object(result)
except NameError:
pass