跳轉至內容

OpenSCAD 使用者手冊/自定義器

來自 Wikibooks,開放世界中的開放書籍

自定義器

[編輯 | 編輯原始碼]

[注意: 需要版本 2019.05]

自定義器功能為編輯模型引數提供了圖形使用者介面。使用此功能,無需編輯程式碼即可更改引數/變數的值。程式設計師可以為給定模型建立模板,並進一步自定義這些模板以適應不同的需求/使用者。還可以儲存一組引數,這實際上儲存了特定模型的一個變體。

自定義器面板的啟用

[編輯 | 編輯原始碼]

如果未顯示自定義器面板,請使用選單切換視窗 > 隱藏自定義器使其可見。

支援的變數

[編輯 | 編輯原始碼]

自定義器顯示滿足以下條件的所有變數

  • 變數在主檔案中分配。自定義器不會顯示透過includeuse引入的檔案中的變數(儘管使用include,它們仍然可以在呼叫指令碼中引用)。
  • 變數具有簡單的文字值 - 字串、數字或布林值 - 或最多四個數字文字的列表。
  • 變數未在“隱藏”部分中分配,如僅包含註釋/* [Hidden] */的行所定義(詳細資訊如下)。
  • 賦值語句必須出現在第一個{語法元素之前。例如,一些指令碼在頂部包含一個空模組,僅用於此目的
    module __Customizer_Limit__ () {}  // Hide following assignments from Customizer.
    debug_mode = false;

因為它出現在{之後,所以自定義器不會顯示變數debug_mode。這是一種過時的結束可自定義引數列表的方法 - 註釋/* [Hidden] */現在被認為是最佳實踐。

注意:可以輸入不包含{字元的模組或函式,這不會阻止自定義器顯示後續變數。

    module does_not_stop_customizer () echo("Some text");
    shown_by_customizer = true;        // still displayed by Customizer

如上所述,只有簡單的文字和最多四個數字的陣列可用作引數。文字示例如下

a = "Text";
b = 123;
c = 456.789;
d = [1,2,3,4];

表示式(即使是簡單的示例)如

e = str("String"," ","concat");
f = 12 + 0.5;

不支援作為引數。

自定義表單生成語法支援

[編輯 | 編輯原始碼]
// variable description
variable name = defaultValue; // possible values

描述註釋必須調整到原始檔的左列,沒有空格。

以下是如何在表單中定義不同型別小部件的語法

[編輯 | 編輯原始碼]
實驗版本自定義器示例 1
// combo box for number
Numbers=2; // [0, 1, 2, 3]

// combo box for string
Strings="foo"; // [foo, bar, baz]

//labeled combo box for numbers
Labeled_values=10; // [10:S, 20:M, 30:L]

//labeled combo box for string
Labeled_value="S"; // [S:Small, M:Medium, L:Large]

此項僅允許數字,指定以下任何一項

實驗版本自定義器示例 2
// slider widget for number with max. value
sliderWithMax =34; // [50]

// slider widget for number in range
sliderWithRange =34; // [10:100]

//step slider for number
stepSlider=2; //[0:5:100]

// slider widget for number in range
sliderCentered =0; // [-10:0.1:10]

請注意,這

// slider widget for number with max. value
sliderWithMax =34; // [50]

主要是為了與Thingiverse相容

複選框

[編輯 | 編輯原始碼]
實驗版本自定義器示例 3

Thingiverse 不支援。

//description
Variable = true;

旋鈕框

[編輯 | 編輯原始碼]
實驗版本自定義器示例 4
// spinbox with step size 1
Spinbox= 5;

// spinbox with step size 0.5
Spinbox= 5.5; // .5

文字框

[編輯 | 編輯原始碼]
實驗版本配置器示例 5

注意:文字框示例僅在 2021.01 版本中有效,在未來版本中可能無效!

// Text box for string
String="hello";

// Text box for string with length 8
String="length"; //8

特殊向量

[編輯 | 編輯原始碼]
實驗版本配置器示例 6
//Spin box box for vector with less than or equal to 4 elements
Vector2=[12,34];
Vector3=[12,34,45];
Vector4=[12,34,45,23];

您還可以為向量設定範圍

VectorRange3=[12,34,46]; //[1:2:50]
VectorRange4=[12,34,45,23]; //[1:50]

不可用的自定義

[編輯 | 編輯原始碼]

一些理想的自定義約束當前不支援

  • 多行文字框。
  • 直接可編輯的(非旋鈕框)數值
SerialNumber = 0; //[::non-negative integer]
Offset = 10.0;    //[::float]

建立選項卡

[編輯 | 編輯原始碼]

引數可以分組到選項卡中。此功能允許將相關引數關聯到組中。語法與 Thingiverse 選項卡規則非常相似。要建立選項卡,請使用如下所示的多行塊註釋

/* [Tab Name] */

也可以,但不推薦

/* [Tab] [Name] */

三個選項卡名稱具有特殊功能;

[全域性]

[編輯 | 編輯原始碼]

全域性選項卡中的引數始終顯示在每個選項卡上,無論選擇哪個選項卡。全域性引數不顯示任何選項卡;它們出現在所有選項卡中。

隱藏選項卡中的引數(首字母大寫)永遠不會顯示。甚至不顯示選項卡。這可以防止 Thingiverse 或 OpenSCAD 自定義器未引數化的全域性變量出現在自定義器介面或小部件中。包含是為了與 Thingiverse 相容。

您可以在隱藏組下有多個段。另請參閱 #hidden_parameters

不在任何選項卡下的引數將在名為“引數”的選項卡下顯示。在 Thingiverse 中,這些引數列出時沒有選項卡。

展示大多數功能的示例

[編輯 | 編輯原始碼]
/* [Drop down box:] */
// combo box for number
Numbers=2; // [0, 1, 2, 3]

// combo box for string
Strings="foo"; // [foo, bar, baz]

//labeled combo box for numbers
Labeled_values=10; // [10:L, 20:M, 30:XL]

//labeled combo box for string
Labeled_value="S"; // [S:Small, M:Medium, L:Large]

/*[ Slider ]*/
// slider widget for number
slider =34; // [10:100]

//step slider for number
stepSlider=2; //[0:5:100]

/* [Checkbox] */

//description
Variable = true;

/*[Spinbox] */

// spinbox with step size 1
Spinbox = 5; 

/* [Textbox] */

// Text box for string
String="hello";

/* [Special vector] */
//Text box for vector with less than or equal to 4 elements
Vector1=[12]; //[0:2:50]
Vector2=[12,34]; //[0:2:50]
Vector3=[12,34,46]; //[0:2:50]
Vector4=[12,34,46,24]; //[0:2:50]

/* [Hidden] */
debugMode = true;

將引數值儲存到 JSON 檔案中

[編輯 | 編輯原始碼]

此功能允許使用者儲存所有引數的值。然後可以透過命令列重用JSON引數值。

命令列

[編輯 | 編輯原始碼]
openscad -o model-2.stl -p parameters.json -P model-2 model.scad
openscad -o <output-file> -p <parameteric-file (JSON File) > -P <NameOfSet> <input-file SCAD file >
  • -p 用於指定儲存引數的輸入JSON檔案。
  • -P 用於指定JSON檔案中寫入的引數集的名稱。

JSON檔案以以下格式編寫

{
    "parameterSets":
    {
        "FirstSet": {
            "Labeled_values": "13",
            "Numbers": "18",
            "Spinbox": "35",
            "Vector": "[2, 34, 45, 12, 23, 56]",
            "slider": "2",
            "stepSlider": "12",
            "string": "he"
        },
        "SecondSet": {
            "Labeled_values": "10",
            "Numbers": "8",
            "Spinbox": "5",
            "Vector": "[12, 34, 45, 12, 23, 56]",
            "slider": "12",
            "stepSlider": "2",
            "string": "hello"
        }
    },
    "fileFormatVersion": "1"
}
{
    "parameterSets":{
              "set-name ":{
                         "parameter-name " :"value ",
                         "parameter-name " :"value "
                        },
             "set-name ":{
                         "parameter-name " :"value ",
                         "parameter-name " :"value "
                        },
    },
    "fileFormatVersion": "1"
}

圖形使用者介面

[編輯 | 編輯原始碼]

透過GUI,您可以使用下面解釋的自定義器中的預設部分輕鬆應用和儲存JSON檔案中的引數。

在自定義器中,第一行選項如下

  1. 自動預覽:如果選中,則在您更改自定義器中的任何引數時,模型的預覽會自動更新,否則您必須在更新自定義器中的引數後單擊預覽按鈕或按F5。
  2. 顯示詳細資訊
    1. 顯示詳細資訊:如果選擇,則引數的描述將顯示在引數名稱下方。
    2. 內聯詳細資訊:如果選擇,則引數的描述將顯示在引數名稱旁邊。較長的描述會被截斷。此選項是在垂直空間使用和保留部分描述之間的折衷方案。
    3. 隱藏詳細資訊:詳細資訊被抑制,但您仍然可以透過將游標懸停在輸入小部件上檢視描述。
  3. 重置按鈕:單擊時,它會將所有引數的輸入小部件的值重置為SCAD檔案中提供的預設值。

接下來是預設部分:它包含四個按鈕

組合框
用於選擇要使用的引數集。
+ 按鈕
新增新的引數集。
- 按鈕
用於刪除組合框中選擇的集。
儲存預設按鈕
儲存/覆蓋當前預設。

最後,在預設部分下方是您可以操作引數的地方。

您還可以參考OpenSCAD中包含的兩個示例以瞭解更多資訊

  1. Parametric/sign.scad
  2. Parametric/candlStand.scad

手動建立資料集

[編輯 | 編輯原始碼]

您可以透過修改JSON檔案以符合上述格式並定義自己的變數來手動建立資料集。載入資料集時,**僅**修改資料集中定義的引數,其他引數**不會**設定為預設值。這允許建立由修飾符組成的部分資料集,而不是完整的資料集。

隱藏引數

[編輯 | 編輯原始碼]

屬於隱藏組的變數儲存在JSON檔案中,但**不會**從JSON檔案中檢索。

含義:如果將變數從隱藏組移動到其他組,它也將變得適用。這允許設計人員將隱藏組用於保留變數,這些變數在未來版本中可以自定義(並分配不同的預設值),而不會破壞現有預設。

隱藏變數也可以用作“上次儲存的”指示器,可以透過手動檢視JSON檔案來讀取。

其思想是,自定義器僅修改使用者可以從自定義器UI中看到和控制的變數。

提示和技巧

[編輯 | 編輯原始碼]

設定範圍和步長

[編輯 | 編輯原始碼]

自定義器嘗試猜測合適的範圍和步長,但可能會根據您的設計意圖給出不一致的結果。例如,自定義器也將像0.0、1.0、2.0等數字視為整數。自定義器也不知道負數是否有意義。因此,建議以註釋的形式提供範圍和步長。請記住,如有疑問,使用者始終可以修改SCAD檔案。

不要猶豫限制範圍。例如,在智慧手機支架的設計中,將尺寸限制在合理的智慧手機尺寸範圍內。如果有人想將您的智慧手機支架用作平板電腦支架,他始終可以直接編輯SCAD檔案本身。此操作還會讓使用者意識到,該設計並非旨在用作平板電腦支架,並且他或她可能需要例如修改支撐結構。

旋轉框上的按鈕很小,但您可以使用滑鼠上的滾輪舒適地更改值。首先,單擊旋轉框以聚焦旋轉框。

cubeColor = [1,0.5,0]; //[0:0.1:1]
sphereColor = "blue"; // [red, green, blue]

echo(cubeColor);

color(cubeColor)
cube();

color(sphereColor)
sphere();

我將Thingiverse自定義器文件(最初位於此處)儲存到網際網路檔案此處,以防萬一。

華夏公益教科書