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)
更改以后,就可以完美的为每个阳台窗,创建独立的栏杆了~
已经购买教程的小伙伴,可以到教程里查看详细介绍,也可以下载源文件哦,虽然还不完善,不过算是给大家提供一个思路吧~
好了,今天的教程就到这里了,主要是我也只是在测试,当然还需要大家自行尝试,有不对的地方,请指正哈!
发布于 4 分钟前