close

問題是這樣的,使用REVIT的人都知道在門窗明細表中有個從房間叫資訊的功能,可以知道這個門窗是從哪個房間到哪個房間的。

不過如果天地牆等裝修面材也都要加入房間資訊,有無自動化的方式來處理?

A00.jpg

圖一:門窗表在REVIT中可選擇房間資料

因為天地壁的資料理並沒有房間資訊欄位,所以一開始需要在要添加的元件類型裡加上一個ROOMNUMBER的參數,當然也可以使用備註或者註解的位置,

A02.jpg

圖二:加入專案參數

接著打開增益集中的DYNAMO,目前使用1.0版本做範例,0.9應該也是通用。

要做到這件事情在DYNAMO中我想到至少三個方式可以達到,目前先示範最容易理解的。

因為處理的是天花板與房間資料交換,所以使用兩個CATEGORY與ALL ELEMENT OF CATEGORY的節點來取出所有天花板與房間物件。

先說天花的部份,接著使用ELEMENT.BOUNDINGBOX等等,最後取出天花板的型心,假設天花板沒有超過100CM厚度的(使用複合天花),

這邊使用GEOMETRY.TRANSLATE來做POINT的Z軸偏移,這樣點就都會在房間內部,以上為圖三的部分。

A3.png

圖三:天花板型心降入房間範圍中設定

 

房間的部分就是從ELEMENT中抓出SOLID,接著使用LIST.CHOP來作二維陣列(天花與房間都要),以便後續作碰撞比對,

接著兩個筆資料使用.Geometry.DoesIntersect作物件干涉判斷,這節點的鑲邊要設乘積。接著會出現一筆二維陣列,

第一層是天花板POINT排序(LIST1),第二層是與各房間SOLID碰撞的結果,因為等等要用INDEXOF的方式去抓物件排序,

所以這邊用一個LIST.MAP與FLATTEN將第二層陣列的部分攤平,如下圖四。

A4.png

圖四:房間與天花的干涉判斷

 

接著我們需要查出各二維清單中TRUE出現的位置(INT),所以這邊再度使用一個LIST.MAP+INDEXOF的組合來求出排序,

得到排序後使用LIST.GETITEMATINDEX的節點把相對應的房間物件排序,接著就是使用ELEMENT.GETPARAMENT與ELEMENT.SETPARAMENT的節點把資訊填回天花板的資料欄位中,

這邊應該都很熟悉就省略說明了。

 

A55.jpg

圖五:使用INDEX相關節點排序物件

A5.png

 

 

圖六:全部使用節點截圖

 

 

接著回到REVIT專案中,打開天花板明細表的部分可以發現ROOMNUMBER的部分都有填上資料了(無房間區域例外),

接著使用剖面比對天花板的房間編號與色彩計畫中的編號,驗證兩筆資料相符。

A06.jpg

 

圖七;天花明細表中帶有房間資訊

 

 

A07.jpg

 

圖八:比對天花與房間資訊一致性

 

 

地板的部分也可以如法泡製,只是偏移的部分改為向上即可,以上說明。

這是一個很典型的在DYNAMO中兩筆物件之間的關係分析與資料填入,以上。

 

 

 

arrow
arrow
    文章標籤
    DYNAMO REVIT
    全站熱搜
    創作者介紹
    創作者 修二 的頭像
    修二

    HOUSEGEAR

    修二 發表在 痞客邦 留言(0) 人氣()