利用Dynamo批量为阳台窗添加栏杆

今天呢,我想利用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)

更改以后,就可以完美的为每个阳台窗,创建独立的栏杆了~

已经购买教程的小伙伴,可以到教程里查看详细介绍,也可以下载源文件哦,虽然还不完善,不过算是给大家提供一个思路吧~

好了,今天的教程就到这里了,主要是我也只是在测试,当然还需要大家自行尝试,有不对的地方,请指正哈!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九哥BIMer

予人玫瑰,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值