美文网首页BIM的乐趣
利用Dynamo批量为阳台窗添加栏杆

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

作者: 九哥BIMer | 来源:发表于2020-07-29 10:24 被阅读0次

    Dynamo案例百解——简单实用的Dynamo图文教程基本框架已经快完成了!有兴趣小伙伴,要抓紧了哦本教程计划8月1日起结束预售,恢复原价了哦

    今天呢,我想利用Dynamo解决一个施工图绘制过程中常见的问题,就是阳台栏杆。我们知道,住宅设计规范里要求,底层、多层住宅的阳台栏杆净高不应低于1.05m,中高层、高层住宅的阳台栏杆净高不应低于1.10m。所以我想利用Dynamo程序,自动为所选阳台窗创建栏杆,避免出现漏掉的问题。

    于是,就打开Dynamo搜了下,没有Railing的相关节点,于是就翻了下Revit API手册,直接搜Railing就找到了创建栏杆的方法:

    image.png

    其中有三种创建栏杆的方法,第一种就很适合我们使用:

    image.png

    根据doc,curveloop,railingType和level创建栏杆:

    image.png

    那么基本语法就有了:

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

    然后就是利用几何关系,来构造我们所需放置栏杆的曲线。

    但是,我也没想到啥好方法,于是就粗糙的用节点,来构造下我要放置栏杆的曲线,欢迎小伙伴提供简便方法哈~

    首先,我获取要放置栏杆的阳台窗,然后获取相关的基础数据,如窗的宽度、位置、所在主体、主体墙的厚度等:

    image.png

    然后通过一些列的数学计算和点的移动,获取的和窗一样长的两条线,分别再墙两侧:

    image.png

    然后在墙两侧都构造出了栏杆的曲线:

    image.png

    之后通过判断曲线上的任意一点,是否在房间内,将墙外的曲线过滤掉,就可以用来生成栏杆了:

    image.png

    然后获取项目中所有的栏杆类型,选一个需要的:

    image.png

    同时获取每个窗所在的标高:

    image.png

    最后的连入我们创建栏杆的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)
    

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

    image.png

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

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

    发布于 4 分钟前

    相关文章

      网友评论

        本文标题:利用Dynamo批量为阳台窗添加栏杆

        本文链接:https://www.haomeiwen.com/subject/hcdfrktx.html