| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import cadquery as cq
- from cadquery.occ_impl.exporters import ExportTypes
- from ocp_vscode import show, show_object
- ###### Parameter #####
- cells_per_row = 8
- rows = 2
- cell_diam = 18.44
- cell_length = 65
- dist_to_ground = 66.9
- space_all = 140
- space_single = space_all / (cells_per_row - 1)
- space_rows = 33.7
- strip_width = 10.2
- # board_connector_length =
- print_height = 10
- wall_thick = 1.5
- eps = 0.1
- ############
- cell_locs = [(x * space_single, y * space_rows) for x in range(0, cells_per_row) for y in range(0, rows)]
- strip_locs = [(-cell_diam/4, y * space_rows) for y in range(0, rows)]
- connector_locs = [(x * space_single * 2, (y + 0.5) * space_rows) for x in range(0, int(cells_per_row/2)) for y in range(0, rows-1)]
- cell_base = (
- cq.Workplane()
- .pushPoints(cell_locs)
- .eachpoint(
- lambda loc: (
- cq.Workplane()
- .circle(cell_diam/2 + eps + wall_thick)
- .extrude(print_height)
- .val()
- .located(loc)
- )
- )
- )
- cell_cutout = (
- cq.Workplane()
- .pushPoints(cell_locs)
- .eachpoint(
- lambda loc: (
- cq.Workplane()
- .circle(cell_diam/2 + eps )
- .extrude(print_height-wall_thick)
- .val()
- .located(loc)
- )
- )
- )
- strips_cut = (
- cq.Workplane()
- .pushPoints(strip_locs)
- .eachpoint(
- lambda loc: (
- cq.Workplane()
- .rect(space_all + cell_diam/2, strip_width, centered=(False, True))
- .extrude(print_height)
- .val()
- .located(loc)
- )
- )
- )
- strips_wall = (
- cq.Workplane()
- .pushPoints(strip_locs)
- .eachpoint(
- lambda loc: (
- cq.Workplane()
- .rect(space_all, strip_width, centered=(False, True))
- .center(-wall_thick, 0)
- .rect(space_all+ 2*wall_thick, strip_width + 2*wall_thick, centered=(False, True))
- .extrude(print_height)
- .val()
- .located(loc)
- )
- )
- )
- base_cutout = (
- cell_base.union(strips_wall)
- .cut(cell_cutout)
- .cut(strips_cut)
- ).faces("<Z").chamfer(wall_thick/4)
- connectors = (
- cq.Workplane()
- .pushPoints(connector_locs)
- .eachpoint(
- lambda loc: (
- cq.Workplane().workplane(offset=wall_thick)
- .rect(wall_thick, space_rows - cell_diam - wall_thick, centered=(False, True))
- .extrude(print_height-wall_thick)
- .val()
- .located(loc)
- )
- )
- )
- base_connected = base_cutout.union(connectors)
- show_object(base_connected)
- with open(r"/home/sgruen/Dokumente/bodenplatte/zellhalter_v2.step", "w") as fp:
- cq.exporters.exportShape(cell_base, ExportTypes.STEP, fp)
|