Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
自訂節點的構成方式是在「Dynamo 自訂節點」中嵌套其他節點和自訂節點, 我們可以將「Dynamo 自訂節點」從概念上理解為容器。當在圖中執行此容器節點時,將執行其所有內部節點以允許您重複使用和共用一個有用的節點。
當您在圖中有多個自訂節點副本時,您可以透過編輯基礎自訂節點來更新所有副本。這容許您透過採用工作流程或設計中可能發生的任何變更來順暢地更新您的圖形。
雖然有爭議,但是一般認為自訂節點的最佳功能是其工作共用功能。如果「經驗豐富的使用者」建立了複雜的 Dynamo 圖形,並將其傳遞給不太熟悉 Dynamo 的新使用者,則他/她可壓縮圖形為最基本的內容以進行設計互動。可開啟自訂節點以編輯內部圖形,但「容器」可以保持簡單。使用此程序,自訂節點允許 Dynamo 使用者設計簡潔、直觀的圖表。
有多種方法可在 Dynamo 中建置自訂節點。在本章的範例中,我們將直接從 Dynamo 使用者介面建立自訂節點。如果您是程式設計人員且您對 C# 或「零接觸」格式感興趣,您可以參考 Dynamo Wiki 上的這一頁做更深入的瞭解。
讓我們跳至自訂節點環境,並建立一個簡單的節點來計算百分比。自訂節點環境不同於 Dynamo 圖形環境,但其互動根本相同。在此基礎上,讓我們建立第一個自訂節點!
若要從頭開始建立自訂節點,請啟動 Dynamo,然後選取「自訂節點」,或在圖元區鍵入 Ctrl + Shift + N。
在「自訂節點性質」對話方塊中指定名稱、描述和品類。
名稱: Percentage
描述:計算一個值相對於另一個值的百分比。
品類: Math.Functions
這將開啟一個具有黃色背景的圖元區,表示您正在自訂節點內工作。在此畫布上,您可以存取所有核心 Dynamo 節點,以及 Input 和 Output 節點,其標示資料流進和流出自訂節點。您可以在「Input」>「Basic」中找到它們。
Input: Input 節點在自訂節點上建立輸入埠。Input 節點的語法為 input_name : datatype = default_value(選擇性)。
Output: 類似於 Input,將在自訂節點上建立和命名輸出埠。請考慮對輸入埠和輸出埠新增自訂註解,以提示輸入和輸出類型。在建立自訂節點一節將會更詳細討論此問題。
您可以將此自訂節點儲存為 .dyf (而非標準 .dyn) 檔案,它將會自動新增至您的階段作業和將來的階段作業中。您將在資源庫的「Add-ons」區段中找到自訂節點。
現在,我們建立了第一個自訂節點,下一部分將深入瞭解自訂節點功能以及如何發佈一般工作流程。在以下部分中,我們將瞭解如何開發可將幾何圖形從一個平面轉移至另一個平面的自訂節點。
建立一些自訂節點後,下一步是以套件方式開始組織和發佈它們 - 這是一個很便利的方式來儲存您的節點並與 Dynamo 社群分享。
Dynamo 為廣泛的視覺程式設計任務提供許多核心節點。有時,一個更快、更有序或更輕鬆的共享解決方法是建置您自己的節點。這些節點可以在不同專案中重複使用,讓您的圖表更清楚整潔,這些節點也可以推送至 Package Manager 並與全球的 Dynamo 社群分享。
Dynamo 在其節點庫中儲存了許多開箱即用的功能。對於這些經常使用的常式或要與社群共用的特殊圖表,自訂節點和套件是進一步延伸 Dynamo 很好的方式。
Dynamo 提供自訂節點的多種不同建立方法。您可以從頭開始建置自訂節點、從既有圖表建置自訂節點,或使用 C# 明確建置自訂節點。在本節中,我們將討論在 Dynamo 使用者介面內透過既有圖表建置自訂節點。此方法非常適用於清理工作區,以及封裝一系列節點以供在其他位置重複使用。
在以下影像中,我們將使用 UV 座標在曲面之間對映點。我們將使用此概念建立對 XY 平面中的曲線進行參考的面板化曲面。在此,我們將建立四邊形面板以進行面板化,但運用相同邏輯,我們可以使用 UV 對映建立多種面板。這是開發自訂節點的好機會,因為我們在此圖表或在其他 Dynamo 工作流程中,可以更輕鬆地重複使用類似程序。
按一下下方的連結下載範例檔案。
附錄中提供範例檔案的完整清單。
接下來先建立我們希望巢狀插入到自訂節點中的圖表。在此範例中,我們將建立使用 UV 座標將多邊形從基準曲面對映至目標曲面的圖表。我們會經常使用此 UV 對映程序,因此該程序是建立自訂節點的良好備用程序。如需曲面和 UV 空間的更多資訊,請參閱曲面頁面。從上面下載的 .zip 檔案中,完整的圖表為 UVmapping_Custom-Node.dyn。
Code Block: 使用此行建立範圍介於 -45 到 45 之間的 10 個數字
45..45..#10;
Point.ByCoordinates: 將 Code Block 的輸出連接至「x」與「y」輸入,並將交織設定為交互參考。現在應該已建立點的格線。
Plane.ByOriginNormal: 將 Point 輸出連接至 origin 輸入,以便在每個點處建立平面。將使用預設的法線向量 (0,0,1)。
Rectangle.ByWidthLength: 將上一步中的平面連接至 plane 輸入,並使用 Code Block 以值 10 指定寬度與長度。
現在應該能看到矩形的格線。接下來使用 UV 座標將這些矩形對映到目標曲面。
Polygon.Points: 將上一步中的 Rectangle.ByWidthLength 輸出連接至 polygon 輸入,以擷取每個矩形的角點。這些是將要對映到目標曲面的點。
Rectangle.ByWidthLength: 使用 Code Block 以值 100 指定矩形的長度與寬度。這將是基準曲面的邊界。
Surface.ByPatch: 將上一步中的 Rectangle.ByWidthLength 連接至 closedCurve 輸入,以建立基準曲面。
Surface.UVParameterAtPoint: 連接 Polygon.Points 節點的 Point 輸出與 Surface.ByPatch 節點的 Surface 輸出,以傳回每個點處的 UV 參數。
現在,我們已建立基準曲面與一組 UV 座標,可以匯入目標曲面並在曲面之間對映點。
File Path: 選取要匯入的曲面的檔案路徑。檔案類型應是 .SAT。按一下 「瀏覽...」 按鈕,導覽至上面所下載 .zip 檔案中的 UVmapping_srf.sat 檔案。
Geometry.ImportFromSAT: 連接檔案路徑以匯入曲面。您在幾何圖形預覽中應該能看到匯入的曲面。
UV: 將 UV 參數輸出連接至 UV.U 與 UV.V 節點。
Surface.PointAtParameter: 連接匯入的曲面以及 u 與 v 座標。現在,您應該能看到目標曲面上 3D 點的格線。
最後一步是使用 3D 點來建構矩形曲面修補。
PolyCurve.ByPoints: 連接曲面上的點以建構通過這些點的 PolyCurve。
Boolean: 在工作區中加入 Boolean,將其連接至 connectLastToFirst 輸入,並切換至「True」以封閉 polycurve。現在,您應該能看到對映到曲面的矩形。
Surface.ByPatch: 將 polycurve 連接至 closedCurve 輸入,以建構曲面修補。
現在選取要巢狀插入至自訂節點的節點,同時考慮希望採用的節點輸入與輸出。我們希望自訂節點盡可能靈活,因此該自訂節點應該能對映任何多邊形,而不僅僅是矩形。
選取以下節點 (從 Polygon.Points 開始),在工作區上按一下右鍵,然後選取「建立自訂節點」。
在「自訂節點性質」對話方塊中,指定自訂節點的名稱、描述及品類。
名稱:MapPolygonsToSurface
描述:將多邊形從基礎曲面對映至目標曲面
附加元件品類:Geometry.Curve
自訂節點已顯著清理工作區。請注意,已根據原始節點命名輸入與輸出。接下來編輯自訂節點,以便讓名稱更具描述性。
按兩下「自訂節點」以對其進行編輯。這將開啟工作區,並以黃色背景表示節點內部。
Input: 將輸入名稱變更為 baseSurface 與 targetSurface。
Output: 為對映的多邊形加入其他輸出。
儲存自訂節點,然後返回首頁工作區。請注意 MapPolygonsToSurface 節點反映我們剛剛所做的變更。
我們也可以在自訂註解中加入內容,以提高自訂節點的堅實性。註解有助於提示輸入與輸出類型,或說明節點的功能。使用者將游標懸停在自訂節點的輸入或輸出上方時,將顯示註釋。
按兩下「自訂節點」以對其進行編輯。這會重新開啟黃色背景工作區。
開始編輯 Input Code Block。若要開始註解,請在註解文字之前鍵入「//」。鍵入有助於說明節點的任何內容 - 在此我們將描述 targetSurface。
接下來還要設定輸入類型等於某個值,以設定 inputSurface 的預設值。在此,我們將預設值設定為原始 Surface.ByPatch 設定。
也可以將註解套用到 Output。
編輯 Output Code Block 中的文字。在註解文字前鍵入「//」。在此,我們將加入更深入的描述,以說明 Polygons 與 surfacePatches 輸出。
將游標懸停在自訂節點輸入上方可查看註解。
設定 inputSurface 的預設值後,我們也可以執行定義,而不提供曲面輸入。
我們剛剛建立了自訂節點並將其套用至 Dynamo 圖形中的特定程序。我們非常喜歡此節點,因此,我們要將其保留在我們的 Dynamo 資源庫以在其他圖形中進行參考。若要執行此作業,我們將在本端發佈此節點。此程序與發佈套件的程序類似,我們將在下一個章節中進行詳細討論。
透過在本端發佈節點,當您開啟一個新的階段作業時該節點將可在 Dynamo 資源庫中存取。如果不發佈節點,參照自訂節點的 Dynamo 圖表也必須在其資料夾中具有該自訂節點 (或必須使用 「檔案」>「匯入資源庫」 將自訂節點匯入 Dynamo 中)。
在 Dynamo Sandbox 2.17 版及更新版本中,只要自訂節點和套件沒有主 API 相依性,即可加以發佈。在較舊版中,只有 Dynamo for Revit 和 Dynamo for Civil 3D 中可發佈自訂節點和套件。
按一下下方的連結下載範例檔案。
附錄中提供範例檔案的完整清單。
讓我們繼續瞭解在前一個部份中建立的自訂節點。開啟 PointsToSurface 自訂節點後,我們會在 Dynamo 自訂節點編輯器中看到圖表。您也可以在「Dynamo 圖表編輯器」中按兩下自訂節點來開啟。
若要在本端發佈自訂節點,只需在圖元區上按一下右鍵,然後選取 「發佈此自訂節點...」
參照上圖填寫相關資訊,並選取 「本端發佈」。請注意,「群組」欄位定義可從 Dynamo 功能表存取的主要元素。
選擇資料夾,以容納所有您打算在本端發佈的自訂節點。Dynamo 每次載入時都會檢查此資料夾,因此請確認該資料夾位於固定位置。導覽至此資料夾,然後選擇 「選擇資料夾」。Dynamo 節點現已在本端發佈,每次您載入程式時,該節點都會在您的 Dynamo 資源庫中!
若要查看自訂節點的資料夾位置,請前往 「Dynamo」>「偏好」>「套件設定」>「節點和套件路徑」。
在此視窗中,我們看到路徑清單。
Documents\DynamoCustomNodes... 是本端發佈之自訂節點的位置。
AppData\Roaming\Dynamo... 是線上安裝的 Dynamo 套件的預設位置。
您可能想要在清單中將本端資料夾路徑的順序下移,只要按一下路徑名稱左側的向下箭頭即可。頂層資料夾是套件安裝的預設路徑。因此,透過將預設 Dynamo 套件安裝路徑保留為預設資料夾,線上套件將與本端發佈的節點分離。
我們已切換路徑名稱的順序,以將 Dynamo 的預設路徑作為套件的安裝位置。
導覽至此本端資料夾,我們可以在 「.dyf」 資料夾中找到原始自訂節點,.dyf 是 Dynamo 自訂節點檔案的副檔名。我們可以編輯此資料夾中的檔案,節點將在使用者介面中更新。我們還可以新增更多節點至主要的 DynamoCustomNode 資料夾,Dynamo 會在重新啟動時將其新增到您的資源庫!
Dynamo 現在每次都會將「PointsToSurface」載入到 Dynamo 資源庫的「DynamoPrimer」群組中。
在先前各節中,我們詳細瞭解了如何使用自訂節點與範例檔案設置 MapToSurface 套件。但是,如何發佈已在本端開發的套件呢?此案例研究將示範如何從本端資料夾的一組檔案發佈套件。
有許多方式可以發佈套件。以下是建議的程序:本端發佈、本端開發,然後線上發佈。我們從包含套件中所有檔案的資料夾開始。
在對發佈 MapToSurface 套件進行瞭解之前,若您已在上一課程中安裝該套件,請將其解除安裝,以便不會使用相同的套件。
首先,請前往「套件」>「套件管理員」>「已安裝的套件」頁籤,然後按一下「MapToSurface」旁的垂直圓點功能表 >「刪除」。
然後重新啟動 Dynamo。重新開啟後,若查看 「管理套件」 視窗,會發現其中應該不再包含 MapToSurface。現在我們準備好重新開始!
在 Dynamo Sandbox 2.17 版及更新版本中,只要自訂節點和套件沒有主 API 相依性,即可加以發佈。在較舊版中,只有 Dynamo for Revit 和 Dynamo for Civil 3D 中可發佈自訂節點和套件。
在下方的連結按一下,下載範例檔案。
附錄中提供完整的範例檔案清單。
這是為套件首次提交的檔案,我們已將所有範例檔案與自訂節點置於一個資料夾中。準備好此資料夾後,我們就準備好上傳到 Dynamo Package Manager。
此資料夾包含五個自訂節點 (.dyf)。
此資料夾還包含五個範例檔案 (.dyn) 與一個匯入的向量檔案 (.svg)。這些檔案將作為介紹練習,用以向使用者示範如何使用自訂節點。
在 Dynamo 中,首先按一下 「套件」>「Package Manager」>「發佈新套件」 頁籤。
在 「發佈套件」 頁籤中,填寫視窗左側的相關欄位。
接下來,我們將加入套件檔案。您可以選取「加入目錄」(1),逐個加入檔案,或加入整個資料夾。若要加入非 .dyf 的檔案,請務必在瀏覽器視窗中將檔案類型變更為 「所有檔案 (.)」。請注意,我們會加入所有檔案,不會區分該檔案是自訂節點檔案 (.dyf) 或範例檔案 (.dyn)。發佈套件時,Dynamo 會將這些項目分類。
選取 MapToSurface 資料夾後,Package Manager 會顯示資料夾內容。如果您上傳您自己的套件,且套件的資料夾結構複雜,而您不希望 Dynamo 變更資料夾結構,則可以啟用「保留資料夾結構」切換開關。此選項適用於進階使用者,如果您的套件並非以特定方式刻意設定,最好不要開啟此切換開關,讓 Dynamo 視需要組織檔案。按一下「下一步」以繼續。
發佈前,您可以在這裡預覽 Dynamo 組織套件檔案的方式。按一下「完成」以繼續。
按一下「本端發佈」(1)來進行發佈。若您跟著這裡的說明操作,請確定您按的是 「本端發佈」,而不是 「線上發佈」,避免 Package Manager 中有多個重複的套件。
發佈後,在「DynamoPrimer」群組或 Dynamo 資源庫下應該會顯示自訂節點。
現在,我們看一下根目錄,以瞭解 Dynamo 如何格式化我們剛剛建立的套件。前往「已安裝的套件」頁籤 > 按一下「MapToSurface」旁的垂直圓點功能表 > 選取「展示根目錄」,即可查看根目錄。
請注意,根目錄位於套件的本端位置 (請記住,我們在「本端」發佈套件)。Dynamo 目前參考此資料夾以讀取自訂節點。因此,請務必使用本端發佈功能,將資料夾發佈到永久的資料夾位置 (即不是您的桌面)。以下將分解講述 Dynamo 套件資料夾。
bin 資料夾包含使用 C# 或 Zero-Touch 資源庫建立的 .dll 檔案。我們沒有為此套件建立任何內容,所以此範例的此資料夾為空白。
dyf 資料夾包含自訂節點。開啟此資料夾將顯示此套件的所有自訂節點 (.dyf 檔案)。
extra 資料夾包含所有其他檔案。這些檔案可能是 Dynamo 檔案 (.dyn),也可能是所需的任何其他檔案 (.svg、.xls、.jpeg、.sat 等)。
pkg 檔案是定義套件設定的基本文字檔案。它是 Dynamo 中自動建立的檔案,但是如果您希望取得詳細資料,可以編輯該檔案。
注意:除非您要真的發佈自己的套件,否則請勿繼續執行此步驟!
準備好發佈後,在「套件」>「Package Manager」>「已安裝的套件」視窗中,選取要發佈之套件右側的按鈕,然後選擇「發佈」。
如果您要更新已發佈的套件,請選擇「發佈版本」,Dynamo 將根據該套件根目錄中的新檔案,線上更新您的套件。非常簡單!
若要更新已發佈套件根資料夾中的檔案,您也可以在 「我的套件」 頁籤中選取 「發佈版本...」,以發佈新版本的套件。這是一個很順暢的方式,可以對內容進行必要更新以及與社群分享。只有當您是套件的維護者時,才能使用 「發佈版本」。
Dynamo Mesh Toolkit 可提供工具,以匯入外部檔案格式的網格、根據 Dynamo 幾何圖形物件建立網格,並根據網格的頂點與索引手動建置網格。資源庫還提供工具來修改網格、修復網格,或萃取水平切片,以用於加工。
Dynamo Mesh Toolkit 是 Autodesk 持續進行網格研究的一部分,因此在未來的幾年將繼續成長。該工具箱將頻繁推出新方法,請隨時與 Dynamo 團隊聯繫以提供註解、錯誤以及新功能的建議。
在 Dynamo 中,前往頂部功能表列中的「套件」>「Package Manager...」。在搜尋欄位中,鍵入 MeshToolkit (全部一個字,無空格)。按一下「安裝」,系統請您確認時,請接受,即可開始下載。非常簡單!
按一下下方的連結下載範例檔案。
附錄中提供完整的範例檔案清單。
在此範例中,我們將瞭解 Mesh Toolkit 的 Intersect 節點。我們將匯入網格並將其與一系列輸入平面相交以建立切片。這是準備模型以使用鐳射切割、水刀切割或數控機床進行加工的起點。
首先,在 Dynamo 中開啟 Mesh-Toolkit_Intersect-Mesh.dyn。
檔案路徑: 找到要匯入的網格檔案 (stanford_bunny_tri.obj)。支援的檔案類型為 .mix 和 .obj
Mesh.ImportFile: 連接檔案路徑以匯入網格
Point.ByCoordinates: 建構一個點 - 這將是弧的中心。
Arc.ByCenterPointRadiusAngle: 在該點週圍建構一個弧。這條曲線將用來定位一系列平面。 __設定如下: __
radius: 40, startAngle: -90, endAngle:0
建立一系列沿著弧轉向的平面。
Code Block:建立 25 個介於 0 和 1 之間的數字。
Curve.PointAtParameter: 將弧連接到 curve 輸入並將 Code Block 輸出連接至 param 輸入以擷取出一系列沿著曲線的點。
Curve.TangentAtParameter: 連接與前一個節點相同的輸入。
Plane.ByOriginNormal: 將點連接至 origin 輸入並將 vector 連接至 normal 輸入,在每個點建立一系列平面。
接下來,我們將使用這些平面與網格相交。
Mesh.Intersect: 將這些平面與匯入的網格相交,建立一系列 PolyCurve 輪廓線。在節點上按一下右鍵,並將交織設定為最長
PolyCurve.Curves: 將 PolyCurve 切斷為曲線段。
Curve.EndPoint: 擷取每條曲線的端點。
NurbsCurve.ByPoints: 使用點來建構 NURBS 曲線。使用設定為 True 的 Boolean 節點,以封閉曲線。
在繼續之前,請關閉某些節點 (例如:Mesh.ImportFile、Curve.EndPoint、Plane.ByOriginNormal 以及 Arc.ByCenterPointRadiusAngle) 的預覽,以更清楚地查看結果。
Surface.ByPatch: 為每條輪廓線建構曲面修補,以便建立網格的「切片」。
新增第二組切片,產生格子/蛋盒的效果。
您可能會發現與一個差不多的實體相比,網格相交作業的計算速度更快。例如本練習中示範的工作流程非常適合用於網格。
下面的練習演示了使用 Mesh Toolkit 可執行的一些基本網格作業。在此練習中,我們將網格與一系列的平面相交,如果使用實體執行此作業,則運算成本很高。與實體不同,網格具有一組「解析度」,不以數學方式定義,而是以拓樸方式定義,我們可根據要執行的作業來定義此解析度。有關網格與實體關係的詳細資訊,您可以參考此手冊的一章。有關 Mesh Toolkit 的更詳細資訊,您可以參考 。我們利用下面的練習來瞭解此套件。