Dynamo for Revit在施工图设计中的应用
——门窗表、门窗详图

2021-02-11 05:59李德全
土木建筑工程信息技术 2021年6期
关键词:明细表图例标高

李德全

(北京市建筑设计研究院有限公司,北京 100045)

引言

近些年,国内多数设计院都在试图推广“BIM正向设计”[1],但是在这个过程中,不仅仅是一个软件的过渡,而是一个工作方式的转变,一种思维逻辑的改变。

多数设计院都选择Autodesk公司的Revit作为实现BIM三维设计的基础工具,因为它基本可以满足从二维设计到三维设计的转变过程,并且设计师比较容易上手。

但是在实际使用过程中,Revit虽然可以勉强满足平面图、立面图、剖面图等的绘制要求,但是效率远远没有使用CAD等制图工具高。并且在详图、系统图等方面,Revit这款三维设计软件,在这些方面还有些显得力不从心。例如,在门窗表制作的过程中,虽然利用Revit内置的明细表功能,可以快速地统计出同一种窗的个数,以及各种参数信息,但是出图格式却并不能满足我们设计院的常用格式,无法实现分层统计。再例如,在绘制门窗详图的时候,Revit虽然可以在图例视图中,将制作好的门窗族显示为平面图例或者立面图例,但是却无法自动统计图纸中的门窗数量,并在图例视图中按指定格式排列。

为了解决这个问题,可以采用Revit内置的图形化编程工具——Dynamo for Revit[2]。利用Dynamo编写图形化程序[3],然后配合Revit内置的一些功能,可以快速制作出满足我们制图要求的门窗表及门窗详图[4]。效率更高,准确度也得到了保证。

1 项目概况

由于项目体量比较大,在实际建模过程中,对模型进行了分解,并且在不同的模型中分别绘制对应的图纸,但是在最后进行门窗统计的时候,虽然明细表可以统计出数量[5],但是格式无法满足要求。门窗详图更难统计,无法保证图例的准确性与唯一性,给项目造成了不小的困扰。

在以往的项目中,都是根据统计的门窗表,然后人工绘制每个门窗的详图,最后再手动排版,效率低,且准确性得不到保障。针对此特点,决定采用Dynamo图形化编程工具[6],辅助完成门窗表及门窗详图。

2 技术路线

2.1 门窗表

由于Revit不允许手动批量添加共享参数,所以需要手动逐个添加,故选用Dynamo批量添加的方式,根据Dynamo参数化的方式,基本技术路径如图1所示。

2.2 门窗详图

在绘制门窗详图的过程中,有几个不可避免的问题,一个是正确统计门窗类型的数量[7],另一个是快速绘制门窗详图[8]。在Revit中,每个门窗的详图可以在制作族的时候一并完成,但是无法自动统计并排版。根据Dynamo参数化的方式,基本技术路径如图2所示。

图2 门窗详图技术路线

3 Dynamo辅助生成门窗表方法研究

3.1 辅助创建门窗表方法

(1)获取项目中所有的门窗

用Dynamo获取项目中的所有门窗,并获取门窗所在标高,如图3所示,然后取标高列表的唯一值,作为后面分层统计门窗的基础数据备用。

(2)对所有门窗添加标高共享参数

可以使用Orchid节点包的Parameter.CreateSharedParameter节点,为门、窗添加标高共享参数,并且为实例参数,如图4所示。

图4 添加门窗标高共享参数

(3)对门窗的所有标高参数,全部填入值“0”

为了避免后期调整门窗所在标高,造成门窗表统计错误,每次调整模型后,需重新运行本程序,如图5所示,先将门窗所有标高参数全部填入值“0”。

图5 所有标高参数全部写入值“0”

这里用CodeBlock节点,构造一个waitfor函数,如图6所示,等待创建完标高参数以后,再写入标高参数值“0”。

图6 构造等待函数

(4)替换门、窗所在的标高参数值为“1”

继续用waitfor函数,等待所有参数值均填入“0”以后,再对门窗所在标高,填入值“1”,如图7所示。

图7 门窗所在标高参数写入值“1”

(5)最后利用Revit的明细表功能,创建门窗表

新建Revit门窗明细表,在明细表属性—字段选项卡下将图8中红框所标的字段,均添加到明细表中。

图8 添加字段

图9 设置分组

在明细表属性中排序/分组选项卡下设置按类型分组,并取消勾选“逐项列举每个实例(Z)”,如图9所示。在明细表属性中格式选项卡下,选中标高参数,在右下角的条件格式里,选择计算总数[9],如图10所示。点击确定后,就能得到一个符合我们设计要求的门窗明细表,生成结果如图11所示。

3.2 优势与效率对比

利用Dynamo添加参数并写入参数值,可以在保证质量的同时,大大提高工作效率,如图12柱状图所示,手动添加共享参数,只能一个一个添加,然后逐层选择门、窗写入参数值。通过Dynamo的方式,可以瞬间完成参数的添加和参数值写入,而且项目规模越大,Dynamo提升效率更加明显。

图10 对标高参数,计算总数

图11 门窗明细表

图12 工作效率分析对比图

图13 选择门窗

4 Dynamo辅助生成门窗详图方法研究

4.1 辅助创建门窗详图方法

(1)选择链接模型中的门、窗和当前项目中的所有门、窗类型

根据设计师框选的链接模型和选择的族类别,选择链接模型的门、窗族实例和当前项目中的所有门窗类别,如图13所示。

(2)获取链接模型族类型

根据上一步得到的链接模型中的门、窗族实例,取唯一值后,再获取门、窗的族类型,如图14所示。

图14 获取链接模型中门窗族的类型

(3)对比链接模型和当前项目的门窗类型

可以在Python Script中编写简单的Python代码[4],对比链接模型的门窗类型与当前项目中的门窗类型,筛选出当前项目中没有的类型,并复制到当前项目中,如图15所示。

Python Script中代码如下:

import clr

clr.AddReference(′ProtoGeometry′)

from Autodesk.DesignScript.Geometry import *

l1=IN[0]

l2=IN[1]

out=[]

for x in range(len(l1)):

for y in range(len(l2)):

if l1[x]==l2[y]:

out.append(y)

OUT=out

图15 复制链接模型中族类型到当前项目

(4)放置门、窗图例和图框图例

由于Revit API的限制,不允许通过Dynamo直接在图例视图上放置族图例,所以创建好门窗图例视图以后,先手动放置一个门窗图例和一个图框图例,如图16所示。

图16 放置图例

(5)合并去重

图17 组类型合并去重

根据获取的链接文件和当前文件中所有的门窗族类型,合并后去除重复值,作为最后生成门窗详图所需的类型,如图17,所用代码同上文(3)中代码。

(6)创建向量列表

在放置好一个图例以后,需要复制这个图例,以达到创建所有门窗图例的目的,所以需要先创建一组向量,用来复制图例,然后允许设置每行图例的个数,以及不同图框族的尺寸,如图18。

(7)复制图例

根据前面取得的族类型唯一值数量和向量列表,复制放置的图例和图框,并利用Element.SetParameterByName节点,将复制的图例类型,替换为实际的族类型,如图19。

(8)读取族参数,写入图框

到这里门窗图例已经放置完成,需要将图框的参数和门、窗族中的参数关联,可以利用Element.GetParameterValueByName节点,读取族的参数,然后再用Element.SetParameterByName节点,写入到对应的图框族,如图20所示。

到这里,创建门窗详图的工作就基本完成,为了进一步进行自动尺寸标注,经过测试,只能标注外轮廓,还无法实现自动判断门窗是单扇还是双扇,以及竖梃的分隔位置,所以并不能完全自动化。

(9)获取门窗BoundingBox投影到图例视图

图18 创建向量列表

图19 复制图例

图20 读取和写入参数

图21 获取图例BoundingBox,并投影到图例视图平面

在创建完所有图例以后,可以通过获取BoundingBox的方式,获取所有图例的外轮廓,然后投影到图例平面上,作为尺寸标注的参照线,如图21所示。

(10)创建一道尺寸标注

图22 创建尺寸标注

图23 自动生成的窗详图示例

利用Dimension.ByElements节点,在图例视图中创建尺寸标注,如图22所示。根据上一步得到的BoundingBox投影轮廓线,转换为图例视图中的详图线,进行尺寸标注。

到这里,一张准确的门窗详图就自动创建完成了,只需要设计师对尺寸标注进行调整即可达到出图的要求,生成结果如图23所示。

4.2 参数化建模方式与手动出图的效率对比

与门、窗表相比,门、窗详图更能体现Dynamo图形编程带来的好处,不仅统计准确,还能按需求定制门窗详图的显示样式、排版等,有效地解决了设计出图过程中的难题,提高了质量和效率。

在大型公建项目中,利用Dynamo生成门、窗详图的优势更为明显,大量的门、窗数量和类型,人为很难统计准确,而Dynamo可以快速准确地完成该工作。

5 结论

利用Dynamo辅助施工图设计,可以解决很多痛点问题,并且能够有效减少人为出图的工作量。对于一个简单并且重复性很高的工作,用Dynamo参数化编程解决起来更是游刃有余。相较于Revit本身,Dynamo优势更明显,如下:

(1)重复工作自动化:对于简单机械的重复任务,可以用参数化建模的方法,简单高效地完成;

(2)提高模型的准确度:参数化建模的好处,就是所有数据都是精确控制的,避免了人为拖拽造成的模型精度下降。

在施工图设计过程中,Revit很多功能并不能满足需求,但是通过原生的可视化编程插件Dynamo就可以解决很多建模或者出图中的问题。在原生节点无法满足要求的时候,还可以通过Python编程,调用Revit API解决更多问题,如快速创建图纸、快速布图、批量导出DWG、停车位指定顺序编号[10]等。通过Dynamo可实现重复工作自动化,在Revit施工图设计过程中节约了很多时间,有效调动了设计师采用BIM工具设计的积极性。

猜你喜欢
明细表图例标高
修订《中华人民共和国企业所得税年度纳税申报表(A类,2017年版)》部分表单样式及填报说明的公告国家税务总局公告2018年第57号
GNSS技术在高层建筑施工测量中的应用
找拼图
找照片
连续刚构桥梁施工控制
如何让学生巧用图例解决数学问题
可爱的小鸟
论打桩引起的基坑开挖问题及桩基标高影响分析
高层建筑的标高控制技术
2011年十家拍卖公司秋拍1000万元以上成交拍品前50名明细表