emath BBS

新規発言一覧最新記事過去一覧検索HOME

No.7467  Re[2]:emCircuitのプリントアウト
発言者: apm
発言日: 2008 08/27 17:33
発言元: ntsitm389066.sitm.nt.ftth.ppp.infoweb.ne.jp
 emCircuit.sty ならば有りました。

% emCircuit.sty by tDB(emath@nifty.ne.jp)
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{emCircuit}[2007/04/22 v 0.02゚逅餐]%
%
  \DeclareOption{notMy}{\def\not@My{}}%
  \DeclareOption{dviout}{\def\em@grdrv{dviout}}%
  \DeclareOption{dvips}{\def\em@grdrv{dvips}}%
  \DeclareOption{dvipdfm}{\def\em@grdrv{dvipdfm}}%
  \DeclareOption{dvipdfmx}{\def\em@grdrv{dvipdfmx}}%
  \DeclareOption{EMdvipsk}{\def\em@dvipsk{}}%
  \DeclareOption{EMdvipdfm}{\def\em@dvipdfm{}}%
  \DeclareOption{EMdvipdfmx}{\def\em@dvipdfmx{}}%
  \DeclareOption{papersize}{\papersizetrue}
  \ProcessOptions\relax
%
\RequirePackage{emathPxy}%
\RequirePackage{emathPp}%
\RequirePackage{multido}%
%
%\edef\emKairo@ul{.5mm}%
\edef\emC@labelopt{empty}%
\newdimen\cunitlength\cunitlength=.5mm\relax
%
\define@key{emCircuit}{kosuu}{\edef\ko@suu{#1}}%
\define@key{emCircuit}{type}{\edef\parts@type{#1}}%
\define@key{emCircuit}{height}{\setlength{\@tempdima}{#1}\edef\parts@H{\the\@tempdima}}%
\define@key{emCircuit}{width}{\setlength{\@tempdima}{#1}\edef\parts@W{\the\@tempdima}}%
\define@key{emCircuit}{pos}{\def\@pos{#1}}%
\define@key{emCircuit}{label}{\def\emC@label{#1}}%
\define@key{emCircuit}{currentlength}{\edef\emcurrent@length{#1}}%
\define@key{emCircuit}{currentheight}{\edef\emcurrent@height{#1}}%
\define@key{emCircuit}{labeloption}{\EMxdefappend\emC@labelopt{,#1}}%
\define@key{emCircuit}{partsoption}{\EMedef\parts@option{#1}}%
\define@key{emCircuit}{yazirusi}[a]{\def\yazirusi@opt{#1}}%
\define@key{emP}{cul}{\cunitlength=#1\relax}%
%
\def\emCtype#1{%
%
    \def\emCtype@sep##1<##2>\@nil{%
    \edef\parts@type{##1}\edef\parts@option{##2}%
}%
%
  \Strchr{#1}{<}\emCtype@tmp
  \ifnum\emCtype@tmp>\z@
    \emCtype@sep#1\@nil%\parts@type\parts@option
  \else
    \EMedef\parts@type{#1}%
    \edef\parts@option{\empty}%
  \fi
  \ifthenelse{\equal{\parts@type}{coil}}{\edef\emC@type{0}}{%
    \ifthenelse{\equal{\parts@type}{resistor}}{\edef\emC@type{1}}{%
      \ifthenelse{\equal{\parts@type}{condenser}}{\edef\emC@type{2}}{%
        \ifthenelse{\equal{\parts@type}{battery}}{\edef\emC@type{3}}{%
          \ifthenelse{\equal{\parts@type}{switch}}{\edef\emC@type{4}}{%
            \ifthenelse{\equal{\parts@type}{meter}}{\edef\emC@type{5}}{%
              \ifthenelse{\equal{\parts@type}{current}}{\edef\emC@type{6}}{%
                \ifthenelse{\equal{\parts@type}{bresistor}}{\edef\emC@type{7}}{%
                  \ifthenelse{\equal{\parts@type}{diode}}{\edef\emC@type{8}}{%
                    \ifthenelse{\equal{\parts@type}{transistor}}{\edef\emC@type{9}}{%
                      \ifthenelse{\equal{\parts@type}{earphone}}{\edef\emC@type{10}}{%
                        \ifthenelse{\equal{\parts@type}{earth}}{\edef\emC@type{11}}{%
                          \errmessage{パ・踉札弔量裲ケ前:\parts@type は未定義です}}%
                      }%
                    }%
                  }%
                }%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
}%
\def\emCircuit{%
  \def\emresistor{\@ifnextchar<{\@emresistor}{\@emresistor<\empty>}}%
  \def\@emresistor<##1>{{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \edef\ko@suu{4}%
    \edef\parts@type{\empty}%
    \edef\parts@H{\empty}%
    \edef\parts@W{\empty}%
    \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
    \ifx\empty\parts@H\else
      \setlength{\@tempdima}{\parts@H}%
      \setlength{\yunitlength}{0.25\@tempdima}%
    \fi
    \IMul{4}\ko@suu\resistor@e
    \IMul{2}\ko@suu\resistor@c
    \ifx\empty\parts@W\else
      \calcval{1/(4*\ko@suu)}\emr@tmp
      \setlength{\@tempdima}{\parts@W}%
      \setlength{\xunitlength}{\emr@tmp\@tempdima}%
    \fi
\begin{picture}(0,0)\relax
    \Nuritubusi[0]{(-\resistor@c,-4)(\resistor@c,-4)(\resistor@c,4)(-\resistor@c,4)}%
    \multido{\ix=-\resistor@c+4}{\ko@suu}{\Put{(\ix,0)}{\Drawlines{(0,0)(1,4)(3,-4)(4,0)}}}%
\getOrgP{(0,4)}\resT
    \ifx\empty\parts@type
    \else
      \Hamidasisenbun<yazirusi=a>{(-\resistor@c,-5)}{(\resistor@c,5)}{\cunitlength}{\cunitlength}%
    \fi
\end{picture}\relax
  }}%
  \def\embresistor{\@ifnextchar<{\@embresistor}{\@embresistor<\empty>}}%
  \def\@embresistor<##1>{{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \edef\ko@suu{4}%
    \edef\parts@type{\empty}%
    \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
    \IMul{2}\ko@suu\resistor@c
\begin{picture}(0,0)\relax
    \Nuritubusi[0]{(-\resistor@c,-3)(\resistor@c,-3)(\resistor@c,3)(-\resistor@c,3)}%
    \Takakkei{(-\resistor@c,-3)(\resistor@c,-3)(\resistor@c,3)(-\resistor@c,3)}%
\getOrgP{(0,3)}\resT
    \ifx\empty\parts@type
    \else
      \Hamidasisenbun<yazirusi=a>{(-\resistor@c,-5)}{(\resistor@c,5)}{2\cunitlength}{2\cunitlength}%
    \fi
\end{picture}\relax
  }}%
%
\def\emcoil{\@ifnextchar<{\@emcoil}{\@emcoil<\empty>}}%
\def\@emcoil<##1>{{%
  \setlength{\unitlength}{\cunitlength}%
  \setlength{\xunitlength}{\cunitlength}%
  \setlength{\yunitlength}{\cunitlength}%
  \sironukifalse
  \edef\ko@suu{4}%
  \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
  \IMul{4}\ko@suu\coil@w
  \IMul{2}\ko@suu\coil@hw
  \Nuritubusi[0]{(-\coil@hw,-4)(\coil@hw,-4)(\coil@hw,4)(-\coil@hw,4)}%
  \EMbane{(-\coil@hw,0)}{(\coil@hw,0)}{4}{\ko@suu}%
}}%
%
\def\embattery{\@ifstar{\embattery@}{\@embattery}}%
\def\@embattery{\@ifnextchar<{\@@embattery}{\@@embattery<\empty>}}%
\def\@@embattery<##1>{{%
  \setlength{\unitlength}{\cunitlength}%
  \setlength{\xunitlength}{\cunitlength}%
  \setlength{\yunitlength}{\cunitlength}%
  \edef\ko@suu{1}%
\typeout{embattery:arg1=##1}%
  \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
  \Mul\ko@suu{5}\emb@w%% 2n*(2.5)
  \Sub\emb@w{2.5}\emb@w% (2n-1)*(2.5)
  \Div\emb@w{2}\emb@hw
    \Nuritubusi[0]{(-\emb@hw,-4)(\emb@hw,-4)(\emb@hw,4)(-\emb@hw,4)}%
    \Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i <\ko@suu}{\Addself\emb@x{2.5}}\do{%
      \Addself\emb@x{2.5}%
      \Incr\emb@i
      \Drawline{(\emb@x,-4)(\emb@x,4)}\relax
    }%
    \allinethickness{1pt}\relax
    \Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i<\ko@suu}{\Addself\emb@x{5}}\do{%
      \Incr\emb@i
      \Drawline{(\emb@x,-2)(\emb@x,2)}\relax
    }%
}}%
\def\embattery@{\@ifnextchar<{\embattery@@}{\embattery@@<\empty>}}%
\def\embattery@@<##1>{{%
  \setlength{\unitlength}{\cunitlength}%
  \setlength{\xunitlength}{\cunitlength}%
  \setlength{\yunitlength}{\cunitlength}%
  \edef\ko@suu{1}%
  \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
  \Mul\ko@suu{5}\emb@w%% 2n*(2.5)
  \Sub\emb@w{2.5}\emb@w% (2n-1)*(2.5)
  \Div\emb@w{2}\emb@hw
    \Nuritubusi[0]{(-\emb@hw,-4)(\emb@hw,-4)(\emb@hw,4)(-\emb@hw,4)}%
    \Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i<\ko@suu}{\Addself\emb@x{5}}\do{%
      \Incr\emb@i
      \Drawline{(\emb@x,-4)(\emb@x,4)}\relax
    }%
    \allinethickness{1pt}\relax
    \Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i <\ko@suu}{\Addself\emb@x{2.5}}\do{%
      \Addself\emb@x{2.5}%
      \Incr\emb@i
      \Drawline{(\emb@x,-2)(\emb@x,2)}\relax
    }%
}}%
%
\def\emcondenser{\@ifnextchar<{\@emcondenser}{\@emcondenser<\empty>}}%
\def\@emcondenser<##1>{{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \edef\parts@type{\empty}%
    \edef\parts@H{\empty}%
    \edef\parts@W{\empty}%
    \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\begin{picture}(0,0)%
    \Nuritubusi[0]{(-1.25,-4)(1.25,-4)(1.25,4)(-1.25,4)}%
    \Drawline{(-1.25,-4)(-1.25,4)}%
    \Drawline{(1.25,-4)(1.25,4)}%
    \ifx\empty\parts@type
    \else
      \Hamidasisenbun<yazirusi=a>{(-4,-4)}{(4,4)}{\cunitlength}{\cunitlength}%
    \fi
\end{picture}
}}%
%
\def\emdiode{{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \Nuritubusi[0]{(-3,3)(-3,-3)(3,-3)(3,3)}
    \Nuritubusi[1]{(-3,3)(-3,-3)(3,0)}
    {\thicklines\Drawline{(3,-3)(3,3)}}%
}}%
%
\def\emmeter{{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \Nuritubusi[0]{(-6,-6)(6,-6)(6,6)(-6,6)}%
    \En\O{6}\relax
}}%
%
\def\emtransistor{\@ifnextchar<{\@emtransistor}{\@emtransistor<\empty>}}%
\def\@emtransistor<##1>{{%
    \edef\parts@type{pnp}%
    \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
\begin{picture}(0,0)\relax
    \edef\emtr@r{12}%
    \tenretu*{emtr@C(0,-6);emtr@EO(-3,-10);emtr@CO(3,-10);emtr@BO(0,-10);emtrB@(0,-18)}%
    \Candk\emtr@C\emtr@r{(0,0)}{0}\emtrE@\emtrC@
    \En*[0]\emtr@C\emtr@r
    \En\emtr@C\emtr@r
    {\allinethickness{1.2pt}\hamidasisenbun\emtr@EO\emtr@CO{.5}{.5}}%
    \ifthenelse{\equal\parts@type{pnp}}{%
      \kansan{.6pt}{\cunitlength}\emtr@tmp
      \Addvec\emtr@EO{(0,\emtr@tmp)}\emtr@EOO
      \Drawline<yazirusi=r>{\emtr@EOO\emtrE@}%
      \Drawline{\emtr@CO\emtrC@}%
      \getOrgP{\emtrC@}\emtrC
      \getOrgP{\emtrE@}\emtrE
    }{%
      \Drawline{\emtr@EO\emtrE@}%
      \Drawline<yazirusi=a>{\emtr@CO\emtrC@}%
      \getOrgP{\emtrC@}\emtrE
      \getOrgP{\emtrE@}\emtrC
    }%
    \Drawline{\emtr@BO\emtrB@}%
    \getOrgP{\emtrB@}\emtrB
\end{picture}\ignorespaces
}}%
%
\def\emearphone{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \begin{picture}(0,0)\relax
\Nuritubusi[0]{(-3,-6)(-3,6)(3,6)(3,-6)}%
\Takakkei{(-2,-6)(-2,6)(2,6)(2,-6)}%
\Drawlines{(-3,-6)(-3,6);(3,-6)(3,6)}%
{\thicklines
\En{(0,-12)}{3}
\Takakkei{(-3,-7)(-3,-9)(3,-9)(3,-7)}%
}%
\Nuritubusi[0]{(-3,-7)(-3,-9)(3,-9)(3,-7)}%
\En*[0]{(0,-12)}{3}
    \end{picture}
}%
%
\def\emearth{%
    \setlength{\unitlength}{\cunitlength}%
    \setlength{\xunitlength}{\cunitlength}%
    \setlength{\yunitlength}{\cunitlength}%
    \Drawline{(0,-4)(0,4)}%
    \Nuritubusi*[-45]<syanuriKankaku=.5mm>{(0,-4)(0,4)(4,4)(4,-4)}%
}%
%
\def\emcurrent@length{6mm}%
\def\emcurrentlength##1{\edef\emcurrent@length{##1}}%
\def\emcurrent{\@ifnextchar<{\@emcurrent}{\@emcurrent<\empty>}}%
%\def\@emcurrent<##1>{\@ifnextchar[{\@@emcurrent<##1>}{\@@emcurrent<##1>[\empty]}}%
%\def\@@emcurrent<##1>[##2]{{%
\def\@emcurrent<##1>{{%
  \edef\current@str{}%
  \edef\yazirusi@opt{a}%
  \setlength{\unitlength}{\cunitlength}%
  \setlength{\xunitlength}{\cunitlength}%
  \setlength{\yunitlength}{\cunitlength}%
  \@tempdima=6\cunitlength
  \edef\emcurrent@height{\the\@tempdima}%
  \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
  \@tempdima=\emcurrent@length
  \ukansan{.5\@tempdima}\emcurrent@hw
  \edef\yazirusi@opt@{\yazirusi@opt}%
  \HenKo<henkotype=parallel,yazirusi=\yazirusi@opt@,henkoH=\emcurrent@height>{(-\emcurrent@hw,0)}{(\emcurrent@hw,0)}{}%
%  \begin{picture}(0,0)\relax
%    \edef\yazirusi@opt@{\yazirusi@opt}%
%    \HenKo<henkotype=parallel,yazirusi=\yazirusi@opt@,henkoH=\emcurrent@height>{(-\emcurrent@hw,0)}{(\emcurrent@hw,0)}{}%
%  \end{picture}%
}}%
\def\emswitch{{%
  \setlength{\unitlength}{\cunitlength}%
  \setlength{\xunitlength}{\cunitlength}%
  \setlength{\yunitlength}{\cunitlength}%
% \rtenretu*{emswitchA(3,-120);emswitchB(3,-60)}%
  \begin{picture}(0,0)\relax
    \Nuritubusi[0]{(-6,-1)(6,-1)(6,5)(-6,5)}%
    \Drawline{(-6,0)(6,5)}%
    \siromaru{(-6,0);(6,0)}%
%   \Put{(6,5)}{\Takakkei{\O\emswitchA\emswitchB}}%
  \end{picture}%
}}%
%
\def\getOrgP##1##2{%
  \Kaiten{(0,0)}{##1}\Putparts@arg\getorg@tmp
    \vecXY{\getorg@tmp}\getorgP@x\getorgP@y
      \setlength{\@tempdima}{\getorgP@x\xunitlength}\kansan\@tempdima\org@ul\getorgP@x@
      \setlength{\@tempdima}{\getorgP@y\yunitlength}\kansan\@tempdima\org@ul\getorgP@y@
      \Addvec{\Putparts@P}{(\getorgP@x@,\getorgP@y@)}\getorg@P\xdef##2{\getorg@P}}%
%
\def\Putparts{\def\Putparts@r{1}\@ifstar{\Putparts@}{\@Putparts}}%
\def\Putparts@{\def\Putparts@r{0}\@Putparts}%
\def\@Putparts{\@ifnextchar<{\@@Putparts}{\@@Putparts<\empty>}}%
\def\@@Putparts<##1>##2##3##4{{%
%   ##1 : key = val
%         pos
%   ##2 : パ・踉札ト
%   ##3 : 始点
%   ##4 : 終点
  \edef\org@ul{\the\unitlength}%
  \emCtype{##2}%
  \ifnum\emC@type=11
    \edef\@pos{1}%
    \Drawline{##3##4}%
  \else
    \edef\@pos{.5}%
  \fi
  \edef\emC@labelopt{\empty}%
%  \edef\parts@option{\empty}%
  \ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
  \Sub{1}{\@pos}{\@pos@}
  \Subvec{##4}{##3}\Putparts@v
  \Argvec\Putparts@v\Putparts@arg
  \Bunten{##3}{##4}{\@pos}{\@pos@}\Putparts@P
  \ifnum\Putparts@r>\z@
    \ifx\empty\parts@option
      \Put\Putparts@P(0,0)[c]{\rotatebox{\Putparts@arg}{\csname em\parts@type\endcsname}}%
    \else
      \def\parts@cmd{\csname em\parts@type\endcsname}%
      \edef\parts@opt{<\parts@option>}%
      \Put\Putparts@P(0,0)[c]{\rotatebox{\Putparts@arg}{\expandafter\parts@cmd\parts@opt}}%
    \fi
  \else
    \Put\Putparts@P(0,0)[c]{\csname em\parts@type\endcsname}%
  \fi
  \@ifundefined{emC@label}{}{%
    \ifcase\emC@type% emCtype=0 (coil)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=1 (registor)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=2 (condenser)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=3 (battery)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=4 (switch)
      \def\emC@labelopt@{henkoH=-2.5\cunitlength-.6667em,putoption={(0,0)[c]}}%
    \or% emCtype=5 (meter)
      \def\emC@labelopt@{henkoH=0pt,putoption={(0,0)[c]}}%
    \or% emCtype=6 (current)
      \def\emC@labelopt@{henkoH=6\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=7 (bresistor)
      \def\emC@labelopt@{henkoH=3\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=8 (diode)
      \def\emC@labelopt@{henkoH=2\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=9 (transistor)
      \def\emC@labelopt@{henkoH=2\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=10 (earphone)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \or% emCtype=11 (earth)
      \def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
    \fi
    \EMedef\emC@labelopt@@{sironuki=false,henkotype=parallel,putpos=\@pos,\emC@labelopt@}%
    \ifx\empty\emC@labelopt\else\EMedefappend\emC@labelopt@@{,\emC@labelopt}\fi
    \EMedef\emC@labeloption{[0]<\emC@labelopt@@>}
    \expandafter\HenKo\emC@labeloption{##3}{##4}{\emC@label}%
  }%
}}%
%
\begin{zahyou*}}
%
\def\endemCircuit{\end{zahyou*}}
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
v 0.00゚逅餐 2007/03/24
v 0.01゚逅餐 2007/03/25 パ・踉札弔ヒ transistor を追加
          \Putparts で指定した部品が存在しないときは,エラ・踉擦箸垢襦」
          パ・踉札弔鯢漸茲垢覿表蟶舵厳呂砲「韻訶世 emCircuit座標系に変換する\getOrgP
v 0.02゚逅餐 2007/04/22 パ・踉札弔ヒ earphone, eartch を追加

▼関連発言

7462:emCircuitのプリントアウト [TM] 08/26 22:31
 └7463:Re:emCircuitのプリントアウト [tDB] 08/27 13:03
  └7467:Re[2]:emCircuitのプリントアウト [apm] 08/27 17:33
   └7468:Re[3]:emCircuitのプリントアウト [石原 守] 08/27 17:54
    └7469:Re[4]:emCircuitのプリントアウト [tDB] 08/27 19:39
     └7470:Re[5]:emCircuitのプリントアウト [TM] 08/27 22:37<-last

Pass 保存


CGIROOM