
Actualmente tengo una "celda" como esta:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz-3dplot}
\usetikzlibrary{patterns,arrows,positioning,3d,calc,fadings,shapes,decorations.markings,arrows.meta}
\usepackage{tikz,times,amsmath}
\begin{document}
\tdplotsetmaincoords{85}{20}
\begin{tikzpicture}[yscale=2,xscale=2,line width=0.5pt, tdplot_main_coords]
\coordinate (A) at (0,0,0);
\coordinate (B) at (1,0,0);
\coordinate (C) at (2,0,0);
\coordinate (D) at (1,0,1);
\coordinate (X) at (0,0,-1);
\coordinate (H) at (1,0,-1);
\coordinate (Y) at (2,0,1);
\coordinate (A1) at (2,0,2);
\coordinate (B1) at (2,1,2);
\coordinate (C1) at (0,1,2);
\coordinate (D1) at (0,0,2);
\coordinate (E) at (1,-0.87,0.5);
\coordinate (X4) at (0,-0.87,0.5);
\coordinate (F) at (1,0.87,0.5);
\coordinate (X5) at (0,0.87,0.5);
\coordinate (X6) at (1,-0.87,1.5);
\coordinate (X7) at (1,0.87,1.5);
\coordinate (G) at (1,-0.87,-0.5);
\coordinate (I) at (1,-1.73,0);
\coordinate (Y2) at (1,-0.87,-1.5);
\coordinate (Y3) at (2,-0.87,-0.5);
\coordinate (Y4) at (2,0.87,-0.5);
\coordinate (Y5) at (1,0.87,-0.5);
\coordinate (J) at (1,1.73,0);
\coordinate (Y6) at (1,0.87,-1.5);
\coordinate (K) at (2,0,-1);
\coordinate (M) at (2,1,1);
\coordinate (N) at (1,0,1);
\draw[rounded corners=0.05pt](A)circle (0.25pt)node[left=-2pt]{$A$}
(B)circle (0.25pt)node[below]{$B$}
(C)circle (0.25pt)node[right]{$C$}
(D)circle (0.25pt)node[left]{$D$}
(E)circle (0.25pt)node[right]{$E$}
(F)circle (0.25pt)node[right]{$F$}
(G)circle (0.25pt)node[left]{$G$}
(H)circle (0.25pt)node[right]{$H$}
(I)circle (0.25pt)node[left]{$I$}
(J)circle (0.25pt)node[right]{$J$}
(X)--(A)--(X4)--(E)--(I)--(G)--(B)--(E)--(X6)--(D)--(B)
(X7)--(D)
(G)--(Y3)--(C)--(B)--(G)--(Y2)--(H)
(Y4)--(C)--(Y)--(D);
\draw[thin,dash pattern=on 2pt off 2pt]
(A)--(B)--(F)--(X5)--(A)
(X)--(H)--(B)--(F)--(J)--(Y5)--(Y4)
(H)--(Y6)--(Y5)
(F)--(X7)
(B)--(Y5);
\end{tikzpicture}
\end{document}
y lo que quiero lograr es "duplicar" la celda traduciendo el vértice $A$ original a $C$ (traduciendo la "celda" a la derecha en 2 unidades a lo largo del eje $x$). ¿Existe una manera fácil sin enumerar directamente todos los puntos después de la traducción? Las etiquetas no son necesarias.
Respuesta1
No estoy seguro de cómo debería verse exactamente el resultado, pero como sugerí en mi comentario, puedes utilizar a \pic
si quieres reutilizar partes de a tikzpicture
.
En el siguiente ejemplo de código, simplemente tomé el dibujo completo de su código y lo convertí en un archivo \pic
. Coloqué dos de estos \pic
s para que la coordenada A
del segundo coincida con la posición de la coordenada C
del primero. Tenga en cuenta que, debido al alcance, debe aplicar transformaciones por \pic
separado.
\documentclass[border=10pt]{standalone}
\usepackage{tikz, tikz-3dplot}
\tikzset{
pics/my cell/.style={
code={
\coordinate (A) at (0,0,0);
\coordinate (B) at (1,0,0);
\coordinate (C) at (2,0,0);
\coordinate (D) at (1,0,1);
\coordinate (X) at (0,0,-1);
\coordinate (H) at (1,0,-1);
\coordinate (Y) at (2,0,1);
\coordinate (A1) at (2,0,2);
\coordinate (B1) at (2,1,2);
\coordinate (C1) at (0,1,2);
\coordinate (D1) at (0,0,2);
\coordinate (E) at (1,-0.87,0.5);
\coordinate (X4) at (0,-0.87,0.5);
\coordinate (F) at (1,0.87,0.5);
\coordinate (X5) at (0,0.87,0.5);
\coordinate (X6) at (1,-0.87,1.5);
\coordinate (X7) at (1,0.87,1.5);
\coordinate (G) at (1,-0.87,-0.5);
\coordinate (I) at (1,-1.73,0);
\coordinate (Y2) at (1,-0.87,-1.5);
\coordinate (Y3) at (2,-0.87,-0.5);
\coordinate (Y4) at (2,0.87,-0.5);
\coordinate (Y5) at (1,0.87,-0.5);
\coordinate (J) at (1,1.73,0);
\coordinate (Y6) at (1,0.87,-1.5);
\coordinate (K) at (2,0,-1);
\coordinate (M) at (2,1,1);
\coordinate (N) at (1,0,1);
\draw[rounded corners=0.05pt]
(A) circle[radius=0.25pt] node[left=-2pt]{$A$}
(B) circle[radius=0.25pt] node[below]{$B$}
(C) circle[radius=0.25pt] node[right]{$C$}
(D) circle[radius=0.25pt] node[left]{$D$}
(E) circle[radius=0.25pt] node[right]{$E$}
(F) circle[radius=0.25pt] node[right]{$F$}
(G) circle[radius=0.25pt] node[left]{$G$}
(H) circle[radius=0.25pt] node[right]{$H$}
(I) circle[radius=0.25pt] node[left]{$I$}
(J) circle[radius=0.25pt] node[right]{$J$}
(X)--(A)--(X4)--(E)--(I)--(G)--(B)--(E)--(X6)--(D)--(B)
(X7)--(D)
(G)--(Y3)--(C)--(B)--(G)--(Y2)--(H)
(Y4)--(C)--(Y)--(D);
\draw[thin, dash pattern=on 2pt off 2pt]
(A)--(B)--(F)--(X5)--(A)
(X)--(H)--(B)--(F)--(J)--(Y5)--(Y4)
(H)--(Y6)--(Y5)
(F)--(X7)
(B)--(Y5);
}
}
}
\begin{document}
\tdplotsetmaincoords{85}{20}
\begin{tikzpicture}[scale=2, line width=0.5pt, tdplot_main_coords]
\pic[scale=2] at (0,0,0) {my cell};
\pic[scale=2] at (2,0,0) {my cell};
\end{tikzpicture}
\end{document}