基于Revit的设备信息自动录入算法研究
2019-05-11王博王胜华
王博,王胜华
(1.中铁电气化局集团有限公司设计研究院BIM中心;2.军事科学院国防工程研究院)
1 概述
随着BIM技术在我国建设工程领域应用的飞速发展,传统的BIM应用如三维可视化、碰撞检查、漫游等已经不能满足施工阶段对庞大、实时更新的信息的需求。而决定建设工程项目目标实现与否的关键阶段正是施工阶段。因此,出现了一大批基于BIM的施工管理平台如广联达、鲁班等。另外基于BIM的GIS技术[1]、基于BIM的物联网技术[2]、基于BIM的二维码技术[3]等与BIM相结合的技术也得到了极大的应用,这些应用都极大的提高了施工管理水平。这些应用得以顺利实施的前提是其BIM模型具有较高的精细度(LOD)。在建设工程项目全生命周期中,信息模型需要随着工程进展不断完善, 因此BIM模型信息录入也成为BIM建模的关键工作,最终决定BIM在建筑全生命周期的应用能否顺利实施。本文以西安北至机场城际轨道交通项目为背景,对Revit进行二次开发,实现BIM设备信息的自动录入并生成二维码,利用“BIM+二维码”技术,提高施工现场BIM数据管理水平。
2 工程概况
西安北至机场城际轨道项目连接西安北客站及西安咸阳国际机场,线路全长29.31km。共设车站10座,车辆段1处,主变电站2座,控制中心1处。
在本项目中,将BIM施工管理平台、BIM+二维码技术融入传统的施工管理工作中,通过手持设备扫码获取施工资料和物料信息,以此来提升施工管理水平。项目实施中发现,本工程设备数量庞大,需要录入的BIM数据较多,且需要实时更新。因此本文从Revit二次开发入手,以Excel表格作为信息传递的载体,实现BIM数据信息的自动录入,节省大量人力、时间以及软硬件成本,提高施工现场BIM数据管理应用水平,保证项目目标顺利实现。
图1 程序流程图
图2 软件交互窗口
3 信息自动识别
本文采用C#语言,首先读取Excel设备信息统计表,以数组的方式储存信息;然后过滤项目中创建的设备族实例并读取其编码,然后与Excel设备信息统计表中的设备编号对比,如果匹配则为其添加族实例参数并将相应设备信息录入。程序流程图如图1所示。
3.1 Excel设备信息的读取
经统计本项目10站,9区间,1处车辆段,2座主变电站,1处控制中心包括接触网、电力、变电等十余个专业,总计设备的信息量高达一千余万条。如此庞大的信息量几乎不可能单靠BIM人员手动输入到BIM模型中。
图3 设备实例参数及信息
采用函数getData()(在此不做赘述)读取Excel文件信息之后将信息储存在dataGridView控件中,并通过图2所示交互窗口反馈读取到的数据信息,对数据进行编辑修改。
3.2 创建族参数并录入设备信息
过滤项目模型中所有的设备、构件族实例,读取其实例参数“设备编码”,与dataGridView中设备编码比对,如果相同则通过FamilyParameter类中的AddParameter()函数为该设备添加与Excel设备信息统计表表头对应的族实例参数,然后将相应的信息赋予该参数,实现设备信息的自动录入。通过以下循环为每个设备建立实例参数并录入信息,详情如图3所示。
List
for (int i = 0; i < mList.Count;
i++)
{
int r = 0;
int c = 0;
P a r a m e t e r I D = m L i s t[i].LookupParameter("设备编码");String StrId = ID.ToString();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
string Header = dataGridView1.
Columns[j].HeaderText;//读取表头参数名称
if (Header == "设备编码")
{
for (int k = 1; k < dataGridView1.Rows.Count; k++)
{
string ThisId = Convert.ToString(dataGridView1.Rows[j].Cells[k].Value;);
if (StrId == ThisId) //判断设备编码是否对应
{
r = j;c = k;//记录编码匹配成功的设备参数位置
}
}
}
}
if (r != 0)
{
D o c u m e n t f D o c = m y D o c.EditFamily(mList[i].Symbol.Family);//获取族文档
for (int m = 0; m < dataGridView1.Columns.Count; m++)
{
string Header = dataGridView1.Columns[m].HeaderText;
FamilyParameter param = fDoc.FamilyManager.AddParameter(He ader,BuiltInParameterGroup.PG_TEXT,ParameterType.Text, true);//添加相应的实例参数
fDoc.LoadFamily(myDoc, new familyLoadOptions());//载入族
Parameter para = mList[i].LookupParameter(Header);
p a r a.S e t(C o n v e r t.ToString(dataGridView1.Rows[r].Cells[c].Value));//录入信息
}
}
}
4 创建面板
Revit API中IExternalApplication接口提供OnStartup、OnShutdown两个函数,分别用来制定Revit启动和关闭时所需的功能。重载OnStartup函数在Revit启动时将本文所述设备信息自动录入程序以选项卡、按钮的形式添加进Revit软件中。
5 应用效果分析
启动Revit,打开项目,单机按钮启动程序读取Excel设备信息,确定导入,软件即可自动为项目中所有编码与Excel表中设备编码对应的设备添加实例参数并自动将相应的信息录入设备。经统计,本项目二十余万台设备总计一千余万条信息应用本程序录入仅0.5人/天。如果按传统方式用人工录入,其人力资源、时间、软硬件成本将是巨大的,并且准确性无法保证,后期对数据的更新和维护依然会耗费巨大的人力物力。由此可见本程序极大的提高了BIM模型信息录入效率,保证了信息的准确性,具有良好的经济效益。本项目信设备信息录入模型后,通过施工管理平台,批量导出包含项目信息的二维码,实现了一物一码,便于设备更新维护,极大地提高了施工管理水平和运维水平。