Tikz 图片参数

Tikz 图片参数

我的问题与风力和 tikz 力

感谢 Mark Wibrow,我有一些不错的风力涡轮机,但我想缩放它们并进行一些动态更改。我尝试使用一些新参数,但没有用。我只是在他的原始代码中添加了以下内容:

  \tikzset{path/.style args={#1 scale #2}{fill, draw=white, ultra thick, line join=round}}
  \begin{scope}[scale=#2]
  \path [path] 
(-.25,0) arc (180:360:.25 and .0625) -- (.0625,3) -- (-.0625,3) -- cycle;
  ...
  \end{scope}

它不起作用:

<argument> ...set {path/.style args={##1 scale ##2
                                              }{fill, draw=white, ultra ...
l.418 }}

编辑感谢 Ignasi 的帮助,已解决:

在此处输入图片描述

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{calc}

\tikzset{
    pics/mysymbol/.style args={#1 scale #2 with #3}{
        code={
    \tikzset{WinT/.style={%
                fill,draw=white,line join=round,#3}}
    \begin{scope}[scale=#2]
    \path[WinT] (-.25,0) arc (180:360:.25 and .0625)
        -- (.0625,3) -- (-.0625,3) -- cycle;
    \pgfmathsetmacro{\Rand}{(rand*60 + 1) - 30}
    \foreach \i in {90, 210, 330}{
    \ifcase#1
    \or
        \path [WinT, shift=(90:3), rotate=\i+\Rand] 
        (.5,-.1875) arc (270:90:.5 and .1875)
        arc (90:-90:1.5 and .1875);
    \or
        \path [WinT, shift=(90:3), rotate=\i+\Rand] 
        (0,0.125) -- (2,0.125) -- (2,0) -- (0.5,-0.375) -- cycle;
    \or
        \path [WinT, shift=(90:3), rotate=\i+\Rand]
        (0,-0.125) arc (180:0:1 and 0.125) -- ++(0,0.125)
        arc (0:180:1 and 0.25) -- cycle;
    \fi
    }
    \path [WinT] (0,3) circle [radius=.25];
    \end{scope}
}}}

\begin{document}
\begin{tikzpicture}[scale=0.4]
\draw[help lines] (0,-2) grid (20,20) ;

\draw[fill=blue!50, opacity=.5] (1,0) arc (180:90:18) -- ++(0,-2)
    arc (90:180:16) --cycle ;

\draw[<->,>=stealth,thick] (1,-1)--(3,-1) node[midway,below]
        {\scriptsize 200\,m} ;

\foreach \i in {13,12,...,0} {%
    \begin{scope}[shift={($(19,0) + (176-\i*6.35:16.9)$)}]
    \path (0,0) pic {mysymbol={1 scale .25 with thick}} ;
    \end{scope}
    }

\end{tikzpicture}\end{document}

答案1

TikZ文档解释(第 18.3 节)pics使用语法定义的

\tikzset{
   pics/picname/.style={
       code={
            <pic commands>},
   }
}

尽管提供了密钥处理程序.pic以允许使用替代的更简单的版本

\tikzset{    
    picname/.pic={ 
       <pic commands> },
}

TikZ文献也说:

在几乎所有情况下,.pic密钥处理程序都足以设置密钥。但是,有些情况下你确实需要使用第一个版本,使用.stylecode=:

  • 每当您的图片类型需要设置前景或背景代码时。
  • 如果对密钥给出了复杂的参数。

因此,您必须更改wind turbine声明以使用第一个(完整)语法来传递复杂的参数。

相关内容