How to draw this cube with PSTrick or TikZ?

\documentclass[pstricks,border=30pt,12pt]{standalone}
\usepackage{pst-eucl}
\psset{opacity=.2}
\begin{document}
\begin{pspicture}(7,7)
    \pstGeonode[PosAngle={-90,-90,0,-90,180}]{A}(5,0){B}(7,1){C}(2,1){D}(0,5){A_1}
    \pstTranslation[PosAngle=120]{A}{A_1}{B,C,D}[B_1,C_1,D_1]
    \pspolygon(A)(B)(C)(C_1)(D_1)(A_1)
    \psline(A_1)(B_1)(C_1)(B)(B_1)
    \pstMiddleAB[PosAngle=20]{B}{C_1}{E}
    \psline(E)(C)
    \pstMarkAngle{D}{E}{C}{}
    \psset{linestyle=dashed}
    \psline(C)(D)(D_1)
    \psline(A)(D)
    \psline(B)(D)(C_1)
    \psline(D)(E)
    \psset{linestyle=none,fillstyle=solid,fillcolor=gray}
    \pspolygon(A)(D)(D_1)(A_1)
    \pspolygon(B)(C_1)(D)
\end{pspicture}
\end{document}

enter image description here

Miscellaneous

If everything behind the surface should be dashed then the angle mark should be too.

\documentclass[pstricks,border=30pt,12pt]{standalone}
\usepackage{pst-eucl}
\psset{opacity=.2}
\begin{document}
\begin{pspicture}(7,7)
    \pstGeonode[PosAngle={-90,-90,0,-90,180}]{A}(5,0){B}(7,1){C}(2,1){D}(0,5){A_1}
    \pstTranslation[PosAngle=120]{A}{A_1}{B,C,D}[B_1,C_1,D_1]
    \pspolygon(A)(B)(C)(C_1)(D_1)(A_1)
    \psline(A_1)(B_1)(C_1)(B)(B_1)
    \pstMiddleAB[PosAngle=20]{B}{C_1}{E}
    \psline(E)(C)
    \psset{linestyle=dashed}
    \psline(C)(D)(D_1)
    \psline(A)(D)
    \psline(B)(D)(C_1)
    \psline(D)(E)
    \pstMarkAngle{D}{E}{C}{}
    \psset{linestyle=none,fillstyle=solid,fillcolor=gray}
    \pspolygon(A)(D)(D_1)(A_1)
    \pspolygon(B)(C_1)(D)
\end{pspicture}
\end{document}

enter image description here


\documentclass{article}% Herbert 20110907
\usepackage{pst-3dplot}

\begin{document}
\begin{pspicture}(-3,-3)(3.5,2.5)
\psset{coorType=3,hiddenLine=false}
%\pstThreeDCoor[xMin=-0,xMax=5,yMin=0,yMax=4,zMin=0,zMax=4]   
\pstThreeDBox[linestyle=solid](0,0,0)(3,0,0)(0,3,0)(0,0,3)
\pstThreeDTriangle[fillcolor=black!20,fillstyle=solid,opacity=0.5](3,0,0)(0,3,0)(3,3,3)
\pstThreeDSquare[fillcolor=black!20,fillstyle=solid,opacity=0.5](0,0,0)(0,0,3)(3,0,0)
\pstThreeDTriangle[fillcolor=red!60,fillstyle=solid,opacity=0.5](3,0,0)(3,3,0)(1.5,3,1.5)
%\pstThreeDLine[linecolor=red](3,0,0)(3,3,0)(1.5,3,1.5)(3,0,0)
\pstThreeDDot(1.5,3,1.5)
\pstThreeDPut[pOrigin=tr](0,0,0){$A$}
\pstThreeDPut[pOrigin=tr](0,3,0){$B$}
\pstThreeDPut[pOrigin=tl](3,3,0){$C$}
\pstThreeDPut[pOrigin=tl](3,0,0){$D$}
\pstThreeDPut[pOrigin=br](0,0,3){$A_1$}
\pstThreeDPut[pOrigin=br](0,3,3){$B_1$}
\pstThreeDPut[pOrigin=bl](3,3,3){$C_1$}
\pstThreeDPut[pOrigin=bl](3,0,3){$D_1$}
\pstThreeDPut[pOrigin=lb](1.5,3,1.5){$E$}
\pstThreeDCircle[linecolor=red,beginAngle=45,endAngle=145](1.5,3,1.5)(-0.2,-0.4,0.2)(0,-0.2,-0.2)
\end{pspicture}

\end{document}

enter image description here


Just another way of doing things...

\documentclass[tikz,border=0.125cm]{standalone}
\begin{document}
\begin{tikzpicture}[x=(0:2cm), y=(90:2cm*sqrt 2), z=(210:2cm/sqrt 3)]
\foreach \s in {0,1}
  \foreach \l [count=\i from 3, 
    evaluate={\t=-\i*90+45; \n=(\s==0) ? "" : "1";}] in {A,B,C,D}
       \coordinate (\l\n) at (cos \t, \s, sin \t);
\path (B) -- (C1) coordinate [midway] (E);
\fill [gray!25] (A) -- (D) -- (D1) -- (A1) -- cycle (D) -- (B) -- (C1) -- cycle;
\foreach \p in {A,...,E,A1,B1,C1,D1} \fill (\p) circle [radius=2pt];
\foreach \p/\a in {A/below left,B/below,C/right,D/above left,E/right} \node [\a] at (\p) {$\p$};
\foreach \p/\a in {A/left,B/above left,C/above,D/above left} \node [\a] at (\p1) {$\p_1$};
\draw [dashed] (A) -- (D) -- (D1) (D) -- (C) (D) -- (C1) (D) -- (B) (D) -- (E);
\draw (A) -- (A1) -- (B1) -- (B)  -- (A) (B) -- (C)  -- (C1) -- (D1) -- (A1) (B) -- (C1) -- (B1) (E) -- (C);
\clip (D) -- (E) -- (C);
\draw [dashed] (E) circle [radius=10pt];
\end{tikzpicture}
\end{document}

enter image description here