¿Cómo agregar un texto rotado debajo de un cubo?

¿Cómo agregar un texto rotado debajo de un cubo?

Tengo un cubo como se indica a continuación. Quiero agregar un atributo de texto para el cubo, de modo que el texto debajo del cubo gire junto con la figura.

ingrese la descripción de la imagen aquí

Esta es mi definición del cubo.

  \tikzset{
    annotated cuboid/.pic={
      \tikzset{%
        every edge quotes/.append style={midway, auto},
        /cuboid/.cd,
        #1
      }
      \draw [\cubeline,every edge/.append style={pic actions,\cubeback, opacity=.5}, pic actions]
      (0,0,0) coordinate (o-\cubelabel) -- ++(-\cubescale*\cubex,0,0) coordinate (a-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (b-\cubelabel) edge coordinate [pos=1] (g-\cubelabel) ++(0,0,-\cubescale*\cubez)  -- ++(\cubescale*\cubex,0,0) coordinate (c-\cubelabel) -- cycle
      (o-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (d-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (e-\cubelabel) edge (g-\cubelabel) -- (c-\cubelabel) -- cycle
      (o-\cubelabel) -- (a-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (f-\cubelabel) edge (g-\cubelabel) -- (d-\cubelabel) -- cycle;

    },
    /cuboid/.search also={/tikz},
    /cuboid/.cd,
    width/.store in=\cubex,
    height/.store in=\cubey,
    depth/.store in=\cubez,
    units/.store in=\cubeunits,
    scale/.store in=\cubescale,
    label/.store in=\cubelabel,
    line/.store in=\cubeline,
    backline/.store in=\cubeback,
    width=10,
    height=10,
    depth=10,
    units=cm,
    scale=.1,   
    line=draw,
    backline=densely dashed
  }

Mi código completo (MWE):

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{quotes,arrows.meta, decorations.pathreplacing}
  \tikzset{
    annotated cuboid/.pic={
      \tikzset{%
        every edge quotes/.append style={midway, auto},
        /cuboid/.cd,
        #1
      }
      \draw [\cubeline,every edge/.append style={pic actions, \cubeback, opacity=.5}, pic actions]
      (0,0,0) coordinate (o-\cubelabel) -- ++(-\cubescale*\cubex,0,0) coordinate (a-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (b-\cubelabel) edge coordinate [pos=1] (g-\cubelabel) ++(0,0,-\cubescale*\cubez)  -- ++(\cubescale*\cubex,0,0) coordinate (c-\cubelabel) -- cycle
      (o-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (d-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (e-\cubelabel) edge (g-\cubelabel) -- (c-\cubelabel) -- cycle
      (o-\cubelabel) -- (a-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (f-\cubelabel) edge (g-\cubelabel) -- (d-\cubelabel) -- cycle;
      ;
    },
    /cuboid/.search also={/tikz},
    /cuboid/.cd,
    width/.store in=\cubex,
    height/.store in=\cubey,
    depth/.store in=\cubez,
    units/.store in=\cubeunits,
    scale/.store in=\cubescale,
    label/.store in=\cubelabel,
    line/.store in=\cubeline,
    backline/.store in=\cubeback,
    width=10,
    height=10,
    depth=10,
    units=cm,
    scale=.1,
    line=draw,
    backline=densely dashed,
  }
\newcommand{\cuboid}[2]{
    \begin{tikzpicture}
     \pic [#1] at (0,0) {annotated cuboid={#2}};
    \end{tikzpicture}
}
\tikzstyle{cubecontainer}=[outer sep = 0pt, inner sep= 0pt]
\tikzstyle{connectarrow}=[-{Triangle[angle=60:0pt 2]}, line width= 10pt, shorten >=3mm,shorten <=3mm, draw=gray!60]
\begin{document}
\begin{tikzpicture}
\node[cubecontainer] (a) at (0,0) {\cuboid{fill=cyan!20, text=green!50!black, draw=black}{label=A, width=6, height=20, depth=15, units=mm}};
%\node[cubecontainer] (b) at (2,0) {\cuboid{fill=cyan!20, text=green!50!black, draw=black}{label=B, width=6, height=20, depth=15, units=mm}};
%\node[cubecontainer] (c) at (5,0) {\cuboid{fill=cyan!20, text=green!50!black, draw=black}{label=C, width=6, height=20, depth=15, units=mm}};
%%\node[draw,dotted,fit=(a) (b) (c)] {};
\end{tikzpicture}
\end{document}

Respuesta1

Si un nodo simple como este: \node [below of=a, node distance=1.4cm,rotate=45,xshift=-1cm] (critical) {20x30x20};es demasiado costoso para usted, puede configurar la etiqueta dentro tikzsetdel contenedor de cubos, para la rotación puede usar \rotatebox{45}{#1}. #1es la etiqueta, definida en el documento:

\tikzset{cubecontainer/.style={outer sep= 0pt, inner sep= 0pt,label={265:\rotatebox{45}{#1}}}
}%optional with red background ... [fill=red]265 ....

265es el ángulo de posicionamiento, contado en sentido antihorario desde 0=este hasta 360=este. (Por un cuadrado: 0=este, 90=norte, 180=oeste, 270=sur,... )

... y usarlo para etiquetar el nodo con etiqueta = 20x20x30( \node[cubecontainer=20x20x30]):

\node[cubecontainer=20x20x30] (a) at (0,0) {\cuboid{fill=cyan!20, text=green!50!black, draw=black}{label=A, width=6, height=20, depth=15, units=mm}};

.


EDITAR: 2.Version of cubecontainer- Cambie el tamaño de fuente con lo siguientecubecontainer/.style

\tikzset{cubecontainer/.style={outer sep= 0pt, inner sep= 0pt,label={265:\rotatebox{45}{\Huge #1}}} }

  1. Versión:

ingrese la descripción de la imagen aquí

  1. Versión: tamaño de fuente (\Enorme)

(Comparación de la primera (izquierda) y la segunda versión (derecha))

ingrese la descripción de la imagen aquí

MWE:

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{quotes,arrows.meta, decorations.pathreplacing}
  \tikzset{
    annotated cuboid/.pic={
      \tikzset{%
        every edge quotes/.append style={midway, auto},
        /cuboid/.cd,
        #1
      }
      \draw [\cubeline,every edge/.append style={pic actions, \cubeback, opacity=.5}, pic actions]
      (0,0,0) coordinate (o-\cubelabel) -- ++(-\cubescale*\cubex,0,0) coordinate (a-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (b-\cubelabel) edge coordinate [pos=1] (g-\cubelabel) ++(0,0,-\cubescale*\cubez)  -- ++(\cubescale*\cubex,0,0) coordinate (c-\cubelabel) -- cycle
      (o-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (d-\cubelabel) -- ++(0,-\cubescale*\cubey,0) coordinate (e-\cubelabel) edge (g-\cubelabel) -- (c-\cubelabel) -- cycle
      (o-\cubelabel) -- (a-\cubelabel) -- ++(0,0,-\cubescale*\cubez) coordinate (f-\cubelabel) edge (g-\cubelabel) -- (d-\cubelabel) -- cycle;
      ;
    },
    /cuboid/.search also={/tikz},
    /cuboid/.cd,
    width/.store in=\cubex,
    height/.store in=\cubey,
    depth/.store in=\cubez,
    units/.store in=\cubeunits,
    scale/.store in=\cubescale,
    label/.store in=\cubelabel,
    line/.store in=\cubeline,
    backline/.store in=\cubeback,
    width=10,
    height=10,
    depth=10,
    units=cm,
    scale=.1,
    line=draw,
    backline=densely dashed,
  }
\newcommand{\cuboid}[2]{
    \begin{tikzpicture}
     \pic [#1] at (0,0) {annotated cuboid={#2}};
    \end{tikzpicture}
}
\tikzset{cubecontainer/.style={outer sep= 0pt, inner sep= 0pt,label={[fill=white]265:\rotatebox{45}{#1}}}
}
%\tikzset{cubecontainer/.style={outer sep= 0pt, inner sep= 0pt,label={265:\rotatebox{45}{\Huge #1}}} }
\tikzstyle{connectarrow}=[-{Triangle[angle=60:0pt 2]}, line width= 10pt, shorten >=3mm,shorten <=3mm, draw=gray!60]
\begin{document}
\begin{tikzpicture}
\node[cubecontainer=20x20x30] (a) at (0,0) {\cuboid{fill=cyan!20, text=green!50!black, draw=black}{label=A, width=6, height=20, depth=15, units=mm}};
%\node [below of=a, node distance=1.4cm,rotate=45,xshift=-1cm]  (critical) {20x30x20};
\end{tikzpicture}
\end{document}

información relacionada