7

我对 OpenScad 中的 If 语句有疑问。我有 4 个变量

a=20;
b=14;
w=1;
c=16;

我想检查女巫号码是否更大ab。并且根据谁更小来取较小变量的值(在我们的例子中)并使用变量( )b < a进行简单的操作。cc=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 语句中更改变量的值。我可以使用什么技巧来实现我的目标。谢谢!

4

3 回答 3

12

在 3. 腿中,您将赋值运算符“=”与等号运算符“==”(正确if (a==b))混淆了。在您的 3. 腿中,您执行与 2. 中相同的操作,因此您可以将两者都作为“else”-leg 处理。

正确:if 语句中不允许赋值。在 openscad 中,您可以改用?运算符:

c = a > b ? b-w : a-w;

=遵循条件后。?如果条件为真,则后面的语句变为:值,如果条件为假,则后面的语句变为值。嵌套条件是可能的,例如您的条件:

c = a > b ? b-w : (a < b ? a-w : a-w);

文档中的更多信息。

于 2015-03-25T19:15:52.993 回答
8

OpenSCAD 的变量赋值是不同的。您只能在括号内分配变量。所以c = b - w只会在 if 括号内分配。如果在这个括号之外,它仍然是 16。不要问我为什么。您可以在OpenSCAD 文档中阅读更多内容。

于 2016-04-09T14:19:48.537 回答
-1
c = min(c,min(a,b)/2-w);

这也解决了问题)

于 2015-03-25T20:39:03.310 回答