X
返回顶部
当前位置: 首页> BIM资讯> BIM技术

bim如何做到自动排砖图?Dynamo自学笔记--二次砌筑自动排砖

发布:中文网小编3号 浏览:4274人 分享
发布于:2020-09-07 14:36

    文章来源:小斗志学BIM

    最近在做BIM管理的课程,由于课程需要,所以自己简单的研究下dynamo,做了一个二次砌筑的自动排砖的小应用,先看下效果。

image.png

    本人仅为个人爱好进行研究,没有经过专门的学习,所以思路可能有些野,请大佬轻喷。

    好废话不多说,我们开始。

    需求:选择一面然后自动生成整面墙体的排砖。

    解题思路:

    1、选择墙体之后,自动选择墙面。

    2、对墙面进行划分,进行砖块点位的定点。

    2.1、奇数列点位定点

    2.2、偶数列点位定点

    2.3、奇数列开头板块砖的点位定点

    2.4、剩下的异型砖点位定点。

    3、依据点位放置族

    具体操作:

    1、通过墙体找面,我的思路是,墙是一个长方体,他的两个面的面积肯定是要远远的大于另外的四个面的。所以先通过“ModelElement”选择墙体,用“Element.Faces”选择其中的六个面,然后计算面积,最后“>”找到大于平均数面积的面,也就是我们要找的两个红箭头的面,再选择其中之一就ok了。

image.png

    墙体的六个面

image.png

    通过墙体找面

    2、要想对墙面进行拆分就先需要找到这个面的长和宽,这里是通过“List.Maximumltem”和“List.Minimumltem”这两个节点找到一个面中最长的曲线的也就是长方形的长,和一个面中最短的曲线也就是长方形的宽。

image.png

    长和宽

    3、有了长和宽之后就好办了,首先我们先确定砖块的长和宽分别为600,200(这里进为了方便计算省去了砖块厚度以及抹灰的厚度。另外请注意此数据不是标准砖块的大小)。用正面墙的长度除以砖块的长度就等于我们想要的一层中的砖块数量。

image.png

    奇数层和偶数层的排列

    注意奇数层的砖块的定点是从1开始的,偶数层的点位是从0.5开始的。这是因为墙面上的点是砖块的中心点。这里边有个疑问点就是“1/b*c”这个节点是为了后边的UV分割做准备的。简单的说UV分割的意思就是总长度是1,各个分割点为一个具体的小于1,大于0的小数。

image.png

    长度分割列表

    同理竖向的分割列表也是类似的。

image.png

    高度分割列表

    4、有了长度列表和高度列表之后就可以通过“Surface.PointAtParameter”这个节点生成我们所需要的基本的砖块排列,然后通过“FamilyInstance.ByPoint”基于点放置族。

image.png

    依据点位放置砖块

    这里有个易错点,就是连缀方式要选择交叉。

image.png

    5、到这步才刚刚完成一半,现在还有三个点没有放置族呢,一个是奇数层的开头的标准半块砖,另外两个是奇数层与偶数层最后边的两块异形砖。

    6、先来看一下奇数层开头的半块砖,这块比较简单。一个标准砖块的四分之一(因为定位的是砖块的中心点,半块砖的中心点就是一块砖的一半的一半)。然后借用高度列表中的奇数层列表就OK了。后边的内容和第4步类似。

image.png

    奇数层开头的半块砖

    7、这里边我选择通过复制族类型,并新建一个宽度为300的砖块族。这里用到的节点为Clockwork软件包中的“FamilyType.Duplicate”节点进行族类型的复制操作。然后对复制出来的族类型通过“Element.SetParameterByName”进行参数设置。

image.png

    新建半块砖的族和点位放置

    8、最后同理,奇数层与偶数层的结尾处异型砖也是同样的道理,定点的位置为:

    1/[(总长度-已经放置好了的砖块长度)/2+已经放置好了的砖块长度]*总长度

    只是本人写这个代码的时候有点绕不明白导致看上去很复杂。

image.png

    最后异形砖的定位

    同理异形砖的大小也和半块砖同一种生成方法。

image.png

    最后异型砖的族的生成

    9、最后,整体文件,中间部分只是看起来乱而已,但是实际上还是比较清晰的。

image.png

    总体代码

    10、深化方向,做完之后我自己发现了一些小问题正在优化中,另外想要通过Categories节点实现全部砌筑墙的自动深化,但是遇到列表转换问题,正在研究中。

    如果有大佬指教在此先提前感谢一下。

image.png

    最后声明,本人为Dynamo小白,整套代码自己研究的,难免有些问题及没有考虑到的地方,还请大佬轻喷。

    Revit中文网作为国内知名BIM软件培训交流平台,几十万Revit软件爱好者和你一起学习Revit,不仅仅为广大用户提供相关BIM软件下载与相关行业资讯,同时也有部分网络培训与在线培训,欢迎广大用户咨询。

    网校包含各类BIM课程320余套,各类学习资源270余种,是目前国内BIM类网校中课程最有深度、涵盖性最广、资源最为齐全的网校。网校课程包含Revit、Dynamo、Lumion、Navisworks、Civil 3D等几十种BIM相关软件的教学课程,专业涵盖土建、机电、装饰、市政、后期、开发等多个领域。

    需要更多BIM考试教程或BIM视频教程,可以咨询客服获得更多免费Revit教学视频

l  BIM培训网校课程目录

l  Revit零基础培训教程

l  BIM项目实战训练营


BIM技术是未来的趋势,学习、了解掌握更多BIM前言技术是大势所趋,欢迎更多BIMer加入BIM中文网大家庭(http://www.wanbim.com),一起共同探讨学习BIM技术,了解BIM应用!