So zeichnen Sie einen Querschnitt eines 3D-Zylindermodells

So zeichnen Sie einen Querschnitt eines 3D-Zylindermodells

Ich versuche, mit \tikzpicture eine isometrische Querschnittsansicht eines Modells zu zeichnen, mit dem ich arbeite.

Nachfolgend habe ich ein Foto angehängt, das die gewünschte Ansicht mit Maßangaben zeigt.

Ich wäre für jede Hilfe sehr dankbar :)

(Entschuldigung für die Zeichnung)

Bildbeschreibung hier eingeben

Antwort1

Dies soll Ihnen einen Anfang geben. Es ist kein Versuch, das Bild vollständig neu zu zeichnen. Es liefert Ihnen jedoch das meiste davon, der Rest ist meiner Meinung nach Wiederholung.

Ausführlicher,

  • um die 3D-Ansicht zu installieren, perspectivewird die Bibliothek verwendet. (IMHO macht die Anweisung isometric viewnur Sinn, wenn man zusätzlich die Ausrichtung des Zylinders im 3D-Raum angibt.)
  • Längen werden in „Funktionen“ über gespeichert declare function.
  • das ist TikZ, daher müssen wir die verschiedenen Flächen in der richtigen Reihenfolge zeichnen. Wenn Ihnen das nicht gefällt, wechseln Sie zu asymptote.

Code und Ergebnis:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen