Нестабильный макрос измерения

Нестабильный макрос измерения

Я создал макрос \measurement, который позволяет мне добавлять измерения к моим чертежам. Он работает хорошо, но метки иногда изменчивы. В примере ниже метки измерений поворачиваются по-разному, хотя команды практически идентичны. Я предполагаю, что должен быть лучший способ управления маркировкой. Есть у кого-нибудь идея?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\tikzset{myscale/.code={\edef\myscale{#1}\tikzset{scale=#1}}}
\def\myscale{1}

\newcommand{\measure}[4]{%
\pgfmathsetlengthmacro\mylength{8pt/\myscale}
\draw[very thin] #1 -- ($#1!\mylength!-90:#2$) coordinate (a) -- ($#1!\mylength+0.4*\mylength!-90:#2$);
\draw[very thin] #2 -- ($#2!\mylength!90:#1$) coordinate (b) -- ($#2!\mylength+0.4*\mylength!90:#1$);
\draw[very thin,<->,>=stealth] (a) -- (b) node[auto,sloped,#3] {#4};
}

\begin{document}

\begin{tikzpicture}[myscale=0.12]
\begin{scope}[rotate=20]

\draw[red] (0,0) -- (0,12);
\measure{(0,0)}{(0,12)}{midway,above,rotate=20,font=\small}{red}

\draw[blue] (0,12) -- (0,24);
\measure{(0,12)}{(0,24)}{midway,above,rotate=20,font=\small}{blue}

\end{scope}
\end{tikzpicture}

\end{document}

введите описание изображения здесь

решение1

У вас есть вертикальная (за исключением закругления) линия, которую вы затем поворачиваете на 20 градусов. В зависимости от закругления линия наклоняется немного влево или немного вправо, а узел естественным образом переворачивается.

Я не пытался выяснить, что вы пытаетесь сделать или как это лучше всего сделать — возможно, это другой вопрос.

Итак, ответ:Вертикальное положение делает его нестабильным.

Чтобы увидеть эффект, попробуйте этот код:

\documentclass[tikz, border=1cm]{standalone}
\tikzset{
nodetest/.pic={
\coordinate (c) at (1,10); %intermediate coordinate to create rounding
\draw (1,0) -- (c) node[auto, sloped, midway] {test};
}}
\begin{document}
\begin{tikzpicture}
\foreach \pos in {0.01,0.02,...,2} 
\pic[scale=\pos] at (10*\pos,0) {nodetest};
\end{tikzpicture}
\end{document}

Масштабированные линии от (0,0) до (1,10):

Треугольник линий с полосой узлов

Масштабированные линии от (2,0) до (1,10):

Треугольник линий с полосой узлов

Масштабированные линии от (1,0) до (1,10):

Треугольник линий с нестабильной полосой узлов

Видно, что темная полоса узлов в середине нестабильна для вертикальных линий.

Редактировать:

Я могу только догадываться, чего вы хотите. Ниже показаны узлы, параллельные и расположенные ниже линии, прочитанной от первой координаты до второй. Она стабильна во всех масштабах.

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\foreach \ang in {0,20,...,340}{
\coordinate (a) at (\ang:1);
\coordinate (b) at (\ang:4);
\draw[Stealth-Stealth] (a) --node[sloped, auto, swap, allow upside down=true]{red} (b);
}
\end{tikzpicture}
\end{document}

Круг из двойных стрелок с надписями

решение2

Может быть, это поможет - сtkz-euclide

введите описание изображения здесь

МВЭ

\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
    

\begin{tikzpicture}[scale=1.2]
    \tkzDefPoints{0/0/A,-4/4/B}
    \tkzDefPointWith[linear,K=0.5](A,B)
    \tkzGetPoint{C}

    \tkzDrawSegment[red, very thick](A,C)
    \tkzDrawSegment[blue,very thick](B,C)
    \tkzDrawPoints[color=black](A,B,C)
    \tkzLabelPoints[above right=3pt](A,B,C)
    \tkzDrawSegment[style=red, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=45}](A,C) 
    \tkzDrawSegment[style=blue, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=45}](C,B) 
\end{tikzpicture}
\end{document}

Связанный контент