Grille

n = 10 (slider from 1 to 20, step 1)
D = (-15.44794096676962, -2.9939612167951144)
b = 2.3 (slider from -5 to 5, step 0.1)
C: D + (0, b)
R = 3.2 (slider from -5 to 5, step 0.1)
A = (-15.897019781075599, -1.9901379848170346)
liste1 = Sequence(D + i * Vector[D, C], i, 0, 1, 1 / n)
c = Circle(A, R)
E: D + (b, 0)
liste2 = Sequence(E + i * Vector[D, C], i, 0, 1, 1 / n)
liste3 = Sequence(D + i * Vector[D, E], i, 0, 1, 1 / n)
liste4 = Sequence(C + i * Vector[D, E], i, 0, 1, 1 / n)
liste5 = Sequence(Segment[Element[liste1, i], Element[liste2, i]], i, 1, Length[liste1])
liste6 = Sequence(Segment[Element[liste3, i], Element[liste4, i]], i, 1, Length[liste1])
liste7 = Sequence(Mirror[Element[liste5, i], c], i, 1, Length[liste5])
liste8 = Sequence(Mirror[Element[liste6, i], c], i, 1, Length[liste6])
G: D + (b / 4, b / 2)
H: D + (3 * b / 4, b / 2)
I: D + (b / 2, 2 * b / 3)
B: D + (b - 0.6, 0.6)
a = Segment(G, H)
J: D + (b / 2, b / 2)
K: D + (b / 2, 19 * b / 20)
L: D + (3 * b / 20, 11 * b / 20)
N: D + (17 * b / 20, 11 * b / 20)
O: D + (10 * b / 20, 4 * b / 20)
P: D + (5 * b / 20, 7 * b / 20)
Q: D + (15 * b / 20, 7 * b / 20)
e = CircumcircleArc(P, O, Q)
S: D + (4 * b / 20, 9 * b / 20)
T: D + (16 * b / 20, 9 * b / 20)
U: D + (7 * b / 20, 12 * b / 20)
V: D + (13 * b / 20, 12 * b / 20)
h = Circle(U, b / 12)
k = Circle(V, b / 12)
e_2 = Segment(J, O)
N' = Mirror(N, c)
K' = Mirror(K, c)
L' = Mirror(L, c)
k' = Mirror(k, c)
h' = Mirror(h, c)
N'_1 = Mirror(N, c)
T' = Mirror(T, c)
Q' = Mirror(Q, c)
g' = CircumcircleArc(N'_1, T', Q')
P' = Mirror(P, c)
O' = Mirror(O, c)
Q'_1 = Mirror(Q, c)
e' = CircumcircleArc(P', O', Q'_1)
P'_1 = Mirror(P, c)
S' = Mirror(S, c)
L'_1 = Mirror(L, c)
f' = CircumcircleArc(P'_1, S', L'_1)
o = true
f = Circle(J, K)
f'_1 = Mirror(f, c)
F: D + (10 * b / 20, 5 * b / 20)
d = CircumcircleArc(P, F, Q)
W: D + (10 * b / 20, 2 * b / 20)
A_1: D + (7 * b / 20, 5.75 * b / 20)
M: D + (8 * b / 20, 3 * b / 20)
g = CircumcircleArc(A_1, M, W)
i = Segment(F, W)
Z = Mirror(A_1, i)
M' = Mirror(M, i)
W' = Mirror(W, i)
g'_1 = CircumcircleArc(Z, M', W')
poly1, w, a_1, z = Polygon(A_1, Z, W)
p = CircumcircleArc(A_1, F, Z)
j = Segment(A_1, Z)
q = Mirror(a_1, c)
z' = Mirror(z, c)
P'_2 = Mirror(P, c)
F' = Mirror(F, c)
Q'_2 = Mirror(Q, c)
d' = CircumcircleArc(P'_2, F', Q'_2)
z'' = Mirror(z', p)
poly1' = Mirror(poly1, c)
i' = Mirror(i, c)
i'_2 = Mirror(i, c)
B_1 = Mirror(A_1, c)
F'_1 = Mirror(F, c)
Z' = Mirror(Z, c)
p' = CircumcircleArc(B_1, F'_1, Z')
j' = Mirror(j, c)
C_1: D + (10 * b / 20, 7 * b / 20)
r = CircumcircleArc(A_1, C_1, Z)
D_1 = Mirror(A_1, c)
E_1 = Mirror(C_1, c)
Z'_1 = Mirror(Z, c)
r' = CircumcircleArc(D_1, E_1, Z'_1)
j'_1 = Mirror(j, c)
i'_1 = Mirror(j, c)
s = Circle(J, K)
s' = Mirror(s, c)