openscad if语句问题变量

Chr*_*ris 4 openscad

我在OpenScad中遇到If语句的问题.我有4个变量

a=20;
b=14;
w=1;
c=16;
Run Code Online (Sandbox Code Playgroud)

我想检查女巫号码是否更大ab.在依赖谁更小以获取较小变量的值(在我们的例子中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;
}
Run Code Online (Sandbox Code Playgroud)

这似乎是逻辑,但在openscad中我理解你无法在If语句中更改变量的值.我可以使用什么技巧来实现我的目标.谢谢!

a_m*_*_67 7

在3. leg中,你将赋值运算符"="与等号运算符"=="混淆(正确if (a==b)).在你的3.腿中你做的与2中的相同,所以你可以把它们当作"其他"腿来处理.

正确:if语句中不允许赋值.在openscad中,您可以使用"?" - 运算符代替:

c= a>b ? b-w : a-w;
Run Code Online (Sandbox Code Playgroud)

在"="跟随条件之后,在"?"之后如果条件为真则该怎么办,在":"之后的假腿.嵌套条件是可能的,例如您的条件:

c= a>b ? b-w : (a<b ? a-w : a-w);
Run Code Online (Sandbox Code Playgroud)

文档中的更多信息


小智 6

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