A solution
: We can start with the drawing we made of a pyramid, and make a few modifications.
> base := [[0,0,0],[1,0,0],[2,1,0],[1,2.5,0],[0,2,0],[-1,1,0]];
> V := [1,2,4];
>
> top := map(`+`,base,V) ;
> pl1 := plots[polygonplot3d]([top,base],style=patch,color=magenta):
>
sides := NULL:
for i from 1 to nops(base)-1 do
sides := sides,plots[polygonplot3d]([ base[i],base[i+1],V+base[i+1],V+base[i]],style=patch,color=yellow) od:
> sides := sides,plots[polygonplot3d]([base[1],base[-1],V+base[-1],V+base[1]],style=patch,color=red):
> plots[display]([pl1,sides],scaling=constrained);
>