Faccio una piccola correzione al mio stesso codice. 😀 Nel preambolo aggiungi
`
\newlength{\polyside}
\newlength{\polyrad}
\newcommand\esagono[2][]{\node[#1,regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,label=center:testo interno] (reg1) at (#2){};
\draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
\draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}
`
mentre il tuo codice diventa
`
\begin{tikzpicture}
\setlength{\polyside}{1.5cm}
\pgfmathsetlength\polyrad{sqrt(\polyside^2-(\polyside/2)^2)}
\foreach\x in {0,…,4}{
\foreach\y in {0,…,4}{\esagono[yshift=2*\y*\polyrad]{30:2*\x*\polyrad}}}
\end{tikzpicture}
`
In questo modo non hai problemi legati alle dimensioni e puoi tranquillamente modificare il lato dell’esagono cambiando il valore di [tt]\polyside[/tt]. Rispetto a prima uso delle lunghezze, definite con il comando [tt]\newlength[/tt] nel preambolo.