跳轉到內容

OpenSCAD 使用者手冊/修飾符字元

來自華夏公益教科書,開放的書籍,開放的世界

修飾符字元用於更改子節點的外觀或行為。它們在除錯中特別有用,在那裡它們可以用於突出顯示特定物件,或包含或排除它們從渲染中。

高階概念

[編輯 | 編輯原始碼]

OpenSCAD 使用不同的庫來實現功能,這可能會導致轉換的 F5 預覽行為出現一些不一致。傳統的轉換(平移、旋轉、縮放、映象和多矩陣)是在預覽中使用 OpenGL 執行的,而其他更高階的轉換(如調整大小)則執行 CGAL 操作,表現得像影響底層物件的 CSG 操作,而不僅僅是轉換它。特別是,這可能會影響修飾符字元(特別是“#”和“%”)的顯示,其中突出顯示可能不會直觀地顯示,例如,突出顯示預調整大小的物件,但突出顯示後縮放的物件。

注意:字元修飾符觸發的顏色變化僅在“編譯”模式下出現,而在“編譯並渲染(CGAL)”模式下不會出現。(如顏色部分所述。)

背景修飾符

[編輯 | 編輯原始碼]

在正常渲染過程中忽略此子樹,並以透明灰色繪製它(所有轉換仍然應用於此樹中的節點)。

由於標記的子樹被完全忽略,因此在使用它時可能會出現意外影響,例如,與 difference() 中的第一個物件一起使用。在這種情況下,此物件以透明灰色渲染,但它不會用作 difference() 的基礎!

用法

 % { ... }

示例

difference() {
	cylinder (h = 12, r=5, center = true, $fn=100);
	// first object to be subtracted
	rotate ([90,0,0]) cylinder (h = 15, r=1, center = true, $fn=100);
	// second object to be subtracted
	%rotate ([0,90,0]) cylinder (h = 15, r=3, center = true, $fn=100);
}

示例輸出

沒有修飾符的輸出。
添加了修飾符的輸出。
渲染的模型。


除錯修飾符

[編輯 | 編輯原始碼]

像往常一樣在渲染過程中使用此子樹,但也要以透明粉紅色繪製它。

用法

 # { ... }

示例

difference() {
	// start objects
	cylinder (h = 12, r=5, center = true, $fn=100);
        // first object to be subtracted
	#rotate ([90,0,0]) cylinder (h = 15, r=1, center = true, $fn=100);
        // second object to be subtracted
	#rotate ([0,90,0]) cylinder (h = 15, r=3, center = true, $fn=100);
}

示例輸出

沒有修飾符的輸出。
添加了修飾符的輸出。


根修飾符

[編輯 | 編輯原始碼]

忽略設計中的其餘部分,並使用此子樹作為設計根。

用法

 ! { ... }

示例

difference() {
	cube(10, center = true);
	translate([0, 0, 5]) {
		!rotate([90, 0, 0]) {
			#cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
	}
}

示例輸出

沒有修飾符的輸出。
添加了修飾符的輸出。


如使用啟用的根修飾符的示例輸出所示,rotate() 作為標記有根修飾符的子樹的一部分執行,但 translate() 沒有效果。

停用修飾符

[編輯 | 編輯原始碼]

只需忽略整個子樹。

用法

 * { ... }

示例

difference() {
	cube(10, center = true);
	translate([0, 0, 5]) {
		rotate([0, 90, 0]) {
			cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
		*rotate([90, 0, 0]) {
			#cylinder(r = 2, h = 20, center = true, $fn = 40);
		}
	}
}

示例輸出

沒有修飾符的輸出。
添加了修飾符的輸出。


停用修飾符允許您註釋掉一個或多個子樹。與使用通常的行或多行註釋相比,它瞭解層次結構,這使得即使在不需要搜尋子樹的結尾的情況下,停用更大的樹也更容易。

回聲語句

[編輯 | 編輯原始碼]
另請參閱:OpenSCAD 使用者手冊/其他語言功能#回聲函式

此函式將內容列印到編譯視窗(又名控制檯)。對除錯程式碼很有用。另請參閱字串函式 str()

數值四捨五入到 5 位有效數字。

使用“variable=variable”作為表示式來輕鬆標記變數可能很方便,請參見下面的示例。

用法示例

my_h=50;
my_r=100;
echo("This is a cylinder with h=", my_h, " and r=", my_r);
echo(my_h=my_h,my_r=my_r); // shortcut
cylinder(h=my_h, r=my_r);

在控制檯中顯示為

ECHO: "This is a cylinder with h=", 50, " and r=", 100
ECHO: my_h = 50, my_r = 100
華夏公益教科書