发明内容
针对上述背景技术中提到的问题,本发明提供了一种基于REVIT的不同阶段BIM模型的差异比较的方法,包括如下步骤:
S1、建立窗体数据库;
S2、窗体搭建,包括前台打开新版本模型、后台打开需要比较的旧版本模型;
S3、文档处理;
S4、对象筛选,包括用户筛选需对比的模型元素、收集新旧版本模型元素集;
S5、文件对比,包括比对元素收集内容,收集比对结果;
S6、形成清单,前台文件显示比对结果;
S7、结果显示处理。
进一步地,所述步骤S2具体包括如下步骤:
S21、创建用户窗体:通过IExternalCommand接口获取当前文档commandData对象,调用UI模块中设计的窗口显示;
S22、生成文件选择窗体:利用openFileDialog新建选择窗体实例;
S23、判断文件获取情况;
S24、返回用户选择文件路径:通过openFileDialog返回用户选择RVT文件的路径名称;
S25、调用文档处理模块:将获取的路径名称赋值给文档调用模块进行下一步处理。
进一步地,根据所述步骤S23的判断结果,若获取成果则进行步骤S24;若获取失败,则进行异常处理,返回给windows。
进一步地,所述步骤S3具体包括:
S31、文档路径获取:由文件选择模块获取的用户选择文档路径;
S32、获取应用程序实例:获取当前活动RVT文档的APPLICATION实例;
S33、后台加载文档:调用应用程序实例文档载入方法,将用户选择文档路径赋值应用程序实例,将用户选择文档加载到后台;
S34、判断加载情况;
S35、调用筛选模块:后台开启的用户选择文档以及当前活动的文档赋值给筛选模块进行下一步处理。
进一步地,根据所述步骤S34的加载结果,若加载成功则进行步骤S35,若加载失败,则进行异常处理,获取异常返回给用户。
进一步地,所述步骤S4具体包括如下步骤:
S41、获取用户选定的筛选对象名称:获取用户在窗体中选择的筛选对象名称字符串;
S42、转换对象名称:获取名称字符串对象转换为revit相应对象的内置名称;
S43、创建过滤器规则:根据对象名称创建对应的不同类型的class过滤器及Category过滤器;
S44、创建对象收集器:对当前活动的文档、用户选择文档分别创建文档内容对象收集器;
S45、加入过滤器规则:对当前活动的文档、用户选择文档档收集器分别加入步骤S43的过滤器规则;
S46、生成过滤结果:对收集器过滤后生成当前活动的文档、用户选择文档的过滤器结果;
S47、调用对比模块:将当前活动的文档、用户选择文档的过滤器结果赋值给对比模块进行下一步处理。
进一步地,所述步骤S5具体包括:
S51、获取结果对象特征值:将A、B文档的过滤器结果中的特征ID进行提取;
S52、比较器进行比较:对A、B结果进行排差对比,生成对比结果数组;
S53、判断对比结果;
S54、调用生成清单模块:将对比结果赋值给生成清单模块进行下一步处理。
进一步地,根据所述步骤S53的判断结果,如比对成功则进行步骤S54,若对比失败,则进行异常处理,将对比失败结果返回给***程序。
进一步地,所述步骤S6具体包括:
S61、生成清单实例:创建清单样式实例;
S62、筛选结果参数:遍历结果清单中对象参数,按重要程度进行筛选;
S63、判断筛选结果:根据筛选结果,若筛选成功则进行S64步骤,若筛选失败则进行异常处理,返回筛选参数异常值给***程序处理;
S64、生成清单内容:整理结果内容及参数按前述清单样式进行显示;
S65、调用结果显示模块:将清单赋值给结果显示模块进行下一步处理。
进一步地,步骤S7具体包括:
S71、显示清单:调用UI模块中的设计窗口进行绘制,显示全部对比结果;
S72、获取用户选择显示方式:获取用户在窗体中选择的显示方式;
S73、全部显示:全部显示清单中所有结果;
S74、凸显显示:仅凸显显示用户选择的结果;
S75、隐显非清单内全部对象:调用IsolateElementTemporary方法隐显结果外全部对象;
S76、凸显清单内全部对象:调用SetElementIds方法显示清单内全部对象;
S77、获取用户选择对象:获取用户点击清单内名称的对象;
S78、凸显用户选择对象:调用SetElementIds方法显示用户选择对象。
本发明的基于REVIT的不同阶段BIM模型的差异比较的方法,是基于REVIT软件进行二次开发,根据其不同阶段的BIM模型,提出了一种差异比较的方法,在应用中,无需转换格式、无需导出、无需上传,在REVIT软件内实现阶段版本对比、内容过滤及显示。更具体的有益效果说明:实现软件内原生对比,解决了文件对比的需求,减少繁琐的操作、提高了设计人员的工作效率,提高设计的质量;对比类别筛选前置执行,相比现有实现方式,缩短了运行时间;实现了单类别或多类别的对比方式,相比现有实现方式,增加了灵活性,缩短了运行时间;对比结果用列表显示,增加了可读性与实用性;单对象或多对象的凸出高亮显示,增加了阅读性。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明作进一步说明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于REVIT的不同阶段BIM模型的差异比较的方法,包括如下步骤:
S1、建立窗体数据库;这里主要是依据需求工程设计需求进行建立。
S2、窗体搭建,包括前台打开新版本模型、后台打开需要比较的旧版本模型;结合参阅附图1该步骤的流程图,步骤S2具体包括如下步骤:S21、创建用户窗体:通过IExternalCommand接口获取当前文档commandData对象,调用UI模块中设计的窗口显示;S22、生成文件选择窗体:利用openFileDialog新建选择窗体实例;S23、判断文件获取情况;S24、返回用户选择文件路径:通过openFileDialog返回用户选择RVT文件的路径名称;S25、调用文档处理模块:将获取的路径名称赋值给文档调用模块进行下一步处理。
需要说明的是,根据所述步骤S23的判断结果,若获取成果则进行步骤S24;若获取失败,则进行异常处理,返回给windows。本步骤属于阶段文件选择,需要对两个文件进行,对比首先需要有两个供对比的文件,本专利步骤利用前台和后台两个文件进行对比,在前台文件中创建窗口,采用阶段文件选择器对后台文件进行选择,这样可以在前台文件中确认需对比文件的内容,减少出错几率。
S3、文档处理;在上一阶段(步骤)获取了文件路径后,本阶段(步骤)需要把文件载入到缓存中,结合参阅附图2该步骤的流程图,步骤S3具体包括:S31、文档路径获取:由文件选择模块获取的用户选择文档路径;S32、获取应用程序实例:获取当前活动RVT文档的APPLICATION实例;S33、后台加载文档:调用应用程序实例文档载入方法,将用户选择文档路径赋值应用程序实例,将用户选择文档加载到后台;S34、判断加载情况;S35、调用筛选模块:后台开启的用户选择文档以及当前活动的文档赋值给筛选模块进行下一步处理。
需要说明的是,根据步骤S34的加载结果,若加载成功则进行步骤S35,若加载失败,则进行异常处理,获取异常返回给用户。相对于同时打开两个文件,在缓存中进行对比能有效的提供效率。
S4、对象筛选,包括用户筛选需对比的模型元素、收集新旧版本模型元素集;在本阶段通过用户界面中勾选的对比对象类型创建对比规则和收集器,两个文件对同类型对象分别对比与收集,结合参阅附图3该步骤的流程图,步骤S4具体包括如下步骤:S41、获取用户选定的筛选对象名称:获取用户在窗体中选择的筛选对象名称字符串;S42、转换对象名称:获取名称字符串对象转换为revit相应对象的内置名称;S43、创建过滤器规则:根据对象名称创建对应的不同类型的class过滤器及Category过滤器;S44、创建对象收集器:对当前活动的文档、用户选择文档分别创建文档内容对象收集器;S45、加入过滤器规则:对当前活动的文档、用户选择文档档收集器分别加入步骤S43的过滤器规则;S46、生成过滤结果:对收集器过滤后生成当前活动的文档、用户选择文档的过滤器结果;S47、调用对比模块:将当前活动的文档、用户选择文档的过滤器结果赋值给对比模块进行下一步处理。本步骤无需要全部类型进行对比,有效的缩小了对比范围,减少了对比时间。
S5、文件对比,包括比对元素收集内容,收集比对结果;结合参阅附图4本步骤的流程示意图,步骤S5具体包括:S51、获取结果对象特征值:将A、B文档的过滤器结果中的特征ID进行提取;S52、比较器进行比较:对A、B结果进行排差对比,生成对比结果数组;S53、判断对比结果;S54、调用生成清单模块:将对比结果赋值给生成清单模块进行下一步处理。
需要说明的是,步骤S53的判断结果,如比对成功则进行步骤S54,若对比失败,则进行异常处理,将对比失败结果返回给***程序。对比类别筛选前置执行,实现了单类别或多类别的对比方式,相比现有实现方式,增加了灵活性,缩短了运行时间。
S6、形成清单,前台文件显示比对结果;结合参阅附图5本步骤的流程示意图,步骤S6具体包括:S61、生成清单实例:创建清单样式实例;S62、筛选结果参数:遍历结果清单中对象参数,按重要程度进行筛选;S63、判断筛选结果:根据筛选结果,若筛选成功则进行S64步骤,若筛选失败则进行异常处理,返回筛选参数异常值给***程序处理;S64、生成清单内容:整理结果内容及参数按前述清单样式进行显示;S65、调用结果显示模块:将清单赋值给结果显示模块进行下一步处理。对比结果用列表显示,增加可读性。
S7、结果显示处理。结合参阅附图6本步骤的流程示意图,步骤S7具体包括:S71、显示清单:调用UI模块中的设计窗口进行绘制,显示全部对比结果;S72、获取用户选择显示方式:获取用户在窗体中选择的显示方式;S73、全部显示:全部显示清单中所有结果;S74、凸显显示:仅凸显显示用户选择的结果;S75、隐显非清单内全部对象:调用IsolateElementTemporary方法隐显结果外全部对象;S76、凸显清单内全部对象:调用SetElementIds方法显示清单内全部对象;S77、获取用户选择对象:获取用户点击清单内名称的对象;S78、凸显用户选择对象:调用SetElementIds方法显示用户选择对象。单对象或多对象的凸出高亮显示,增加了阅读性。
本发明的基于REVIT的不同阶段BIM模型的差异比较的方法,在应用中,无需转换格式、无需导出、无需上传,在REVIT软件内实现阶段版本对比、内容过滤及显示。更具体的有益效果说明:实现软件内原生对比,解决了文件对比的需求,减少繁琐的操作、提高了设计人员的工作效率,提高设计的质量;
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。