r = 10
c = 2 * pi * r
d = 4 * (c / 10) / 3
pattern_wires = (
cq.Workplane("XY")
.hexArray(d, 10, 5, center=(True, False))
.polygon(6, 0.8 * d)
.wires()
.vals()
)
mapped_wires = [w.mapToCylinder(r) for w in pattern_wires]
mapped_faces = [cq.Face.makeNSidedSurface(w.Edges(), []) for w in mapped_wires]
pos_pattern = cq.Compound.makeCompound(
[f.thicken(f.flipNormal() * 1) for f in mapped_faces]
)
pos_patterned_cylinder = cyl.fuse(pos_pattern, glue=True)
if "show_object" in locals():
show_object(pattern_wires, name="pattern_wires")
show_object(pos_patterned_cylinder, name="pos_patterned_cylinder")