Source
%autocrop
50 setxunit
%quadrillage marks
-1 6 setxrange
-1 4 setyrange
/l 8 def

/a {0 0 0} def    
/b {4 0 0} def    
/c {4 4 0} def    
/d {0 4 0} def    
/e {0 0 2} def 
/f {4 0 2} def
/g {4 4 2} def
/h {0 4 2} def

/z {1.5} def

/vect_I {1 0} def
/vect_J {50 dup cos 2 1 roll sin .4 mulv} def
/vect_K {0 1} def

%% [O vect_I] (->) ligne
%% [O vect_J] (->) ligne
%% [O vect_K] (->) ligne

/xyz2xy {
3 dict begin
   /z exch def
   /y exch def
   /x exch def
   vect_I x mulv
   vect_J y mulv
   vect_K z mulv
   addv addv
end
} def

[/A /B /C /D /E /F /G /H ] 
[a b c d e f g h ] {xyz2xy} capply
mapnp

/dotscale {2 dup} def
1.2 setlinewidth
[A B F E A] ligne
[E H G F] ligne
[B C G] ligne

gsave
   .8 setlinewidth
   pointilles
   [A D C] ligne
   [H D] ligne
grestore


12 setfontsize
setTimesItalic
   (A) A [z dup] dltext   
   (B) B [z dup] drtext	  
   (C) C [z dup] drtext	  
   (D) D [z dup] bltext	  
   (E) E [z dup] bltext
   (F) F [z dup] ultext   
   (G) G [z dup] urtext   
   (H) H [z dup] ultext