Nodos conectados incorrectamente en TikZ - continuación

Nodos conectados incorrectamente en TikZ - continuación

Este es un seguimiento de la pregunta.Nodos conectados incorrectamente en TikZ .

Con el enfoque sugerido por la respuesta aceptada en esa pregunta, cuando usé la lógica en mi código original, el resultado no fue el mismo.

Me sale algo como esto:

ingrese la descripción de la imagen aquí

Código:

\documentclass{article}
\usepackage{tikz}
\tikzset{square/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick
}}

\tikzset{circle/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick
}}

\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}

\begin{document}
\begin{tikzpicture}
  %\draw[My Grid] (-5,-5) grid (15,15);
  \draw[square] (-4,4)rectangle node (r1) {r1} (-3,5);
  \draw[square] (1,4) rectangle node (r2) {r2} (2,5);
  \draw[square] (-3,0) rectangle node (r3) {r3} (-4,1);
  \draw[square] (1,0) rectangle node (r4) {r4} (2,1);
  \draw[circle] (-1,2.5) circle [radius=0.5cm] node[above=2ex,red] (s) {$s \leq 3$};
  \draw[circle] (-1,4.5) circle [radius=0.5cm] node (s1) {s1};
  \draw[circle] (-1,6.5) circle [radius=0.5cm] node (s2) {};
  \draw[fill=black] (-1,6.5) circle [radius=0.1cm] node (s3) {};
  \draw[circle] (-1,0.5) circle [radius=0.5cm] node (s4) {s4};
  \draw[circle] (-1,-1.5) circle [radius=0.5cm] node (s5) {};
  \draw[fill=black] (-1,-1.5) circle [radius=0.1cm];
  \draw[->] (r1) -- (s1);

\end{tikzpicture}
\end{document} 

Respuesta1

Defina sus elementos directamente como \node. De esta manera puedes definir puntos de anclaje en tus elementos. Si lo muestro de esta manera usando parte de tu código:

\documentclass{article}
\usepackage{tikz}
\tikzset{square/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    minimum height=1cm,
    minimum width=1cm,
    thick
}}

\tikzset{circle/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    minimum size=1cm,
    inner sep=0pt,
    thick
}}

\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}

\begin{document}
\begin{tikzpicture}
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-3.5,4.5) [square] {r1};
  \node (s1)at (-1,4.5) [circle]{s1};
  \draw[->] (r1) -- (s1);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[xshift=2cm]
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-3.5,4.5) [square] {r1};
  \node (s1)at (-1,4.5) [circle]{s1};
  \draw[->] (r1.east) -- (s1.west);
  \end{tikzpicture}
\hfill
\begin{tikzpicture}[xshift=2cm]
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-3.5,4.5) [square] {r1};
  \node (s1)at (-1,4.5) [circle]{s1};
  \draw[->] (r1.south east) -- (s1.180);
  \draw[->] (r1.north east) -- (s1.north);
\end{tikzpicture}

\end{document} 

ingrese la descripción de la imagen aquí

Respuesta2

El gráfico que deseas crear es exactamente igual al creado en el tutorial.Una Red de Petri para Hagen en manual3.1.1 en las páginas 49 a 60.

Los invito a leerlo, está muy bien escrito y muy completo.

Aquí está el código completo de la figura del manual que figura en la página 52:

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri}
\begin{document}

\begin{tikzpicture}[place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=6mm},
transition/.style={rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt,minimum size=4mm}]
\node[place] (waiting) {};
\node[place] (critical) [below=of waiting] {};
\node[place] (semaphore) [below=of critical] {};
\node[transition] (leave critical) [right=of critical] {};
\node[transition] (enter critical) [left=of critical] {};
\draw [->] (enter critical.east) -- (critical.west);
\draw [->] (waiting.west) .. controls +(left:5mm) and +(up:5mm)
.. (enter critical.north);
\end{tikzpicture}

\end{document} 

captura de pantalla

Aquí está la figura final construida al final del tutorial.

captura de pantalla-2

información relacionada