将 `to[short,*-]` 与 `|-` 结合起来实现正交布线

将 `to[short,*-]` 与 `|-` 结合起来实现正交布线

我想将 Tikz () 的垂直绘图与操作数内部使用的|-Circuitikz () 的导线末端形状相结合。我想做一些类似于最后一行代码的事情,其中​​没有任何效果。*-to|-

\begin{circuitikz}[x=10mm,y=10mm]
    \draw   (0,0) to[inline not] ++(2,0) coordinate (A) to[inline not] ++(2,0) coordinate (B) to[inline not] ++(2,0) coordinate (C) to[inline not] ++(2,0) coordinate (D);
    \tikzset{mux/.style={muxdemux, muxdemux def={Lh=6, Rh=4, NL=4, NB=2, NR=1}}}
    \draw (5,-4) node[mux,rotate=-90] (sel) {A};

    \draw (D) |- ($(D)!0.5!(sel.lpin 1)$) -| (sel.lpin 1);
    \draw (C) |- ($(C)!0.5!(sel.lpin 2)$) -| (sel.lpin 2);
    \draw (B) |- ($(B)!0.5!(sel.lpin 3)$) -| (sel.lpin 3);
    \draw (A) to[short,*-,|-] ($(A)!0.5!(sel.lpin 4)$) -| (sel.lpin 4);
\end{circuitikz}

我的输出。

谢谢

答案1

您不能将to语法与链接在一起,|-因为语法是(coord) to[] (coord)绘制元素。它不起作用,因为|-已经是一个路径元素;这就像说(coord) to[element] to[vertical and horizontal wire] (coord)Tikz 不知道中间点一样。

这里更简单的解决方案是将其用于最后一行:

\draw (A)  node[circ]{} |- ($(A)!0.5!(sel.lpin 4)$) -| (sel.lpin 4); 

答案2

您还可以使用 (A |- B) 表示 A 下方或上方、B 左侧或右侧的点。

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[x=10mm,y=10mm]
    \draw   (0,0) to[inline not] ++(2,0) coordinate (A) to[inline not] ++(2,0) coordinate (B) to[inline not] ++(2,0) coordinate (C) to[inline not] ++(2,0) coordinate (D);
    \tikzset{mux/.style={muxdemux, muxdemux def={Lh=6, Rh=4, NL=4, NB=2, NR=1}}}
    \draw (5,-4) node[mux,rotate=-90] (sel) {A};
    
    \coordinate (E) at ($(A)!0.5!(sel.lpin 4)$);% common north/south midpoint

    \draw (D) -- (D |- E) -| (sel.lpin 1);
    \draw (C) -- (C |- E) -| (sel.lpin 2);
    \draw (B) -- (B |- E) -| (sel.lpin 3);
    \draw (A) to[short,*-] (A |- E) -| (sel.lpin 4);
\end{circuitikz}
\end{document}

相关内容