完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學歷
* 工作性質
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

Revit通過dynamo給房間按順序命名

發(fā)布于:2019-12-20 16:12:51
首頁/技術分享/Revit
收藏
8246

網(wǎng)友投稿

更多

Revit通過dynamo給房間按順序命名

目的:通過繪制的多段線按照多段線穿過的房間順序給房間命名,房間名稱來源excel表格中的房間名稱。先看效果

revit dynamo

知識點:dynamo中的點、坐標、房間、列表、列表排序、交點等

前言:之前也有其他人寫過dynamo,這個可能思路不太一樣,過程中出現(xiàn)過多次錯誤,經(jīng)過修改調(diào)試現(xiàn)在基本可以完美命名編號了。

教程如下:

前期需要對項目中的房間做好標記,并沿著你的你要標記的房間順序畫一條多段線,原理是多段線通過房間和房間區(qū)域中我們要繪制的圖案相交,通過交點判斷順序,排序后加載excel中的數(shù)據(jù)給房間命名。

首先我們用【SelectModel Element】節(jié)點選擇多段線,用【Element.Curves】節(jié)點識別選擇好的多段線。

revit dynamo

用【Categories】節(jié)點選擇房間節(jié)點,用【AllElements of Category】節(jié)點把所有房間類型圖元都選擇,用【Element.Solids】節(jié)點獲取房間所在的圖元。

revit dynamo

用【Solid.Centroid】節(jié)點獲得每個房間幾何體的中心坐標,用【Point.X】和【Point.Y】節(jié)點分離出來中心坐標的X坐標和Y坐標,這樣就讓坐標落在多段線所在的平面上了,再把獲得的新坐標組合起來。

revit dynamo

我們用新獲得的坐標為圓心畫圓,圓會和我們之前繪制的多段線有交點,所以我們之前在繪制多段線的時候盡量要通過房間的中心。繪制圓用【Circle.ByCenterPointRadiusNormal】節(jié)點,我們先設置半徑為1000看效果。

revit dynamo

運行效果如下,每個圓和曲線都產(chǎn)生了交點

revit dynamo

接下來我們用【Geometry.IntersectAll】節(jié)點獲得交點(獲取交點的時候連綴改成叉集),但是交點一般都會有兩個,所以我們?nèi)∶總€交點組中的第一組數(shù)據(jù)即可。過程中要用【List.Flatten】節(jié)點將數(shù)據(jù)維度降低一級。用【List.FirstItem】節(jié)點獲取交點中的第一個交點。

revit dynamo

接下來我們要通過交點處到曲線起點處區(qū)間的弧長,判斷交點在曲線上所處的次序,才能進行后面的排序。

通過【Curve.ParameterAtPoint】節(jié)點和【Curve.SegmentLengthAtParameter】節(jié)點獲得交點處曲線的弧長,并將列表拍平。

revit dynamo

通過【List.Sort】節(jié)點將列表從弧長由短到長進行排序

revit dynamo

再通過【IndexOf】節(jié)點和【List.Map】節(jié)點獲得排序后的列表數(shù)據(jù)在排序前列表中的位置

revit dynamo

通過【List.GetItemAtIndex】節(jié)點將之前房間列表按照獲得的list.map中的數(shù)據(jù)排序

revit dynamo

這部分告一段落,我們在Excel中獲取原來設置好的房間數(shù)據(jù),這個我在之前的相關dynamo的教程中有提及,這里就直接放節(jié)點了。

revit dynamo

最后一步,通過【Room.SetName】節(jié)點將整理好的excel數(shù)據(jù)給整理好的房間就大功告成了!

這僅僅是一個案例,大家可以通過自己的學習和思考,并將這樣的辦法應用在其他項目上。

來源:微信公眾: Revit教程-原創(chuàng):BIM二狗子

本文版權歸腿腿教學網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權,謝絕轉載。

未標題-1.jpg

上一篇:這是一篇教你看懂梁平法的文章(上)

下一篇:Revit利用dynamo兩點放置分割裝飾條