Revit工程计算量并行处理方法、装置、终端及介质与流程

文档序号:15384730发布日期:2018-09-08 00:25阅读:352来源:国知局

本发明涉及建筑信息处理技术领域,尤其涉及一种基于revit工程计算量的并行处理方法、装置、终端及介质。



背景技术:

revit是autodesk公司一套系列软件的名称。revit系列软件是专为建筑信息模型(buildinginformationmodeling,bim)构建的,可帮助建筑设计师设计、建造和维护质量更好、能效更高的建筑。revit是我国建筑业bim体系中使用最广泛的软件之一。由于使用较多,基于软件开发支持bim工程计算量的需求也越来越多。随着bim模型的不断变大,软件的运算量也不断地加大,不论是土建、钢筋工程量的计算,还是安装机电专业的算量,整个工程的计算耗时都在不断加大。

另外,目前,硬件处理器的多核化已经普及,硬件的计算能力在不断增强。如果软件不能充分应用这些增强的计算能力,那么计算机硬件技术进步所带来的好处就无法显现出来。目前软件的运算量处理越来越复杂,线性化的数据处理,性能低,工作效率低,用户体验极差,更降低了软件的竞争性。因此,亟需提供一种基于revit工程计算量的快速处理方法。



技术实现要素:

本发明实施例提供了一种基于revit工程计算量的并行处理方法、装置、终端及介质,用以解决现有revit工程计算量采用线性化的数据处理方式导致的性能低、工作效率低、用户体验差以及软件竞争力弱的问题。

本发明实施例提供了一种基于revit工程计算量的并行处理方法,所述方法包括:

将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据;

对算量模型中缓存的所有构件工程量数据进行并行计算;

利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。

进一步地,作为一个可执行方案,所述根据算量模型中的构件特征缓存所有构件工程量计算所需的数据,包括:

根据构件所属的算量模型类别,通过构件计算器工厂生成对应的计算服务对象;

根据所述计算服务对象提供的缓存方法进行构件工程量数据缓存。

进一步地,作为一个可执行方案,所述对算量模型中缓存的所有构件工程量数据进行并行计算,包括以下步骤:

步骤1:任务进度控制器创建一个任务task,所述task来源于tpl;

步骤2:所述任务task创建构件计算器,并关联对应的构件;

步骤3:所述构件计算器计算构件的工程量;

步骤4:循环执行步骤1~步骤3,直至所有构件均分配有构件计算器计算,任务进度控制器停止创建任务task。

进一步地,作为一个可执行方案,在执行所述步骤1:任务进度控制器创建一个任务task之前,所述方法还包括:

任务进度控制器根据计算系统配置和构件数量计算规划创建任务task的数量。

进一步地,作为一个可执行方案,利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,包括:

利用tpl将每一构件计算器的计算任务放入子线程进行并行计算,并控制显示每一构件计算器的计算任务的进度条;

构件工程量并行计算结束后,调用倒计时活动事件结束处理任务,关闭进度条。

进一步地,本发明实施例还提供了一种基于revit工程计算量的并行处理装置,所述装置包括:

缓存单元,用于将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据;

计算单元,用于对算量模型中缓存的所有构件工程量数据进行并行计算;

控制单元,用于利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。

进一步地,本发明实施例还提供了一种基于revit工程计算量的并行处理终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述方法的步骤。

进一步地,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述方法的步骤。

本发明有益效果如下:

本发明实施例提供了一种基于revit工程计算量的并行处理方法、装置、终端及介质,包括将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据,以及对算量模型中缓存的所有构件工程量数据进行并行计算,并利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。也就是说,本申请利用缓存方式将构件工程量计算所需的数据全部缓存后进行并行计算,并由任务并行库tpl监控各计算任务的进度,从而实现了revit工程计算量的并行处理,进而提高了revit工程计算量的工作效率及软件性能,同时也提升了用户体验和软件的竞争力。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1所示为本发明实施例一所述的基于revit工程计算量的并行处理方法的流程示意图;

图2所示为本发明实施例一所述的revit模型与算量模型的映射关系示意图;

图3所示为本发明实施例一中构件工程量数据缓存的各功能模块工作流程示意图;

图4所示为本发明实施例一中并行计算的各功能模块工作流程示意图;

图5所示为本发明实施例一中任务调度的各功能模块工作流程示意图;

图6所示为本发明实施例一中多任务进度条设计流程示意图;

图7本发明实施例二所述的基于revit工程计算量的并行处理装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一

本发明实施例一提供了一种基于revit工程计算量的并行处理方法,如图1所示,其为本发明实施例一所述的基于revit工程计算量的并行处理方法的流程示意图,所述方法包括:

步骤101:将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据。

其中,revit模型与算量模型的映射关系可如图2所示,本申请所述算量模型,指的是符合预算要求的预定义构件模板,模板约定了构件所属的专业、类别等信息,并约定该类构件特征参数及计算项目。

具体地,将revit模型映射为算量模型可执行为一下操作步骤:

步骤s1:为revit模型中结构部分的每一个族实例生成一个方便操作的对象(下称构件)。这个对象会引用revit的族实例,并封装一些必要信息,如特征参数列表、计算项目列表等。这个过程中,会产生构件列表,构件列表中的构件是本发明所依托的基础数据之一。

步骤s2:将其中所生成的构件,与符合算量要求的算量模型(如框架柱、框架梁、砼墙等)进行关联(映射),具体包括:

1、更新构件列表,以适应revit模型的变化,若revit模型中增加族实例,则对应生成新的构件,并加入构件列表,若某些族实例被删除,则构件列表对应删除相应构件。

2、自动映射,根据预先定义的模型映射规则,将构件与(预定义的)符合算量要求的算量模型进行匹配。这里会根据构件的类型名称,结合映射规则,从算量模型库中选取一个最可能的算量模型。如果构件的名称无法自动映射,则会返回未识别,此时,可以手动为构件关联算量模型。

3、手动更改映射,自动映射后,对匹配结果不满意或者存在未识别的构件时,可以手动为构件指定算量模型。

4、建立关系,确认好构件对应的算量模型后,在确定的时候,会为构件关联算量模型,并初始化构件的参数与计算结果列表。

在映射关系建立后,在一个实例中,所述根据算量模型中的构件特征缓存所有构件工程量计算所需的数据,包括:

根据构件所属的算量模型类别,通过构件计算器工厂生成对应的计算服务对象;

根据所述计算服务对象提供的缓存方法进行构件工程量数据缓存。

其中,算量模型类别例如框架柱、框架梁、砼墙等,在实际进行缓存操作时需要用到数据缓存控制器、构件、计算器工厂、构件计算器、revitelement等功能模块,为实现算量模型计算,提供缓存数据库cachedata服务,每类计算器根据如土建、安装、钢筋等业务计算需要,将需要缓存的数据存放到构件的缓存数据列表中,每类计算器根据如土建、安装、钢筋等业务计算需要,实现计算逻辑,而计算逻辑运行过程中所有发生的数据访问请求,都从相关构件的缓存数据列表获取,其中,计算器工厂用于注册计算器服务,并与构件的模型特征关联,以便外部使用;数据缓存控制器用于控制所有构件数据缓存的执行流程;revitelement是revit模型中的一个元素。具体地,各功能模块工作流程图可如图3所示。

步骤102:对算量模型中缓存的所有构件工程量数据进行并行计算。

具体地,作为一个可执行方案,所述对算量模型中缓存的所有构件工程量数据进行并行计算,包括以下步骤:

步骤1:任务进度控制器创建一个任务task,所述task来源于tpl;

步骤2:所述任务task创建构件计算器,并关联对应的构件;

步骤3:所述构件计算器计算构件的工程量;

步骤4:循环执行步骤1~步骤3,直至所有构件均分配有构件计算器计算,任务进度控制器停止创建任务task。

其中,首先要对任务进度控制器进行初始化,初始化过程中采用.net的countdownevent实现task进度通知机制,具体地,先初始化countdownevent信号量;其次,设定task调度,通过task的调度方法continuation将countdownevent.signal()放到主线程执行,以通知任务完成;最后,为确保主线程处于非阻塞状态,步骤1、2放在子线程中执行。,

需要说明的是,在一个实例中,在执行所述步骤1:任务进度控制器创建一个任务task之前,所述方法还包括:

任务进度控制器根据计算系统配置和构件数量计算规划创建任务task的数量。

也就是说,对于计算task内部执行逻辑,首先通过parallell.foreach根据计算系统配置和构件数据量规划子task数量;其次,通过子task执行计算器的逻辑,计算器以构件及其缓存数据作为输入数据进行工程量计算;最后,利用parallell.foreach阻塞的特性以等待各个子task执行结束。并行计算的主要流程示意图可如图4所示。

步骤103:利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。

具体地,作为一个可执行方案,利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,包括:

利用tpl将每一构件计算器的计算任务放入主线程进行并行计算,并控制显示每一构件计算器的计算任务的进度条;

构件工程量并行计算结束后,调用倒计时活动事件结束处理任务,关闭进度条。

需要说明的是,任务调度具体采用.net并行框架(.netparallelframeword)技术中的taskparallellibrary。在实际调动操作过程中需要用到计算进度控制器、构件工程量并行计算、多任务进度条、countdownevent等功能模块,其中,计算进度控制器控制主要用于显示计算任务进度条,在启动task任务后,立即启动结束化处理task以等待其他正在执行task结束;多任务进度条,可添加多个task信息并显示每个task的执行进度,子task通过多任务进度条的汇报接口汇报进度;构件工程量并行计算结束后,调用countdownevent的singal方法发出信号,结束化处理task等待到信号后,关闭进度条。至此结束计算。具体地,各功能模块工作流程图如图5所示。

关于多任务进度条,其设计流程图可如图6所示。其中,添加task进度条返回的ireport接口是用于“构建工程量并行计算”中task汇报进度的接口,其实现是采用.net技术中的progress<t>对象,以满足多线程操作。

本发明实施例一提供了一种基于revit工程计算量的并行处理方法,包括将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据,以及对算量模型中缓存的所有构件工程量数据进行并行计算,并利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。也就是说,本申请利用缓存方式将构件工程量计算所需的数据全部缓存后进行并行计算,并由任务并行库tpl监控各计算任务的进度,从而实现了revit工程计算量的并行处理,进而提高了revit工程计算量的工作效率及软件性能,同时也提升了用户体验和软件的竞争力。

实施例二

本发明实施例二提供了一种基于revit工程计算量的并行处理装置,如图7所示,其为本发明实施例二所述的基于revit工程计算量的并行处理装置的结构示意图,所述装置包括:

缓存单元71,可用于将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据;

计算单元72,可用于对算量模型中缓存的所有构件工程量数据进行并行计算;

控制单元73,可用于利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。

进一步地,作为一个可执行方案,所述缓存单元71,可具体用于根据构件所属的算量模型类别,通过构件计算器工厂生成对应的计算服务对象;根据所述计算服务对象提供的缓存方法进行构件工程量数据缓存。

进一步地,作为一个可执行方案,所述计算单元72,可具体用于任务进度控制器创建一个任务task,所述task来源于tpl;所述任务task创建构件计算器,并关联对应的构件;所述构件计算器计算构件的工程量;循环执行以上步骤,直至所有构件均分配有构件计算器计算,任务进度控制器停止创建任务task。

进一步地,作为一个可执行方案,所述计算单元72,还可用于在任务进度控制器创建一个任务task之前,根据计算系统配置和构件数量计算规划创建任务task的数量。

进一步地,作为一个可执行方案,所述控制单元73,可具体用于利用tpl将每一构件计算器的计算任务放入子线程进行并行计算,并控制显示每一构件计算器的计算任务的进度条;构件工程量并行计算结束后,调用倒计时活动事件结束处理任务,关闭进度条。

本发明实施例二提供了一种基于revit工程计算量的并行处理装置,利用缓存方式将构件工程量计算所需的数据全部缓存后进行并行计算,并由任务并行库tpl监控各计算任务的进度,从而实现了revit工程计算量的并行处理,进而提高了revit工程计算量的工作效率及软件性能,同时也提升了用户体验和软件的竞争力。

进一步地,本发明实施例还提供了一种基于revit工程计算量的并行处理终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述方法实施例中的步骤,例如图1所示的步骤101~103等方法步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如实现上述缓存单元71、计算单元72和控制单元73等单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于revit工程计算量的并行处理终端设备中的执行过程。例如,所述计算机程序可以被分割成上述缓存单元71、计算单元72和控制单元73,各单元具体功能如下:

缓存单元71,可用于将revit模型映射为算量模型,并根据算量模型中的构件特征缓存所有构件工程量计算所需的数据;

计算单元72,可用于对算量模型中缓存的所有构件工程量数据进行并行计算;

控制单元73,可用于利用任务并行库tpl进行任务调度,控制构件工程量计算的整体进度,直至完成并行计算。

进一步地,作为一个可执行方案,所述基于revit工程计算量的并行处理终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于revit工程计算量的并行处理终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述基于revit工程计算量的并行处理终端设备的组成结构仅仅是基于revit工程计算量的并行处理终端设备的示例,并不构成对基于revit工程计算量的并行处理终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于revit工程计算量的并行处理终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。

进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述基于revit工程计算量的并行处理终端设备的控制中心,利用各种接口和线路连接整个基于revit工程计算量的并行处理终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于revit工程计算量的并行处理终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

进一步地,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。

所述基于revit工程计算量的并行处理终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

也就是说,在本发明实施例中,利用缓存方式将构件工程量计算所需的数据全部缓存后进行并行计算,并由任务并行库tpl监控各计算任务的进度,从而实现了revit工程计算量的并行处理,进而提高了revit工程计算量的工作效率及软件性能,同时也提升了用户体验和软件的竞争力。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1