Ciao Orlando,
ti propongo anche la soluzione che prevede l’uso dei layer. L’esempio è identico a quello di prima, ma con la differenza che ora a governare è la scelta del layer e non l’ordine con cui si scrive il codice:
`\begin{tikzpicture}
% layer
\pgfdeclarelayer{primoLayer}
\pgfdeclarelayer{secondoLayer}
\pgfsetlayers{primoLayer,main,secondoLayer}
% definizioni e macro
\def\l{3}
\def\h{5}
\def\xrad{7}
\pgfmathsetmacro{\apx}{\l/3}
\pgfmathsetmacro{\apy}{\h/6}
\pgfmathsetmacro{\yrad}{\h/2-\apy}
\def\dy{1}
\def\xprad{4}
\pgfmathsetmacro{\yprad}{\yrad-\dy}
% coordinate
%rettangolo
\coordinate (a) at (0,0);
\coordinate (b) at ($(a)+(\l,0)$);
\coordinate (c) at ($(a)+(\l,\h)$);
\coordinate (d) at ($(a)+(0,\h)$);
%arco
\coordinate (a') at (\apx,\apy);
% disegno rettangolo
\fill [cyan!55] (a) — (b) — (c) — (d) — cycle;
\draw (a) — (b) — (c) — (d) — cycle;
% disegno arco
\begin{pgfonlayer}{primoLayer}
\fill [cyan!55] (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
\draw (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
\end{pgfonlayer}
\end{tikzpicture}`
Infatti ora, anche se l’arco è disegnato dopo (nel codice), viene disegnato sotto il rettangolo. Ricorda che se usi i layer, devi sempre dichiarare il layer [tt]main,[/tt] altrimenti qualsiasi cosa tu disegni fuori dall’ambiente [tt]pgfonlayer[/tt] non ti verrà disegnato.
Ciao,
Marco.