掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及BIM软件技术领域,特别是一种基于BIM的排水管网数据传递、快速建模方法及系统。

背景技术

BIM技术在工程领域推广已久,取得了丰硕的成果;相较于二维设计,它具有展现方式更直观、专业间协同更方便、数据管理与共享更容易等优势。市政排水管网设计领域,亦对BIM技术进行了长期的探索与实践。

Autodesk Civil 3D软件(以下简称C3D)有着强大的场地处理和路线设计功能,是道路、场地BIM设计最常用的软件之一。对于排水专业,C3D中亦有相应的管网模块,提供了一系列功能,可用于市政排水管网的设计、建模及出图等。

C3D软件本身提供了“零件生成器”功能,用以参数化建立井/管族,但该方法创建零件族的功能有限、步骤繁琐。归根结底,C3D还是以场地处理和路线设计为主的软件,本身并不适合复杂离散结构单体的创建。

Autodesk Revit是一款非常流行的建筑BIM软件,十分适合构造复杂的建筑单体建模,且发展成熟,有大量已有族库、插件供使用。排水工程中,存在各种单体构筑物,因此Revit也是排水BIM设计必不可少的软件之一。此外,Revit能够方便地附加其他几何、非几何信息。

Dynamo是Revit软件内置的一款可视化编程软件,允许用户将内置或自建的功能节点,组合成具有特定功能的流程,实现参数化、自动化建模,从而提升工作效率,减少重复劳动。

现阶段,C3D和Revit虽同为Autodesk旗下的主流BIM软件,但其数据并未有效地实现共享,C3D的设计数据无法直接运用于Revit中;这导致BIM多软件设计和建模的体验较为割裂。软件间的数据传递,往往采用最原始的手动方式,效率低下、精度不高;或是需要通过中间格式,但不仅步骤繁琐,而且一般会有数据损失。

发明内容

本发明针对现有技术中的不足,利用Dynamo提供的可视化编程技术,打通C3D到Revit的软件间数据流转通道,提出了一种基于BIM的排水管网数据传递方法,并基于该传递方法实现了快速建模,提出了基于该传递方法的系统,高效地完成现市政排水管网设计及建模,基于一套数据,同时实现出图及建模。

为了实现上述目的,提出了以下技术方案:

一种基于BIM的排水管网数据传递方法,包括以下步骤:

建立第一BIM软件中的族库及模板;

根据所述第一BIM软件中的族库及模板创建Dynamo节点数据包;

根据所述Dynamo节点数据包建立Dynamo流程;

使用Dynamo流程将第一BIM软件中的数据传输到第二BIM软件中,在第二BIM软件中进行应用。

作为优选方案,所述第一BIM软件包括C3D;所述第二BIM软件包括Revit。

作为优选方案,所述第一BIM软件中的族库及模板满足以下条件:第一BIM软件中族的名称和第二BIM软件中族的名称对应;第二BIM软件中族的属性包括第一BIM软件用于参数化建模的必要参数,所述第一BIM软件用于参数化建模的必要参数包括地面标高、检查井底标高;第二BIM软件中族的属性包括非几何信息参数,所述非几何信息参数包括井编号、井类型。

作为优选方案,所述Dynamo节点包包括:在第二BIM软件中读取第一BIM软件中的数据的自定义节点和用于生成对应的第二BIM软件中检查井、管道模型的自定义节点。

作为优选方案,在第二BIM软件中读取第一BIM软件中的数据的自定义节点的获取方法包括以下步骤:利用内置的Python Script,基于第一BIM软件中对象模型的应用程序接口,通过Python代码调用后台的第一BIM软件数据的自定义节点。

作为优选方案,所述在第二BIM软件中读取第一BIM软件中的数据的自定义节点包括:连接第一BIM软件对象模型的节点;第一BIM软件管网中管道和检查井列表的节点;单个检查井参数的节点;单个管道参数的节点以及辅助节点。

作为优选方案,根据所述Dynamo节点包建立Dynamo流程,包括以下步骤:连接到第一BIM软件中的对象模型,并获取对象模型中指定名称的第一BIM软件中的管网模型;从所述管网模型中分别获取该管网中所有的检查井、管道;从检查井、管道中获取检查井数据和管道数据。

作为优选方案,所述检查井数据包括:族名称井平面位置;井名称;井底标高;井面标高;井旋转角度;所述管道数据包括管道起点坐标;管道终点坐标;管道管径。

基于相同的构思,还提出了一种基于BIM的排水管网的建模方法,采用上述任一所述的一种基于BIM的排水管网数据传递方法将第一BIM软件中的排水管网数据传递到第二BIM软件中,得到第二BIM软件中的排水管网数据,用所述第二BIM软件中的排水管网数据创建管道的BIM模型。

基于相同的构思,还提出了一种基于BIM的排水管网数据传递系统,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一项所述的方法。

与现有技术相比,本发明的有益效果:本发明借助Dynamo创建的自定义节点,打通了第一BIM软件中管网数据向第二BIM软件的传递通道,实现同一套数据在不同类型BIM软件中的快速传递,有利于实现精准BIM建模,使得建模效率和精度大幅提升。

附图说明

图1为实施例1中一种基于BIM的排水管网数据传递方法流程图;

图2为实施例1中一种具体的基于BIM的排水管网数据传递方法流程图;

图3为实施例1中读取C3D数据的流程图;

图4为实施例1中Dynamo流程的截图;

图5为实施例1中在C3D中设计的排水管网平面、纵断面;

图6为实施例1中通过本发明提出的技术路径,最终生成的精细化Revit模型。

具体实施方式

下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

实施例1

一种基于BIM的排水管网数据传递方法,流程图如图1所示,包括以下步骤:

建立第一BIM软件中的族库及模板;

根据第一BIM软件中的族库及模板创建Dynamo节点数据包;

根据Dynamo节点数据包建立Dynamo流程;

使用Dynamo流程将第一BIM软件中的数据传输到第二BIM软件中,在第二BIM软件中进行应用。

其中一种应用为根据传输得到的数据创建BIM模型。

作为一个具体的实施例,以第一BIM软件为C3D,第二BIM软件为Revit对本发明的方案进行详细描述,但是不作为对本发明方法的限制,基于本发明的构思,在其他BIM软件中的排水管网数据传递方法仍在本发明的保护范围之内。一种具体的基于BIM的排水管网数据传递方法流程图如图2所示。

其中,建立C3D族库及模板的步骤如下:

1)在C3D中,使用内置的“零件生成器”功能,建立C3D族,C3D族包括检查井、管道族库;

2)在Revit中,使用内置功能、族模板,创建需要的Revit族,Revit族包括检查井族、管道库;创建需要的检查井族、管道库需要满足以下条件:

① Revit族的名称和C3D族的名称一一对应;

② Revit族的属性中,有能够接受C3D的必要参数,以便参数化建模,必要参数包括地面标高、检查井底标高等;

③ Revit族的属性中,有必要的非几何信息参数,如井编号、井类型等。

其中,根据C3D族库及模板创建Dynamo节点包包括以下步骤:

在Revit内置的Dynamo中,创建必要的节点,包括读取C3D中的数据的自定义节点;创建CreateRevitPipe、CreateRevitStructure自定义节点。然后,在Dynamo中打包、发布本节点包(包含C3D的COM API引用文件),指定名称、说明、版本。

对于C3D中的数据的自定义节点:

这些节点利用内置的Python Script,基于C3D COM API(组件对象模型的应用程序接口),编写Python代码,调用后台的C3D数据实现。

Dynamo中,内置了众多节点,其中包含了Python节点;选择并使用该节点进行Python代码编写。

在Revit中,调用C3D的COM API的三种方式为:.NET API,COM API和ObjectARXAPI。COM API的对象模型(Component Object Model,COM)是一种面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。C3D允许从托管或非托管代码访问COM API;那么,则可以在Python Script中调用C3D COM API,从而创建程序。

Python Script中调用C3D COM API的方式:

① 首先,在Revit中,打开Dynamo,继而创建Python Script节点。

② 事先准备好C3D的COM API的动态链接库(dll)文件:

Autodesk.AEC.Interop.Base.dll

Autodesk.AEC.Interop.UIBase.dll

Autodesk.AutoCAD.Interop.dll

Autodesk.AutoCAD.Interop.Common.dll

Autodesk.AECC.Interop.Land.dll

Autodesk.AECC.Interop.UiLand.dll

Autodesk.AECC.Interop.Roadway.dll

Autodesk.AECC.Interop.UiRoadway.dll

Autodesk.AECC.Interop.Pipe.dll(提供管网相关的功能)

Autodesk.AECC.Interop.UiPipe.dll(提供管网相关的功能)

这些文件,在C3D软件的安装目录可找到。也可以将其拷贝至指定目录,以备引用。

② 双击Python Script节点,进入编辑界面,进行编辑。

Dynamo自带的Python解释器,其类型为IronPython,可以调用.NET Framework中的功能,故可以使用代码调用C3D的COM API。包含代码的Python Script节点,实现了在Dynamo中,获取正在打开的C3D文档中的管网数据接口(管网文档)。该节点的输出为管网文档对象,以供其他自定义的Python Script节点使用(如在管网文档中获取所有管网对象等)。

用Python Script自定义节点之后,整个读取C3D数据的流程可以通过图3展示。

节点分为以下几类:

i 连接C3D对象模型的节点;利用CivilPipeOpen、CivilNetworks、GetNetWorkByName等节点,依次完成连接到C3D管网模型、获取当前管网列表、获取指定名称管网的功能;

ii 获取C3D管网中管道和检查井列表的节点;利用CivilStructures、CivilPipes等节点,分别获取指定管网的所有检查井、管道对象列表;

iii 获取单个检查井参数的节点;利用GetStructureFamily、GetStructurePosition、GetStructureName、GetStructureSump、GetStructureRim、GetStructureRotation等节点,分别获取检查井的族名称、平面位置、名称、井面标高、井底标高等参数;

iv 获取单个管道参数的节点;利用GetPipeStartPoint、GetPipeEndPoint、GetPipeDiameter等节点,分别获取管道的起点、终点、管径等参数;

v 其他辅助节点。

对于创建CreateRevitPipe、CreateRevitStructure自定义节点:创建对应的Revit检查井、管道模型;这些节点同样利用内置的Python Script,基于Revit .NET API,在软件内创建检查井、管道族实例。

其中,根据所述Dynamo节点包建立Dynamo流程包括以下步骤:

使用节点包中创建的自定义节点,组成能够实现功能的Dynamo流程,供后续使用;Dynamo流程包含以下步骤:

1)Revit软件通过Dynamo中的Python Script以及COM API连接到C3D的对象模型;

2)将步骤1)结果作为输入,获取指定名称的C3D管网模型。

其中,获取指定名称的C3D管网模型包括以下步骤:

通过Dynamo中的Python Script节点调用C3D的COM API来获取。

通过自定义节点“CivilPipeOpen”,获取C3D文档中的管网数据接口(PipeDoc);以PipeDoc为输入,通过另一个自定义节点“CivilNetworks”,获取PipeDoc中所有的管网CivilNetworks;紧接着,再以CivilNetworks以及目标管网名称为输入,通过另一个自定义节点“GetNetworkByName”,获取指定名称的管网对象模型。Dynamo流程的截图如图4所示。

所有自定义的节点,包含了一个指定输入(如有)、输出Python Script节点,其获取C3D数据的方式,与前述调用后台3D数据的方式一样。

原则上,最终的目的是将C3D管网导入到Revit中,可以在一个Python Script中实现;但是为方便起见,还是把各个子功能作为独立的节点,这样就可以按需组合使用,大大增加灵活性。

3)将步骤2)结果作为输入,分别获取该管网中所有的检查井、管道。

将CivilNetwork作为输入,通过自定义节点CivilStructures、CivilPipes,读取管网中的所有检查井、管道。将CivilStructures、CivilPipes作为输入,通过自定义节点GetStrucureXXX系列节点(如GetStrucurePosition)、GetPipeXXX系列节点(GetPipeDiameter),读取检查井、管道的属性,以备后用。

4)将步骤3)结果作为输入,获取所有检查井的如下数据:

i 族名称

ii 井平面位置

iii 井名称(即编号)

iv 井底标高

v 井面标高

vi 井旋转角度

5)将步骤3结果作为输入,获取所有管道的如下数据:

i 管道起点坐标

ii 管道终点坐标

iii 管道管径

6)将步骤4)结果作为输入,参数化创建Revit检查井族实例;

7)将步骤5)结果作为输入,参数化创建Revit管道。

其中,使用Dynamo流程创建BIM模型包括以下步骤:

1)在C3D中完成排水管网的平纵设计;2)保持C3D设计文件的打开,并同时开启Revit;3)在Revit中打开Dynamo软件,载入已创建的Dynamo流程;4)运行流程,在Revit中生成对应的BIM模型。图5是基于传递获取数据得到的BIM模型。图6是最终生成的精细化Revit模型。

作为一种具体的实施例,在Revit中创建检查井的Python Script代码,该代码是用于在Revit中创建族实例的。首先,代码导入了所需的库和模块。然后,代码通过UnwrapElement函数将输入的族元素和标高解包。接下来,代码获取当前Revit文档,并创建一个空的事务。然后,代码通过循环遍历输入的族类型和坐标,并在指定的标高上创建对应的族实例。在创建族实例之前,代码检查族类型是否处于激活状态,如果不是,则激活它。然后,代码使用族类型、坐标、标高和旋转角度创建族实例,并设置相应的参数值。最后,代码将创建的族实例添加到insertedFamilyInstances列表中,并提交。最后,代码输出insertedFamilyInstances列表。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

技术分类

06120116556511