本文英文版本參考:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement
shell
=============================================
函數
OpenSCAD能夠快速引入外部庫,功能很是強大。意味着不只能夠把一些實用函數進行封裝,放到庫中進行重用,還能夠方便地共享代碼和使用第三方代碼庫。包含外部庫的代碼,可使用include和use兩個語句:spa
include <filename>
全部的內容跟寫在主文件同樣。設計
use <filename>
引入模塊和函數,但不執行其它的任何定義。code
庫文件默認放在設計文件目錄或者OpenSCAD的安裝目錄,可使用相對目錄指定路徑,或者直接指定絕對路徑。新版本可使用與定義的用戶庫路徑,查看 OpenSCAD_User_Manual/Libraries ,該文檔描述了包含在OpenSCAD的幾個庫文件。文檔
注意:Windows and Linux/Mac 使用不一樣的路徑分隔符。Windows 使用 \, 譬如 directory\file.ext,其它的使用 /,譬如 directory/file.ext。這會帶來跨平臺的一些問題,但OpenSCAD 在 Windows 上能正確地處理 /,因此在全部文件中include or use使用 / 可以工做在全部的平臺。get
使用 include <filename>
容許缺省變量在庫中指定,這些缺省值可被主文件的代碼覆蓋。openscad 變量在運行期間只能是一個值,當給了多個賦值時將至採用最後一次的值,當變量第一次建立時被賦值。當在庫中賦值時, 後續改變缺省值的variables ,必須在include以前被賦值,參考下面第二個例子。class
建立一個Ring的庫文件 (定義一個函數而且提供一個例子):變量
ring.scad:module
module ring(r1, r2, h) { difference() { cylinder(r = r1, h = h); translate([ 0, 0, -1 ]) cylinder(r = r2, h = h+2); } } ring(5, 4, 10);
Includ該庫:
include <ring.scad>; rotate([90, 0, 0]) ring(10, 1, 1);
只顯示旋轉的環,使用use方法:
use <ring.scad>; rotate([90, 0, 0]) ring(10, 1, 1);
若是使用use 方法,請確保將use語句放在文件的開始,至少不要放在module裏面!
下面的代碼能夠工做:
// a.scad use <ring.scad>; module a() { ring(); }
下面的用法將會引發語法錯誤:
//a.scad module a() { use <ring.scad>; ring(); }
在 include
中的缺省變量能夠被覆蓋,例如:
lib.scad
i=1; k=3; module x() { echo("hello world"); echo("i=",i,"j=",j,"k=",k); }
hello.scad
j=4; include <lib.scad>; x(); i=5; x(); k=j; x();
產生的輸出結果以下:
ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", 4 ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", 4 ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", 4
可是,若是將 j=4;
放在
include
以後將會失敗,產生的輸出結果以下:
ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", undef ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", undef ECHO: "hello world" ECHO: "i=", 5, "j=", 4, "k=", undef