该包的文档stanli
可以在这里找到:/https://mirror.hmc.edu/ctan/graphics/pgf/contrib/stanli/stanli.pdf
弹簧设计的文档可以在这里找到:tikz:设置弹簧
我有一个直接的问题:
\support{5}{b}
包中的命令:stanli
可以引入带支撑的弹簧。我想要两个节点之间的弹簧。如何扩展stanli
包来编码弹簧?
根据以下一个答案中的建议,我提出了:
%preamble definition
\makeatletter
\newcommandx{\nodespring}[2][]{%
\begin{scope}[rotate around={#2:(#1)}]
\draw [spring] (#1) -- (#2);
\end{scope}}
\makeatother
但在实施过程中:
\begin{tikzpicture}
\point{a}{0}{0}
\point{b}{5}{0}
\nodespring{a}{b}
\end{tikzpicture}
我收到一个错误:
Package PGF Math Error: Unknown function `b' (in 'b'). \nodespring{a}{b}
答案1
编辑:
两个节点之间的弹簧
该stanli
包定义了一种具有装饰的线型zigzag
,并将其称为。但是,除非重新定义宏、、和spring
,否则此样式不可“自定义” 。\springPreLength
\springPostLength
\springSegmentLength
\springAmplitude
如果我们重新定义样式并为其添加参数,这可能没有什么坏处:
\tikzstyle{spring} = [
normalLine,
decoration=
{
zigzag,
pre length=\springPreLength,
post length=\springPostLength,
segment length=\springSegmentLength,
amplitude=\springAmplitude,
#1
},
decorate,
]
然后创建一个使用这种样式的命令:
\newcommandx{\spring}[3][3=]{%
\begin{scope}
\draw [spring={#3}] (#1) -- (#2);
\end{scope}}
你只要把这些放在你的序言里后你加载stanli
,
现在我们可以替换任何梁,例如,\beam{2}{g}{h};
用\spring{g}{h};
。我们还可以向命令添加可选参数\spring
来更改其外观:\spring{g}{h}[amplitude=1mm];
。
按照文档中的示例结构执行此操作:
上一个答案:
包中 spring 的定义是:
\begin{scope}[rotate around={#3:(#2)}]
\draw [spring] (#2) -- ++(0,-\springLength);
\draw [normalLine] ($(#2)+1*(\supportBasicLength/2,-\springLength)$) -- ++(-\supportBasicLength,0);
\clip ($(#2)+1*(-\supportBasicLength/2,-\supportBasicHeight-\springLength)$) rectangle ($(#2)+1*(\supportBasicLength/2,-\springLength)$);
\draw[hatching]($(#2)+1*(\supportHatchingLength/2,-\springLength)$) -- ++(-\supportHatchingLength,0);
\end{scope}
我们需要的“自由弹簧”部分只是第一行,因此我们可以创建一个命令:
\newcommandx{\freespring}[2][2=0]{%
\begin{scope}[rotate around={#2:(#1)}]
\draw [spring] (#1) -- ++(0,-\springLength);
\end{scope}}
并使用 as \freespring{b};
,或者我们可以修补\support
命令以添加新类型:
\usepackage{etoolbox}
\expandafter\apptocmd\csname\string\support\endcsname
{\ifthenelse{\equal{#1}{7}}{%
\begin{scope}[rotate around={#3:(#2)}]
\draw [spring] (#2) -- ++(0,-\springLength);
\end{scope}
}{}%
}%
{}{}
可用作\support{7}{b};
。 两者都给出相同的结果。 文档封面中的图片变为: