El siguiente ggbscript es un poco más corto.
[code]#Points hexagon[br]n=6[br]Execute(Sequence("A"+i+"=Rotate( (cos(pi/3*"+i+"), sin(pi/3*"+i+")), -pi/6, (0,0) )", i, 1, n))[br][br]#Hexagon[br]Poly01=Polygon(A1, A2, A3, A4, A5, A6)[br][br]#Origin[br]O=(0,0)[br][br]#Segment from center[br]S2=Segment(O, A2)[br]S4=Segment(O, A4)[br]S6=Segment(O, A6)[br][br]#Circles corners[br]r=Slider(0.1, 1, 0.1, 1, 140, false, true, false, false)[br]C1=Circle(A1, r)[br]C3=Circle(A3, r)[br][br]#Circle center[br]C0=Circle(O, r)[br][br]#Intersections[br]I1=Intersect( C1, a1 )[br]J1=Intersect( C3, a2 )[br]L1=Intersect( C0, S2 )[br][br]#Object[br]T1=Polygon( A1, I1, L1, J1, A3, O )[br]T2=Rotate(T1, 2*pi/3, O)[br]T3=Rotate(T1, -2*pi/3, O)[br][br]#Vectors[br]auxray=Ray(O, A1)[br]auxPoint=Intersect(C1, auxray, 2)[br]u1=Vector(O, auxPoint )[br]u2=Rotate(u1, pi/3)[br]#u3=Rotate(u1, 2*pi/3)[br][br]u3=u1+u2[br]u4=u1+2*u2[br]u5=2*u1+u2[br][br]#First ring[br]Execute(Sequence("FA"+i+"=Translate( T1, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6))[br]Execute(Sequence("FB"+i+"=Translate( T2, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6))[br]Execute(Sequence("FC"+i+"=Translate( T3, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6))[br][br]#Second ring[br]Execute(Sequence("SA"+i+"=Translate( T1, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12))[br]Execute(Sequence("SB"+i+"=Translate( T2, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12))[br]Execute(Sequence("SC"+i+"=Translate( T3, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12))[/code]