diff options
Diffstat (limited to 'graphics/circuit_macros/examples/dpv/cbresistorDPV.m4')
-rw-r--r-- | graphics/circuit_macros/examples/dpv/cbresistorDPV.m4 | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4 b/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4 new file mode 100644 index 0000000000..c03122377c --- /dev/null +++ b/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4 @@ -0,0 +1,82 @@ +.PS +# cbresistor.m4 +# https://tex.stackexchange.com/questions/709339/create-command-with-decoration-in-tikz +# https://www.google.com/search?client=firefox-b-d&q=resistor+color+code +cct_init +divert(-1) + + `cbresistor(linespec, keys) + keys: + lgth=expr; wdth=expr; + body=body attributes, e.g. shaded "green" + type=A|B; pinched body shape + colors=color:color:...; + Up to 6 colors, a color may be nul ' +define(`cbresistor',`eleminit_(`$1') + pushkeys_(`$2',`lgth:dimen_/2; wdth:dimen_/5; body::N; colors::N; type::N')dnl +{line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2; M4cbW: Here + ifelse(m4type,B, + `[L:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20) + C:rotbox(m4lgth*17/23, m4wdth*9/10, shaded "darkgray" m4body) \ + with .W at L.E + R:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20) \ + with .W at C.E] with .L.W at Here; move to last [].R.E', + `rotbox(m4lgth, m4wdth, shaded "darkgray" m4body) with .W at Here') + ifelse(m4colors,,,`define(`m4bw',(m4lgth/23))dnl + definergbcolor(silver,0.75,0.75,0.75) + definergbcolor(gold,1,215/255,0) + stacksplit_(`cbrstack',m4colors,:)stackreverse_(`cbrstack')dnl + stackargs_(`m4pos',22,17,12,7,5,2)dnl + stackdo_(`cbrstack',`ifelse(cbrstack,nul,, + `{ move to M4cbW+vec_(m4pos*m4bw-m4bw/2,0) + define(`m4ctr',ifelse(m4type,B,eval((m4pos>3)*(m4pos<20)),0))dnl + line m4colorfix(outlined,cbrstack) thick m4bw*1.8/(1bp__) \ + from rvec_(0,-ifelse(m4ctr,1,0.9*)m4wdth/2) \ + to rvec_(0, ifelse(m4ctr,1,0.9*)m4wdth/2) + ifelse(ifelse(cbrstack,silver,1,cbrstack,gold,1),1, + `line outlined rgbstring(0.8,0.8,0.8) thick last line.thick \ + from 0.2 along_(last line) to 0.4 along_(last line) + line outlined "white" thick last line.thick \ + from 0.25 along_(2nd last line) to 0.3 along_(2nd last line)') + }') + popdef(`m4pos')') stackdo_(`m4pos')') + line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2} + popdef(`m4lgth',`m4wdth',`m4body',`m4colors',`m4type')dnl + line to rvec_(rp_len,0) invis ') + +divert(0)dnl + +linewid = 3/2*linewid +ifsvg(definergbcolor(Dandelion,0.95,0.65,0.2)) +ifsvg(definergbcolor(Peach,0.76,0.5,0.1)) + +define(`dpr', + `{ cbresistor(,type=B; + body=m4colorfix(shaded,Dandelion) m4colorfix(outlined,Peach); + colors=`$2') } + {iflatex(`sprintf("\SI{%g}{\ohm}",`$1')')ifsvg("``$1'svg_Omega'") \ + at last line.end+(10bp__,-5bp__) rjust} + move right_ moveht*5/6; down_ ') + + define(`elen_',(3/2*linewid)) + define(`dimen_',(5/4*linewid)) +[] +[ down_ + foreach_(`pair',`dpr(patsubst(pair,-,`,'):nul:black:silver)', + 10-brown:black, + 12-brown:red, + 15-brown:green, + 18-brown:gray, + 22-red:red, + 27-red:Violet, + 33-orange:orange, + 39-orange:white, + 47-yellow:Violet, + 56-green:blue, + 68-blue:gray, + 82-gray:red) + dpr(100,brown:black:nul:brown:gold) + {"iflatex(\SI{5}{\percent},5 %)" at last line.end+(10bp__,-15bp__) rjust} + ] with .nw at last [].ne+(30bp__,0) + +.PE |