import cadquery as cq

# BenchCAD hex key organizer, dimensions in millimeters.
L = 111.0
W = 22.0
H = 17.4
EDGE_CHAMFER = 1.0

# Calibrated ISO 2936 hex-key pocket centers and polygon sizes.
pocket_xs = [-50.22, -33.48, -16.74, 0.0, 16.74, 33.48, 50.22]
pocket_sizes = [2.6094, 3.1868, 3.7641, 4.9188, 6.0735, 7.2282, 9.5376]
POCKET_CENTER_Z = 1.9
POCKET_CUT_LENGTH = 7.0

primary_body = (
    cq.Workplane("XY")
    .box(L, W, H)
    .edges("|Z")
    .chamfer(EDGE_CHAMFER)
)

body = primary_body
for x, size in zip(pocket_xs, pocket_sizes):
    pocket_cutter = (
        cq.Workplane("XY")
        .transformed(
            offset=cq.Vector(x, 0.0, POCKET_CENTER_Z),
            rotate=cq.Vector(0.0, 0.0, 0.0),
        )
        .polygon(6, size)
        .extrude(POCKET_CUT_LENGTH, both=True)
    )
    body = body.cut(pocket_cutter)

primary_body = body
PARTS = {
    "hex_key_organizer_body": primary_body,
}

result = primary_body
r = result
