PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tikz: Linie bei "node" wird nicht bis an den "node" gezeichnet



Barny.G
08-10-2015, 13:39
Liebes Forum,

ein kleines, hoffentlich leicht zu lösendes Problem:

In einer tikz-graphik sollen möglichst einfach beim Zeichnen der Linien die Koordinaten der "Ecken" gespeichert werden. Meiner Meinung nach sollte das mit den "nodes" gehen. Greife ich dann aber auf diese Variablen zu, dann wird eben nicht von/bis zu der "node"-Koordinate gezeichnet.

"Inner sep=0" zu setzen scheint in meinem Fall nichts zu bringen. Und hier ein bisschen code zum Ausprobieren:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[locale = DE, range-phrase = -]{siunitx}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit ,patterns,through,intersections}

\begin{document}
\centering
\begin{tikzpicture}[scale=1.0]
%Variablen
\coordinate[] (Org) at (0,0); % Nullpkt des KoordSystems
\newcommand{\xachse}{8.0} % Länge der pos. x-Achse
\newcommand{\yachse}{\xachse*0.5} % Länge der pos. y-Achse
\newcommand{\zachse}{\xachse*0.25} % Länge der pos. z-Achse

%Zeichenebene
\draw[black] (Org) node[inner sep=0] (Evl) {}
--++(0:\xachse) node[inner sep=0] (Evr) {}
--++(45:\yachse) node[inner sep=0] (Ehr) {}
--++(180:\xachse) node[inner sep=0] (Ehl) {}--cycle;

\draw[black] (Evl) --++(270:\zachse) node[inner sep=0] (Uvl) {}
--++(0:\xachse) node[inner sep=0] (Uvr) {}
--(Evr);

\draw[black] (Uvr) --++(45:\yachse) node[inner sep=0] (Uhr) {}
--(Ehr);

%das hier ist nur, um die Fehlerstellen zu kennzeichnen
\draw[red] (Evl) circle(0.1) node[left] {Fehler}
(Evr) circle(0.1) node[right] {Fehler}
(Ehr) circle(0.1) node[right] {Fehler}
(Uvr) circle(0.1) node[below] {Fehler};

\end{tikzpicture}
\end{document}

Für ganz Eilige habe ich auch noch eine Grafik

6167

angehangen.

Viele Grüße

Thomas

rais
08-10-2015, 20:36
In einer tikz-graphik sollen möglichst einfach beim Zeichnen der Linien die Koordinaten der "Ecken" gespeichert werden. Meiner Meinung nach sollte das mit den "nodes" gehen. Greife ich dann aber auf diese Variablen zu, dann wird eben nicht von/bis zu der "node"-Koordinate gezeichnet.

"Inner sep=0" zu setzen scheint in meinem Fall nichts zu bringen. Und hier ein bisschen code zum Ausprobieren:

und "minimum size"?

Alternativ kannst Du dem Nodenamen auch .center anhängen:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[locale = DE, range-phrase = -]{siunitx}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit ,patterns,through,intersections}

\begin{document}
\centering
\begin{tikzpicture}[scale=1.0]
%Variablen
\coordinate[] (Org) at (0,0); % Nullpkt des KoordSystems
\newcommand{\xachse}{8.0} % Länge der pos. x-Achse
\newcommand{\yachse}{\xachse*0.5} % Länge der pos. y-Achse
\newcommand{\zachse}{\xachse*0.25} % Länge der pos. z-Achse

%Zeichenebene
\draw (Org) node (Evl) {}
--++(0:\xachse) node (Evr) {}
--++(45:\yachse) node (Ehr) {}
--++(180:\xachse) node (Ehl) {}--cycle;

\draw (Evl.center) --++(270:\zachse) node (Uvl) {}
--++(0:\xachse) node (Uvr) {}
--(Evr.center);

\draw (Uvr.center) --++(45:\yachse) node (Uhr) {}
--(Ehr.center);

%das hier ist nur, um die Fehlerstellen zu kennzeichnen
\draw[red] (Evl) circle(0.1) node[left] {Fehler?}
(Evr) circle(0.1) node[right] {Fehler?}
(Ehr) circle(0.1) node[right] {Fehler?}
(Uvr) circle(0.1) node[below] {Fehler?};

\end{tikzpicture}
\end{document}

VG

esdd
08-10-2015, 21:25
Wenn Du nur die Punkte abspeichern willst, kannst Du auch einfach den speziellen Node coordinate nehmen:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[locale = DE, range-phrase = -]{siunitx}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit ,patterns,through,intersections}

\begin{document}
\centering
\begin{tikzpicture}[scale=1.0]
%Variablen
\coordinate[] (Org) at (0,0); % Nullpkt des KoordSystems
\newcommand{\xachse}{8.0} % Länge der pos. x-Achse
\newcommand{\yachse}{\xachse*0.5} % Länge der pos. y-Achse
\newcommand{\zachse}{\xachse*0.25} % Länge der pos. z-Achse

%Zeichenebene
\draw[black] (Org) coordinate (Evl)
--++(0:\xachse) coordinate (Evr)
--++(45:\yachse) coordinate (Ehr)
--++(180:\xachse) coordinate (Ehl)--cycle;

\draw[black] (Evl) --++(270:\zachse) coordinate(Uvl)
--++(0:\xachse) coordinate(Uvr)
--(Evr);

\draw[black] (Uvr) --++(45:\yachse) coordinate(Uhr)
--(Ehr);

%das hier ist nur, um die Fehlerstellen zu kennzeichnen
\draw[red] (Evl) circle(0.1) node[left] {Fehler}
(Evr) circle(0.1) node[right] {Fehler}
(Ehr) circle(0.1) node[right] {Fehler}
(Uvr) circle(0.1) node[below] {Fehler};

\end{tikzpicture}
\end{document}

Gruß
Elke

Barny.G
09-10-2015, 05:11
Hallo Rainer und Elke,

vielen Dank! Beides funktioniert hervorragend. Und beides kann ich auch sehr gut gebrauchen. Endlich weiß ich nun auch wie ich die Zentrumskoordinate von nodes auslesen kann. So ist das eben, wenn man alles autodidaktisch macht. (oder wie die meisten muss) :)

Herzliche Grüße

Thomas