完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

ad.jpg

盒子的新衣梦:dynamo基于实例表面生成可编辑饰面(投稿/文/赵子年)

发布于:2020-08-11 15:04:34
首页/技术分享/Dynamo
收藏
7305

赵子年

更多

写在前面:相信很多bim工作者都听说过dynamo这个神奇的小工具,同时也有很多小伙伴做了一些尝试和工作中的应用,虽然可视化编程在桌子(Autodesk)平台上的上线时间远不如Rhino上的Grasshopper,可能在稳定性和第三方库的丰富程度上还有很大的提升空间。但是笔者还是强烈建议每一个不甘心成为翻模机器的同学,入门并学习一款可视化编程软件,它将极大的解放你的双手,并固化你的奇思妙想,目前来看,Dynamo在数据处理及重复性任务方面,已经可以提供非常多的自动化程序,在大量场景中帮助我们高效准确的完成冗长复杂的任务,特别是再配合Python Script之后,定会帮助你开启一个不一样的工作视角。

本次分享主要讨论一个大家比较感兴趣的主题:’饰面’,现在市场上有很多插件可以做到这一点,但大多产品生成逻辑可能和我们想要的效果并不一致,所以今天笔者想通过一个简单的小案例,帮助大家理解dynamo环境中,一个饰面从识别到生成的基本逻辑,以帮助伙伴们结合自己的知识和需求,写出适合自己手头工作的程序。

  本教程适合有一定dynamo基础的同学,其中可能会涉及一些自定义节点或者python,大家不必感到困难,其实程序学习最重要的是思路,文末我会把所涉及的节点和代码块上传供大家下载,前期只要能正确使用即可。

注:因为dynamo不同版本对电池端口的定义不同,为保证您在学习本章节的过程中,达成的结果和笔者一致,请务必使用:Revit—2018,dynamo-1.3.3进行学习。

本课程涉及到的dynamo源文件,dynamo安装包,revit案例素材以及Springs节点包

我已经打包至: 链接:https://pan.baidu.com/s/1lUXDT9-X9gRRIIfiWsBBWQ 

提取码:ABIM

正文开始,为了方便理解,这里给大家做了一个小导图

1.png

这个导图是我对基于整体结构模型(墙,梁,板,柱)生成面积正确,材质可调,扣减合理的饰面统一规划,其中有些细节还没有填写,放在这里只是希望大家有个整体概念,使我们学习之前,很清晰的知道我为什么学,学了以后能解决什么问题。

学习 Dynamo, 如果你把它当成是爱好,学起来定然日进千里。当你能把爱好转化成生产,工作中亦是事半功倍。

好啦,熟悉整体部署了,我们来说一下今天,就是此时此刻我们应该解决的问题。

2.png

第一行是我们的流程

image.png

每一列是实现当前流程的方法

image.png

现在我们拿第一个流程既获取待创建饰面的形状和大小开始3.png

我第一步从选择实例-获取表面-偏移表面开始,下面这个流程相信大家都能看懂,Offset节点用作偏移表面

4.png

如果你顺利的完成了上述节点,并在Offset节点上赋予了一个>0的值,那你将得到下图,淡黄色且不可选中的图元,就是我们用来计算的“面”

5.png

聪明的小伙伴看到这里可能已经明白了,会说:好了好了 不用讲了,只要把这个面转化成实体就好了,这节课结束。

嗯,没错,这样确实我们已经完成了大部分的任务,但是您将得到一个下图这样的饰面。

6.png

因为实体饰面是存在厚度的,而我们获取的是一个没有厚度概念的相切平面,当您给这样的平面赋予厚度时棱角就出现了,没错,棱角的深度就是等于我们饰面的厚度的。

这种问题显然是我们积极上进的青年人所不能接受的,所以我们还是承接上边的流程,再生成实例之前,先把棱角处理掉。

看,人生就是这样,我们一直在花80%的时间解决那20%的问题。

7.png

所以我们来继续分析,既然棱角是因为厚度产生的,那我们其实是要在赋予厚度的同时,将每一个“面”的四边都扩大与厚度等值的距离。

嗯,,小伙伴们停下来消化一下这句话,还没想好的小伙伴参照下边的图片这就是我们今天想达到的效果

8.png

这时候又有聪明又伶俐的同学说了,骗子!虽然棱角被填平了,但是你明明有重叠的部分。

哈哈哈,嗯,没错,一个程序诞生的过程,是我们不断纠正思想的过程,为什么我没有直接把节点包放上来呢,因为我不想分享某一个技能亦或是方法,我想把思路告诉大家,小时候家里穷(emmm好像现在也不富裕呢),村长总是对我说,授人以渔不如有受人以鱼。。。。此处省略

所以呢,我们这节课就按照这个方法做,这样下节课我们对程序进行改动调整的时候你就会明白:噢噢噢噢!原来是这样,妙啊~

上图就是没有棱角但是有重叠的饰面啦,所以我们继续向着它前进吧。

说了这么多,我们其实只获得了没有厚度且未经处理的表面而已,处理思路是:将“每个面”解析成“4条线”,将“4条线”沿着各自的向量方向“偏移与厚度等值的距离”,进而形成新的“闭合轮廓”

听起来有点绕嘴,我们上节点。

4.png


因为以后会同时处理多个表面,这里我们加一个拍平。

9.png

基于面生成新的矩形

10.png11.png

到这里为止统一解释两个问题(送给爱较真的同学,新同学可以忽略):

1 为什么处理边线之前,表面要从实例上炸开也就是(Offset)?

答:在dynamo环境中,共边的“面”真的是在共用一条边,我们都知道立方体有6个面每个面4条边,所以一个体就有24条边吗?在dynamo中,只有棱边,也就是12条!!!

所以我们要对每一个边就行偏移的时候就会出问题,别问我怎么知道的。。。

解决方案就是我们这样,操作之前先炸开(Offset),强制不共边以后再操作。

2:为什么要把边线转变成矩形?而不是curve或者line什么的?

这个问题如果您之前再dynamo中用point的方式创建过闭合轮廓可能会知道,组成闭合轮廓的角点是有先后顺序的,顺序错了会对后边造成一系列的影响。同时,因为我们的24条边线是从12条棱边分裂出来的,即便各自独立,但是他们的方向向量还是雷同的,这点很重要。

我还是用图片解释一下:

13.png

上图其实是我们想要达到的效果,四条边线按照各自的法向量方向根据我们指定的数值偏移,但因为上述共边的原因,我们实际要面对的其实是下图的样子。

12.png

因为向量的雷同,造成了边线的偏移错误,而矩形的魅力在于自己特有的属性使之边线的法向量方向重置为正常。

相比较单独处理每一根边线的向量方向,先将其转为矩形再输出还是比较明智的。。。。

如果您坚持听我絮叨到了这里,那么恭喜您,现在的你应该拥有了一个基于原有表面扩大化的6个矩形表面了,如图

14.png

通过上述的操作,1.体—2.面—3.offest—4.面—5.线—6.offest —7.面—8.体—9.写入-10.牛批!这个流程中1-6我们都结束了,接下来只需要把我们按照饰面厚度正确改良过的新的饰面“边线”转化成新的面(surface),然后拉伸成有厚度的体,最后再写入即可节点也很简单。

15.png16.png

如果您看到上图这个样子,恭喜你,您只差最后一步了,将我们处理好的surface实体化并赋予材质,这里我们需要用到一个第三方节点:Springs

17.png

第一个端口接入我们处理好的surface,然后依次对照图片填写皆可。

诺,洁白的新衣就这样做好了。

18.png

最后为了奖励大家这么认真的坚持到最后,再给大家补充一个知识点。

20.png

上图族名程这里,如果老板想要让我统计饰面数量或者自定义名称该怎么办呢

这里直接给大家一个方法。

21.png

回头看看吧 是不是很完美。

19.png

节点包和源文件文首有链接,大家下载参照学习,下节课我们学习给饰面添加尺寸信息及参数,好好加油鸭!!!

本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。

未标题-1.jpg

上一篇:Revit中基于线的模型与结构框架的区别

下一篇:Revit中,瓷砖的缝(填充图案)怎么调整?