This Question has to be seen as a follow up question of this one:
Is it possible to produce data cubes in Latex with reasonable effort?
Based on the code that @Qrrbrbirlbel posted I came up with some changes and this code:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,paths.ortho,calc,paths.rectangle,positioning-plus}
\tikzset{if/.code n args=3{\pgfmathparse{#1}\ifnum\pgfmathresult=0
\pgfkeysalso{#3}\else\pgfkeysalso{#2}\fi}}
\tikzset{local cs/.style n args=4{shift={(#1)}, x=($(#2)-(#1)$),
xslant={#3}, yscale={#4}}}
\tikzstyle{none}= [dash pattern=on 0\pgflinewidth]
\begin{document}\sffamily
\begin{tikzpicture}[
tight matrix/.style={
matrix of nodes, inner sep=+0pt, outer sep=+0pt,
every cell/.append style={
every node/.append style={
outer sep=+0pt,
inner xsep=+.1em,
inner ysep=+.3333em, % default (overwritten by matrix inner sep)
align=center,
text depth=+0pt, % depth("y"),
text height=height("M"),
text width=width("MMM-00-00"), % possibly other approaches
}}},
desc/.style={/utils/exec=\scriptsize}, % font key is not perfect
continent/.style={
desc, align=center, anchor=east, font=\bfseries},
hemi/.style={desc, align=center, text width=width("Property C"), font=\bfseries},
route/.style={desc, font=\bfseries},
Route/.style={font=\bfseries},
]
% The matrix
\matrix[tight matrix, draw] (m) {
Property A & Property A & Property A \\
Property B & Property B & Property B \\
Property A & Property A & Property A \\
Property B & Property B & Property B \\
Property A & Property A & Property A \\
Property B & Property B & Property B \\
};
% The 3D
\tikzset{my cs/.style={local cs={m.north west}{m.north east}{1}{2}}}
\begin{scope}[my cs]
\draw (0,0) rectangle (1,1)
\foreach \i in {1,...,9}{
coordinate[pos=1+\i/8/3] (tl-\i)}
(m.south east) -- ++ (up:1) -- (1,1);
\end{scope}
% The lines
\foreach \c in {1,2,3}
\draw[my cs] (m-6-\c.south east) -- (m-1-\c.north east) -- ++ (up:1);
\foreach \c in {1,...,5}
\draw[if={isodd(\c)}{densely dashed}{}, my cs]
(m-\c-1.south west) -- (m-\c-3.south east) -- ++(up:1);
\foreach \c in {1,...,4}
\draw[if={isodd(\c)}{none}{}, my cs]
(tl-\c) -- ++ (right:1) -- ([shift=(up:\c/6)]m.south east);
% The Descriptions
\foreach \st/\lt[count=\c from 0, evaluate={\d=int(2*\c+1)}] in
{af/Property A, as/Property B, au/Property C}
\node[continent] (\st) at (m-\d-1.south west) {\lt};
\node[route] at (-2,-1.7) {Property A};
\node[route] at (-0,-1.7) {Property B};
\node[route] at (2,-1.7) {Property C};
\begin{scope}[node distance=.25cm]
\foreach \st[count=\c from 0, evaluate={\d=int(2*\c+1)}] in {Property A, Property B, Property C}
\node[continent, left=of (tl-\d)](\st){\st};
\node[route, left=of |(Property B)(Property C)] (g) {Category}
(g) \foreach \co in {Property B, Property C}{ edge[my cs, -|-, hvvh/distance=.2cm] (\co)};
\end{scope}
\end{tikzpicture}
\end{document}
I know, what I did to the code of @Qrrbrbirlbel was horrible. And I even run into a problem with it. It seems to compile fine and in TexStudio it looks good. It does however not show all the features when opened in Adobe Reader:
In TexStudio:

In Adobe Reader:

Can anyone tell me why this happens? I deleted the axillary files and tried to compile again. It didn't work.
nonedash pattern is, well, wrong. What is it supposed to do? It basically defines an infinite amount of infinitesimal short parts. TeXstudio (and Sumatra) seem to ignore this. Adobe trips. – Qrrbrbirlbel May 13 '15 at 17:58