PSTricks:发电厂和能源传输示意图不可扩展

PSTricks:发电厂和能源传输示意图不可扩展

请考虑以下由 Thomas Söll 在 Manuel Luque 的PSTricks 博客

% latex filename.tex
% dvips filename.dvi
% ps2pdf filename.ps

\documentclass[
  a4paper,
  landscape,
  12pt
]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[
  hmargin=2.4cm,
  vmargin=3cm
]{geometry}
\usepackage{
  pst-grad,
  pst-coil,
  pstricks-add
}

\psset{unit=1.3}

\pagestyle{empty}

%----------------------------------------------------------
%----- FlammenKontinuierlicher Farbverlauf bei Kurven -----
%----------------------------------------------------------
\makeatletter
\pst@addfams{pst-HSB}
\define@key[psset]{pst-HSB}{HueBegin}{%
  \def\PstParametricplotHSB@HueBegin{#1}}
\define@key[psset]{pst-HSB}{HueEnd}{%
  \def\PstParametricplotHSB@HueEnd{#1}}
\define@boolkey[psset]{pst-HSB}[Pst@]{HSB}[true]{}
\psset[pst-HSB]{HueBegin=0,HueEnd=1,HSB=true}
\psset{dimen=outer}

\def\parametricplotHSB{\pst@object{parametricplotHSB}}
\def\parametricplotHSB@i#1#2#3{{%
  \begin@ClosedObj
  \addto@pscode{%
    /t #1 def
    /dt #2 t sub \psk@plotpoints\space div def
    /t t dt sub def
    /Counter 0 def
    1 setlinejoin
    \psk@plotpoints {
      /t t dt add def
      /Counter Counter 1 add def
      #3
      \pst@number\psyunit mul exch
      \pst@number\psxunit mul exch
      1 Counter eq { moveto currentpoint /OldY ED /OldX ED }
        {\ifPst@HSB
          /PointY exch def
          /PointX exch def
          Counter \psk@plotpoints\space div
          \PstParametricplotHSB@HueEnd\space
          \PstParametricplotHSB@HueBegin\space sub mul
          \PstParametricplotHSB@HueBegin\space add
          1 1 sethsbcolor
          OldX OldY PointX PointY lineto lineto
          stroke
          PointX PointY moveto
      /OldX PointX def /OldY PointY def
        \else lineto \fi } ifelse
     } repeat }
   \end@ClosedObj}
  \ignorespaces}
\makeatother

%-------------------------------------------------------------------------------

\begin{document}

\begin{figure}[htbp]
\newhsbcolor{ColorC}{0.5 0.8 0}
\newhsbcolor{ColorD}{0.5 0.5 0.5}
\centering
\begin{pspicture}(-4,-5.8)(12,3.5)
\pspolygon[linewidth=3pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt,fillstyle=gradient,gradmidpoint=0,gradangle=10,gradbegin=orange!80,gradend=white](-1.8,3.45)(-0.9,2)(-0.9,-1.6)(0.9,-1.6)(0.9,2.4)(-0.2,2.4)(-0.88,3.45)(-1.8,3.45)% Brennkammer mit F{\'u}llung
\pspolygon[linewidth=3pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt](-1.8,3.45)(-0.9,2)(-0.9,-1.6)(0.9,-1.6)(0.9,2.4)(-0.2,2.4)(-0.88,3.45)(-1.8,3.45)% Brennkammer nur Rahmen
\pspolygon[linewidth=4pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt](-1.85,-2.65)(8.75,-2.65)(8.75,3.45)(-1.85,3.45)% Rahmen des Kraftwerks
\pspolygon[fillstyle=solid,fillcolor=black, opacity=1,linewidth=0.8pt](-1.35,-0.92)(-1.25,-0.85)(-1,-0.85)(-1,-0.95)(-0.85,-0.95)(-0.85,-1.15)(-1,-1.15)(-1,-1.45)(-1.25,-1.45)(-1.35,-1.38)% Brenner
%-------------------
%----- Flammen -----
%-------------------
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
  \pscurve(-0.87,-1)(-0.4,-0.75)(-0.55,-0.4)(-0.4,-0.13)
  \pscurve(-0.45,-0.33)(-0.2,-0.53)
  \psline(-0.2,-0.53)(-0.2,-0.97)
  \pscurve(-0.2,-0.97)(-0.6,-1.05)(-0.87,-1.01)
}
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
  \pscurve(-0.2,-0.53)(-0.17,-0.35)(0.1,-0.1)
  \pscurve(0.1,-0.1)(-0.01,-0.4)(0,-0.6)
  \pscurve(0,-0.6)(0.04,-0.52)(0.16,-0.46)
  \pscurve(0.16,-0.46)(0.1,-0.6)(0.17,-0.8)(0,-0.98)(-0.2,-0.97)
  \psline(-0.2,-0.97)(-0.2,-0.53)
}
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
  \pscurve(0.1,-0.7)(0.2,-0.6)(0.2,-0.36)(0.4,-0.1)
  \pscurve(0.4,-0.1)(0.31,-0.29)(0.33,-0.4)(0.39,-0.6)(0.3,-0.8)(0.1,-0.86)
  \psline(0.1,-0.86)(0.1,-0.7)
}
\psframe[linecolor=black,fillstyle=solid,fillcolor=black,opacity=1,linewidth=0.8pt](-1,-1.15)(-0.81,-0.95)
%-----------------------
%----- Kondensator -----
%-----------------------
\pscustom[linestyle=none,fillstyle=gradient,gradmidpoint=0,gradangle=0,gradbegin=white,gradend=magenta!80]{%
  \psarcn[liftpen=0](6.8,-0.2){2}{190}{165}
  \psline(!5.162 2 15 sin mul 0.2 sub)(5.162,0.92)(5.338,0.92)(!5.338 2 15 sin mul 0.2 sub)%
    (!6.312 2 15 sin mul 0.2 sub)(6.312,0.92)(6.488,0.92)(!6.488 2 15 sin mul 0.2 sub)
  \psarcn[liftpen=0](4.8,-0.2){2}{15}{-10}
  \closepath
}
\pscustom[fillstyle=gradient,linestyle=none,gradmidpoint=0,gradangle=0,gradbegin=blue!70,gradend=cyan!60]{%
  \psarcn[liftpen=0](6.8,-0.2){2}{195}{190}
  \psarcn[liftpen=0](4.8,-0.2){2}{-10}{-15}
  \closepath
}
\pscustom[linewidth=1.0pt]{%
  \psarcn[liftpen=0](6.8,-0.2){2}{195}{165}
  \psline(!5.162 2 15 sin mul 0.2 sub)(5.162,0.92)(5.338,0.92)(!5.338 2 15 sin mul 0.2 sub)%
    (!6.312 2 15 sin mul 0.2 sub)(6.312,0.92)(6.488,0.92)(!6.488 2 15 sin mul 0.2 sub)
  \psarcn[liftpen=0](4.8,-0.2){2}{15}{-15}
  \closepath
}
%------------------------
%----- Wasserwendel -----
%------------------------
\psset{coilheight=0.495,coilwidth=1.3cm,coilaspect=52}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{250}{720}}
\rput(0.235,0.4){%
  \parametricplotHSB[plotpoints=500,linewidth=1.73mm,HueBegin=0.6,HueEnd=0.84]{270}{90}{0.88 t cos mul 0.365 t sin mul}
}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{600}{1200}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{470}{1200}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{850}{1400}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{850}{1400}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{1260}{1550}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{1220}{1550}}
%------------------------
\psline[linewidth=1.47mm,linecolor=magenta,linearc=0.15,bordercolor=black,border=1.1pt](0.2,1.943)(4.1,1.943)(4.1,1.6)
\psline[linewidth=1.47mm,linecolor=magenta,linearc=0.15,bordercolor=black,border=1.1pt](4.65,1.6)(4.65,1.943)(5.75,1.943)(5.75,1.6)
\psline[arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt]{->}(5.25,0.5)(5.25,0.1)
\psline[arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt]{->}(6.4,0.5)(6.4,0.1)
\pscircle[linewidth=0.8pt,fillstyle=solid,fillcolor=blue!20!green!70](8.3,-0.4){0.17}
\psline[linewidth=1.3mm,linecolor=blue!20!green!70,linearc=0.15,bordercolor=black,border=1.1pt]%
  (8.18,-0.4)(5.1,-0.4)(5.1,-0.1)(9.4,-0.1)(9.4,-1.2)
\psline[linewidth=1.3mm,linecolor=blue!20!green!70,linearc=0.15,bordercolor=black,border=1.1pt]%
  (8.423,-0.4)(9.1,-0.4)(9.1,-1.2)
%-----------------
%----- Fluss -----
%-----------------
\psset{linecolor=blue}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.05 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.15 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.25 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.35 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.45 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.55 sub}
%-------------------
%----- Turbine -----
%-------------------
\psset{linecolor=black}
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!20!green!70,gradend=green!10]%
  (3.9,0.9)(6.6,1.6)
\psline(4.9,0.9)(4.9,1.6)
%-----------------------------------
%----- Achse und Turbinenr{\'u}der -----
%-----------------------------------
\psframe[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.4,gradangle=0,gradbegin=ColorC,gradend=ColorD](3.7,1.2)(8.47,1.3)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](4,1.35)(4.8,1.5)(4.8,1.0)(4,1.15)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](4,1.35)(4.8,1.5)(4.8,1.0)(4,1.15)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](5.0,1.5)(5.7,1.35)(5.70,1.15)(5.0,1.0)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](5.0,1.5)(5.7,1.35)(5.70,1.15)(5.0,1.0)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](5.8,1.35)(6.5,1.5)(6.5,1.0)(5.8,1.15)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](5.8,1.35)(6.5,1.5)(6.5,1.0)(5.8,1.15)
%-----------------------------------
\psframe[fillstyle=solid,linecolor=black,fillcolor=blue!20!green!70,dimen=inner,opacity=0.6](3.8,1.05)(3.9,1.45)
\psframe[fillstyle=solid,linecolor=black,fillcolor=blue!20!green!70,dimen=inner,opacity=0.6](6.6,1.1)(6.7,1.4)
%---------------------------------
%----- Generator und Erreger -----
%---------------------------------
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!60!green!70,gradend=green!10,dimen=inner](6.95,1.1)(7,1.4)
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!60!green!70,gradend=green!10](7,0.9)(8,1.6)
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=yellow!90,gradend=yellow!20,dimen=inner](8,1.05)(8.4,1.45)
\psline[linecolor=black,linewidth=0.8pt](7.7,0.9)(7.7,0.8)(8.3,0.8)
\psline[linecolor=black,linewidth=0.8pt](7.6,0.9)(7.6,0.7)(8.3,0.7)
\psline[linecolor=black,linewidth=0.8pt](7.5,0.9)(7.5,0.6)(8.3,0.6)
\rput[l](8.38,0.8){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
\rput[l](8.38,0.7){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
\rput[l](8.38,0.6){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
%---------------------------------
\pspolygon[fillstyle=solid,fillcolor=black](8.2,-0.4)(8.36,-0.31)(8.36,-0.49)
\psframe[fillstyle=vlines,hatchangle=90,hatchsep=1.5pt,hatchcolor=red,linewidth=0.8pt](2.2,-0.8)(2.8,-0.2)
\pscircle[linewidth=0.8pt,fillstyle=solid,fillcolor=blue!70](3.2,-1.1){0.25}
\pspolygon[fillstyle=solid,fillcolor=black](3.05,-1.1)(3.3,-0.96)(3.3,-1.24)
\psline[linewidth=1.47mm,linecolor=blue!70,linearc=0.15,bordercolor=black,border=1.1pt](0.2,0.035)(2.5,0.035)(2.5,-1.1)(2.99,-1.1)
\psline[linewidth=1.47mm,linecolor=blue!70,linearc=0.15,bordercolor=black,border=1.1pt](3.4,-1.1)(5.8,-1.1)(! 5.8 -2 15 sin mul 0.2 sub 0.0175 add)
\psset{arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt,arrows=->}
\psline(1.6,0.035)(1.2,0.035)
\psline(0.2,0.82)(-0.2,0.85)
\psline(1.2,1.943)(1.6,1.943)
\psline(5.025,1.943)(5.425,1.943)
\psline(7.5,-0.4)(7.1,-0.4)
\psline(7.5,-0.1)(7.9,-0.1)
%---------------------------------
{\tiny
\rput[t](-0.85,3,1){\shortstack[l]{%
  Rauch-\strut\\[-0.5ex]\ \quad
  gas-\strut\\[-0.5ex]\qquad
  kanal\strut}
}
\rput[c](-1.2,-2){Brenner}
\psline[linewidth=0.6pt](-1.2,-1.9)(-1.2,-1.2)
\rput[c](0.25,-2){Brennkammer}
\psline[linewidth=0.6pt](0.25,-1.9)(0.25,-1.2)
\rput[l](2.9,-1.5){Pumpe}
\rput[lc](3.2,-0.3){\shortstack[l]{%
  Vor-\strut\\[-0.5ex]
  w{\"{a}}rm-\strut\\[-0.5ex]
  anlage}
}
\rput[c](2.7,2.7){Frischdampf}
\psline[linewidth=0.6pt](2.7,1.95)(2.7,2.55)
\psline[linewidth=0.6pt](1.77,0.035)(1.77,0.22)
\rput[b](1.77,.25){\shortstack{%
  Speise-\strut\\[-0.5ex]
  wasser\strut}
}
\rput[c](4.4,2.7){\shortstack[c]{%
  Hochdruck-\strut\\[-0.5ex]
  turbine\strut}
}
\psline[linewidth=0.6pt](4.4,1.5)(4.4,2.5)
\rput[c](6.1,2.7){\shortstack{%
  Niederdruck-\strut\\[-0.5ex]
  turbine\strut}
}
\psline[linewidth=0.6pt](6.1,1.5)(6.1,2.5)
\rput[c](7.5,2.7){Generator}
\psline[linewidth=0.6pt](7.5,1.5)(7.5,2.5)
\rput[c](8.15,2.3){\shortstack{%
  Erreger-\strut\\[-0.5ex]
  maschine\strut}
}
\psline[linewidth=0.6pt](8.15,1.4)(8.15,2.1)
\rput[l](3.8,0.1){\shortstack{%
  Konden-\strut\\[-0.5ex]
  sator\strut}
}
\psline[linewidth=0.6pt](4.5,0.1)(5.0,0.1)
\rput[c](7.7,-0.8){K{\"{u}}hlwasser}
\psline[linewidth=0.6pt](7.7,-0.4)(7.7,-0.6)
\rput[l](9.1,-1.8){Fluss}
}
%---------------------------------
\rput[l](-2,-4.5){%
\psset{ArrowFill=true,arrowinset=0,arrowscale=0.7,arrowlength=0.5,framearc=0.05,dimen=outer,linecolor=gray!40}%
\psline[linewidth=0.7cm]{->}(12,0)(14,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(12,-0.35)(12.5,-0.35)(12.5,-1.0)
\psframe[linecolor=black](10,-0.8)(12,0.8)
\psline[linewidth=0.9cm]{->}(8,0)(10,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(8,-0.45)(8.5,-0.45)(8.5,-1.1)
\psframe[linecolor=black](6,-0.8)(8,0.8)
\psline[linewidth=1.1cm]{->}(4,0)(6,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(4,-0.55)(4.5,-0.55)(4.5,-1.2)
\psframe[linecolor=black](2,-0.8)(4,0.8)
\psline[linewidth=1.3cm]{->}(0,0)(2,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(0,-0.65)(0.5,-0.65)(0.5,-1.3)
\psframe[linecolor=black](-2,-0.8)(0,0.8)%
\rput[c](3,0.3){\psframebox[linecolor=white]{Rohre}}
\rput[c](3,-0.3){\psframebox[linecolor=white]{Kessel}}
\rput[l](4.1,0.2){\footnotesize potentielle}
\rput[l](4.1,-0.3){\footnotesize Energie}
\textcolor{red}{%
\rput[l](0.1,0.2){\footnotesize thermische}
\rput[l](0.1,-0.3){\footnotesize Energie}
\rput[l](8.1,0.2){\footnotesize kinetische}
\rput[l](8.1,-0.3){\footnotesize Energie}
\rput[l](12.1,0.2){\footnotesize elektrische}
\rput[l](12.1,-0.3){\footnotesize Energie}
\rput[c](-1,0){\psframebox[linecolor=white]{Brenner}}
\rput[c](7,0){\psframebox[linecolor=white]{Turbine}}
\rput[c](11,0){Generator}
\rput[l](12.7,-0.85){\footnotesize WE}
\rput[l](8.7,-0.95){\footnotesize WE}
\rput[l](4.7,-1.05){\footnotesize WE}
\rput[l](0.7,-1.15){\footnotesize WE}
}}
\end{pspicture}
\end{figure}

\end{document}

输出

当我尝试使用 缩放图形时,\psset{unit=1.3}烤箱内部水管的螺旋部分绘制不正确。有人能帮我解决这个问题吗?

答案1

根据要求做一个简短的回答:

你不应该混合绝对测量coilwidth=1cm和相对测量,coilheight=0.495因为只有后者会受到\psset{unit=1.3}

答案2

作为评论,它非常简短。

除了@ratatosk的答案之外,您还可以使用 缩放整个图片\psscalebox{<scale factor>}{<your picture>}。无论您使用绝对测量还是相对测量,它都可以工作。

建议:

如果您不确定是否使用绝对测量还是相对测量,请参考以下指南。

  • 仅对不需要放大或缩小的属性使用绝对测量值。最佳候选是。例如,linewidth您可以将其指定为。linewidth=3pt

  • 对于可能需要放大或缩小的属性,请使用相对测量值。例如,矩形的尺寸\psframebox(3,4)

相关内容