使用 Circuitikz 的基本电路

使用 Circuitikz 的基本电路

我想知道绘制电路的基本语法。我想重现这个电路:

在此处输入图片描述

我的电路包含两个开关 ( node[spdt]{})、一个电池 ( battery1) 和一个灯 ( lamp)。我最大的问题是我无法在正确的位置将组件连接在一起。此外,我需要创建一个特殊的交叉点(粉色和橙色)。我在网格上绘制了电路,以帮助我正确放置不同的元件。能否解释正确连接组件的语法并指导我进行坐标?

答案1

注意:由于这是一道代答题,且没有提供 MWE,因此我不太可能回答有关此问题的更多问题。我这样做是为了自己练习。

\documentclass{report}
\usepackage{circuitikz}
\tikzset{% from https://tex.stackexchange.com/a/134090/117534
    declare function={% in case of CVS which switches the arguments of atan2
        atan3(\a,\b)=ifthenelse(atan2(0,1)==90, atan2(\a,\b), atan2(\b,\a));},
    kinky cross radius/.initial=+.125cm,
    @kinky cross/.initial=+, kinky crosses/.is choice,
    kinky crosses/left/.style={@kinky cross=-},kinky crosses/right/.style={@kinky cross=+},
    kinky cross/.style args={(#1)--(#2)}{
        to path={
            let \p{@kc@}=($(\tikztotarget)-(\tikztostart)$),
            \n{@kc@}={atan3(\p{@kc@})+180} in
            -- ($(intersection of \tikztostart--{\tikztotarget} and #1--#2)!%
            \pgfkeysvalueof{/tikz/kinky cross radius}!(\tikztostart)$)
            arc [ radius     =\pgfkeysvalueof{/tikz/kinky cross radius},
            start angle=\n{@kc@},
            delta angle=\pgfkeysvalueof{/tikz/@kinky cross}180 ]
            -- (\tikztotarget)}}}

\begin{document}
    \begin{circuitikz}
        \draw[color=orange,thick] 
         (-2,1) node[spdt,yscale=-1] (bottom-spdt) {}
         (-2,3) node[spdt,yscale=-1] (top-spdt) {}
         (top-spdt.in)      to (bottom-spdt.in)
         (top-spdt.out 2)   to ++(3,0) 
                            to[lamp,/tikz/circuitikz/bipoles/length=1cm] ++(0,-2.5) to ++(0,-1.5)
                            to[battery1] ++(-2,0) node(batt-left){}
                            |- (bottom-spdt.out 1)
         (top-spdt.out 1)   -| node(intersect){} (batt-left)
         ;
        \draw[thick, color=violet!70] 
         (bottom-spdt.out 2)    to[kinky cross=(intersect)--(batt-left)] ++(3,0)
         ;
    \end{circuitikz}
\end{document}

电路

相关内容