在学习了Dynamo一段时间后,我决定测试一下我的学习成果。我首先添加了门楣,我个人认为这在土木工程建模中比较麻烦。下面详细解释所使用的节点。我们提出并优化整个布局。
一数据处理 这里我们首先选择整个项目,然后从中分割墙、门、窗,以方便后续的分割和重新排序。墙壁需要读取特殊节点,因此整个组件系列都会被处理。应用并选择String.AllIndicesOf、String.IndexOf 节点。
使用FamilyInstance.GetType 节点读取表单和门数据
要确定宽度,请输入标准宽度,使用整个门的宽度数据,并使用List.AllIndicesOf和IF语句进行区分。 整个逻辑序列分为上面确定波束高度H和波束宽度B。形状。
提取门模型、门宽、门高,对门宽、门高数据进行处理,完成梁线、门楣模型选择的前期准备工作。
二、、采用数学公式对之前提取的数据进行处理,这一步骤的目的是为了获取梁中心线X,Y坐标与梁顶高度值。 使用Element.GetLocation节点获取门型中心点的位置,使用宽度来延伸两侧,使用高度和门楣高度来确定高度,添加一个Point .在中心添加节点,计算两侧点,并使用Line.ByStartPointEndPoint连接它们,确定最终的梁线。
三、过梁型号与梁线匹配 使用FamilyInstance.GetHost节点选择门所属的墙,使用FamilyType.Name和WallType.ByName节点选择墙并进入可以读取元素数据的状态。用于分类的GetParamaterValueByName 和List.AllIndicesOf 节点区分不同的壁厚。
这里,通过展平数组、在List.AllIndicesOf节点上排序、并按固定排序重新组织所有数据来选择墙线向量。
利用之前获得的梁线和墙线,通过Vector.IsParallel判断是否需要旋转。
选择非平行梁线和墙位置,并通过Vector.angleAboutAxis 节点读取角度。
再次使用索引命令选择光束线,并使用180 度角方法计算旋转角度,以便再次倾斜时墙壁是平行的。旋转Geometry.Rotate 节点以使光束线与墙平行。此步骤处理所有光束线,下一步是匹配组件。
四、构件名称匹配按照预定的排序顺序读取壁厚,进行字符串转换,并根据门宽通过预定的梁高进行插补。
字符串处理检索组件名称(此处组件名称处理太长,请修复)。一旦获得组件名称,根据先前筛选的平行度标准选择的光束线就会彼此对应。
再次使用List 和GetItemIndex 节点排序并选择与梁线对应的组件名称的正确匹配项。最后,门楣由标高创建并由StructuralFraming.BeamByCurve 节点放置。我们将在这里重点关注一个数据集。其余三个数据集也进行类似的分类和组织,整个项目的门窗门楣可以通过Dynamo创建。
通过使用上述方法创建的门楣,您无需使用任何插件即可提高工作效率。