Neue Schalter in Circuitikz (NO, NC)

Neue Schalter in Circuitikz (NO, NC)

Ich brauche andere Schalter als die in Circuitikz. Ich habe sie bereits mit ein paar Linien gezeichnet, möchte sie aber wie die anderen Standardkomponenten in Circuitikz verwenden. Ich habe nur einige Tutorials gefunden, die ein paar Linien zu einer vorhandenen Komponente wie einem Widerstand hinzufügen, aber ich habe keine Ahnung, wie man ein komplett neues Teil hinzufügt. Vielleicht kann das jemand von euch?

Hier ist mein funktionierendes Minimalbeispiel:

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage[european]{circuitikz}

\begin{document}

\begin{circuitikz}

% Normally Open Switch
\draw[thick] (0,0) --++(0,0.5)--++(-0.4,1) coordinate (sw)
($(sw)+(0.4,0)$) --++(0,0.5);

% Normally Closed Switch
\draw[thick] (3,0) --++(0,0.5)--++(0.4,1) coordinate (sw)
($(sw)+(-0.4,-0.4)$) --++(0,0.9) 
($(sw)+(-0.4,-0.4)$) --++(0.4,0);

\end{circuitikz}

\end{document}

Das Ergebnis:

So sieht es aus

Das gleiche Ergebnis möchte ich hiermit erzielen:

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage[european]{circuitikz}

\begin{document}

\begin{circuitikz}

% Normally Open Switch
\draw (0,0) to[nos] (0,2);

% Normally Closed Switch
\draw (3,0) to[ncs] (3,2);

\end{circuitikz}

\end{document}

Danke schön!

Antwort1

Ich habe für Offner und Schliesser dieselben Höhen-, Breiten- und Tiefenparameter verwendet.

\documentclass[border=5pt]{standalone}

%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage[ngerman]{babel}

\usepackage[european]{circuitikz}

\makeatletter
\ctikzset{bipoles/offner/height/.initial=.35}
\ctikzset{bipoles/offner/width/.initial=.5}
\ctikzset{bipoles/offner/depth/.initial=.1}

\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/offner/depth}}{nos}{\ctikzvalof{bipoles/offner/height}}{\ctikzvalof{bipoles/offner/width}}{
            \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
            \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
            \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
            \pgfusepath{draw}
}
\def\nospath#1{\pgf@circ@bipole@path{nos}{#1}}
\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\nospath, l=#1}}

\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/offner/height}}{ncs}{\ctikzvalof{bipoles/offner/depth}}{\ctikzvalof{bipoles/offner/width}}{
            \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
            \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
            \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@down}}
            \pgfusepath{draw}
      \pgfsetlinewidth{\pgfstartlinewidth}
      \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
      \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
      \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@down}}
      \pgfusepath{draw}
}
\def\ncspath#1{\pgf@circ@bipole@path{ncs}{#1}}
\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\ncspath, l=#1}}
\makeatother

\begin{document}

\begin{circuitikz}

% Normally Open Switch
\draw (0,0) to[nos] (0,2);

% Normally Closed Switch
\draw (3,0) to[ncs] (3,2);

\end{circuitikz}

\end{document}

Demo

verwandte Informationen