Accolade to take objects together in TikZ
A solution more simple ( for me ) and with the possibility of scaling. I add the solution with Andrew's idea The code is very clear but we can not make a scale and perhaps there is a better solution to create more space vertically. The brace is more pretty with the matrix's delimiter.
\documentclass[]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{fit,calc,positioning,decorations.pathreplacing,matrix}
\begin{document}
\begin{tikzpicture}[decoration={brace}][scale=2]
\node [draw] (A) {A};
\node [draw,yshift=1cm] (B) at (A) {B};
\node [draw,yshift=1cm] (C) at (B) {C};
\node [fit=(A) (B) (C)] (fit) {};
\draw [decorate,line width=1pt] (fit.south west) -- (fit.north west);
\end{tikzpicture}
\hspace*{1cm}
\begin{tikzpicture}[scale=2]
\matrix [matrix of nodes,left delimiter=\{,nodes={draw}] {
A \\[12pt] B \\[12pt] C \\
};
\end{tikzpicture}
\end{document}
You can use the fit
TikZ library to create a rectangular node which encompasses the nodes, e.g. your three rectangles. Then you can use the node anchors to draw your {
either using a scaled {
character (\resizebox{!}{<height of fit>}{\{}
) or using drawing commands. Two bezier curves should do it.
\documentclass[png]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit,calc,positioning}
\begin{document}
\begin{tikzpicture}
\node [draw] (A) {A};
\node [draw,below of=A] (B) {B};
\node [draw,below of=B] (C) {C};
\node [fit=(A) (B) (C)] (fit) {};
\path let \p1=(fit.north west), \p2 = (fit.south east) in
node [left of=fit] {%
\pgfmathsetmacro\heightoffit{.8*(\y1-\y2)}%
\resizebox{!}{\heightoffit pt}{\{}%
};%
\end{tikzpicture}
\end{document}