我如何将矩形中的线条添加到此图上的线条中?

我如何将矩形中的线条添加到此图上的线条中?

我想完成这个图表,但我不知道一种有效的方法将每个矩形中的三条线添加到线条中,看起来像这样:

我希望我的图表看起来是什么样子的示例。

这是我目前所得到的以及我使用的代码,使用circuitikz:

我当前的图表

我使用的代码是:


\documentclass[border=0.5cm]{standalone}
\usepackage{circuitikz}

\begin{document}

\begin{tikzpicture}[
        rect/.style={
            black,
            shape=rectangle,
            minimum width=3cm,
            minimum height=2cm,
            anchor=center},
        line/.style={
            black}
        ]
    
    \coordinate (origin) at (0,0);
    
    \pgfmathsetmacro\linelength{13}
    
    \foreach \coordinate in {(0,0), (0,-0.7), (0,0.7)} 
    {
        \draw[line] \coordinate -- ++(0:\linelength);
    }
    
    \foreach \point in {1, 5, 9}
    {
        \draw[line] (\point,-3.5) rectangle ++(3,2) ;
    }
\end{tikzpicture}

\end{document}

这只是一些微不足道的事情,所以如果能得到一点帮助就太好了!提前谢谢 :)

答案1

除了nodes使用矩形和线条坐标外,您还可以使用交点来绘制连接:

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{positioning, arrows.meta}

\begin{document}
\begin{tikzpicture}[
    carga/.style={draw, minimum width=3cm, minimum height=2cm},
    connect/.style={-{Circle[]}, shorten > = -2pt},
    ]
    
    \node[carga] (carga1) {Carga 1};
    \node[carga, right=of carga1] (carga2) {Carga 2};
    \node[carga, right=of carga2] (carga3) {Carga 3};
    \draw ([shift={(-1cm,1cm)}]carga1.north west) coordinate (aux11)--([shift={(1cm,1cm)}]carga3.north east) coordinate(aux12);
    \draw ([yshift=.5cm]aux11) coordinate (aux21)--(aux21-|aux12);
    \draw ([yshift=.5cm]aux21) coordinate (aux31)--(aux31-|aux12);
    \draw[-Latex] ([xshift=.5cm]aux31) -- node[above, near end]{$I_T$} ++(.75,0);
    \foreach \i in {1,2,3}{
        \draw[connect] ([xshift=-5mm]carga\i.north) coordinate (aux) --(aux|-aux11);
        \draw[connect] (carga\i.north) coordinate (aux) --(aux|-aux21);
        \draw[connect] ([xshift=5mm]carga\i.north) coordinate (aux) --(aux|-aux31);
        \draw[Latex-] ([shift={(.5cm,.25)}]carga\i.north) -- node[right]{$I_\i$} ++(90:.5);
    }
    \draw[-Latex] ([xshift=.5cm]aux31) -- node[above, near end]{$I_T$} ++(.75,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

下面的解决方案使用循环foreach内的循环foreach。第一个循环定义了每个卡加,第二个绘制每三条线。

该语法[count=\i]提供了一个简单的解决方案,可以在循环内添加计数。

我删除了该rect样式,因为它没有被使用。电流I_1I_3绘制在带有连接点的常规线的上方,但略低于您想要显示的位置,这同样适用于 $I_T$。

\documentclass{article}
\usepackage{tikz,circuitikz}
\begin{document}
\begin{tikzpicture}[
  line/.style={
    black},
  ]
  
  %\coordinate (origin) at (0,0);
  
  \pgfmathsetmacro\linelength{13}
  
  \draw (0,0.7) to[short, i=$I_T$] ++(1,0);
  
  \foreach \c/\p [count=\i] in {-0.7/1, 0/5, 0.7/9} {
    \draw[line] (0,\c) -- ++(0:\linelength);
    
    \foreach \x/\y in {1/-0.7, 1.5/0, 2/0.7} { 
      \draw (\p+\x,-1.5) to[short, -*] (\p+\x,\y);
    }
    \draw (\p+2,-0.8) to[short, i=$I_{\i}$] ++(0,-0.5);
  }
  
  \foreach \point [count=\i] in {1, 5, 9} {
    \draw[line] (\point,-3.5) rectangle ++(3,2) node[pos=0.5]{Carga \i};
  }
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容