利用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 分钟前

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