| 
%% syntaxe : solid1 solid2 solidfuz -> solid
/solidfuz {
5 dict begin
   /solid2 exch def
   /solid1 exch def
   /S1 solid1 solidgetsommets def
   /S2 solid2 solidgetsommets def
   /n S1 length 3 idiv def
   %% les sommets
   /S S1 S2 append def
   %% les faces internes et leurs couleurs
   /FI1 solid1 solidgetinfaces def
   /FIC1 solid1 solidgetincolors def
   solid2 solidnombreinfaces 0 eq {
      /FI2 [] def
      /FIC2 [] def
   } {
      /FI2 solid2 solidgetinfaces {{n add} apply} apply def
      /FIC2 solid2 solidgetincolors def
   } ifelse
   /FI [FI1 aload pop FI2 aload pop] def
   /FIC [FIC1 aload pop FIC2 aload pop] def
   %% les faces externes et leurs couleurs
   /FO1 solid1 solidgetoutfaces def
   /FOC1 solid1 solidgetoutcolors def
   /FO2 solid2 solidgetoutfaces {{n add} apply} apply def
   /FOC2 solid2 solidgetoutcolors def
   /FO [FO1 aload pop FO2 aload pop] def
   /FOC [FOC1 aload pop FOC2 aload pop] def
   /F [FO aload pop FI aload pop] def
   /FC [FOC aload pop FIC aload pop] def
   /IO [
      0 FO length 1 sub
      FI length 0 gt {
         dup 1 add dup FI length add 1 sub
      } {
         -1 -1
      } ifelse
   ] def
   S F generesolid
   dup FC solidputfcolors
   dup IO solidputinouttable
end
} def
%% %% syntaxe : solid1 solid2 solidfuz -> solid
%% /solidfuz {
%% 5 dict begin
%%    /solid2 exch def
%%    /solid1 exch def
%%    /S1 solid1 solidgetsommets def
%%    /S2 solid2 solidgetsommets def
%%    /n S1 length 3 idiv def
%% 
%%    %% les sommets
%%    /S S1 S2 append def
%% 
%%    %% les faces
%%    /F1 solid1 solidgetfaces def
%%    solid2 solidgetfaces {{n add} apply} apply
%%    /F2 exch def
%%    /F F1 F2 append def
%% 
%%    %% les fcolors
%%    /FC1 solid1 solidgetfcolors def
%%    /n1 F1 length def
%%    /n'1 FC1 length def
%%    /FC2 solid2 solidgetfcolors def
%%    /n'2 FC2 length def
%%    n'2 0 eq n'1 0 eq and {
%%       /FC [] def
%%    } {
%%       n'1 n1 lt {
%%          %% toutes les couleurs de solid1 ne sont pas definies
%%          %% => on complete
%%          [
%%             FC1 aload pop
%%             n'1 n1 sub {()} repeat
%%          ] /FC1 exch store
%%       } if
%%       /FC2 solid2 solidgetfcolors def
%%       /FC FC1 FC2 append def
%%    } ifelse
%% 
%%    S F generesolid
%%    dup FC solidputfcolors
%% end
%% } def
%% 
 |