Jdi na navigaci předmětu

Variables in OpenSCAD: What Works and What Doesn’t

Ukázka 1. This works
variable = 5;
Ukázka 2. This doesn’t work. Or rather, it won’t work as you might think
variable = 5;
echo(variable);
variable = 6;
echo(variable);
Ukázka 3. This works, because argument values exist in a different namespace
module foo(arg) {
    arg = 3;
}
Ukázka 4. The changed value of arg will only be valid inside the if body
module foo(a) {
    a = 5;
    echo(a); // a is 5

    if (a > 10) {
        a = 2;
        echo(a); // a is 2
    } else {
        a = 3;
        echo(a); // a is 3
    }
    echo(a); // a is 5
}
Ukázka 5. But this works
module foo(arg) {
    arg = arg >= 0 ? arg : 0;
    // ... arg is changed, if something
}
Ukázka 6. But of course, arg is the same throughout the entire module
module foo(arg) {
    echo(arg); // prints the changed arg!
    arg = arg >= 0 ? arg : 0;
}
Ukázka 7. You can only do it once, this doesn’t work
module foo(arg) {
    arg = 5;
    echo(arg); // 3
    arg = 3;
}
Ukázka 8. Neither does this
module foo(arg) {
    arg = arg >= 0 ? arg : 0;
    arg = arg <= 10 ? arg : 10;
}
Ukázka 9. It must be combined into one complicated ternary operator or you write a function for it
arg = xyz(arg);