tikz \savebox only showing part of image

I can't get tikz to show the whole image created by using \showbox. I think it is a node issue and have tried using a scope and using local bounding box but that doesn't work either. I have posted the code below as well.

For the record I started using the answers provided in the following post to get to where I am now. How to get consistent positioning for a node with \usebox containing a \tikzpicture.

For the record I am attempting to do this because I need to use the image on a chain, but draw different lines on top of it as well. but first need to be able to repeat this multiple times. Plus I may be using this same image in other tikz pictures/drawings as well.

CODE

\documentclass[tikz,border=0pt]{standalone}
% https://tex.stackexchange.com/questions/37823/how-to-get-consistent-positioning-for-a-node-with-usebox-containing-a-tikzpict

% general packages or settings

\tikzset{
%general shapes
unburn/.style={circle, draw=black,minimum size=0.2cm},
burn/.style={circle, draw=black,minimum size=0.2cm,pattern=crosshatch},
burning/.style={circle, draw=black,minimum size=0.2cm,pattern=dots},
every join/.style={-latex}
}

%custom nodes
\newcommand{\chamber}[1]{

\begin{scope}[local bounding box=#1]
%draw combustion chamber
%outer coordinates of chamber
\coordinate (p1) at (0,0);
\coordinate (p2) at (0,4);
\coordinate (p3) at ($(p2)+(30:2)$);
\coordinate (p4) at ($(p3)+(2,0)$);
\coordinate (p5) at ($(p4)+(-30:2)$);
\coordinate (p6) at ($(p5)+(0,-4)$);

\coordinate (p7) at ($(p1)!0.5!(p6)$); %middle point at the bottom of the chamber
\coordinate (p8) at ($(p3)!0.5!(p4)$); %middle point at top of chamber

%draw cylinder
\draw[very thick] (p1)--(p2)--(p3)--(p4)--(p5)--(p6);
%draw piston
\filldraw[fill=gray!60,very thick] (p1)+(0.2,0) rectangle ++($(p6)+(-0.2,1.8)$);
\filldraw[fill=white,very thick] ($(p7)+(0,0.9)$) circle (0.26);

%draw spark plug
\filldraw[fill=gray!60] ($(p8)+(-0.12,-0.8)$) rectangle ($(p8)+(0.12,0)$);
\filldraw[fill=gray!60] ($(p8)+(-0.06,-0.8)$) rectangle ($(p8)+(0.06,-1)$);
\draw[semithick] ($(p8)+(0.18,0)$) |- ($(p8)+(-0.12,-1.08)$);

\end{scope}
}
\newsavebox{\manychamber}
\savebox{\manychamber}{%
\begin{tikzpicture}
\chamber{};
\end{tikzpicture}%

}

\begin{document}
\begin{tikzpicture}%[start chain=going below]
\pgfmathsetseed{4} %get same random decorations repeated
\def\ht{4}; %total height of chamber
\def\cmtopt{28.45274} %cm to pt conversion
\node at (0,0){\usebox{\manychamber}};

%\draw[help lines,step=0.05cm,opacity=0.2] (current bounding box.south west) grid (current bounding box.north east);

\end{tikzpicture}

\end{document}


The culprit is the following line:

\def\ht{4}; %total height of chamber


The command \ht is an important TeX command for the height of a box. It is used in various places in LaTeX and TikZ.


\newcommand*{\ht}{4}


And LaTeX detects the accident and raises an error message:

! LaTeX Error: Command \ht already defined.
Or name \end... illegal, see p.192 of the manual.

