Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
編輯文件的參數將遵循先前諸節學習的課程。在本節中,我們將瞭解編輯參數,這些參數不會影響元素的幾何性質,而是會準備供記錄的 Revit 檔案。
在以下練習中,我們將使用平面節點的基本偏差,以建立供記錄的 Revit 圖紙。在以參數式方式定義的屋頂結構上,每個面板都有不同的偏差值,我們希望使用顏色以及安排自適應點來指定值的範圍,以便交給正面顧問、工程師或承包商。
平面節點的偏差將計算一組四個點與各點之間最佳擬合平面的距離。這是快速輕鬆的建構研究方式。
按一下下方的連結下載範例檔案。
附錄中提供範例檔案的完整清單。
從本節的 Revit 檔案開始 (或繼續使用上一節課的檔案)。此檔案的屋頂上具有一系列 ETFE 面板。我們在此練習中會參考這些面板。
在圖元區加入 Family Types 節點,然後選擇 「ROOF-PANEL-4PT」。
將此節點插入 All Elements of Family Type 節點,以便將 Revit 的所有元素匯入 Dynamo。
使用 AdaptiveComponent.Locations 節點查詢每個元件的自適應點位置。
使用 Polygon.ByPoints 節點從這四點建立多邊形。請注意,現在我們已在 Dynamo 中建立抽象版本的面板化系統,而無需匯入 Revit 元素的完整幾何圖形。
使用 Polygon.PlaneDeviation 節點計算平面偏差。
就像上一個練習一樣,只是為了好玩,接下來我們根據平面偏差設定每個面板的孔徑比。
在圖元區加入 Element.SetParameterByName 節點,並將自適應元件連接至 element 輸入。將名為 「Aperture Ratio」 的 Code Block 連接至 parameterName 輸入。
我們無法將偏差結果直接連接至值輸入,因為需要將值重新對映到參數範圍。
使用 Math.RemapRange,透過在 Code Block 中輸入
0.15; 0.45;
,將偏差值重新對映到從 0.15 到 0.45 之間的範圍。將這些結果重新插入 Element.SetParameterByName 的 value 輸入。
回到 Revit,我們會 稍微 理解曲面上孔徑的變更。
拉近時,可以更清晰地看到封閉面板向曲面的轉角加重。開放轉角朝向頂部。轉角代表偏差較大的區域,而凸度具有最小的曲率,因此這合乎邏輯。
設定孔徑比不會清楚展示屋頂上面板的偏差,我們還要變更實際元素的幾何圖形。假設我們只希望從製造可行性的觀點研究偏差。根據記錄的偏差範圍對面板上色會很有幫助。我們可以透過以下一系列步驟,採用與上述步驟非常相似的程序來達成。
移除 Element.SetParameterByName 及其輸入節點,並加入 Element.OverrideColorInView。
在圖元區加入 Color Range 節點,並插入 Element.OverrideColorInView 的 color 輸入。我們仍必須將偏差值連接至顏色範圍,以建立漸層。
將游標懸停在 value 輸入上,我們可以看到輸入的值必須介於 0 與 1 之間,才能將顏色對映至每個值。我們需要將偏差值重新對映到此範圍。
使用 Math.RemapRange,將平面偏差值重新對映到從 0 到 1 之間的範圍 (注意:您也可以使用 MapTo 節點來定義來源範圍)。
將結果插入 Color Range 節點。
請注意,我們的輸出是一系列顏色,而不是一系列數字。
如果您要設定為「手動」,請按一下 「執行」 。從現在起,您應該能設定為「自動」。
返回 Revit,我們可以看到更清晰的漸層,該漸層根據顏色範圍表示平面偏差。如果我們希望自訂顏色會怎樣呢?請注意,最小偏差值以紅色表示,這似乎與我們的預期相反。我們希望以紅色表示最大偏差,以更冷的顏色表示最小偏差。接下來回到 Dynamo 並修正此問題。
使用 Code Block,在不同的兩行程式碼中加入兩個數字:
0;
與255;
。將適合的值插入兩個 Color.ByARGB 節點,以建立紅色與藍色。
使用這兩種顏色建立清單。
將此清單插入 Color Range 的 colors 輸入,然後查看自訂顏色範圍更新。
回到 Revit,現在我們可以更深刻理解轉角的最大偏差區域。請記住,此節點用於在視圖中取代顏色,因此如果一組圖面中包含著重於特定類型分析的特定圖紙,該節點會很有幫助。
在 Revit 中選取一個 ETFE 面板,我們可以看到有四個實體參數,分別是 XYZ1、XYZ2、XYZ3 與 XYZ4。這些參數在建立之後都是空白的。這些是需要值的文字參數。我們將使用 Dynamo 將自適應點位置寫入每個參數。這有助於在需要將幾何圖形傳送給正面顧問的工程師時實現互通性。
在範例圖紙中,我們建立了一個很大的空白明細表。XYZ 參數是 Revit 檔案中的共用參數,我們可藉此將其加入明細表中。
拉近,XYZ 參數都尚未填寫。前兩個參數由 Revit 負責。
為了寫入這些值,我們將執行複雜的清單作業。圖表本身很簡單,但概念很大程度上依賴於〈清單〉一章中討論的清單對映。
使用兩個節點選取所有自適應元件。
使用 AdaptiveComponent.Locations 擷取每個點的位置。
將這些點轉換為字串。請記住,該參數是文字參數,因此我們需要輸入正確的資料類型。
建立包含四個字串的清單,這四個字串定義要變更的參數:XYZ1、XYZ2、XYZ3 與 XYZ4。
將此清單插入 Element.SetParameterByName 的 parameterName 輸入。
將 Element.SetParameterByName 連接至 List.Combine 的 combinator 輸入。將 adaptive components 連接至 list1。將物件的 String 連接至 list2。
我們在此列出對映,因為要為每個元素寫入四個值,這會建立複雜的資料結構。List.Combine 節點會定義資料階層中下一層級的作業。這是為什麼 Element.SetParameterByName 的 element 和 value 輸入皆留空。List.Combine 會根據連接順序,將其輸入的子清單連接至 Element.SetParameterByName 的空白輸入。
在 Revit 中選取面板,現在我們可以看到每個參數都具有字串值。實際上,我們可以建立更簡單的點 (X,Y,Z) 寫入格式。在 Dynamo 中使用字串作業即可實現該功能,但這裡我們略過此內容,而繼續討論本章內容。
已填寫參數的範例明細表視圖。
現在,每個 ETFE 面板都具有針對每個自適應點而寫入的 XYZ 座標,表示用於製作的每個面板的轉角。
在參數層級編輯參數是 Dynamo 的一項強大功能。例如,高生產力的演算法或模擬結果可用於驅動該元素陣列的參數。如此一來,同一族群的一組實體在您的 Revit 專案中就可以有自訂性質。
實體參數定義屋頂曲面上的嵌板孔徑,開口率的範圍是 0.1 至 0.4。
以類型為基礎的參數將套用到曲面上的每個元素,因為它們的族群類型相同。例如,每片嵌板的材料可以由以類型為基礎的參數驅動。
如果您先前已設置 Revit 族群,請記住,必須指定參數類型 (字串、數字、標註等)。 從 Dynamo 指定參數時,請確保使用正確的資料類型。
您也可以搭配使用 Dynamo 與 Revit 族群性質中定義的參數式約束。
做為在 Revit 中對參數的快速檢閱,我們還記得存在類型參數與實體參數。兩者都可以在 Dynamo 中進行編輯,但我們在以下練習中將使用實體參數。
在探索編輯參數的廣泛應用時,您可能希望在 Revit 中使用 Dynamo 編輯大量元素。這是_運算量極大的_作業,即作業可能很慢。若您要編輯大量元素,可能需要在開發圖表時,使用「凍結」節點功能以暫停執行 Revit 作業。如需有關凍結節點的更多資訊,請參閱〈實體〉一章中的凍結一節。
自 0.8 版起,Dynamo 基本上不使用單位。Dynamo 藉此可保持抽象的視覺程式設計環境。與 Revit 標註互動的 Dynamo 節點將參考 Revit 專案的單位。例如,若您在 Dynamo 中設定 Revit 中的長度參數,則在 Dynamo 中該值的數字將對應於 Revit 專案中的預設單位。以下的練習以公尺為單位。
為了快速轉換單位,我們使用 「Convert Between Units」 節點。此工具使用方便,可即時轉換長度、面積與體積單位。
按一下下方的連結下載範例檔案。
附錄中提供完整的範例檔案清單。
以下的練習以公尺為單位。
此練習的重點是在 Dynamo 中編輯 Revit 元素而不執行幾何作業。在此我們不匯入 Dynamo 幾何圖形,只編輯 Revit 專案中的參數。此練習是基本練習,對於更高級的 Revit 使用者,請注意這些是量體的實體參數,但可以將相同的邏輯套用至元素陣列,以實現大規模的自訂。僅使用「Element.SetParameterByName」節點即可完成此練習。
先從本節的範例 Revit 檔案開始。我們已移除上一節的結構元素與自適應桁架。在本練習中,我們將重點瞭解 Revit 中的參數式骨架以及 Dynamo 中的操控。
在 Revit 的量體中選取建築,我們將在性質面板中看到實體參數的陣列。
在 Dynamo 中,我們可以選取目標元素來擷取參數。
使用 「Select Model Element」 節點選取建築量體。
使用 「Element.Parameters」 節點,我們可以查詢此量體的所有參數。這包括類型參數與實體參數。
參考 Element.Parameters 節點,以尋找目標參數。或者,我們可以檢視上一步的性質面板,以選擇希望編輯的的參數名稱。在此案例中,我們將尋找對建築量體上的大型幾何移動有影響的參數。
我們將使用 Element.SetParameterByName 節點變更 Revit 元素
使用 Code Block 定義參數清單,每個項目周圍加上引號以表示是一個字串。我們也可以使用 List.Create 節點,搭配一系列 「字串」 節點連接至多個輸入,但使用 Code Block 更快、更輕鬆。請確保字串與 Revit 中的名稱完全相符 (包含大小寫):
{"BldgWidth","BldgLength","BldgHeight", "AtriumOffset", "InsideOffset","LiftUp"};
我們還希望指定每個參數的值。在圖元區中加入六個 「Integer Slider」 ,並更名為清單中的對應參數。此外,按照以上影像設定每個滑棒的值。從上到下依序為:62、92、25、22、8、12
使用與參數名稱具有相同長度的清單定義另一個 Code Block。在此案例中,我們命名的變數 (沒有引號) 會建立 Code Block 的輸入。將 滑棒 插入每個各自的輸入:
{bw,bl,bh,ao,io,lu};
將 Code Block 連接至 「Element.SetParameterByName」* 值輸入。勾選「自動執行」後,我們會自動看到結果。
*此示範使用實體參數,而不是類型參數。
正如在 Revit 中一樣,其中許多參數彼此依賴。當然,存在可能導致幾何圖形中斷的組合。我們可以使用參數性質中定義的公式來解決此問題,也可以使用 Dynamo 中的數學運算來設置類似邏輯 (如果您希望在此練習基礎上進行拓展,這是另一項難題)。
此組合會為建築量體產生很酷的新設計:100、92、100、25、13、51
接下來,我們來看看如何使用類似流程編輯正面。
複製圖表,然後著重瞭解容納桁架系統的正面釉面玻璃。在此範例中,我們隔離四個參數:
{"DblSkin_SouthOffset","DblSkin_MidOffset","DblSkin_NorthOffset","Facade Bend Location"};
此外,我們將建立 Number Slider,並將其更名為適當的參數。前三個滑棒從上到下應重新對映至範圍 [0,10],而最後一個滑棒 「Facade Bend Location」 應重新對映至範圍 [0,1]。這些值從上到下在開始時應採用以下值 (雖然這些是隨機值):2.68、2.64、2.29、0.5
定義新的 Code Block 並連接滑棒:
{so,mo,no,fbl};
透過變更此部分圖表中的 滑棒,我們可以大幅提升正面釉面玻璃的重要性:9.98、10.0、9.71、0.31
Revit 是資料豐富的環境。這能為我們提供許多選取功能,而不僅僅是「點選」。我們可以查詢 Revit 資料庫,並將 Revit 元素動態連結至 Dynamo 幾何圖形,同時執行參數式作業。
使用者介面中的 Revit 資源庫提供「Selection」品類,藉此可採用許多方式選取幾何圖形。
若要正確選取 Revit 元素,請務必全面理解 Revit 元素階層。要選取專案中所有的牆嗎?請依品類選取。要選取中世紀現代大廳中的每把 Eames 椅子嗎?請依族群選取。
我們來快速複習 Revit 階層。
記得生物學的分類法嗎?界、門、綱、目、科、屬、種?Revit 元素的分類方式與此類似。在基本層級,可將 Revit 階層分為不同的品類、族群、類型*及例證。例證是個別模型元素 (具有唯一的 ID),而品類可定義一般群組 (例如「牆」或「地板」)。以此方式組織 Revit 資料庫後,我們可以選取一個元素,然後根據階層中的指定層級選擇所有類似元素。
*Revit 中類型的定義與程式設計中的類型不同。在 Revit 中,類型是指階層的分支,而非「資料類型」。
以下三個影像分別展示了 Dynamo 中 Revit 元素選取的主要品類。這些工具十分適合互相搭配使用,在後續練習中會研究其中部分工具。
點選 是直接選取 Revit 元素最簡單的方式。您可以選取完整的模型元素,也可以選取其拓樸的一部分 (例如一個面或一條邊)。這會與該 Revit 物件保持動態連結,因此在 Revit 檔案更新其位置或參數時,參考的 Dynamo 元素在圖表中也將更新。
下拉式功能表 會建立 Revit 專案中所有可存取元素的清單。您可以使用下拉式功能表參考視圖中不一定可見的 Revit 元素。這是非常強大的工具,可用於在 Revit 專案或族群編輯器中查詢既有元素或建立新元素。
![](../.gitbook/assets/selecting _database_navigation_with_dynamo_nodes_02.png)
您也可以依 _Revit 階層_中的特定層級選取 Revit 元素。這是一個功能強大的選項,可自訂大型資料陣列,以準備進行記錄或生產實體化及客製化。
記住以上三個影像,接下來深入練習,練習會選取基本 Revit 專案中的元素,為我們將在本章其餘各節建立的參數式應用程式做好準備。
在下方的連結按一下,下載範例檔案。
附錄中提供完整的範例檔案清單。
在此範例 Revit 檔案中,包含一個簡單建築的三種元素類型。我們會以此為例,在 Revit 階層的環境中選取 Revit 元素。
建築量體
樑 (結構框架)
桁架 (自適應元件)
根據 Revit 專案視圖中目前存在的元素,我們可以做出哪些結論?若要選取適當的元素,我們需要在階層中下移多遠?處理大型專案時,這無疑會變為更複雜的工作。有許多選項可供使用,選取元素時可依據品類、層級、族群、例證等。
由於我們使用基本設置,因此我們在「Categories」下拉式節點中選擇 「Mass」 來選取建築量體。您可以在「Revit」>「Selection」頁籤中找到。
「Mass」品類的輸出是品類自身。我們需要選取元素。為了執行此作業,我們使用 All Elements of Category 節點。
此時請注意,我們在 Dynamo 中看不到任何幾何圖形。我們已選取 Revit 元素,但尚未將該元素轉換為 Dynamo 幾何圖形。這是重要的區分。選取大量元素時,不建議在 Dynamo 中預覽所有元素,因為這樣會拖慢所有作業的速度。Dynamo 這個工具無需執行幾何運算,即可管理 Revit 專案。本章的下一節會進一步說明該功能。
在此案例中,我們將使用簡單的幾何圖形,因此希望將幾何圖形引入 Dynamo 預覽。上面 Watch 節點中的「BldgMass」旁有一個綠色數字。這代表該元素的 ID,可看出我們目前在處理 Revit 元素,而不是 Dynamo 幾何圖形。下一步是將此 Revit 元素轉換為 Dynamo 中的幾何圖形。
使用 Element.Faces 節點,可取得一份曲面清單,代表 Revit 量體的每一個面。我們現在可以在 Dynamo 視埠中看到幾何圖形,可以開始參考用於參數式作業的面。
以下是替代方法。在此案例中,我們不是透過 Revit 階層選取 (「All Elements of Category」),而是選擇在 Revit 中明確選取幾何圖形。
使用 Select Model Element 節點,按一下「選取」(或 「變更」) 按鈕。在 Revit 視埠中,選取所需的元素。在此案例中,我們將選取建築量體,
我們可以使用 Element.Geometry 選取完整量體作為一個實體幾何圖形,而非 Element.Faces。這會選取該量體內包含的所有幾何圖形。
我們可以使用 Geometry.Explode 再次得到曲面清單。這兩個節點的運作方式與 Element.Faces 相同,但是提供其他選項用於探究 Revit 元素的幾何圖形。
使用一些基本清單作業,我們可以查詢感興趣的面。
首先,將前面選取的元素輸出至 Element.Faces 節點。
接著,使用 List.Count 節點顯示出我們正在處理量體中的 23 個曲面。
參考此數量,我們將 Integer Slider 的最大值變更為 「22」 。
使用 List.GetItemAtIndex,我們輸入清單和 Integer Slider 以提供 index。在選取的值之間滑動,到達 index 9 時停止,如此就隔離了支撐桁架的主要正面。
上一個步驟稍顯繁瑣。使用 Select Face 節點可以更快執行此作業。藉此可以隔離 Revit 專案中並非元素本身的面。互動方式與 Select Model Element 相同,只是選取的是曲面,而不是完整的元素。
假設我們要隔離建築的主要正面牆。我們可以使用 Select Faces 節點執行此作業。請按一下「選取」按鈕,然後在 Revit 中選取四個主要正面。
選取四面牆後,務必在 Revit 中按一下「完成」按鈕。
現在,這些面已匯入 Dynamo 成為曲面。
現在,我們看看中庭上方的樑。
使用 Select Model Element 節點,選取其中一根樑。
將樑元素插入 Element.Geometry 節點,現在可在 Dynamo 視埠中看到樑。
可以使用 Watch3D 節點拉近幾何圖形 (若未在 Watch 3D 中看到樑,請按一下右鍵,然後按一下「縮放至佈滿」)。
Revit/Dynamo 工作流程中可能經常會遇到以下問題:如何選取一個元素並取得所有類似元素?由於選取的 Revit 元素包含其所有階層資訊,因此我們可以查詢其族群類型,並選取該類型的所有元素。
將樑元素插入 Element.ElementType 節點。
Watch 節點顯示現在輸出是族群符號,而不是 Revit 元素。
Element.ElementType 是個簡單的查詢,因此我們在程式碼區塊執行時可以像使用
x.ElementType;
一樣輕鬆,並得到相同結果。
為了選取其餘的樑,需使用 All Elements of Family Type 節點。
Watch 節點顯示我們已選取五個 Revit 元素。
我們也可以將所有這五個元素轉換為 Dynamo 幾何圖形。
如果有 500 根樑會怎樣呢?將所有這些元素轉換為 Dynamo 幾何圖形會非常慢。若 Dynamo 花費很長時間來計算節點,您可能要在開發圖表時,使用「凍結」節點功能以暫停執行 Revit 作業。如需有關凍結節點的更多資訊,請參閱〈實體〉一章中的凍結一節。
是否不論何種情況,若要匯入 500 根樑,所有曲面都需要執行所需的參數運算?還是其實可以擷取樑的基本資訊,並使用基本幾何圖形執行生成工作?在逐步瞭解本章內容的過程中,需要隨時考慮這個問題。例如,我們接下來看看桁架系統。
使用相同的節點圖表,選取桁架元素而不是樑元素。執行此作業之前,刪除上一步驟中的 Element.Geometry。
接下來,我們準備從桁架族群類型擷取一些基本資訊。
在 Watch 節點中,可以看到我們從 Revit 中選取的自適應元件清單。我們希望擷取基本資訊,因此從自適應點開始。
將 All Elements of Family Type 節點插入 AdaptiveComponent.Location 節點。這會產生一個清單的清單,其中每個清單都包含三點,表示自適應點的位置。
若連接 Polygon.ByPoints 節點,即會傳回 polycurve,可以在 Dynamo 視埠中看到。透過此方法,我們看到了一個元素的幾何圖形,並提取了其餘一系列元素 (數量可能多於此範例) 的幾何圖形。
秘訣:若在 Dynamo 中按一下 Revit 元素的綠色數字,Revit 視埠將縮放至該元素。
適用於 Revit 的 Dynamo 使用圖形演算法編輯器的資料和邏輯環境來延伸建築資訊模型。其靈活性以及功能強大的 Revit 資料庫,為 BIM 提供了新視角。
本章的重點在於 BIM 的 Dynamo 工作流程。各小節主要基於練習,因為直接開始處理專案是熟悉 BIM 圖形算法編輯器的最佳方法。但是,首先讓我們來瞭解程式的開頭。
隨著 Revit 和 Dynamo 兩者持續開發,您可能會發現,您使用的 Revit 版本與安裝在您電腦上的適用於 Revit 的 Dynamo 版本不相容。以下概述哪些版本的適用於 Revit 的 Dynamo 與 Revit 相容。
在專注投入的開發人員團隊和充滿熱情的社群的努力下,專案從一開始的微不足道獲得了長足的發展。
Dynamo 最初建立的目的是為了簡化 Revit 中的 AEC 工作流程。雖然 Revit 為每個專案建立了功能強大的資料庫,但對於普通使用者來說,在介面約束外存取此資訊可能很困難。Revit 提供了全面的 API (應用程式介面),讓協力廠商開發人員可建立自訂工具。雖然程式設計人員已使用此 API 多年,但並非所有人都能使用文字撰寫腳本。Dynamo 的目標是透過可訪問的圖形算法編輯器使 Revit 資料可供所有人存取。
將核心 Dynamo 節點與自訂 Revit 節點搭配使用,使用者可以大幅擴充參數式工作流程,以獲得互通性、製作文件、分析和產生。使用 Dynamo,繁瑣的工作流程可以自動化,設計探索領域可蓬勃發展。
在 Revit 專案或族群編輯器中,導覽至「增益集」,然後按一下「Dynamo」。*
*Dynamo 只會在開啟它的檔案中執行。
在 Revit 中開啟 Dynamo 時,會有一個稱為「Revit」的新品類。這是使用者介面的全面新增組件,其中提供了專用於 Revit 工作流程的節點。*
*使用 Revit 特定的節點族群,Dynamo 圖表就只能在於適用於 Revit 的 Dynamo 中開啟時運作。例如,如果在 Dynamo Sandbox 中開啟適用於 Revit 的 Dynamo 圖表,則 Revit 節點將會遺失。
由於 Revit 是功能強大的專案管理平台,Dynamo 中的參數式作業可能會很複雜且計算速度緩慢。若 Dynamo 花費很長時間來計算節點,您可能要在開發圖表時,使用「凍結」節點功能以暫停執行 Revit 作業。
您可以在節點和線路一節閱讀有關凍結節點的更多資訊。
由於 Dynamo 最初是為 AEC 建立,其大型且不斷成長的社區是一個向行業專家學習和連線至行業專家的很棒資源。Dynamo 的社群由樂於分享和創造的建築師、工程師、程式設計人員及設計師組成。
Dynamo 是不斷發展的開放程式碼專案,而且有大量的開發工作都與 Revit 相關。如果您是新使用者,可造訪「討論論壇」並開始發問!如果您是程式設計人員並想要參與 Dynamo 開發,可造訪 Github 儲存庫。另外,協力廠商資源庫的絕佳資源是 Dynamo Package Manager。許多這些套件都是在 AEC 基礎上開發的,本章中我們將瞭解用於平板化的協力廠商套件。
Dynamo 也會積極更新部落格。請閱讀最新的貼文以瞭解最新的開發工作!
雖然 Dynamo 是一個設計來匯入各種程式的彈性環境,但是它最初建立的目的是與 Revit 搭配使用。視覺程式為建築資訊模型 (BIM) 提供功能強大的選項。Dynamo 提供專用於 Revit 的一整套節點,以及來自繁榮 AEC 社群的協力廠商資源庫。本章著重於在 Revit 中使用 Dynamo 的基礎知識。
Revit 版本 | 第一個穩定的 Dynamo 版本 | 最後一個支援的適用於 Revit 的 Dynamo 版本 |
---|---|---|
2013
2014
2015
2016
2017
2018
2019
2020+
2.1.0 - Revit 2020+ 現在包含 Dynamo,而且會像 Revit 一樣收到更新。
N/A
我們先前對編輯基本建築量體進行瞭解時,希望一次編輯大量元素,以更深入地探究 Dynamo/Revit 連結。大規模自訂變得更加複雜,因為資料結構需要更高級的清單作業。但是,此作業所遵循的基本原則在本質上並無不同。接下來針對一組自適應元件瞭解分析的某些因素。
假設我們已建立一系列自適應元件,希望根據其點位置來編輯參數。例如,點可以驅動與元素面積相關的厚度參數。或者,點可以驅動與全年日曬相關的不透明度參數。藉由 Dynamo,可以使用一些簡單的步驟將分析連接至參數,我們將在以下練習中探究基本版本。
使用 AdaptiveComponent.Locations 節點查詢所選自適應元件的自適應點。這可讓我們使用提取出的 Revit 元素進行分析。
透過萃取自適應元件的點位置,我們可以對該元素執行一系列分析。藉由四點自適應元件,您可以針對諸如指定面板等物件研究平面的偏差。
使用重新對映將一組資料對映到參數範圍。這是參數式模型中使用的基本工具,我們將在以下練習中展示該工具。
使用 Dynamo,自適應元件的點位置可用於建立每個元素的最佳擬合平面。我們也可以在 Revit 檔案中查詢日光位置,研究平面相對於日光的方位,並與其他自適應元件進行比較。在以下的練習中,我們將建立由演算法控制的屋頂,以設置該功能。
按一下下方的連結下載範例檔案。
附錄中提供範例檔案的完整清單。
此練習將詳細說明上一節中示範的技巧。在此案例中,我們將使用 Revit 元素定義參數式曲面,同時實體化四點自適應元件,然後根據太陽方位對其進行編輯。
先選取兩條邊與 「Select Edge」 節點。兩條邊是中庭的長跨距。
使用 List.Create 節點將兩條邊合併到一個清單中。
使用 Surface.ByLoft 在兩條邊之間建立曲面。
使用 Code Block,定義從 0 至 1 的範圍 (包含均勻分佈的 10 個值):
0..1..#10;
將 Code Block 插入 Surface.PointAtParameter 節點的 u 與 v 輸入,並將 Surface.ByLoft 節點插入 surface 輸入。在節點上按一下右鍵,將 交織 變更為 「笛卡兒積」。這將在曲面上產生點的網格。
此點網格可作為以參數式方式定義之曲面的控制點。我們希望萃取其中每個點的 u 與 v 位置,以便能將其插入至參數式公式,並保留相同的資料結構。我們可以查詢剛剛建立點的參數位置,以執行此作業。
在圖元區加入 Surface.ParameterAtPoint 節點,連接輸入,如上所示。
使用 UV.U 節點查詢這些參數的 u 值。
使用 UV.V 節點查詢這些參數的 v 值。
輸出會顯示每個曲面點的對應 u 與 v 值。現在我們已取得所需範圍,每個值都介於 0 與 1 之間,並具有正確的資料結構,我們已準備好套用參數式演算法。
在圖元區加入 Code Block,然後輸入程式碼:
Math.Sin(u*180)*Math.Sin(v*180)*w;
。這是一個參數式函數,可從平面建立正弦凸塊。將 UV.U 連接至 u 輸入,將 UV.V 連接至 v 輸入。
w 輸入表示形狀的 幅度,因此我們為其連接 Number Slider。
現在,我們有一個由演算法定義的值清單。接下來使用此值清單在 +Z 方向將點上移。使用 Geometry.Translate,將 Code Block 插入 zTranslation,並將 Surface.PointAtParameter 插入 geometry 輸入。您應該會看到新的點顯示在 Dynamo 預覽中。
最後,我們使用 NurbsSurface.ByPoints 節點建立曲面,將上一步驟中的節點插入 points 輸入。我們建立了自己的參數式曲面。自由拖曳滑棒,觀看凸塊的收縮與膨脹。
使用參數式曲面,我們要定義將其面板化的方式,以排列四點自適應元件。Dynamo 沒有即裝即用的曲面平板化功能,因此我們可以尋找社群是否有實用的 Dynamo 套件。
移至 「套件」>「搜尋套件...」
搜尋 LunchBox,並安裝 LunchBox for Dynamo。對於諸如此類的幾何圖形作業,這是非常有用的一組工具。
下載之後,您現在可以完整存取 LunchBox 套件。搜尋 Quad Grid,然後選取 LunchBox Quad Grid By Face。將參數式曲面插入至 surface 輸入,並將 U 與 V 分割份數設定為 15。您在 Dynamo 預覽中應該會看到一個有四邊形平板的曲面。
如果您對其設置感到好奇,可以按兩下 Lunch Box 節點,並查看其內容。
返回 Revit,接下來快速查看我們將在這裡使用的自適應元件。無需沿其作業,但這是我們將要實體化的屋頂面板。它是四點自適應元件,是 ETFE 系統的粗略表示。中心空心的鎖點框與稱為 ApertureRatio 的參數有關。
我們將在 Revit 中實體化大量幾何圖形,因此請確保將 Dynamo 求解器調整為 「手動」。
在圖元區加入 Family Types 節點,然後選取 「ROOF-PANEL-4PT」。
在圖元區加入 AdaptiveComponent.ByPoints 節點,將 Panel Pts 從 LunchBox Quad Grid by Face 輸出連接至 points 輸入。將 Family Types 節點連接至 familySymbol 輸入。
按一下 「執行」。建立幾何圖形時,Revit 需要_考慮_一段時間。若花費太長時間,請將 Code Block 的「15」 減少為較小的數字。這將減少屋頂上面板的數量。
注意:若 Dynamo 花費很長時間來計算節點,您可能要在開發圖表時,使用「凍結」節點功能以暫停所執行的 Revit 作業。如需有關凍結節點的更多資訊,請參閱〈實體〉一章中的〈凍結〉一節。
返回 Revit,我們已在屋頂上建立一系列面板。
拉近,我們可以更近地查看其曲面品質。
從上一步繼續執行,接下來更進一步,根據其日曬時間驅動每個面板的孔徑。拉近至 Revit,選取一個面板,可以看到在性質列中,有一個名為 Aperture Ratio 的參數。設置族群,讓孔徑的範圍大致介於 0.05 到 0.45 之間。
如果打開太陽路徑,可以在 Revit 中看到目前的太陽位置。
我們可以使用 SunSettings.Current 節點參考此太陽位置。
將太陽設定插入 Sunsetting.SunDirection 以取得太陽向量。
從用於建立自適應元件的 Panel Pts 中,使用 Plane.ByBestFitThroughPoints 近似元件的平面。
查詢此平面的 法向。
使用 內積 計算太陽方位。內積是一個決定兩個向量平行程度的公式。我們將取得每個自適應元件的平面法向,並與太陽向量進行比較,以粗略模擬太陽方位。
採用結果的 絕對值。這可確保在平面法向指向相反方向時,內積是準確的。
按一下 「執行」 。
看看 內積 ,我們產生了許多數字。我們希望使用其相對分佈,但需要將這些數字縮攏到我們想要編輯的 Aperture Ratio 參數的適當範圍內。
Math.RemapRange 是執行此作業的強大工具。它採用輸入清單,並將邊界重新對映到兩個目標值。
在 Code Block 中,將目標值定義為 0.15 與 0.45。
按一下 「執行」 。
將重新對映的值連接至 Element.SetParameterByName 節點。
將字串 Aperture Ratio 連接至 parameterName 輸入。
將 adaptive components 連接至 element 輸入。
按一下 「執行」 。
返回 Revit,透過距離,我們可以瞭解太陽方位對 ETFE 面板孔徑產生的影響。
拉近,我們可以看到在面向日光時,ETFE 面板更為封閉。此時我們的目標是減少日曬帶來的過熱。如果我們根據日曬而希望讓更多光線進入,只需在 Math.RemapRange 上切換範圍即可。
您可以在 Dynamo 中建立具有完整參數式控制的一系列 Revit 元素。藉由 Dynamo 中的 Revit 節點,可以將元素從一般幾何圖形匯入至特定的品類類型 (例如牆與地板)。在本節中,我們將著重講解使用自適應元件以參數式方式匯入彈性元素。
自適應元件是非常適用於生產應用的彈性族群品類。在實體化之後,您可以建立由自適應點的基本位置驅動的複雜幾何元素。
以下是族群編輯器中一個三點自適應元件的範例。這將產生由每個自適應點的位置定義的桁架。在以下練習中,我們將使用此元件在正面產生一系列桁架。
自適應元件是採用互通性最佳實務的良好範例。我們可以定義基本自適應點,以建立一系列自適應元件。此外,若將此資料傳輸至其他程式,我們可以將幾何圖形精簡為簡單的資料。使用程式 (例如 Excel) 執行匯入與匯出將遵循類似的邏輯。
假設正面顧問希望瞭解桁架元素的位置,而無需剖析完全連接的幾何圖形。在準備製造時,顧問可以參考自適應點的位置,以便在諸如 Inventor 等程式中重新產生幾何圖形。
藉由我們將在以下練習中設置的工作流程,我們可以存取所有此類資料,同時建立用於建立 Revit 元素的定義。透過此程序,我們可以將概念化、記錄與製造合併為順暢的工作流程。此作業會建立更智慧、更高效的程序以實現互通性。
將參數式 Dynamo 幾何圖形匯入至 Revit 的另一種方法是使用 DirectShape。總之,DirectShape 元素與相關類別支援在 Revit 文件中儲存外部建立的幾何造型。幾何圖形可以包括封閉實體或網格。DirectShape 主要用於在未提供足夠的資訊以建立「真實」的 Revit 元素時,匯入其他資料格式 (例如 IFC 或 STEP) 的造型。與 IFC 與 STEP 工作流程類似,DirectShape 功能可以成功將 Dynamo 建立的幾何圖形匯入 Revit 專案中作為真實的元素。
按一下下方的連結下載範例檔案。
附錄中提供完整的範例檔案清單。
從本節的範例檔案開始 (或繼續使用上一節課的 Revit 檔案),我們會看到同一個 Revit 量體。
這是開啟的檔案。
這是我們使用 Dynamo 建立的桁架系統,並採用智慧方式將其連結至 Revit 量體。
我們此前使用的是 「Select Model Element」 與 「Select Face」 節點,現在我們在幾何圖形階層中更進一步,使用 「Select Edge」。將 Dynamo 求解器設定為 「自動」 執行後,圖表會根據 Revit 檔案中的變更而持續更新。我們將選取的邊已動態連結至 Revit 元素拓樸。只要拓樸* 沒有變更,Revit 與 Dynamo 之間的關聯就會保持連結狀態。
選取釉面玻璃正面最頂端的曲線。它跨越建築的完整長度。如果您無法選取邊,請記住將游標懸停在邊上,然後按一下 「Tab」 鍵,直到所需的邊亮顯為止,由此在 Revit 中選擇供選取的物件。
使用兩個 「Select Edge」 節點,選取表示正面中央處外角的每條邊。
在 Revit 中對正面底部的邊執行相同程序。
Watch 節點顯示出我們現在已在 Dynamo 中建立線。這會自動轉換為 Dynamo 幾何圖形,因為邊本身不是 Revit 元素。這些曲線是我們在正面對自適應桁架進行實體化將使用的參考。
*為了讓拓樸保持一致,我們將參考未額外加入面或邊的模型。雖然參數可變更其造型,但是其建置方式保持一致。
我們需要先接合曲線,並將其合併至一個清單。這樣我們可以將曲線 「分組」 以執行幾何圖形作業。
建立正面中央兩條曲線的清單。
將 List.Create 元件插入 Polycurve.ByJoinedCurves 節點,以便將兩條曲線接合為 polycurve。
建立正面底部兩條曲線的清單。
將 List.Create 元件插入 Polycurve.ByJoinedCurves 節點,以便將兩條曲線接合為 polycurve。
最後,將三條主要曲線 (一條直線與兩條 PolyCurve) 接合到一個清單中。
我們希望利用頂部曲線,它是直線,並能呈現正面的完整跨度。我們將沿這條線建立平面,與我們在清單中歸為一組的一組曲線相交。
運用 Code Block,使用以下語法定義範圍:
0..1..#numberOfTrusses;
將 Integer Slider 插入 Code Block 的輸入。您可能已猜到,這會代表桁架的數量。請注意,滑棒控制從 0 到 1 定義的範圍內的項目數量。
將 Code Block 插入 「Curve.PlaneAtParameter」 節點的 param 輸入,將頂部的邊插入 curve 輸入。這會產生十個平面,均勻分佈在正面的跨度內。
平面是抽象的幾何圖形,表示無限的二維空間。平面非常適合描述等高與相交,正如我們在此步驟中的設置所示。
使用 Geometry.Intersect 節點 (將交織設為笛卡兒積),將 Curve.PlaneAtParameter 插入 Geometry.Intersect 節點的 entity 輸入。將主要 List.Create 節點插入 geometry 輸入。現在,我們可以在 Dynamo 視埠中看到表示每條曲線與定義的平面相交的點。
請注意,輸出是清單的清單的清單。我們為達到目的而使用的清單過多。在此,我們希望進行局部平坦化。我們需要對清單更進一步,對結果執行平坦化。為了執行此作業,我們使用 List.Map 作業,如手冊的清單一章中的討論所示。
將 Geometry.Intersect 節點插入 List.Map 的清單輸入。
將 Flatten 節點插入 List.Map 的 f(x) 輸入。結果將產生 3 個清單,每個清單都包含與桁架數量相等的計數。
我們需要變更此資料。如果我們希望實體化桁架,必須使用與族群中所定義的數量相同的自適應點。這是三點自適應元件,因此我們希望使用的不是各包含 10 個項目 (numberOfTrusses) 的三個清單,而是各包含三個項目的 10 個清單。這樣我們可以建立 10 個自適應元件。
將 List.Map 插入 List.Transpose 節點。現在我們已取得所需的資料輸出。
若要確認資料正確無誤,請在圖元區中加入 Polygon.ByPoints 節點,然後再次查看 Dynamo 預覽。
我們以同樣的方式建立了多邊形,並對自適應元件進行排列。
在圖元區加入 AdaptiveComponent.ByPoints 節點,將 List.Transpose 節點插入 points 輸入。
使用 Family Types 節點,選取 「AdaptiveTruss」 族群,並將其插入 AdaptiveComponent.ByPoints 節點的 FamilyType 輸入。
在 Revit 中,我們現在建立了十個均勻分佈在正面跨度範圍內的桁架。
「調整」圖表,透過變更滑棒將 numberOfTrusses 提高為 30。桁架很多,這並非很現實,但是參數式連結的確有效。驗證後,將 numberOfTrusses 設定為 15。
在最終測試中,透過在 Revit 內選取量體並編輯實體參數,我們可以變更建築的形狀,並看到桁架與之相符。請記住,必須開啟此 Dynamo 圖表,才能看到此更新,一旦該圖表關閉,連結將中斷。
按一下下方的連結下載範例檔案。
附錄中提供完整的範例檔案清單。
首先,開啟本課程的範例檔案 ARCH-DirectShape-BaseFile.rvt。
在 3D 視圖中,我們可以看到上一課的建築量體。
沿著中庭的邊是一條參考曲線,我們會將其用作在 Dynamo 中參考的曲線。
沿著中庭的相對一邊是另一條參考曲線,我們也會在 Dynamo 中對其進行參考。
為了在 Dynamo 中參考幾何圖形,我們將對 Revit 中的每個成員使用 Select Model Element。在 Revit 中選取量體,並使用 Element.Faces 將幾何圖形匯入 Dynamo,現在 Dynamo 預覽中應該可以看到量體。
使用 Select Model Element 與 CurveElement.Curve 將一條參考曲線匯入 Dynamo。
使用 Select Model Element 與 CurveElement.Curve 將另一條參考曲線匯入 Dynamo。
結構由三個主要參數驅動,分別是 Diagonal Shift、Camber 與 Radius。
進行縮放,特寫查看此圖表的參數。我們可以調整這些參數,以得到不同的幾何圖形輸出。
將 DirectShape.ByGeometry 節點置於圖元區上,我們可以看到它有四個輸入:geometry、category、material 和 name。
幾何圖形是將要從圖表的幾何圖形建立部分建立的實體
使用下拉式 Categories 節點選擇品類輸入。在此案例中,我們將使用「Structural Framing」。
透過以上的一系列節點選取材料輸入 (雖然在此案例中定義為「預設」會更簡單)。
執行 Dynamo 後,返回 Revit,專案中的屋頂上已存在匯入的幾何圖形。這是結構框架元素,而不是一般模型。Dynamo 的參數式連結保持不變。
以下將講解 Dynamo 如何參考用於建立 Revit 元素的資料。為了產生多個自適應元件,我們定義了清單的清單,其中每個清單都包含三點,表示自適應元件的每個點。在 Dynamo 中管理資料結構時,我們將記住這一點。
我們來逐步進行,將 Dynamo 幾何圖形作為 DirectShape 匯入 Revit 專案。使用此方法,我們可以指定所匯入幾何圖形的品類、材料與名稱等所有內容,同時保持 Dynamo 圖表的參數式連結。
拉遠並平移至範例圖表中的右側,可以看到大型節點群組,這些是幾何圖形作業,將產生 Dynamo 預覽中可見的格架屋頂結構。這些節點是使用手冊的中討論的 將節點轉換為程式碼 功能產生。