How to make this object look like a nice cuboid?

You'll need to add nodes to the empty cells to get the spacing right.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\def\Z{Z}
\begin{tikzpicture}
 \matrix (m) [execute at empty cell={\node{\phantom{\Z}};},
    matrix of math nodes, nodes={inner xsep=0pt},row sep=0.5em,
              column sep=3em]{
        &   \Z/30\Z & \\
        &           & \\
\Z/15\Z &           &\\
        &\Z/10\Z    & \\
        &           &\Z/6\Z \\
\Z/5\Z  &           & \\
        &\Z/3\Z     & \\
        &           &\Z/2\Z \\
        &           & \\
        &\{1\}      & \\};
 \path[-]
    (m-1-2) edge (m-3-1) 
    edge (m-4-2)
    edge (m-5-3)
    (m-4-2) edge (m-6-1)
    (m-3-1) edge [-,line width=6pt,draw=white](m-7-2)
    edge (m-7-2)
    (m-3-1) edge (m-6-1)
    (m-10-2) edge (m-6-1)
    edge (m-7-2)
    edge (m-8-3)
    (m-8-3) edge (m-5-3)
    (m-4-2) edge (m-8-3)
    (m-5-3) edge [-,line width=6pt,draw=white](m-7-2)
    edge (m-7-2);
\end{tikzpicture}

\end{document}

It is often overlooked that while TikZ doesn't do “true” three-dimensional graphics, it does have an xyz coordinate system that comes in very handy for drawing cubes. Just tweak the coordinate unit options to adjust the view to your liking.

\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{amssymb}
\newcommand{\Z}{\mathbb Z}

\begin{document}

\begin{tikzpicture}[
        x={(4em,4em)},
        y={(-6em,8em)},
        z={(0,5em)}]
    \node (b1) at (0,0,0) {$\{1\}$};
    \node (b2) at (1,0,0) {$\Z/2\Z$};
    \node (b3) at (1,1,0) {$\Z/10\Z$};
    \node (b4) at (0,1,0) {$\Z/5\Z$};
    \node (t1) at (0,0,1) {$\Z/3\Z$};
    \node (t2) at (1,0,1) {$\Z/6\Z$};
    \node (t3) at (1,1,1) {$\Z/30\Z$};
    \node (t4) at (0,1,1) {$\Z/15\Z$};

    \draw (b1) -- (b2) -- (b3) -- (b4) -- (b1);
    \draw[preaction={draw,white,line width=5pt}] (t1) -- (t2) -- (t3) -- (t4) -- (t1);
    \foreach \x in {1,...,4} {
        \draw (b\x) -- (t\x);
    }
\end{tikzpicture}
\end{document}

result


It's not an answer at the question but another way to draw a graph like a cuboid. I had already some examples in 3D with tkz-graph.

A) Natural version

 \documentclass[11pt]{article}
 \usepackage{tkz-berge}
 \begin{document}
    \usetikzlibrary{calc,3d}
    \newcommand{\setxyz}[1]{%
    \pgfmathsetmacro{\xone}{cos(180+#1)}%
    \pgfmathsetmacro{\yone}{sin(180+#1)}%
    \pgfmathsetmacro{\xtwo}{cos(360-#1)}%
    \pgfmathsetmacro{\ytwo}{sin(360-#1)}%
    }
    \setxyz{17} 

     \begin{tikzpicture}%
    [x = {(\xone cm,\yone cm)},
     y = {(\xtwo cm,\ytwo cm)},
     z = {(0cm,1cm)}] 

    \GraphInit[vstyle=Empty]
        \tikzset{VertexStyle/.style ={shape          = rectangle,
                                      minimum width  = 48pt, 
                                      minimum height = 15pt,
                                      }}   
    \SetVertexNoLabel
    \begin{scope}[canvas is xy plane at z=-5]
        \grCycle[prefix=a,rotation=60,RA=5]{4}  
    \end{scope}
    \begin{scope}[canvas is xy plane at z=0]
        \grEmptyCycle[prefix=b,rotation=60,RA=5]{4} 
    \end{scope}
     \EdgeIdentity*{a}{b}{0,...,3}
     \EdgeInGraphLoop{b}{4}
     \AssignVertexLabel[color = blue,size = \small]{a}{ \{1\},Z/2Z,Z/10Z,Z/5Z}
     \AssignVertexLabel[color = blue,size = \small]{b}{Z/3Z,Z/6Z,Z/30Z,Z/15Z} 
    \end{tikzpicture} 
 \end{document}  

enter image description here
B) With some decorations

 \documentclass[11pt]{article}
 \usepackage{tkz-berge}
 \begin{document}
    \usetikzlibrary{calc,3d}
    \newcommand{\setxyz}[1]{%
    \pgfmathsetmacro{\xone}{cos(180+#1)}%
    \pgfmathsetmacro{\yone}{sin(180+#1)}%
    \pgfmathsetmacro{\xtwo}{cos(360-#1)}%
    \pgfmathsetmacro{\ytwo}{sin(360-#1)}%
    }
    \setxyz{17} 

    \begin{tikzpicture}%
    [x = {(\xone cm,\yone cm)},
     y = {(\xtwo cm,\ytwo cm)},
     z = {(0cm,1cm)}] 

    \GraphInit[vstyle=Shade]
        \tikzset{VertexStyle/.style ={shape        = circle,
                                      shading      = ball, 
                                      ball color   = blue!20,% 
                                      minimum size = 48pt,
                                      draw}}   
    \SetVertexNoLabel
    \begin{scope}[canvas is xy plane at z=-5]
        \grCycle[prefix=a,rotation=60,RA=5]{4}  
    \end{scope}
    \begin{scope}[canvas is xy plane at z=0]
        \grEmptyCycle[prefix=b,rotation=60,RA=5]{4} 
    \end{scope}
     \EdgeIdentity*{a}{b}{0,...,3}
     \EdgeInGraphLoop{b}{4}
     \AssignVertexLabel[color = blue,size = \small]{a}{ \{1\},Z/2Z,Z/10Z,Z/5Z}
     \AssignVertexLabel[color = blue,size = \small]{b}{Z/3Z,Z/6Z,Z/30Z,Z/15Z} 
    \end{tikzpicture}

 \end{document}  

enter image description here

Tags:

Tikz Pgf