openscad if语句问题变量

时间:2015-03-25 15:59:48

标签: openscad

我在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语句中改变变量的值。我可以使用什么技巧来实现我的目标。 谢谢!

3 个答案:

答案 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);

documentation

中的更多信息

答案 1 :(得分:6)

OpenSCAD的变量赋值不同。您只能在括号内分配变量。因此c = b - w只会在if括号内分配。在外面,如果这个支架仍然是16.不要问我为什么。您可以在Documentation of OpenSCAD中阅读更多内容。

答案 2 :(得分:-1)

c = min(c,min(a,b)/2-w);

这也解决了问题)