
В настоящее время моя «ячейка» выглядит так:
\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}
и то, чего я хочу добиться, это "дублировать" ячейку, переместив исходную вершину $A$ в $C$ (переместив "ячейку" вправо на 2 единицы по оси $x$). Есть ли простой способ без прямого перечисления всех точек после перемещения? Метки не обязательно нужны.
решение1
Я не уверен, как именно должен выглядеть результат, но, как я и предложил в своем комментарии, вы можете использовать , \pic
если хотите повторно использовать части файла tikzpicture
.
В приведенном ниже примере кода я просто взял весь рисунок из вашего кода и сделал его \pic
. Я разместил два из этих \pic
s так, чтобы координата A
второго совпадала с позицией координаты C
первого. Обратите внимание, что из-за области действия вам нужно применять преобразования к \pic
отдельно.
\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}