%% syntaxe : l1 l2 l3 l4 d1 d2 pist@n
%% d1 et d2 : les diametres int et ext
%% l1 et l2 : les longueurs des tiges int et ext
%% l3 : hauteur cuve externe
%% l4 : hauteur totale
/pist@n {
6 dict begin
/d@1 exch def
/d@2 exch def
/l@4 exch def
/l@3 exch def
/l@2 exch def
/l@1 exch def
newpath
0 0 smoveto
0 l@2 slineto
d@1 2 div l@3 srmoveto
0 l@3 neg srlineto
d@1 neg 0 srlineto
0 l@3 srlineto
0 l@4 smoveto
0 l@1 neg srlineto
d@2 2 div 0 srmoveto
d@2 neg 0 srlineto
stroke
end
} def
/fillstyle {
.8 setgray
} def
/pist@n* {
6 dict begin
/d@1 exch def
/d@2 exch def
/l@4 exch def
/l@3 exch def
/l@2 exch def
/l@1 exch def
gsave
newpath
verythin setlinewidth
d@1 2 div l@2 smoveto
0 l@4 l@2 sub l@1 sub srlineto
d@1 neg 0 srlineto
0 l@4 l@2 sub l@1 sub neg srlineto
clip
fillstyle
fill
grestore
newpath
0 0 smoveto
0 l@2 slineto
d@1 2 div l@3 srmoveto
0 l@3 neg srlineto
d@1 neg 0 srlineto
0 l@3 srlineto
0 l@4 smoveto
0 l@1 neg srlineto
d@2 2 div 0 srmoveto
d@2 neg 0 srlineto
stroke
end
} def
%% syntaxe : A B l1 l2 l3 d1 d2 piston
/piston {
%% on recupere A et B
9 -1 roll
9 -1 roll
9 -1 roll
9 -1 roll
gsave
4 copy
4 copy pop pop stranslate
angle 90 sub rotate
distance
3 1 roll pist@n
grestore
} def
%% syntaxe : A B l1 l2 l3 d1 d2 piston*
/piston* {
%% on recupere A et B
9 -1 roll
9 -1 roll
9 -1 roll
9 -1 roll
gsave
4 copy
4 copy pop pop stranslate
angle 90 sub rotate
distance
3 1 roll pist@n*
grestore
} def
|