Problem mit Pfeilen im Flowchart

Tabellen und Grafiken erstellen und anordnen


Guayaba
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 15. Nov 2017, 08:36

Problem mit Pfeilen im Flowchart

Beitrag von Guayaba »

Hallo, ich habe ein Problem bei dem folgenden Flowchart: und zwar würde ich gerne decision-7 (entspricht "erfolgreich?) mit der vertikalen Line, die von oben (block-1 "Schneiden und Ausbauen") kommt mit einem Pfeil verbinden. Des Weiteren sollte von block-1 auch ein Pfeil zu der Linie gehen, sodass man den Fluss besser nachvollziehen kann. Bisher ist mir das leider nicht gelungen. Hat jmd. eine Idee? Vielen Dank im Voraus!
\documentclass{article}  
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,calc,automata,positioning,fit,quotes}

\begin{document}

   \tikzstyle{decision} = [ diamond, aspect=2, draw, fill=blue!20, text width=8em, text centered, inner sep=0pt ]
   \tikzstyle{block} = [ rectangle, draw, fill=blue!20, text width=7em, text centered, rounded corners, minimum height=4em ]
   \tikzstyle{io} = [trapezium, trapezium left angle=110, trapezium right angle=110, text width=28em ,  minimum height=4em, text centered, draw, fill=blue!20]
   \tikzstyle{cloud} = [draw, ellipse, fill=red!20, text width=22em, minimum height=2em, text centered]
   \tikzstyle{line} = [ draw, -latex' ]
    
   \begin{figure}
   	\centering
   	\small
   	\begin{tikzpicture}[node distance=2.50cm, auto]
   	% place nodes
   	\node [cloud, text width=10em] (init) {Entfernen von Rohren aus dem Bohrloch} ;
   	\node [decision, below=0.5cm of init] (decision-1) {sind Rohre bis zur projektierten Teufe frei?} ;
   	\node [decision, below=0.5cm of decision-1] (decision-6) {hinter\-einander\-liegende einzementierte Rohre?} ;
   	\node [right of=decision-6] (dummy20) {} ;
   	\node [right of=dummy20] (dummy21) {} ;
   	\node [right of=dummy21] (dummy22) {} ;
   	\node [block, right of=dummy22] (block-9) {separates Entfernen (Voll- und Sektionsfräsen) oder Multistrang-Sektionsfräsen} ;
   	\node [right of=decision-1] (dummy1) {} ;
   	\node [right of=dummy1] (dummy2) {} ;
   	\node [right of=dummy2] (dummy8) {} ;
   	\node [block, right of=dummy8] (block-1) {Schneiden und Ausbauen} ;
   	\node [decision, below=0.5cm of decision-6] (decision-2) {ZK > 60m oberhalb projekt. Teufe} ;
   	\node [right of=decision-2] (dummy3) {} ;
   	\node [right of=dummy3] (dummy4) {} ;
   	\node [right of=dummy4] (dummy9) {} ;
   	\node [block, right of=dummy9] (block-2) {Sektionsfräsen} ;
   	\node [block, below=0.5cm of decision-2] (block-3) {Schneiden und Ausbauen oberhalb der ZK-Teufe} ;
   	\node [right of=block-3] (dummy11) {} ;
   	\node [decision, below=0.5cm of block-3] (decision-3) {Rohre vollständig einzementiert?} ;
   	\node [right of=decision-3] (dummy5) {} ;
   	\node [right of=dummy5] (dummy6) {} ;
   	\node [right of=dummy6] (dummy10) {} ;
   	\node [block, right of=dummy10] (block-4) {Vollfräsen} ;
   	\node [decision, above of=block-4] (decision-7) {erfolgreich?} ;
   	\node [block, right of=dummy11] (block-10) {Troubleshooting-Guide (siehe Tab.....; Abschätzung Alternativen} ;
   	\node [block, below=0.5cm of decision-3] (block-5) {Zugversuch \\ Frei\-punkt\-be\-stimmung} ;
   	\node [decision, below=0.5cm of block-5] (decision-4) {sind Rohre frei?} ;
   	\node [block, below of=decision-4] (block-11) {Schneiden und Ausbauen} ;
   	\node [right of=decision-4] (dummy7) {} ;
   	\node [block, right of=dummy7] (block-6) {abschnittsweise schneiden} ;
   	\node [block, above of=block-6] (block-7) {Zugversuch \\ Frei\-punkt\-be\-stimmung} ;
   	\node [right of=block-7] (dummy11) {} ;
   	\node [decision, right of=dummy11] (decision-5) {sind Rohre frei?} ;
   	\node [block, below of=decision-5] (block-12) {Schneiden und Ausbauen} ;
   	\node [cloud, text width=5em, below of=block-6] (block8) {Job beendet} ;
   	% draw edges
   	\path [line] (init) -- (decision-1) ;
   	\path [line] (decision-1) -- node [near start] {ja} (block-1) ;
   	\path [line] (decision-1) -- node [near start] {nein} (decision-6) ;
   	\path [line] (decision-6) -- node [near start] {nein} (decision-2) ;
   	\path [line] (decision-6) -- node [near start] {ja} (block-9) ;
   	\path [line] (decision-2) -- node [near start] {ja} (block-2) ;
   	\path [line] (decision-2) -- node [near start] {nein} (block-3) ;
   	\path [line] (block-3) -- (decision-3) ;
   	\draw [-to] (block-10.north) edge [bend left]  (decision-7.north west) ;
   	\draw [-to] (block-9.east) edge [bend left]  (decision-7.north east) ;
   	\path [line] (block-2) -- (decision-7) ;
   	\path (block-1) -| ([xshift=1.0cm, yshift=0cm] block-1.east) |- (block8)  coordinate[pos=0.5] (a2);
   	\path [line] (block-1) -| ([xshift=1.0cm, yshift=0cm] block-1.east) |- (block8) ;
   	\path [line] (decision-7) -| node [near start] {ja} (a2) ;
   	\path [line] (decision-3) -- node [near start] {ja} (block-4) ;
   	\path [line] (decision-7.west) -- node [near start] {nein} (block-10.east) ;
   	\path [line] (decision-3) -- node [near start] {nein} (block-5) ;
   	\path [line] (block-5) -- (decision-4) ;
   	\path [line] (decision-4) -- node [near start] {nein} (block-6) ;
   	\path [line] (decision-4) -- node [near start] {ja} (block-11) ;
   	\path [line] (block-11) -- (block8) ;
   	\path [line] (decision-5) -- node [near start] {ja} (block-12) ;
   	\path (block-12) |- (block8) coordinate[pos=0.5] (a1);
   	\path [line] (block-12) -- (a1) ;
   	\path [line] (block-12) |- (block8) ;
   	\path [line] (block-6) -- (block-7) ;
   	\path [line] (block-4) -- (decision-7) ;
   	\path [line] (block-7) -- (decision-5) ;
   	\path [line] (decision-5) -- node [near start] {nein} (block-4) ;
   	\end{tikzpicture}
   	\caption[Verfahren zum Entfernen von Rohren]{möglicher Arbeitsablauf zum Entfernen von Rohren aus dem Bohrloch} \label{VerfahrenRohr}
   \end{figure}
    
\end{document} 

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Problem mit Pfeilen im Flowchart

Beitrag von Bartman »

Guayaba hat geschrieben:und zwar würde ich gerne decision-7 (entspricht "erfolgreich?) mit der vertikalen Line, die von oben (block-1 "Schneiden und Ausbauen") kommt mit einem Pfeil verbinden.
Suchst Du das?
\path [line] (decision-7) -- node [near start] {ja} (decision-7-|a2);

Guayaba
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 15. Nov 2017, 08:36

Beitrag von Guayaba »

Genau das habe ich gesucht! Vielen Dank, klappt ja für den anderen Block genauso.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ein paar weitere Anpassungen:
\documentclass[tikz, border=5pt]{standalone}  
\usepackage{selinput}% https://texwelt.de/wissen/fragen/5546
\SelectInputMappings{
	adieresis={ä},
	germandbls={ß}
}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[locale=DE]{siunitx}% <- eingefügt
\usetikzlibrary{shapes,arrows,calc,automata,positioning,fit,quotes}

\begin{document}
   \tikzstyle{decision} = [ diamond, aspect=2, draw, fill=blue!20, text width=8em, text centered, inner sep=0pt ]
   \tikzstyle{block} = [ rectangle, draw, fill=blue!20, text width=7em, text centered, rounded corners, minimum height=4em ]
   \tikzstyle{io} = [trapezium, trapezium left angle=110, trapezium right angle=110, text width=28em ,  minimum height=4em, text centered, draw, fill=blue!20]
   \tikzstyle{cloud} = [draw, ellipse, fill=red!20, text width=22em, minimum height=2em, text centered]
   \tikzstyle{line} = [ draw, -latex' ]
    
      \begin{tikzpicture}[node distance=2.50cm, auto]
      % place nodes
      \node [cloud, text width=10em] (init) {Entfernen von Rohren aus dem Bohrloch} ;
      \node [decision, below=0.5cm of init] (decision-1) {sind Rohre bis zur projektierten Teufe frei?} ;
      \node [decision, below=0.5cm of decision-1] (decision-6) {hinter\-einander\-liegende einzementierte Rohre?} ;
      \node [right of=decision-6] (dummy20) {} ;
      \node [right of=dummy20] (dummy21) {} ;
      \node [right of=dummy21] (dummy22) {} ;
      \node [block, right of=dummy22] (block-9) {separates Entfernen (Voll- und Sektionsfräsen) oder Multistrang-Sektionsfräsen} ;
      \node [right of=decision-1] (dummy1) {} ;
      \node [right of=dummy1] (dummy2) {} ;
      \node [right of=dummy2] (dummy8) {} ;
      \node [block, right of=dummy8] (block-1) {Schneiden und Ausbauen} ;
      \node [decision, below=0.5cm of decision-6] (decision-2) {ZK \textgreater{} \SI{60}{\m} oberhalb projekt. Teufe} ;% <- geändert
      \node [right of=decision-2] (dummy3) {} ;
      \node [right of=dummy3] (dummy4) {} ;
      \node [right of=dummy4] (dummy9) {} ;
      \node [block, right of=dummy9] (block-2) {Sektionsfräsen} ;
      \node [block, below=0.5cm of decision-2] (block-3) {Schneiden und Ausbauen oberhalb der ZK-Teufe} ;
      \node [right of=block-3] (dummy11) {} ;
      \node [decision, below=0.5cm of block-3] (decision-3) {Rohre vollständig einzementiert?} ;
      \node [right of=decision-3] (dummy5) {} ;
      \node [right of=dummy5] (dummy6) {} ;
      \node [right of=dummy6] (dummy10) {} ;
      \node [block, right of=dummy10] (block-4) {Vollfräsen} ;
      \node [decision, above of=block-4] (decision-7) {erfolgreich?} ;
      \node [block, right of=dummy11] (block-10) {Troubleshooting-Guide (siehe Tab.....; Abschätzung Alternativen} ;
      \node [block, below=0.5cm of decision-3] (block-5) {Zugversuch \\ Frei\-punkt\-be\-stimmung} ;
      \node [decision, below=0.5cm of block-5] (decision-4) {sind Rohre frei?} ;
      \node [block, below of=decision-4] (block-11) {Schneiden und Ausbauen} ;
      \node [right of=decision-4] (dummy7) {} ;
      \node [block, right of=dummy7] (block-6) {abschnittsweise schneiden} ;
      \node [block, above of=block-6] (block-7) {Zugversuch \\ Frei\-punkt\-be\-stimmung} ;
      \node [right of=block-7] (dummy11) {} ;
      \node [decision, right of=dummy11] (decision-5) {sind Rohre frei?} ;
      \node [block, below of=decision-5] (block-12) {Schneiden und Ausbauen} ;
      \node [cloud, text width=5em, below of=block-6] (block8) {Job beendet} ;
      % draw edges
      \path [line] (init) -- (decision-1) ;
      \path [line] (decision-1) -- node [near start] {ja} (block-1) ;
      \path [line] (decision-1) -- node [near start] {nein} (decision-6) ;
      \path [line] (decision-6) -- node [near start] {nein} (decision-2) ;
      \path [line] (decision-6) -- node [near start] {ja} (block-9) ;
      \path [line] (decision-2) -- node [near start] {ja} (block-2) ;
      \path [line] (decision-2) -- node [near start] {nein} (block-3) ;
      \path [line] (block-3) -- (decision-3) ;
      \path [-to] (block-10.north) edge [bend left]  (decision-7.north west) ;% <- draw durch path ersetzt
      \path [-to] (block-9.east) edge [bend left]  (decision-7.north east) ;% <- s.o.
      \path [line] (block-2) -- (decision-7) ;
      \path (block-1) -| ([xshift=1.0cm, yshift=0cm] block-1.east) |- (block8)  coordinate[pos=0.5] (a2);
      \path [line] (block-1) -| ([xshift=1.0cm, yshift=0cm] block-1.east) |- (block8) ;
      \path [line] (decision-7) -- node [near start] {ja} (decision-7-|a2);% <- geändert
      \path [line] (decision-3) -- node [near start] {ja} (block-4) ;
      \path [line] (decision-7.west) -- node [near start] {nein} (decision-7.west-|block-10.east) ;% <- Pfeil begradigt
      \path [line] (decision-3) -- node [near start] {nein} (block-5) ;
      \path [line] (block-5) -- (decision-4) ;
      \path [line] (decision-4) -- node [near start] {nein} (block-6) ;
      \path [line] (decision-4) -- node [near start] {ja} (block-11) ;
      \path [line] (block-11) -- (block8) ;
      \path [line] (decision-5) -- node [near start] {ja} (block-12) ;
      \path (block-12) |- (block8) coordinate[pos=0.5] (a1);
      \path [line] (block-12) -- (a1) ;
      \path [line] (block-12) |- (block8) ;
      \path [line] (block-6) -- (block-7) ;
      \path [line] (block-4) -- (decision-7) ;
      \path [line] (block-7) -- (decision-5) ;
      \path [line] (decision-5) -- node [near start] {nein} (block-4) ;
      \end{tikzpicture}    
\end{document}
Aufgrund der Struktur des Flußdiagramms wäre der Einsatz einer Matrix auch eine Möglichkeit gewesen.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Mein Vorschlag, eine Matrix zu verwenden, könnte so umgesetzt werden:
\documentclass[tikz, border=10pt]{standalone}  
\usepackage{selinput}% https://texwelt.de/wissen/fragen/5546
\SelectInputMappings{
	adieresis={ä},
	germandbls={ß}
}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}

\usetikzlibrary{
	shapes.geometric, 
	arrows.meta, 
	positioning, 
	matrix
}

\tikzset{font=\sffamily}

\sisetup{
	locale=DE,
	detect-all
}

\begin{document}
\begin{tikzpicture}[
	decision/.style={
		draw, 
		aspect=2,
		diamond, 
		fill=blue!20, 
		text width=8em, 
		inner sep=0pt
	},
	block/.style={
		draw, 
		fill=blue!20,
		text width=7em,
		minimum height=4em,
		rounded corners
	},
	cloud/.style={
		draw, 
		ellipse, 
		fill=red!20, 
		text width=10em
	},
	line/.style={-Latex},
	auto
]
\matrix [
	matrix of nodes,
	nodes={
		align=center, 
		anchor=center
	},
	execute at begin node=\hspace{0pt},% z. B. für "hintereinanderliegende"
	row sep=.7cm,
	column sep=1.5cm
] (flowchart) {
	|[cloud]| Entfernen von Rohren aus dem Bohrloch\\
	|[decision]| sind Rohre bis zur projektierten Teufe frei? & & 
	|[block]| Schneiden und Ausbauen\\
	|[decision]| hintereinanderliegende einzementierte Rohre? & & 
	|[block]| separates Entfernen (Voll- und Sektionsfräsen) oder Multistrang"=Sektionsfräsen\\
	|[decision]| {ZK \textgreater{} \SI{60}{\m}\\ oberhalb projekt. Teufe} & & 
	|[block]| Sektionsfräsen\\
	|[block]| Schneiden und Ausbauen oberhalb der ZK-Teufe & 
	|[block]| Troubleshooting"=Guide (siehe Tab~\dots; Abschätzung Alternativen &
	|[decision]| erfolgreich?\\
	|[decision]| Rohre vollständig einzementiert & & 
	|[block]| Vollfräsen?\\
	|[block]| Zugversuch Freipunktbestimmung & 
	|[block]| Zugversuch Freipunktbestimmung & 
	|[decision]| sind Rohre frei?\\
	|[decision]| sind Rohre frei? & 
	|[block]| abschnittsweise schneiden & 
	|[block]| Schneiden und Ausbauen\\
	|[block]| Schneiden und Ausbauen & 
	|[cloud, text width=5em]| Job beendet\\
};
\draw [line] 
	(flowchart-1-1) edge (flowchart-2-1)
	(flowchart-2-1) edge node [pos=.05] {ja} (flowchart-2-3)
	(flowchart-2-1) edge node {nein} (flowchart-3-1)
	(flowchart-3-1) edge node [pos=.05] {ja} (flowchart-3-3)
	(flowchart-3-1) edge node {nein} (flowchart-4-1)
	(flowchart-3-3.east) edge [bend left] (flowchart-5-3.north east)
	(flowchart-4-1) edge node [pos=.05] {ja} (flowchart-4-3)
	(flowchart-4-1) edge node {nein} (flowchart-5-1)
	(flowchart-4-3) edge (flowchart-5-3)
	(flowchart-5-3) edge node [near start] {nein} (flowchart-5-2)
	(flowchart-5-2.north) edge [bend left] (flowchart-5-3.north west)
	(flowchart-5-1) edge (flowchart-6-1)
	(flowchart-6-1) edge node [pos=.05] {ja} (flowchart-6-3)
	(flowchart-6-3) edge (flowchart-5-3)
	(flowchart-6-1) edge node {nein} (flowchart-7-1)
	(flowchart-7-2) edge (flowchart-7-3)
	(flowchart-7-3) edge node {nein} (flowchart-6-3)
	(flowchart-7-1) edge (flowchart-8-1)
	(flowchart-8-1) edge node [pos=.15] {nein} (flowchart-8-2)
	(flowchart-8-2) edge (flowchart-7-2)
	(flowchart-7-3) edge node {ja} (flowchart-8-3)
	(flowchart-8-1) edge node {ja} (flowchart-9-1)
	(flowchart-9-1) edge (flowchart-9-2)
	(flowchart-2-3.east) -- +(1,0) coordinate (cut and remove right) 
		|- (flowchart-9-2)
	(flowchart-5-3) edge node {ja} (flowchart-5-3-|cut and remove right)
	(flowchart-8-3) edge (flowchart-8-3|-flowchart-9-2)
;
\end{tikzpicture}
\end{document}

Antworten