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.
中阅读更多内容
我对 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.