利用Dynamo批量爲陽臺窗添加欄杆

Dynamo案例百解——簡單實用的Dynamo圖文教程基本框架已經快完成了!有興趣小夥伴,要抓緊了哦本教程計劃8月1日起結束預售,恢復原價了哦

今天呢,我想利用Dynamo解決一個施工圖繪製過程中常見的問題,就是陽臺欄杆。我們知道,住宅設計規範裏要求,底層、多層住宅的陽臺欄杆淨高不應低於1.05m,中高層、高層住宅的陽臺欄杆淨高不應低於1.10m。所以我想利用Dynamo程序,自動爲所選陽臺窗創建欄杆,避免出現漏掉的問題。

於是,就打開Dynamo搜了下,沒有Railing的相關節點,於是就翻了下Revit API手冊,直接搜Railing就找到了創建欄杆的方法:

其中有三種創建欄杆的方法,第一種就很適合我們使用:

根據doc,curveloop,railingType和level創建欄杆:

那麼基本語法就有了:

Autodesk.Revit.DB.Architecture.Railing.Create (Document, CurveLoop, ElementId, ElementId)

然後就是利用幾何關係,來構造我們所需放置欄杆的曲線。

但是,我也沒想到啥好方法,於是就粗糙的用節點,來構造下我要放置欄杆的曲線,歡迎小夥伴提供簡便方法哈~

首先,我獲取要放置欄杆的陽臺窗,然後獲取相關的基礎數據,如窗的寬度、位置、所在主體、主體牆的厚度等:

然後通過一些列的數學計算和點的移動,獲取的和窗一樣長的兩條線,分別再牆兩側:

然後在牆兩側都構造出了欄杆的曲線:

之後通過判斷曲線上的任意一點,是否在房間內,將牆外的曲線過濾掉,就可以用來生成欄杆了:

然後獲取項目中所有的欄杆類型,選一個需要的:

同時獲取每個窗所在的標高:

最後的連入我們創建欄杆的Python Script節點即可。

但是在實際寫這個代碼塊的時候,還是遇到了問題。

第一次是生成欄杆失敗,後來發現是要求輸入欄杆類型的Id,改了下,就生成出來了,但是我發現,每個窗的欄杆,都是三段獨立的欄杆,滿足不了我的需求。

起初以爲是API就這樣,但是我在測試單層的時候,發現可以連續曲線生成一個連續的欄杆。

在各種嘗試以後,發現是API中,這個curveloop我沒弄對,我要每個連續的曲線,作爲一個循環放在一起,才能連續創建欄杆。

核心代碼如下:

revitCurves.append(curve.ToRevitType())
level = levels[i]
curveloop = CurveLoop.Create(revitCurves)
railing = Autodesk.Revit.DB.Architecture.Railing.Create(doc,curveloop, railType.Id,level.Id)

更改以後,就可以完美的爲每個陽臺窗,創建獨立的欄杆了~

已經購買教程的小夥伴,可以到教程裏查看詳細介紹,也可以下載源文件哦,雖然還不完善,不過算是給大家提供一個思路吧~

好了,今天的教程就到這裏了,主要是我也只是在測試,當然還需要大家自行嘗試,有不對的地方,請指正哈!

本公衆號還有其他Dynamo案例教程:

一、Dynamo批量將房間名稱轉換爲模型文字

二、Dynamo一鍵清理Revit中未放置的房間和多餘的房間

三、最短路徑——通過Dynamo批量創建行進路線

四、通過Dynamo批量打印PDF圖紙

五、Dynamo批量分離中心文件並另存到指定目錄

六、Dynamo讀取cad圖快座標,匹配地形種樹

七、Dynamo自動創建門窗詳圖

八、批量刪除不需要過濾器

九、根據Excel創建管道系統及材質

十、墨西哥 jardines de 餐廳竹框架柱Dynamo建模思路

發佈於 4 分鐘前

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章