自动给文本框输入值_Dynamo for Revit自动生成门窗图例详图
在知乎上看到九哥BIMer寫的Dynamo自動創建門窗詳圖的文章,雖然文章比較簡短,但是主要的思路還是寫的很清楚。那篇文章并沒有給出Dynamo源文件,本著好學的心態,參照九哥BIMer的思路,經過一番嘗試,還是比較成功的用Dynamo自動生成了門窗圖例,所以在此寫下這篇文章與大家分享我的思路及遇到的問題和解決方法。
本文先僅以生成窗的詳圖為例進行講解,在文章最后會講解如何修改節點,只需簡單修改即可同時進行門窗詳圖的創建。
為了方便,本文使用的Revit項目如下所示,模型中一共創建了9種類型的窗,從C1到C9。
模型中9種類型的窗1.創建圖例視圖并繪制第一個窗大樣圖
Dynamo中沒有節點來創建圖例視圖,所以我們需要自己創建圖例視圖。在“視圖”菜單中的“創建”面板找到“圖例”進行新建,設置好視圖名稱和比例。
我們也無法通過Dynamo在一個新建好的空白圖例視圖中創建元素,所以我們需要手動創建好第一個圖例,第一個窗圖例是什么族類型并不重要,不過一定要是模型中有的族類型。如下圖所示,我們可以在“注釋”菜單中找到放置圖例的選項。也可以在項目瀏覽器中找到相應的族類型按住鼠標左鍵拖到視圖中進行放置。
通過“圖例構件”放置第一個圖例需要注意,放置圖例的時候要設置好圖例的視圖方向,以便后面標注寬度和高度兩個方向的尺寸,如下圖紅框所示兩個位置可以設置視圖方向為“立面:前”或“立面:后”。
放置完成以后,我們通過“詳圖線”給它繪制圖框,通過“文字”給圖框中的單元格填入文字,如下圖所示。
繪制第一個窗大樣接著我們在Dynamo中所有的操作都是基于第一個窗大樣完成的。
2.獲取模型中所有的窗族類型
獲取模型中所有的窗族類型的操作比較簡單,在Dynamo中選擇項目中所有的窗,然后獲取窗的類型。因為項目中同一個族類型下可能有好幾個族實例,所以我們用“List.UniqueItems”節點過濾掉重復的族類型,得到9種族類型,與項目實際一致,具體節點如下圖所示。
獲取所有窗類型3.復制出所有的圖框
在第1步中,我們繪制好了第一個圖例的圖框,其他圖例的圖框都是基于第一個圖框進行復制。對Revit中元素進行復制的節點在Dynamo的原生節點庫里面并沒有,因此我們需要安裝第三方的庫。著名的第三方庫“Clockwork”中有復制元素的節點,我們可以選擇安裝這個庫。關于這個庫,我在另一篇文章中有介紹:Revit + Dynamo 實現梁自動剪切墻。
在復制圖框之前,我們需要考慮怎么排列圖框,其實我們只需要考慮每行最多排幾個圖框即可。在這里我選擇每行排列4個圖框,那么一共有9種類型的窗,需要排列幾行?這個問題我們可以通過Dynamo來解決,讓軟件自動計算排列的行數,我們只需要輸入每行最多排幾個圖框即可,具體的節點如下:
計算圖框的排列有了排列的行數和列數以后我們可以對圖框進行復制,在對圖框進行復制之前,我們可以在Revit中先將圖例和圖框下面三行中右側單元格中的文本框進行隱藏,方便我們框選需要復制的元素,對暫時不需要復制的圖元進行隱藏后如下圖所示:
保留圖框進行復制對元素進行復制的節點是“Clockwork”中的“Element.CopyByVector”,選擇元素后給它一個向量確定復制元素的移動方向和距離。
3.1確定移動方向
方向很好確定,同一行的圖框進行復制,只需要向X軸的正方向偏移;復制完成第一行以后,再向Y軸的負方向復制出第2到第(n-1)行;因為第n行的圖框數量只可能小于或等于第一行的圖框數量,因此我們只需要計算出第n行有幾個圖框,然后從第一行中從左到右選擇與第n行圖框數量對應的圖框個數再向Y軸負方向復制即可。
3.2確定移動距離
在同一行中,下一個圖框與當前圖框的移動距離就是圖框的寬度,只需要在Revit中測量一下第一個圖框的寬度即可;
在相鄰兩行中,下一行圖框與當前行圖框的移動距離就是圖框的高度,同理,只需要在Revit中測量一下第一個圖框的高度即可。這里需要注意列表的層級和連綴方式,復制圖框的節點及完成效果如下圖所示:
創建所有圖框圖框創建完成4.創建所有圖例
創建圖例的方式和第3步類似,只需要將第一個圖例進行相應的復制即可。但是,需要注意,圖例和圖框不一樣,我們在進行與行之間的復制時,如果某一行的元素需要復制到多行,通常是先將該行第1個元素都復制完成以后,再進行第2個元素的復制,因此,得到的結果會出現順序上的混亂,如下圖所示,需要通過“List.Transpose”節點進行轉置。
轉置列表創建所有圖例完成所有圖例創建5.創建所有須填數據的文本框
創建須填數據文本框的方式和創建圖例一樣,首先選擇第一個大樣圖中下面三行中右邊的須填數據的3個文本框,如果不好選中,可以在Revit中對它們使用隔離圖元,方便在Dynamo中框選。然后將它們復制,同樣需要注意列表的轉置,如下圖所示。
所有須填數據文本框完成所有須填數據文本框創建所有需要的元素都創建完成了,接下來只要修改元素的屬性,在文本框中編輯數據即可。
6.對族類型進行排序
我們發現,選中到Dynamo中的所有族類型并不是按照C1-C9所對應的族類型進行排序的,因此,在將族類型賦值給圖例之前,需要先將族類型進行排序,具體如下圖所示:
7.修改圖例的類型和須填文本框的編輯
控制圖例類型的參數是“構件類型”這個實例參數。文本框的值我們可以對族類型查詢族參數獲取各項參數的參數值,并做相應的編輯,然后通過“TextNote.SetText”節點改變文本框的值。具體如下圖所示:
完成圖例類型設置和文本框編輯設置完成8.節點擴展及后續改進
正如前文所說,只需對“獲取所有窗類型”這部分的節點進行修改,獲取到項目中所有的門和窗的類型即可完成門和窗所有圖例的自動創建。這部分留給讀者自行研究。
另外,圖例中還應該包括一些標注,如何創建好標注,我也在探索之中,如果有可能興許也會出一篇文章。
另外,節點包和項目文件的鏈接放在下面,請有需要的讀者自行下載:
鏈接:https://pan.baidu.com/s/1T-gMxaf0AFrnb-VdHNJj9Q
提取碼:0weh
總結
以上是生活随笔為你收集整理的自动给文本框输入值_Dynamo for Revit自动生成门窗图例详图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: r型聚类分析怎么做_【SPSS数据分析】
- 下一篇: concurrenthashmap是什么