我在OpenScad中遇到If语句的问题。 我有4个变量
a=20;
b=14;
w=1;
c=16;
我想检查女巫号码是a
还是b
。
在依赖谁更小以获取较小变量的值(在我们的例子中为b < a
)并使用c
变量(c=b-w
)进行简单操作之后。
我试过这样但是它没有用。
a=20;
b=14;
w=1;
c=16;
if(a>b)
{
c=b-w;
}
if (a<b)
{
c=a-w;
}
if (a==b)
{
c=a-w;
}
这似乎是逻辑,但在openscad中,据我所知,你不能在If语句中改变变量的值。我可以使用什么技巧来实现我的目标。 谢谢!
答案 0 :(得分:6)
在3. leg中你将赋值运算符“=”与等号运算符“==”混淆(正确if (a==b)
)。
在你的3.腿中你做的与2中的相同,所以你可以把它们当作“其他”腿来处理。
正确:if语句中不允许赋值。在openscad中,您可以使用“?” - 运算符代替:
c= a>b ? b-w : a-w;
在“=”之后跟随条件,在“?”之后如果条件为真则该怎么办,在“:”之后是假腿。嵌套条件是可能的,例如你的条件:
c= a>b ? b-w : (a<b ? a-w : a-w);
中的更多信息
答案 1 :(得分:6)
OpenSCAD的变量赋值不同。您只能在括号内分配变量。因此c = b - w
只会在if括号内分配。在外面,如果这个支架仍然是16.不要问我为什么。您可以在Documentation of OpenSCAD中阅读更多内容。
答案 2 :(得分:-1)
c = min(c,min(a,b)/2-w);
这也解决了问题)