可调整的(电路)tikzpicture 作为独立组件,具有可互换的节点/路径(在 TexStudio 中)

可调整的(电路)tikzpicture 作为独立组件,具有可互换的节点/路径(在 TexStudio 中)

我正在寻找一种平滑的方式来调整现有的circuitikz独立内容,以创建具有不同内容的紧密相关的输出。就像在我的方案中切换不同的设置一样。例如,如下所示的安培表需要用简单的连接线替换,即移除,标签/锚点应该用 ID 替换,几个对象的颜色互换等。

我想象自己创建了通用电路布局,定义了所有必要的坐标、对象等,并在不同的输出场景之间切换,例如“有或无测量”、“仅 ID”、“能量路径(不)可见”、“不同的能量路径”(alpha、beta……)。

到目前为止,我已经使用了图层(用于前面提到的“能量路径”),但实际上这已经不起作用了,因为我不能/不想只激活新图层,例如用空白区域覆盖现有仪表并添加另一条线。我觉得可能有一些包可以帮助我实现我要的方向。但到目前为止,我还没有找到任何足够的东西。

TexStudio 中的脚本内可使用不同的注释将是最佳选择,因为我将来仍会多次更改初始电路布局,但每次添加或删除新部分时都不想手动清除仪表或更改颜色。希望大家明白我的意思。以下 MWE 可能有所帮助。如果需要进一步说明,请告诉我。

编辑:添加了不太复杂的 MWE,没有能量路径。示例我希望使用一个命令/开关来实现to[ameter, ...]用简单的线条替换每个--或用替代文本替换块文本。查看示例图片。

\documentclass[border=10pt]{standalone}

\usepackage[%
%   compatibility,
%   european,%
    siunitx,%
    RPvoltages,%
]{circuitikz}
\usepackage{pgfplots}
    \pgfplotsset{compat=newest}
\usepackage{standalone}
\usepackage{xcolor}
\usetikzlibrary{positioning, shapes, arrows, backgrounds, chains, fit, calc }

\colorlet{vmeter}{black!30!green}
\colorlet{ameter}{black!20!red}
\tikzset{%
    block/.style = {rectangle, draw, text centered, inner sep=.2cm},%
    vmeter/.style = {rmeter, color=vmeter, t=\tiny{\si{\volt}}},%
    ameter/.style = {rmeter, color=ameter, t=\tiny{\si{\ampere}}},%
    mground/.style= {ground, scale=.6},%
    label distance=2ex,%
    marker/.style={orange, line width=4mm, rounded corners,},% opacity=0.3, line cap=round},
}
\ctikzset{instruments/scale=.3}
\begin{document}

\newcommand{\tdesc}[1]{\tiny{\texttt{#1}}}
\begin{circuitikz}
    % custom coordinates
    \coordinate (v VMeter2GND) at (0,-1);
    \coordinate (h VMeter2GND) at (-.5,0);
    % blocks
    \node [block] (pvgen) {PV GEN};
    \node [block] (load) at (1,-7) {Load};
    % coordinates
    \coordinate (pvbus mid) at ($(pvgen.south)+(0,-1)$);
    % bus
    \draw [ultra thick] (pvbus mid)++(-2,0) coordinate(pvbus west) node[anchor=south west](pvbus desc){PV} -- ++(4,0) coordinate(pvbus east);
    \draw [ultra thick] (pvbus west) ++(0,-4) coordinate(acbus west) node[anchor=south west](acbus desc){AC} -- (acbus west -| pvbus east) coordinate(acbus east);
    % coordinates
    \coordinate (pvbus mid) at ($ (pvbus west) !.5! (pvbus east) $);
    % dcac
    \draw ($(pvbus mid) !.2! (pvbus mid |- acbus west) $) coordinate(pvdcac in) to[sdcac] ($(pvbus mid) !.8! (pvbus mid |- acbus west) $) coordinate(pvdcac out);
    % addtional main wiring
    \draw (pvgen.south) -- (pvbus mid);
%   % voltage measurement
    \draw (pvbus west) ++ ($-1*(h VMeter2GND)$)  coordinate(vpv) to[vmeter, l=\tdesc{V PV}] ++ (v VMeter2GND) node[mground]{};
    \draw (acbus west) ++ ($-1*(h VMeter2GND)$)  coordinate(vac) to[vmeter, l=\tdesc{V AC}] ++(v VMeter2GND) node[mground]{};
    % current measurement
    \draw (pvbus mid) to[ameter, label=\tdesc{A PV IN}] ++(v VMeter2GND) -- (pvdcac in);
    \draw (pvdcac out |- acbus west) coordinate (acbus pvdcac in) to[ameter, a=\tdesc{A PV OUT}] (pvdcac out);
    \draw (load.north |- acbus west) coordinate (acbus load in) to[ameter, a=\tdesc{A LOAD}] (load.north);

\end{circuitikz}
\end{document}

带测量仪器的示意图 带测量仪器的示意图 不含测量仪器的示意图 不含测量仪器的示意图

答案1

我仍然不确定我是否理解了这个问题,并且我仍然认为这个例子绝不是简单的——但这可能是我的错,这两件事是相连的。

让我们看看这是否有帮助...我假设您这样做并不是为了让元素在演示中出现和消失beamer,在这种情况下您可以轻松地使用覆盖来实现这一点。

例如,假设我想要(或不想)仪表跟随旗帜。我可以非常直接地做到这一点随包裹ifthen

\documentclass{article}
\usepackage[european, RPvoltages, straightvoltages]{circuitikz}
\usepackage{siunitx}
\usepackage{ifthen}
\newboolean{showmeters}
\newcommand{\mybigsubcircuit}{%
    \draw (0,0) to[R=$R$, *-] ++(3,0) coordinate(a);
    \ifthenelse{\boolean{showmeters}}
    {\draw (a) to[rmeterwa, color=red] ++(2,0) coordinate(b);}
    {\draw (a) to[short] ++(2,0) coordinate(b);}
    \draw (b) to[short, -o] ++(1,0);
}
\begin{document}

\setboolean{showmeters}{false}
\begin{circuitikz}
    \mybigsubcircuit
\end{circuitikz}

\setboolean{showmeters}{true}
\begin{circuitikz}
    \mybigsubcircuit
\end{circuitikz}

\end{document}

在此处输入图片描述

(这是最小--- 您可以使用数字或字符串或任何ifthen提供比较和分支的内容)。

相关内容