繪圖相關 - OpenSCAD - 基本語法



參考資訊:
https://openhome.cc/zh-tw/openscad/
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual

註解(comments)
單行註解使用//
多行註解則是/**/

// comment
myvar = 10;

/*
    comment
*/

變數(variables)
直接指定數值即可,不需要宣告

myvar = 10;
myvar = 9.9;

P.S. 如多次宣告,則以最後宣告的為主,上例的myvar數值是9.9

布林值(boolean)

myvar1 = true;
myvar2 = false;

預設值(default)
如直接使用未宣告的數值,預設的值是undef

echo("val:", a);

如上範例將印出ECHO: "val:", undef

向量(vector)
向量宣告必須使用[]符號

myvar = [10, 11, 12];

Index是從0開始:
myvar[0] = 10
myvar[1] = 11
myvar[2] = 12

矩陣(matrix)
多維向量的意思

myvar = [[10, 11], 12];

myvar[0][0] = 10
myvar[0][1] = 11
myvar[1] = 12

字串(string)
字串宣告必須使用""符號

myvar = "testing"

迴圈:向量(vector)

for (x = [0, 10]) {
    echo("val: ", x);
}

上例結果:
ECHO: "val: ", 0
ECHO: "val: ", 10

需注意,迴圈只會解讀一層,因此可以使用上面的例子與下例比較:

for (x = [[0, 6], [1, 8]]) {
    echo("val: ", x);
}

上例結果:
ECHO: "val: ", [0, 6]
ECHO: "val: ", [1, 8]

迴圈:範圍(range)
預設的間距是1

for (x = [0 : 3]) {
    echo("val:", x);
}

上例結果:
ECHO: "val: ", 0
ECHO: "val: ", 1
ECHO: "val: ", 2
ECHO: "val: ", 3

使用者也可指定間距

for (x = [0 : 0.2 : 1]) {
    echo("val:", x);
}

上例結果:
ECHO: "val: ", 0
ECHO: "val: ", 0.2
ECHO: "val: ", 0.4
ECHO: "val: ", 0.6
ECHO: "val: ", 0.8
ECHO: "val: ", 1

迴圈:巢狀(nest)

for (x = [0 : 2], y = [0 : 1]) {
    echo("val:", x, y);
}

上例結果:
ECHO: "val: ", 0, 0
ECHO: "val: ", 0, 1
ECHO: "val: ", 1, 0
ECHO: "val: ", 1, 1
ECHO: "val: ", 2, 0
ECHO: "val: ", 2, 1

條件判斷(if)

a = 1;
b = 2;
if (a == b) {
    echo("a = b");
}
else if ( a > b) {
    echo("a > b");
}
else {
    echo("other");
}

上例結果:
ECHO: "other"

數學運算(scalar arithmetical operators)

+加法
-減法
*乘法
/除法
%餘數

關係運算(relational operators)

<小於
<=小於等於
>大於
>=大於等於
==等於
!=不等於

邏輯運算(logical operators)

&&AND
||OR
!NOT

條件運算(conditional operators)

a = 0;
b = 1;
c = a == b ? 3 : 4

可以解譯成如下:

a = 0;
b = 1;
if ( a == b) {
    c = 3;
}
else {
    c = 4;
}

由於使用者無法在if判斷式中宣告變數,因此,可以透過條件運算達到這個需求