사용자 정의 기호 생성: 다이아몬드/마름모 모양

사용자 정의 기호 생성: 다이아몬드/마름모 모양

나는 이 작은 기사를 읽었습니다.http://www.elfsoft2000.com/projects/bipole.pdf그리고 여기에 언급된 나머지 두 개도요. 내 논문과 프로젝트에 사용할 심볼을 만들고 싶습니다. 우리 나라에는 유럽이나 미국의 것과 다른 것이 있어서 직접 만들어 보기로 했습니다.

여기에 제시된 대로 두 개의 루마니아 회로 기호를 관리했습니다: github.com/PopAdi/circuitikz-romanian-symbols

이제 비슷한 작업을 수행해야 합니다. 원 대신 다이아몬드/마름모가 있어야 합니다. 어떻게 이를 달성할 수 있나요? 나는 그들이 여기에 제시된 것과 같이 보이길 원합니다.Circuitikz 미국식 제어 전압 표시

내 코드에는 원이 있는 코드에 대해 다음이 있습니다.

\pgfpathellipse{\pgfpointorigin}{\pgfpoint{0cm}{\ResUp}}{\pgfpoint{\ResRight}{0cm}}

나는 이것을 사용하여 사각형을 만들었습니다.

\pgfpathrectanglecorners{\southwest}{\northeast}

하지만 저는 그 사각형을 회전시키는 방법이나 다이아몬드로 바꾸는 방법을 정말로 모릅니다. 제가 이 문제를 해결하도록 도와주실 수 있나요? 감사해요!

편집: 내 코드는 다음과 같습니다.

\documentclass{article}  

\usepackage{tikz}
\usepackage{circuitikz}
\usetikzlibrary{shapes,arrows,positioning}
\usetikzlibrary{decorations.markings}

\makeatletter
\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
\def\TikzBipolePath#1#2{\pgf@circ@bipole@path{#1}{#2}}
\makeatother

\newlength{\ResUp} 
\newlength{\ResRight}

\ctikzset{bipoles/romanianCCS/height/.initial=.60}
\ctikzset{bipoles/romanianCCS/width/.initial=.60}


\pgfcircdeclarebipole{} 
    {\ctikzvalof{bipoles/romanianCCS/height}}
    {romanianCCS}
    {\ctikzvalof{bipoles/romanianCCS/height}}
    {\ctikzvalof{bipoles/romanianCCS/width}}
    {
        \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}

        \pgfextracty{\ResUp}{\northeast}
        \pgfextractx{\ResRight}{\southwest}

        %Desenam cerculetul
        \pgfpathrectanglecorners{\southwest}{\northeast}

        %First little arrow
        \pgfmoveto{\pgfpoint{1.0\ResRight}{0.0\ResUp}}
        \pgflineto{\pgfpoint{0.1\ResRight}{0.0\ResUp}} 
        \pgflineto{\pgfpoint{0.3\ResRight}{-0.25\ResUp}} 
        \pgfmoveto{\pgfpoint{0.1\ResRight}{0.0\ResUp}}   
        \pgflineto{\pgfpoint{0.3\ResRight}{0.25\ResUp}}  

        %Second arrow
        \pgfmoveto{\pgfpoint{-0.2\ResRight}{0.0\ResUp}}
        \pgflineto{\pgfpoint{-1.0\ResRight}{0.0\ResUp}}
        \pgfmoveto{\pgfpoint{0.0\ResRight}{0.25\ResUp}}
        \pgflineto{\pgfpoint{-0.2\ResRight}{0.0\ResUp}}
        \pgflineto{\pgfpoint{0.0\ResRight}{-0.25\ResUp}}

        \pgfusepath{draw}
    }

\def\romanianCCS#1{\TikzBipolePath{romanianCCS}{#1}}
\tikzset{romanianCCS/.style = {\circuitikzbasekey, /tikz/to path=\romanianCCS, l=#1}}


\begin{document}

\begin{center}
\begin{circuitikz} 
\draw (0, 0) 
      to[romanianCCS, l=${j_1 = 4A}$, *-*] (4, 0);
\end{circuitikz}
\end{center}

\end{document}

그러면 다음과 같은 결과가 나옵니다:

여기에 이미지 설명을 입력하세요

해결책을 찾았습니다! 나는 이걸했다:

\pgftransformrotate{-45}
\pgfpathrectanglecorners{\southwest}{\northeast}
\pgftransformrotate{45}

그리고 그것은 훌륭하게 작동하고 있습니다!

답변1

마름모 대신 다이아몬드를 원한다면 다음을 사용할 수 있습니다.

\documentclass{article}  

\usepackage{tikz}
\usepackage{circuitikz}
\usetikzlibrary{shapes,arrows,positioning}
\usetikzlibrary{decorations.markings}

\makeatletter
\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
\def\TikzBipolePath#1#2{\pgf@circ@bipole@path{#1}{#2}}
\makeatother

\newlength{\ResUp} 
\newlength{\ResRight}

\ctikzset{bipoles/romanianCCS/height/.initial=.60}
\ctikzset{bipoles/romanianCCS/width/.initial=.60}


\pgfcircdeclarebipole{} 
    {\ctikzvalof{bipoles/romanianCCS/height}}
    {romanianCCS}
    {\ctikzvalof{bipoles/romanianCCS/height}}
    {\ctikzvalof{bipoles/romanianCCS/width}}
    {
        \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}

        \pgfextracty{\ResUp}{\northeast}
        \pgfextractx{\ResRight}{\southwest}

        %Desenam cerculetul
        \pgfpathmoveto{\pgfpoint{-\ResRight}{0pt}}
        \pgfpathlineto{\pgfpoint{0pt}{-\ResUp}}
        \pgfpathlineto{\pgfpoint{\ResRight}{0pt}}
        \pgfpathlineto{\pgfpoint{0pt}{\ResUp}}
        \pgfpathclose

        %First little arrow
        \pgfpathmoveto{\pgfpoint{1.0\ResRight}{0.0\ResUp}}
        \pgfpathlineto{\pgfpoint{0.1\ResRight}{0.0\ResUp}} 
        \pgfpathlineto{\pgfpoint{0.3\ResRight}{-0.25\ResUp}} 
        \pgfpathmoveto{\pgfpoint{0.1\ResRight}{0.0\ResUp}}   
        \pgfpathlineto{\pgfpoint{0.3\ResRight}{0.25\ResUp}}  

        %Second arrow
        \pgfpathmoveto{\pgfpoint{-0.2\ResRight}{0.0\ResUp}}
        \pgfpathlineto{\pgfpoint{-1.0\ResRight}{0.0\ResUp}}
        \pgfpathmoveto{\pgfpoint{0.0\ResRight}{0.25\ResUp}}
        \pgfpathlineto{\pgfpoint{-0.2\ResRight}{0.0\ResUp}}
        \pgfpathlineto{\pgfpoint{0.0\ResRight}{-0.25\ResUp}}

        \pgfusepath{draw}
    }

\def\romanianCCS#1{\TikzBipolePath{romanianCCS}{#1}}
\tikzset{romanianCCS/.style = {\circuitikzbasekey, /tikz/to path=\romanianCCS, l=#1}}


\begin{document}

\begin{center}
\begin{circuitikz} 
\draw (0, 0) 
      to[romanianCCS, l=${j_1 = 4A}$, *-*] (4, 0);
\end{circuitikz}
\end{center}

\end{document}

데모

관련 정보