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

下載app免費(fèi)領(lǐng)取會(huì)員

NULL

5cdd2dc095060.jpg

Revit通過(guò)dynamo給房間按順序命名

發(fā)布于:2019-12-20 16:12:51

網(wǎng)友投稿

更多

Revit通過(guò)dynamo給房間按順序命名

目的:通過(guò)繪制的多段線按照多段線穿過(guò)的房間順序給房間命名,房間名稱(chēng)來(lái)源excel表格中的房間名稱(chēng)。先看效果

revit dynamo

知識(shí)點(diǎn):dynamo中的點(diǎn)、坐標(biāo)、房間、列表、列表排序、交點(diǎn)等

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

教程如下:

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

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

revit dynamo

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

revit dynamo

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

revit dynamo

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

revit dynamo

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

revit dynamo

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

revit dynamo

接下來(lái)我們要通過(guò)交點(diǎn)處到曲線起點(diǎn)處區(qū)間的弧長(zhǎng),判斷交點(diǎn)在曲線上所處的次序,才能進(jìn)行后面的排序。

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

revit dynamo

通過(guò)【List.Sort】節(jié)點(diǎn)將列表從弧長(zhǎng)由短到長(zhǎng)進(jìn)行排序

revit dynamo

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

revit dynamo

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

revit dynamo

這部分告一段落,我們?cè)贓xcel中獲取原來(lái)設(shè)置好的房間數(shù)據(jù),這個(gè)我在之前的相關(guān)dynamo的教程中有提及,這里就直接放節(jié)點(diǎn)了。

revit dynamo

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

這僅僅是一個(gè)案例,大家可以通過(guò)自己的學(xué)習(xí)和思考,并將這樣的辦法應(yīng)用在其他項(xiàng)目上。

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

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

未標(biāo)題-1.jpg

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

下一篇:Revit利用dynamo兩點(diǎn)放置分割裝飾條

60acb4e0ef112.png