githubEdit

燈柱放置

Dynamo 其中一種相當適合的使用案例,便是沿廊道模型動態放置離散物件。物件通常需要放置在與廊道上插入的組合無關的位置,這是一個非常冗長乏味而需手動完成的工作。當廊道的水平或垂直幾何圖形發生變更時,會導致需重複處理大量工作。

目標

🎯 在 Excel 檔案中指定的樁號值處,沿廊道放置燈柱圖塊參考。

主要概念

  • 從外部檔案 (在此範例中為 Excel) 讀取資料

  • 以字典組織資料

  • 使用座標系統控制位置/比例/旋轉

  • 放置圖塊參考

  • 在 Dynamo 中視覺化幾何圖形

版本相容性

circle-check

資料集

首先,下載以下範例檔案,然後開啟 DWG 檔案和 Dynamo 圖表。

circle-info

Excel 檔案與 Dynamo 圖表最好儲存在同一個目錄中。

file-download
12KB

解決方法

以下是此圖表中的邏輯概觀。

  1. 讀取 Excel 檔案,將資料匯入至 Dynamo

  2. 從指定的廊道基準線取得地勢線

  3. 沿廊道地勢線在所需樁號處產生座標系統

  4. 使用座標系統在模型空間中放置圖塊參考

我們開始吧!

取得 Excel 資料

在此範例圖表中,我們使用 Excel 檔案來儲存 Dynamo 將用於放置燈柱圖塊參考的資料。表格看起來像下面這樣。

Excel 檔案表格結構
circle-info

使用 Dynamo 從外部檔案 (例如 Excel 檔案) 讀取資料是種很好的策略,尤其是當需要與其他團隊成員共用資料時。

Excel 資料會像下面這樣匯入至 Dynamo。

將 Excel 資料匯入至 Dynamo

我們現在有了資料,需要依欄 (CorridorBaselinePointCode 等) 把資料分開,以便在圖表的其餘部分使用。執行此作業的常見方法之一,是使用 List.GetItemAtIndex 節點並指定所需的每一欄索引號碼。例如,Corridor 欄是在索引 0,Baseline 欄是在索引 1 等等。

看起來沒問題,對吧?但是這個方法有一個潛在的問題。如果 Excel 檔案中欄的順序在將來發生變更,該怎麼辦?或是兩欄之間加入新的一欄?如此一來,圖表將無法正常運作而需要更新。我們可以將資料放入 字典,將 Excel 欄標題做為 ,其餘資料做為 ,讓圖表能繼續使用。

circle-info

如果您不熟悉字典,請查看 Dynamo 中的字典 一節。

將 Excel 資料放入字典

這可讓圖表變得更具彈性,因為它允許變更 Excel 中欄的順序。只要欄標題保持不變,您就可以使用其 (即欄標題) 從字典中擷取資料,這是我們接下來要執行的作業。

從字典中擷取資料

取得廊道地勢線

我們現在已匯入 Excel 資料並準備好了,接下來我們開始使用它從 Civil 3D 取得有關廊道模型的一些資訊。

  1. 依名稱選取廊道模型。

  2. 取得廊道內的特定基準線。

  3. 透過基準線的點代碼取得基準線內的地勢線。

產生座標系統

我們現在要沿廊道地勢線,在 Excel 檔案中指定的樁號值處產生座標系統。這些座標系統將用於定義燈柱圖塊參考的位置、旋轉和比例。

circle-info

如果您不熟悉座標系統,請查看 向量、平面和座標系統 一節。

沿廊道地勢線取得座標系統

請注意,在此處使用程式碼區塊 (Code Block) 是為了根據座標系統在基準線哪一側來旋轉座標系統。您也可以使用幾個節點來達成這個目標,但這是一個很好的範例,說明撰寫出來更容易。

circle-info

如果您不熟悉程式碼區塊,請查看 程式碼區塊和 DesignScript 一節。

建立圖塊參考

我們快完成了!我們有實際放置圖塊參考所需的所有資訊。首先,使用 Excel 檔案中的 BlockName 欄取得圖塊定義。

從文件取得所需的圖塊定義

從這裡,最後一步是建立圖塊參考。

在模型空間中建立圖塊參考

結果

當您執行圖表時,您應該會看到新的圖塊參考沿廊道展示在模型空間中。以下是最酷的部分 - 如果圖表的執行模式設定為「自動」,而且您編輯了 Excel 檔案,圖塊參考會自動更新!

circle-info

您可以在 使用者介面 一節閱讀有關圖表執行模式的更多資訊。

更新 Excel 檔案,在 Civil 3D 中很快就會看到結果

以下是使用 Dynamo 播放器執行圖表的範例。

使用 Dynamo 播放器執行圖表,然後在 Civil 3D 中查看結果
circle-info

如果您不熟悉 Dynamo 播放器,請查看 Dynamo 播放器 一節。

🎉 任務完成!

附註:在 Dynamo 中視覺化

在 Dynamo 中視覺化廊道幾何圖形,有助於提供情境脈絡。此特定模型已在模型空間中萃取出廊道實體,因此我們將這些實體帶入 Dynamo。

但還有其他事情需要考慮。實體相對而言是「比較重」的幾何圖形類型,這表示此作業將減慢圖表速度。如果有一個簡單的方式可以 選擇 是否要檢視實體會更好。一種明顯的解決方法是拔掉 Corridor.GetSolids 節點,但這會對所有下游節點產生警告,而這看起來會有點雜亂。這時就是 ScopeIf 節點真正發揮功能的時候了。

  1. 請注意 Object.Geometry 節點底部有一條灰色列。這表示節點預覽已關閉 (在節點上按一下右鍵可存取),這樣 GeometryColor.ByGeometryColor 就可以避免為了背景預覽的顯示優先順序而與其他幾何圖形「競爭」。

  2. ScopeIf 節點基本上可讓您選擇性地執行一條完整的節點分支。如果 test 輸入為 false,則連接至 ScopeIf 節點的每個節點都不會執行。

以下是 Dynamo 背景預覽的結果。

在 Dynamo 中視覺化廊道幾何圖形

構想

以下是一些如何擴充此圖表功能的構想。

circle-info

在 Excel 檔案中新增 旋轉 一欄,就可以使用它驅動座標系統的旋轉。

circle-info

在 Excel 檔案中新增 水平或垂直偏移 ,就可以視需要讓燈柱偏離廊道地勢線。

circle-info

直接在 Dynamo 中 中使用起點樁號和典型間距產生樁號值,而不使用內含樁號值的 Excel 檔案。

Last updated