× 关注微信公众号
发布于:2018-04-08 18:21:16

BIM小编

更多
本文由网友 〃刪除、過去‖ 投稿分享

经过一段时间的Dynamo学习,在插件授权过期没有续上的时候,决定测试一下自己的学习成果,从土建建模个人觉得比较麻烦的过梁添加进行制作,下面就是应用到的节点详解,希望大家能够对整个布置提出建议,进行优化。

一. 数据处理

1.

 

在这里先对整体项目进行选中,从中对墙,门,窗进行划分,方便后面进行划分整理,由于墙体需要特殊的节点进行读取,所以对整个构件的族进行处理,同时应用String.AllIndicesOf,String.IndexOf节点进行选取选取。

2. 

采用FamilyInstance.GetType节点,对窗体,门数据进行读取

3.

 

判断宽度,将规范宽度填入,与整个门宽数据进行判断,再利用List.AllIndicesOf与IF语句进行区分,整个逻辑顺序分为上图中进行梁高度H与梁宽度B的判断

4. 

将门型号,门宽度和门高度提取,对门宽度和门高度进行数据处理,完成梁线,过梁型号选取的前期准备。

二、

 

采用数学公式对之前提取的数据进行处理,这一步骤的目的是为了获取梁中心线X,Y坐标与梁顶高度值。

使用Element.GetLocation节点,获取门类型的中心点位置,利用宽度进行两边拓展,利用高度加上过梁高度进行梁高度最终确认,中间使用Point.Add节点进行两侧点计算,之后使用Line.ByStartPointEndPoint进行连接,确定最终梁线。

三、过梁型号与梁线匹配

 

使用FamilyInstance.GetHost节点进行门归属墙选取,之后通过FamilyType.Name与WallType.ByName节点进行墙体选取和进入能够读取数据状态,通过Element.GetParamaterValueByName与List.AllIndicesOf节点进行分类,将不同墙体厚度进行区分,

这里对墙线向量进行选取是通过将数组拍平,通过List.AllIndicesOf节点进行重新排序,通过固定的排序将所有数据进行重新组织。

通过前面获取的梁线与墙线通过Vector.IsParallel进行判断是否需要进行旋转,

 

对处于不平行状态的梁线与墙位置进行选取,并通过Vector.angleAboutAxis节点对角度进行读取

 

再次使用索引命令,将梁线选取,在使用180-角度的方式计算改旋转角度,保证墙体再倾斜状态下能够与墙体保证平行。通过Geometry.Rotate节点进行旋转应用得到与墙体平行位置的梁线,到这一步所有的梁线处理完毕,下一步进行构件的匹配。

三、构件名称匹配

对墙体厚度进行读取按照之前确定的排序顺序,并进行字符串转化,并通过之前根据门宽度确定的梁高度进行归属

 

 

通过字符串的处理,得到构件名称(此处构件名称处理太过冗长,希望大家指正),得到构件名称之后,根据前面筛选的平行判断条件选出的梁线进行分别对应

再次使用List,GetItemIndex节点进行排序选取,使梁线对应的构件名称能够正确对应,标高通过Levels进行选择,最后通过StructuralFraming.BeamByCurve节点进行过梁的创建和放置。本次的讲解针对的其中一组数据,剩余的三组数据采用相同的方式进行归类整理,就可以通过Dynamo创建整个项目的门窗过梁。

使用上面方式创建的门过梁,能够在不使用插件的起提下提高自己的工作效率。