![circuitikz 中的新组件](https://linux22.com/image/309955/circuitikz%20%E4%B8%AD%E7%9A%84%E6%96%B0%E7%BB%84%E4%BB%B6.png)
我想创建一个新元素用于电路图。到目前为止,我已经使用 CircuiTikz 来绘制电路图,但我不熟悉定义标准元素的低级 PGF 命令。创建像我在图中绘制的简单组件的最简单方法是什么?但我必须能够将其包含在我的电路图的其余部分中。
我想要连接新元素的电路代码:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[scale=0.75, american inductors, american voltages, european resistors]
\draw
(0,3.5) to[short] (0.5,4) to[short] (1,4) to[L] (3,4) to[short] (6,4)
(0,3.5) to[short] (0.5,3.5) to[short] (1,3.5) to[L] (3,3.5) to[short] (6,3.5)
(0,3.5) to[short] (0.5,3) to[short] (1,3) to[L] (3,3) to[short] (6,3);
\draw
(0,3.5) to[short, *-] (0,2)
to[R] (0,0)
node[ground] {};
%I want to connect the new component here at the red dot!
\filldraw[fill=red] (0,2.5) circle (0.2);
\end{circuitikz}
\end{document}
我想将其连接到红点处。
答案1
类似这样的?它基于John Kormylo 的双极子教程:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\makeatletter
% used to process styles for to-path
\def\TikzBipolePath#1#2{\pgf@circ@bipole@path{#1}{#2}}
% restore size value for bipole definitions
\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
\makeatother
\newlength{\ResUp}
\newlength{\ResDown}
\newlength{\ResLeft}
\newlength{\ResRight}
% newcomponent
\ctikzset{bipoles/newcomponent/height/.initial=.50} % box height
\ctikzset{bipoles/newcomponent/width/.initial=.50} % box width
\pgfcircdeclarebipole{} % no extra anchors
{\ctikzvalof{bipoles/newcomponent/height}}
{newcomponent} % component name
{\ctikzvalof{bipoles/newcomponent/height}}
{\ctikzvalof{bipoles/newcomponent/width}}
{ % component symbol drawing...
\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
\pgfextracty{\ResUp}{\northeast} % coordinates
\pgfextracty{\ResDown}{\southwest}
\pgfextractx{\ResLeft}{\southwest}
\pgfextractx{\ResRight}{\northeast}
\pgfpathmoveto{\pgfpoint{\ResDown}{\ResRight}} % two arc's
\pgfpatharc{90}{-90}{\ResRight/2}
\pgfpatharc{90}{-90}{\ResRight/2}
\pgfpathmoveto{\pgfpoint{\ResUp}{\ResLeft}} % another two arc's
\pgfpatharc{90}{-90}{\ResLeft/2}
\pgfpatharc{90}{-90}{\ResLeft/2}
\pgfusepath{draw} % draw it!
}
\def\circlepath#1{\TikzBipolePath{newcomponent}{#1}}
\tikzset{newcomponent/.style = {\circuitikzbasekey, /tikz/to path=\circlepath, l=#1}}
\begin{document}
\begin{circuitikz}[scale=0.75, american inductors, american voltages, european resistors]
\draw
(0,3.5) to[short] (0.5,4) to[short] (1,4) to[L] (3,4) to[short] (6,4)
(0,3.5) to[short] (0.5,3.5) to[short] (1,3.5) to[L] (3,3.5) to[short] (6,3.5)
(0,3.5) to[short] (0.5,3) to[short] (1,3) to[L] (3,3) to[short] (6,3);
\draw
(0,3.5) to[short, *-] (0,2)
to[newcomponent] (0,0) % connect the new component
to[R] (0,-2)
node[ground] {};
\end{circuitikz}
\end{document}