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);
}
}
}
示例輸出
停用修飾符允許您註釋掉一個或多個子樹。與使用通常的行或多行註釋相比,它瞭解層次結構,這使得即使在不需要搜尋子樹的結尾的情況下,停用更大的樹也更容易。
此函式將內容列印到編譯視窗(又名控制檯)。對除錯程式碼很有用。另請參閱字串函式 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