我在OpenScad中遇到If语句的问题.我有4个变量
a=20;
b=14;
w=1;
c=16;
Run Code Online (Sandbox Code Playgroud)
我想检查女巫号码是否更大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;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是逻辑,但在openscad中我理解你无法在If语句中更改变量的值.我可以使用什么技巧来实现我的目标.谢谢!
在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文档中阅读更多内容。