Hallo ihr, ich habe ein (kleines?) Problem. Ich möchte gerne einen Punkt im nach hinein beschriften. Ich habe dazu mal folgendes (hoffentlich nicht zu großes) Beispiel. Mein Problem ist, dass ja die Beschriftung von Punkt Z6 zuerst 'geschrieben' wird und danach erst die Fläche gezeichnet wird. Ich versteh das jetzt so, dass die Fläche über dem Punkt liegt und ihn somit verdeckt. Kann man das irgendwie elegant ändern? Ich hab schon mit node und labels 'rumgespielt', aber nicht wirklich eine elegante Lösung gefunden... Vielen Dank, Norbert Öffne in Overleaf
\documentclass[border=1mm]{standalone} \usepackage{tikz} \usetikzlibrary{intersections,angles,quotes,calc,through} \begin{document} \begin{tikzpicture} [ font=\footnotesize, label distance=.05cm ] \clip (-0.5,-1.5) rectangle (16,15); \path % Grundfläche (0,0) coordinate(G1) % links vorne (10,0) coordinate(G2) % rechts vorne (15,5) coordinate(G3) % rechts hinten (5,5) coordinate(G4) % links hinten % senkrechte Fläche (4,4) coordinate(E1) % links mitte (14,4) coordinate(E2) % rechts unten (14,7.5) coordinate(E3) % rechtsoben oben (4,7.5) coordinate(E4) % links oben % alle Z's... (9.5,5) coordinate(Z') node[label=right:Z']{} ($(Z') + (0,3)$) coordinate(Z1) node[label=right:$Z\textsubscript{1}$]{} ($(Z') + (0,2.3)$) coordinate(Z2) node[label=right:$Z\textsubscript{2}$]{} ($(Z') + (0,1.5)$) coordinate(Z3) node[label=right:$Z\textsubscript{3}$]{} ($(Z') + (0,1)$) coordinate(Z4) node[label=right:$Z\textsubscript{4}$]{} ($(Z') + (0,0.4)$) coordinate(Z5) node[label=right:$Z\textsubscript{5}$]{} ($(Z') - (0,3)$) coordinate(Z6) node[label=right:$Z\textsubscript{6}$]{} ; \draw % Rahmen vordere Fläche (G1) -- (E1) (G2) -- (G3) % Senkrechte Fläche (E1) -- (E2) -- (E3) -- (E4) -- cycle (Z1) -- (Z') ; \draw[line width=0.15mm, dashed] % Verlängerung Seiten (G3) -- ($(G3)!-1.5cm!(G2)$) (E1) -- (G4) (G4) -- ($(G4)!-1.5cm!(E1)$) ; \draw[dashed] % Mittellinie (Z') -- ($(Z')!-5cm!(Z1)$) (Z1) -- ($(Z1)!-1.5cm!(Z')$) ; \draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2); \draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3); \draw[fill=white] (Z') circle [radius=.1em]; \end{tikzpicture} \end{document} |
Eigentlich sehe ich da kein Problem, denn der node wird ja trotzdem gezeichnet und ist auch zu sehen, nur eben hinter der Fläche: Aber wenn nodes später gezeichnet werden sollen, dann verschiebe eben ihre Ausgabe weiter nach hinten. Es genügt ja, zunächst die Koordinaten festzulegen, beispielsweise: Öffne in Overleaf
\documentclass[border=1mm]{standalone} \usepackage{tikz} \usetikzlibrary{intersections,angles,quotes,calc,through} \begin{document} \begin{tikzpicture} [ font=\footnotesize, label distance=.05cm ] \clip (-0.5,-1.5) rectangle (16,15); \path % Grundfläche (0,0) coordinate(G1) % links vorne (10,0) coordinate(G2) % rechts vorne (15,5) coordinate(G3) % rechts hinten (5,5) coordinate(G4) % links hinten % senkrechte Fläche (4,4) coordinate(E1) % links mitte (14,4) coordinate(E2) % rechts unten (14,7.5) coordinate(E3) % rechtsoben oben (4,7.5) coordinate(E4) % links oben % alle Z's... (9.5,5) coordinate(Z') node[label=right:Z']{} ($(Z') + (0,3)$) coordinate(Z1) node[label=right:$Z\textsubscript{1}$]{} ($(Z') + (0,2.3)$) coordinate(Z2) node[label=right:$Z\textsubscript{2}$]{} ($(Z') + (0,1.5)$) coordinate(Z3) node[label=right:$Z\textsubscript{3}$]{} ($(Z') + (0,1)$) coordinate(Z4) node[label=right:$Z\textsubscript{4}$]{} ($(Z') + (0,0.4)$) coordinate(Z5) node[label=right:$Z\textsubscript{5}$]{} ($(Z') - (0,3)$) coordinate(Z6) % node[label=right:$Z\textsubscript{6}$]{}% hier nur die Koordinate festlegen ; \draw % Rahmen vordere Fläche (G1) -- (E1) (G2) -- (G3) % Senkrechte Fläche (E1) -- (E2) -- (E3) -- (E4) -- cycle (Z1) -- (Z') ; \draw[line width=0.15mm, dashed] % Verlängerung Seiten (G3) -- ($(G3)!-1.5cm!(G2)$) (E1) -- (G4) (G4) -- ($(G4)!-1.5cm!(E1)$) ; \draw[dashed] % Mittellinie (Z') -- ($(Z')!-5cm!(Z1)$) (Z1) -- ($(Z1)!-1.5cm!(Z')$) ; \draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2); \draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3); \draw[fill=white] (Z') circle [radius=.1em]; \draw (Z6) node [label=right:$Z\textsubscript{6}$] {};% Kann man so natürlich auch mit den restlichen Zs machen \end{tikzpicture} \end{document} beantwortet 17 Aug '17, 14:00 gast3 Hallo Ijon Tichy, danke für den Tipp. Ich hatte mit node und label rumprobiert... Aber offensichtlich immer irgendwelche falschen Parameter oder Kombinationen verwerndet... :-( So klappt's auf jeden Fall! Vielen Dank noch mal dafür!
(17 Aug '17, 15:19)
Norbert32
1
@Norbert32: Danke geht bei uns durch Klick auf den Daumen hoch (das kann jeder für beliebig viele Fragen und Antworten, die er gut findet). Der Fragesteller selbst kann außerdem noch genau eine der Antworten mit Klick auf den Haken akzeptieren. Beides hilft der Orientierung von Fragestellern und nebenbei bekommt der Helfer automatisch Punkte. Siehe auch die FAQ.
(17 Aug '17, 15:23)
saputello
Vielleicht doch noch eine Frage.... Ich bastel ja einen kleinen Kreis um den Punkt Z' rum. draw[fill=white] (Z') circle [radius=.1em]; draw (Z6) node [label=right:$Ztextsubscript{6}$] {} Geht das auch für Z6...? Also irgendwie ne Kombi aus beiden? Hab's verschiedentlich probiert, aber nicht hinbekommen... Also irgendwie so was: draw[fill=white. irgendwie kleiner Kreis ] (Z') node [label=right:$Z'$] {} (Z6) node [label=right:$Ztextsubscript{6}$] {} ; Danke schon mal... :-)
(17 Aug '17, 15:34)
Norbert32
@Norbert32: Verstehe den Kommentar nicht:
(17 Aug '17, 15:48)
saputello
Hallo saputello, erst mal Dank für deinen Hinweis mit den korrekten Inline-Code.. Nochmal zu meiner Frage.. 'draw[fill=white] (Z') circle [radius=.1em];' 'draw[fill=white] (Z6) node [label=right:$Ztextsubscript{6}$] {};' erzeugt Um Z' einen kleinen weißen Kreis. Ich möchte aber gerne für mehrere Punkte dieses erreichen. Bisher mach ich das immer so: 'draw[fill=white] (Z') circle [radius=.1em];' 'draw[fill=white] (Z1) circle [radius=.1em];' Man könnte das jetzt so wie du es empfohlen hast schreiben. Aber ich hatte die Hoffnung, dass es vielleicht kürzer geht. VG, Norbert
(17 Aug '17, 16:19)
Norbert32
@Norbert32: Du machst das mit dem Inline-Code noch immer falsch. Korrekt ist
(17 Aug '17, 18:13)
saputello
Hallo saputello, noch mal Danke für den Hinweis mit dem Inlinecode... Hab ich dann doch nicht richtig gelesen. Ich hab mir jetzt auch mal die FAQ durchgelesen.. Und trotzdem noch eine Verständnisfrage... ;-) Reicht es für das Verständnis der Frage aus, wenn ich auf meine Ursprungsfrage verlinke und dann darunter eine neue stelle? Oder ist es nicht sinnvoller ein neues kleines Script zu erstellen? VG
(17 Aug '17, 20:05)
Norbert32
@Norbert32: Vermutlich suchst Du
(18 Aug '17, 22:56)
esdd
Ergebnis 5 von 8
show 3 more comments
|
Eine weitere Möglichkeit, wenn auch hier nicht wirklich nötig, ist die Verwendung von Layern. Dazu kann man neben dem Standardlayer Öffne in Overleaf
\documentclass[border=1mm]{standalone} \usepackage{tikz} \usetikzlibrary{calc} \begin{document} \begin{tikzpicture} [ font=\footnotesize, label distance=.05cm ] %\clip (-0.5,-1.5) rectangle (16,15); \pgfdeclarelayer{foreground} \pgfsetlayers{main,foreground} \path % Grundfläche (0,0) coordinate(G1) % links vorne (10,0) coordinate(G2) % rechts vorne (15,5) coordinate(G3) % rechts hinten (5,5) coordinate(G4) % links hinten % senkrechte Fläche (4,4) coordinate(E1) % links mitte (14,4) coordinate(E2) % rechts unten (14,7.5) coordinate(E3) % rechtsoben oben (4,7.5) coordinate(E4) % links oben ; \begin{pgfonlayer}{foreground} \draw[fill=white] % alle Z's... (9.5,5) coordinate(Z') node[label=right:$Z'$]{} circle[radius=.1em] foreach[count=\i] \y in {3,2.3,1.5,1,.4,-3} {+(0,\y) coordinate(Z\i) node[label=right:$Z_{\i}$]{} circle [radius=.1em]} ; \end{pgfonlayer} \draw % Rahmen vordere Fläche (G1) -- (E1) (G2) -- (G3) % Senkrechte Fläche (E1) -- (E2) -- (E3) -- (E4) -- cycle (Z1) -- (Z') ; \draw[line width=0.15mm, dashed] % Verlängerung Seiten (G3) -- ($(G3)!-1.5cm!(G2)$) (E1) -- (G4) (G4) -- ($(G4)!-1.5cm!(E1)$) ; \draw[dashed] % Mittellinie (Z') -- ($(Z')!-5cm!(Z1)$) (Z1) -- ($(Z1)!-1.5cm!(Z')$) ; \draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2); \draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3); \end{tikzpicture} \end{document} beantwortet 18 Aug '17, 23:37 esdd |