套件是儲存節點並與 Dynamo 社群分享節點一個很便利的方式。套件可以包含從在 Dynamo 工作區中建立的自訂節點到 NodeModel 衍生的節點等所有內容。套件的發佈和安裝是透過 Package Manager 進行。除了此頁面,Primer 也提供套件的一般指南。
Dynamo Package Manager 是一種可從 Dynamo 或網頁瀏覽器存取的軟體登錄 (類似於 npm)。Package Manager 包括安裝、發佈、更新和檢視套件。與 npm 一樣,它維護不同版本的套件。它也能協助管理專案的相依性。
在瀏覽器中,搜尋套件並檢視統計資訊:https://dynamopackages.com/
在 Dynamo 中,Package Manager 包括安裝、發佈和更新套件。
線上搜尋套件:
Packages > Search for a Package...
檢視/編輯安裝的套件:
Packages > Manage Packages...
發佈新套件:
Packages > Publish New Package...
套件的發佈是透過 Dynamo 內的 Package Manager 進行。建議的程序是在本端發佈、測試套件,然後線上發佈與社群分享。使用 NodeModel 案例研究,我們將逐步完成必要步驟,將 RectangularGrid 節點以套件方式本端發佈,然後線上發佈。
啟動 Dynamo,然後選取「Packages > Publish New Package...
」以開啟「Publish a Package
」視窗。
選取「
Add file...
」瀏覽要加入套件的檔案從 NodeModel 案例研究中選取兩個
.dll
檔案選取「
Ok
」
將檔案加入套件內容後,為套件指定名稱、描述和版本。使用 Dynamo 發佈套件會自動建立一個 pkg.json
檔案。
一個準備好要發佈的套件。
提供名稱、描述和版本等必要資訊。
按一下「本端發佈」,然後選取 Dynamo 的套件資料夾:
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
讓節點能在 Core 當中使用。在套件準備好分享之前,請永遠在本端發佈。
發佈套件後,在 Dynamo 資源庫的 CustomNodeModel
品類下就能使用節點。
我們剛剛在 Dynamo 資源庫中建立的套件
套件一旦準備好線上發佈,請開啟 Package Manager,選擇「Publish
」,然後選擇「Publish Online
」。
若要查看 Dynamo 如何格式化套件,請按一下「CustomNodeModel」右側的三個垂直點,然後選擇「展示根目錄」
在「發佈 Dynamo 套件」視窗中,選取「
Publish
」,然後選取「Publish Online
」。若要刪除套件,請選取「
Delete
」。
更新套件的程序與發佈類似。開啟 Package Manager,然後對需要更新的套件選取「Publish Version...
」,並輸入一個更高的版本。
選取「
Publish Version
」以使用根目錄中的新檔案更新既有套件,然後選擇在本端還是線上發佈。
Package Manager 網路用戶端專門用於搜尋和檢視套件資料,例如版本管理和下載統計資訊。
透過此連結 https://dynamopackages.com/ 可以存取 Package Manager 網路用戶端
Dynamo 延伸可以部署到 Package Manager,就像一般 Dynamo 節點資源庫一樣。如果安裝的套件包含視圖延伸,在 Dynamo 載入的執行時期會載入該延伸。您可以查看 Dynamo 主控台,以確認延伸已正確載入。
延伸套件的結構與一般套件的結構相同,其中包含...
假設您已建置延伸,您 (至少) 會有一個 .NET 組合和一個資訊清單檔案。組合應包含實作 IViewExtension
或 IExtension
的類別。資訊清單 .XML 檔案會告訴 Dynamo 要實體化哪個類別,以啟動您的延伸。為了讓 Package Manager 能正確找到延伸,資訊清單檔案應準確對應組合位置和命名。
將任何組合檔放在 bin
資料夾中,將資訊清單檔案放在 extra
資料夾中。此資料夾中也可以放置任何其他資產。
範例資訊清單 .XML 檔案:
一旦您有包含上述子目錄的資料夾,即可推送 (上傳) 到 Package Manager。需要注意的一點是,您目前無法從 Dynamo Sandbox 發佈套件。這表示您需要使用 Dynamo Revit。在 Dynamo Revit 內瀏覽到「套件」=>「發佈新套件」。這會提示使用者登入要與套件關聯的 Autodesk 帳戶。
此時,您應該會在一般的發佈套件視窗中,您將在其中輸入有關套件/延伸的所有必要欄位。還有一個非常重要的額外步驟,您必須確保沒有任何組合檔被標記為節點資源庫。您可以在已匯入的檔案 (上面建立的套件資料夾) 上按一下右鍵確認。此時會顯示一個關聯式功能表,讓您勾選 (或取消勾選) 此選項。應取消勾選所有延伸組合。
在公開發佈之前,請您務必先在本端發佈,以確保所有內容都如預期般運作。確認之後,您就可以選取「發佈」讓套件上線。
若要確認套件已成功上傳,您應該能夠透過在發佈步驟指定的名稱和關鍵字搜尋到套件。最後,請務必注意,您需要重新啟動 Dynamo,相同的延伸才能正常運作。這些延伸通常需要指定 Dynamo 啟動時的參數。
如果您正在開發要發佈為 Dynamo 套件的組合,可以將專案規劃為群組所有必要資產,並將這些資產放在與套件相容的目錄結構中。這可讓專案以套件方式進行快速測試,並模擬使用者的體驗。
有兩種方法可以在 Visual Studio 中建置套件:
透過「專案設定」對話方塊,使用 xcopy 或 Python 指令碼複製必要檔案,加入建置後事件
在 .csproj
檔案中使用「AfterBuild」建置目標,來建立檔案和目錄複製工作
「AfterBuild」是這些類型作業 (以及本指南中介紹的作業) 的偏好方法,因為它不依賴在建置電腦上可能無法使用的檔案複製。
在儲存庫中設定目錄結構,讓原始碼檔案與套件檔案分開。使用 CustomNodeModel 案例研究,將 Visual Studio 專案及所有關聯的檔案放到新的 src
資料夾中。您將會在此資料夾中儲存專案產生的所有套件。資料夾結構現在應如下所示:
將專案檔移到新的
src
資料夾
由於原始碼檔案位於不同的資料夾,因此請在 Visual Studio 的 CustomNodeModel.csproj
檔案加入 AfterBuild
目標。這會將必要的檔案複製到新的套件資料夾中。在文字編輯器 (我們使用 Atom) 中開啟 CustomNodeModel.csproj
檔案,在 </Project>
結束標籤之前放置建置目標。此 AfterBuild 目標會將所有 .dll、.pbd、.xml 和 .config 檔案複製到新的 bin 資料夾中,並建立 dyf 和 extra 資料夾。
我們需要確保目標已加到
CustomNodeModel.csproj
檔案 (而不是另一個專案檔) 中,而且專案沒有任何既有的「建置後」設定。
在
</Project>
結束標籤前放置 AfterBuild 目標。
<ItemGroup>
區段中定義了許多變數來表示特定檔案類型。例如,Dll
變數表示輸出目錄中其副檔名為 .dll
的所有檔案。
Copy
工作是將所有 .dll
檔案複製到目錄,具體來說是要建置到的套件資料夾。
Dynamo 套件通常會有 dyf
和 extra
資料夾,分別給 Dynamo 自訂節點和其他資產 (例如影像) 使用。若要建立這些資料夾,我們需要使用 MakeDir
工作。如果資料夾不存在,此工作會建立一個。您可以手動將檔案加到此資料夾中。
如果您建置專案,現在專案資料夾在先前建立的 src
資料夾旁邊應該會有一個 packages
資料夾。packages
目錄內有一個資料夾,其中包含套件所需的所有內容。我們也需要將 pkg.json
檔案複製到套件資料夾,讓 Dynamo 知道要載入套件。
AfterBuild 目標建立的新套件資料夾
專案既有的 src 資料夾
從 AfterBuild 目標建立的
dyf
和extra
資料夾手動複製
pkg.json
檔案。
現在,您可以使用 Dynamo 的 Package Manager 發佈套件,或直接將套件複製到 Dynamo 的套件目錄:<user>\AppData\Roaming\Dynamo\1.3\packages
。