異なる形状の2つのアンカーを水平に接続する

異なる形状の2つのアンカーを水平に接続する

2 つの図形 (2 つのアンカー (と)myComponent1を含む)と(1 つのアンカー ( ) を含む)を定義しました。水平ワイヤを使用してからをに直接接続する方法についてアドバイスを求めています。以下に、私の LaTeX コードと対応する出力を示します。最後に、望ましい結果を含めました。PinAPinBmyComponent2PinAPinAmyComponent1PinAmyComponent2

コード:

\documentclass{article}

\usepackage{circuitikz}

%% defining My Component 1
\pgfdeclareshape{myComponent1}{
    
    \anchor{center}{\pgfpointorigin}
    
    \savedanchor\PinA{\pgfpoint{60}{50}}
    \anchor{PinA}{\PinA}
    \savedanchor\PinB{\pgfpoint{60}{-50}}
    \anchor{PinB}{\PinB}
    
    \foregroundpath{
        
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        
        \pgftext[right, at={\PinA}]{PIN A}
        \pgftext[right, at={\PinB}]{PIN B}
    }
}

%% defining My Component 2
\pgfdeclareshape{myComponent2}{
    
    \anchor{center}{\pgfpointorigin}
    
    \savedanchor\PinA{\pgfpoint{-60}{0}}
    \anchor{PinA}{\PinA}
    
    \foregroundpath{
        
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        
        \pgftext[left, at={\PinA}]{PIN A}
    }
}

\begin{document}
    
    \begin{circuitikz}

        \draw (0,0) node[myComponent1, blue] (C1) {};
        \draw (8,5) node[myComponent2, red]  (C2) {};
        
        \draw (C1.PinA) -- (C2.PinA);
    
    \end{circuitikz}
    
\end{document}

出力:

ここに画像の説明を入力してください

望ましい結果:

ここに画像の説明を入力してください

答え1

2 つの図形のアンカーの垂直位置が異なる場合、それらを水平線で接続することはできません (当然のことですが)。

最初の図形を描き、水平線を描き、次にアンカーを使用して 2 番目の図形を追加します。

 \draw (0,0) node[myComponent1, blue] (C1) {};
 \draw (C1.PinA) -- ++(3,0) node[myComponent2, red, anchor=PinA] (C2) {};

ここに画像の説明を入力してください

とにかく、それは特定のものではなくcircuitikz、単なるTiですZ... 完全な MWE:

\documentclass{article}
\usepackage{tikz}

%% defining My Component 1
\pgfdeclareshape{myComponent1}{
    \anchor{center}{\pgfpointorigin}
    \savedanchor\PinA{\pgfpoint{60}{50}}
    \anchor{PinA}{\PinA}
    \savedanchor\PinB{\pgfpoint{60}{-50}}
    \anchor{PinB}{\PinB}
    \foregroundpath{
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        \pgftext[right, at={\PinA}]{PIN A}
        \pgftext[right, at={\PinB}]{PIN B}
    }
}
%% defining My Component 2
\pgfdeclareshape{myComponent2}{
    \anchor{center}{\pgfpointorigin}
    \savedanchor\PinA{\pgfpoint{-60}{0}}
    \anchor{PinA}{\PinA}
    \foregroundpath{
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        \pgftext[left, at={\PinA}]{PIN A}
    }
}

\begin{document}
\begin{tikzpicture}
    \draw (0,0) node[myComponent1, blue] (C1) {};
    \draw (C1.PinA) -- ++(3,0) node[myComponent2, red, anchor=PinA] (C2) {};
\end{tikzpicture}
\end{document}

関連情報