最近一直在尝试,如何能用Dynamo,快速创建门窗详图,经过几周的测试,终于实现了基本功能,后续还需要继续优化,今天就来简单分享下成果,简单录了个屏,展示下基本功能:
利用Dynamo自动创建Revit门窗详图_腾讯视频
效果基本就是这样,一键完成,之后会在优化尺寸标注等问题。
接下来,简单分享下思路吧,毕竟这个东西辛苦研究这么久,程序就不分享出来了。
首先,由于我的水平有限,并没有找到直接创建门窗图例的API,所以我就变通了一下,先在图例视图上放置了一个门窗图例,然后收集当前视图中的所有图例,然后用List.FilterByBoolMask过滤出所有Category为图例构件的图元。
然后呢,利用List.Deconstruct,只取第一个,其他的用Elements.Delete删除,只保留一个即可。
之后呢,我们来创建一个点阵,用来复制上一步保留的门窗图例,如下图:
这里我先创建了一组点,然后转置并拍平,因为我们要的列表是从左到右,然后换行继续从左到右,所以我们还需要对列表进行处理,来创建所需的向量,这步比较复杂,需要多次尝试,来理解其中的意义,如下图:
这里我就不过多解释了,然后将前面两步的列表,合并,创建向量:
之后取出我们所需的向量列表就行了。
到这里,我们的准备工作就完成了,然后就可以复制图例了,用下面这个节点:
这样我们就得到了一组图例,但是现在所有的图例都是复制的第一个图例,都是一样的,我们需要通过Element.SetParameterByName,来设置图例的类型,同样的,图框也是这样创建,然后获取图例的参数,写入图框即可。
到这里我们的基本功能就实现了,快速创建门窗详图。
从上面的视频中,我们看到,我的门窗,还有一部分是在链接模型里,这里我们需要用到BimorphNodes里的一些节点,来复制链接模型的族到当前项目,这里大家自己尝试即可。
这里比较麻烦的是,在将图纸的图例,改为链接模型里的族类型的时候,直接获取链接模型的族类型,在当前文档是无法写入图例参数的,所以需要先获取族类型的名字,然后获取当前项目的族类型名字,然后两个列表合并再取唯一值,之后通过名字获取族类型,再写入图例构件即可。这里只是一个列表的比对过程,也比较简单,大家也自己尝试就行了。
目前尚不完善的,就是尺寸标注这块,我还没找到方法,来识别这个窗是双扇还是三扇,所以我没法创建完美的两道尺寸标注。
我现在,只是通过获取图例的外轮廓,创建了两道相同的外尺寸线,利用节点Dimension.ByElements创建的尺寸标注:
我这里是获取了门窗的BoundingBox,然后拍平在图例视图上:
之后利用顶点,重新构建要标注的位置线,进行标注的。
到这里,视频中的门窗详图就基本完成了。
其中用到的节点包如下,有需要自己下载即可,我就不在文章里放了:
1.Clockwork
3.LunchBox
4.Spring nodes
5.Rhythm
6.MEPover
7.Ampersand
8.Spoonup
好了,今天得分享就到这里,后续如果我找到更好的方法,我会继续分享的。
如果你有更好的解决办法,欢迎留言一起交流~~
网友评论