Respuesta1
Esto es para darle un comienzo. No es un intento de volver a dibujar la imagen por completo. Sin embargo, le proporciona la mayor parte, el resto es repetición en mi humilde opinión.
Con más detalle,
- Para instalar la vista 3D,
perspective
se emplea la biblioteca. (En mi humilde opinión, la afirmaciónisometric view
solo tiene sentido si se especifica además la orientación del cilindro en el espacio 3D). - las longitudes se almacenan en "funciones" a través de
declare function
. - esta es tikZ, entonces necesitamos dibujar las distintas caras en el orden apropiado. Si no te gusta esto, cambia a
asymptote
.
Código y resultado:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{perspective}
\begin{document}
\begin{tikzpicture}[>=stealth,semithick,line cap=round,
declare function={R=20;d=9;dd=1.5;rr=5;L=10;l=1;},%<- d/2efine some lengths
scale=0.15]
\begin{scope}[3d view={30}{10}]%<- install 3d view and set view angles
\path[fill=gray!80] plot[variable=\t,domain=60:110,smooth]
({R*cos(\t)},{d/2},{R*sin(\t)})
-- plot[variable=\t,domain=110:60,smooth]
({R*cos(\t)},{-d/2},{R*sin(\t)}) -- cycle;
\path[fill=gray!40] plot[variable=\t,domain=120:240,smooth]
({R*cos(\t)},{-d/2},{R*sin(\t)})
-- plot[variable=\t,domain=240:120,smooth]
({rr*cos(\t)},{-d/2},{rr*sin(\t)}) --cycle;
\path[fill=black] plot[variable=\t,domain=120:240,smooth]
({rr*cos(\t)},{-d/2},{rr*sin(\t)})
-- ({rr*cos(240)},{d/2},{rr*sin(240)})
-- ({(rr+dd)*cos(240)},{d/2},{(rr+dd)*sin(240)})
-- plot[variable=\t,domain=240:120,smooth]
({(rr+dd)*cos(\t)},{-d/2},{(rr+dd)*sin(\t)}) -- cycle;
\path[fill=brown!40] plot[variable=\t,domain=120:60,smooth]
({rr*cos(\t)},{d/2+l},{rr*sin(\t)}) --
plot[variable=\t,domain=60:120,smooth]
({rr*cos(\t)},{-d/2-L},{rr*sin(\t)}) --
cycle;
\path[fill=gray!40] plot[variable=\t,domain=60:120,smooth]
({R*cos(\t)},{-d/2},{R*sin(\t)})
-- plot[variable=\t,domain=120:60,smooth]
({rr*cos(\t)},{-d/2},{rr*sin(\t)}) --cycle;
\path[fill=black] plot[variable=\t,domain=120:60,smooth]
({rr*cos(\t)},{-d/2},{rr*sin(\t)})
-- ({rr*cos(60)},{d/2},{rr*sin(60)})
-- ({(rr+dd)*cos(60)},{d/2},{(rr+dd)*sin(60)})
-- plot[variable=\t,domain=60:120,smooth]
({(rr+dd)*cos(\t)},{-d/2},{(rr+dd)*sin(\t)}) -- cycle;
\path[fill=gray!60]
({(rr+dd)*cos(60)},{-d/2},{(rr+dd)*sin(60)})
-- ({(rr+dd)*cos(60)},{d/2},{(rr+dd)*sin(60)})
-- ({R*cos(60)},{d/2},{R*sin(60)})
-- ({R*cos(60)},{-d/2},{R*sin(60)}) -- cycle;
\path[fill=brown!60] plot[variable=\t,domain=240:60,smooth]
({rr*cos(\t)},{-d/2-L},{rr*sin(\t)}) --cycle;
\path[fill=brown]
({rr*cos(240)},{-d/2-L},{rr*sin(240)})
-- ({rr*cos(60)},{-d/2-L},{rr*sin(60)})
-- ({rr*cos(60)},{d/2+l},{rr*sin(60)})
-- ({rr*cos(240)},{d/2+l},{rr*sin(240)})
--cycle;
\path[fill=gray!60]
({(rr+dd)*cos(240)},{-d/2},{(rr+dd)*sin(240)})
-- ({(rr+dd)*cos(240)},{d/2},{(rr+dd)*sin(240)})
-- ({R*cos(240)},{d/2},{R*sin(240)})
-- ({R*cos(240)},{-d/2},{R*sin(240)}) -- cycle;
\end{scope}
%
\begin{scope}[xshift=35cm]
\draw (-d/2,-R) rectangle (d/2,-rr-dd) (-d/2,R) rectangle (d/2,rr+dd)
(-d/2-L,-rr) rectangle (d/2+l,rr);
\draw[fill] (-d/2,-rr) rectangle (d/2,-rr-dd)
(-d/2,rr) rectangle (d/2,rr+dd);
\draw[dashed] (d/2,R) -- ++ (5,0) coordinate (rt)
(d/2,-R) -- ++ (5,0) coordinate (rb);
\draw[<->] (rt) -- (rb) node[midway,rotate=90,anchor=north]
{\pgfmathparse{2*R}\pgfmathprintnumber\pgfmathresult\,mm};
\draw[<->] (-d/2,R+1) -- (d/2,R+1) node[midway,rotate=90,anchor=west]
{\pgfmathparse{d}\pgfmathprintnumber\pgfmathresult\,mm};
\end{scope}
\end{tikzpicture}
\end{document}