openscad If 语句问题与变量

openscad If statement issue with variable

我对 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 条腿中,您将赋值运算符“=”与相等运算符“==”混淆了(正确 if (a==b))。 在你的 3. 腿中,你做与 2. 中相同的事情,所以你可以将两者都作为“其他”-leg 来处理。

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

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

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

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

documentation 中的更多信息。

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

这也解决了问题)

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

中阅读更多内容