0

This question contains details regarding how to make the edges connecting various nodes turn at right angles using draw and edge. However, I am using the petri Tikz library and thus, the edges are drawn automatically. How can I instruct Tikz to draw these edges with right angled turns?

EDIT: The code is:

\begin{tikzpicture}[node distance=1.5cm,,xscale=2,>=stealth',bend angle=45,auto]
    \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=3mm]
    \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
    \tikzstyle{transition}=[rectangle,thick,draw=brown!75,
          fill=brown!20,minimum size=3mm]
    \tikzstyle{every label}=[blue!75]

    \begin{scope}
        \path
            (0, 0) node [place,tokens=1,label=above:\s{$i$}] (pi) {}
            ++(-1, -1) node [place] (p1) [label=above:\s{$p1$}] {}
            ++(1, -1) node [place] (p2) [label=left:\s{$p2$}] {}
            +(-1, -1) node [place] (p3) [label=left:\s{$p3$}] {}
            ++(1, -1) node [place] (p4) [label=right:\s{$p4$}] {}
            +(1, 0) node [place] (p6) [label=left:\s{$p6$}] {}
            ++(-1, -1) node [place] (p5) [label=left:\s{$p5$}] {}
            ++(0, -2) node [place] (po) [label=above:\s{$o$}] {}

            ++(0, 5) node [transition] (t1) {\s{fork}}
            edge [pre] (pi)
            edge [post] (p1)
            edge[post,-|] [post] (p6)
            edge [post] (p2)
            ++(-1, -1) node [transition] (t2) {\s{check\_insurance}}
            edge [pre] (p1)
            edge [post] (p3)
            +(2, 0) node [transition] (t3){\s{contact\_garage}}
            edge [pre] (p2)
            edge [post] (p4)
            ++(1, -1) node [transition] (t4) {\s{join}}
            edge [pre] (p3)
            edge [pre] (p4)
            edge [post] (p5)
            +(3, 0) node [transition] (t5) {\s{inform\_customer}}
            edge [pre and post] (p6)
            ++(-1, -2) node [transition] (t6) {\s{pay\_damage}}
            edge [pre] (p5)
            edge [pre] (p6)
            edge [post] (po)
            +(2, 0) node [transition] (t7)  {\s{send\_letter}}
            edge [pre] (p5)
            edge [pre] (p6)
            edge [post] (po);
    \end{scope}
\end{tikzpicture}
strNOcat
  • 113

1 Answers1

1

Taking an example from manual and applying the solution mentioned in this answer:

\tikzset{
    -|/.style={to path={-| (\tikztotarget)}},
    |-/.style={to path={|- (\tikztotarget)}},
}

enter image description here

\documentclass[margin=6]{standalone}

\usepackage{tikz}
\usetikzlibrary{positioning,petri}

\tikzset{
    -|/.style={to path={-| (\tikztotarget)}},
    |-/.style={to path={|- (\tikztotarget)}},
}

\begin{document}
\begin{tikzpicture} \node[place,tokens=2,label=above:$p_1$] (p1) {}; \node[place,label=above:$p_2\ge1$,right=of p1] (p2) {};
\node[transition,below right=of p1,label=below:$t_1$] {} edge[pre,-|] (p1)
edge[post,-|] node[auto] {2} (p2);
\end{tikzpicture}
\end{document}
nidhin
  • 7,932