下載app免費領取會員
目的:通過繪制的多段線按照多段線穿過的房間順序給房間命名,房間名稱來源excel表格中的房間名稱。先看效果
知識點:dynamo中的點、坐標、房間、列表、列表排序、交點等
前言:之前也有其他人寫過dynamo,這個可能思路不太一樣,過程中出現過多次錯誤,經過修改調試現在基本可以完美命名編號了。
前期需要對項目中的房間做好標記,并沿著你的你要標記的房間順序畫一條多段線,原理是多段線通過房間和房間區域中我們要繪制的圖案相交,通過交點判斷順序,排序后加載excel中的數據給房間命名。
首先我們用【SelectModel Element】節點選擇多段線,用【Element.Curves】節點識別選擇好的多段線。
用【Categories】節點選擇房間節點,用【AllElements of Category】節點把所有房間類型圖元都選擇,用【Element.Solids】節點獲取房間所在的圖元。
用【Solid.Centroid】節點獲得每個房間幾何體的中心坐標,用【Point.X】和【Point.Y】節點分離出來中心坐標的X坐標和Y坐標,這樣就讓坐標落在多段線所在的平面上了,再把獲得的新坐標組合起來。
我們用新獲得的坐標為圓心畫圓,圓會和我們之前繪制的多段線有交點,所以我們之前在繪制多段線的時候盡量要通過房間的中心。繪制圓用【Circle.ByCenterPointRadiusNormal】節點,我們先設置半徑為1000看效果。
運行效果如下,每個圓和曲線都產生了交點
接下來我們用【Geometry.IntersectAll】節點獲得交點(獲取交點的時候連綴改成叉集),但是交點一般都會有兩個,所以我們取每個交點組中的第一組數據即可。過程中要用【List.Flatten】節點將數據維度降低一級。用【List.FirstItem】節點獲取交點中的第一個交點。
接下來我們要通過交點處到曲線起點處區間的弧長,判斷交點在曲線上所處的次序,才能進行后面的排序。
通過【Curve.ParameterAtPoint】節點和【Curve.SegmentLengthAtParameter】節點獲得交點處曲線的弧長,并將列表拍平。
通過【List.Sort】節點將列表從弧長由短到長進行排序
再通過【IndexOf】節點和【List.Map】節點獲得排序后的列表數據在排序前列表中的位置
通過【List.GetItemAtIndex】節點將之前房間列表按照獲得的list.map中的數據排序
這部分告一段落,我們在Excel中獲取原來設置好的房間數據,這個我在之前的相關dynamo的教程中有提及,這里就直接放節點了。
最后一步,通過【Room.SetName】節點將整理好的excel數據給整理好的房間就大功告成了!
這僅僅是一個案例,大家可以通過自己的學習和思考,并將這樣的辦法應用在其他項目上。
來源:微信公眾: Revit教程-原創:BIM二狗子
本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。
推薦專題