连接重复图的节点

连接重复图的节点

如何在同一图形结构的两个副本之间创建边?以下是所需输出的示例(标签不需要随对象旋转)。

期望输出

具体来说,我想创建两个包含节点和到这些节点的连接的元对象(我认为问题可能会解决这个问题)。然后我希望能够操作/复制该元对象并在两个元对象之间连接一个节点(看起来很相似,但有两张不同的图片)。目前尚不清楚是否可以将两个建议的答案组合起来,或者我是否需要尝试一些单独的东西。

答案1

像这样吗?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, fit}

\tikzset{
    object1/.pic={
        \node[circle,draw] (-A) {A};
        \node[circle,draw, right=of -A] (-B) {B};
        \node[circle,draw, above right=5mm and 1cm of -A] (-C) {C};
        \draw[->] (-A)--(-C);
        \draw[->] (-C)--(-B);
        \node[draw, rounded corners, fit=(-A) (-B) (-C), label={[anchor=north west]north west:Object 1}]{};
    }
}
\begin{document}

\begin{tikzpicture}[remember picture]
\path pic (Obj1) {object1};
\end{tikzpicture}
\hspace{2cm}
\begin{tikzpicture}[remember picture]
\path[blue] pic (Obj2) {object1};
\end{tikzpicture}

\begin{tikzpicture}[remember picture,overlay]
\draw[red,->] (Obj1-B)--(Obj2-A);
\end{tikzpicture}
\end{document}

在此处输入图片描述

或这个?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, fit}

\tikzset{
    pics/object/.style 2 args={
       code={
        \begin{scope}[rotate=#2, transform shape]
        \node[circle,draw] (-A) {A};
        \node[circle,draw, right=of -A] (-B) {B};
        \node[circle,draw, above right=5mm and 1cm of -A] (-C) {C};
        \draw[->] (-A)--(-C);
        \draw[->] (-C)--(-B);
        \end{scope}
        \node[draw, rounded corners, fit=(-A) (-B) (-C), label={[anchor=north west]north west:Object #1}, inner sep=5mm]{};
        }
    }
}
\begin{document}

\begin{tikzpicture}[remember picture]
\path pic (Obj1) {object={1}{0}};
\end{tikzpicture}
\hspace{2cm}
\begin{tikzpicture}[remember picture]
\path[blue] pic (Obj2) {object={2}{30}};
\end{tikzpicture}

\begin{tikzpicture}[remember picture,overlay]
\draw[red,->] (Obj1-B)--(Obj2-A);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容