Clear["Global`*"]; k = 4; ptss = Table[ TranslationTransform[{0, 0, \[Theta]}]@* ScalingTransform[ Sqrt[3^2 - \[Theta]^2]/(2 Sin[\[Pi]/k])*{1, 1, 1}]@* RotationTransform[0, {0, 0, 1}] /@ (PadRight[#, 3] & /@ CirclePoints[k]), {\[Theta], Subdivide[3, 0, 600]}]; {m, n, p} = Dimensions[ptss]; indexes = Most@Partition[ ArrayReshape[Range[m*n], {m, n}], {2, 2}, {1, 1}, {1, 1}]; bm = BoundaryMeshRegion[ Flatten[ptss, 1], {Rest@ Map[Polygon[{#[[1, 1]], #[[1, 2]], #[[2, 2]]}] &, indexes, {2}], Map[Polygon[{#[[2, 1]], #[[2, 2]], #[[1, 1]]}] &, indexes, {2}], Polygon[Range[m*n - n + 1, m*n]]}]