标高确定方法、装置和电子设备与流程

文档序号:19223657发布日期:2019-11-26 02:21阅读:510来源:国知局
标高确定方法、装置和电子设备与流程

本公开涉及建筑技术领域,特别是涉及一种标高确定方法、装置和电子设备。



背景技术:

现有建筑行业的图纸基本都是采用二维图纸的出图方式,通过标注、说明、规范等方式补充高度方向信息,从而完成三维模型信息的描述。

标高的常见设置有:楼层顶标高、楼层底标高、关联图元顶标高、关联图元底标高。此标高计算方式的核心问题有如下两点:一个是如何计算一个图元的标高,另一个是标高相关数据发生变化时如何有效并高效的重新计算所有需要变化的图元。



技术实现要素:

根据本公开的一个方面,提供以下技术方案:

一种标高确定方法,包括:

接收目标构件类型的标高变化事件;

确定所述目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表;

反向遍历所述单向依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高;其中,所述受影响图元包括所述标高变化事件导致其标高变化的图元。

进一步地,确定所述目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表,包括:

确定依赖于所述目标构件类型的标高变化的直接依赖构件类型,以及依赖于所述直接依赖构件类型的间接依赖构件类型;

根据所述直接依赖构件类型和间接依赖构件类型确定所述单项依赖关系表;其中,所述单向依赖关系表中第一项为所述目标构件类型,第二项为所述直接依赖构件类型之一,且所述单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

进一步地,确定所述目标构件类型的标高变化导致其标高变化的直接依赖构件类型和间接依赖构件类型,包括:

根据预先设置的标高计算方式的计算原则确定所述直接依赖构件类型和所述间接依赖构件类型。

进一步地,所述计算原则包括:搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则。

进一步地,反向遍历所述依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高,包括:

i1:j=n;其中,j和n均为大于等于0的整数;n为所述依赖关系表中构件类型的数量;

i2:计算所述依赖关系表中第j项构件类型下第一受影响图元的标高,以及计算待计算列表中第j项构件类型下第二受影响图元的标高;

i3:将依赖于所述第一受影响图元和第二受影响图元的其他构件类型下受影响图元加入待计算列表中;

i4:j=j-1;

i5:j>1,则转步骤i2,否则结束。

根据本公开的又一个方面,还提供以下技术方案:

一种标高确定装置,包括:

接收模块,被配置为接收目标构件类型的标高变化事件;

确定模块,被配置为构件类型与至少一个或多个依赖构件类型的单向依赖关系表;

遍历模块,被配置为反向遍历所述依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高;其中,所述受影响图元包括所述标高变化事件导致其标高变化的图元。

进一步地,所述确定模块,包括:

第一确定子模块,被配置为确定依赖于所述目标构件类型的标高变化的直接依赖构件类型,以及依赖于所述直接依赖构件类型的间接依赖构件类型;

第二确定子模块,被配置为根据所述直接依赖构件类型和间接依赖构件类型确定所述单项依赖关系表;其中,所述单向依赖关系表中第一项为所述目标构件类型,第二项为所述直接依赖构件类型之一,且所述单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

进一步地,所述确定模块,包括:

第三确定子模块,被配置为根据预先设置的标高计算方式的计算原则确定所述直接依赖构件类型和所述间接依赖构件类型。

进一步地,所述计算原则包括:搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则。

进一步地,所述遍历模块被配置为:

i1:j=n;其中,j和n均为大于等于0的整数;n为所述依赖关系表中构件类型的数量;

i2:计算所述依赖关系表中第j项构件类型下第一受影响图元的标高,以及计算待计算列表中第j项构件类型下第二受影响图元的标高;

i3:将依赖于所述第一受影响图元和第二受影响图元的其他构件类型下受影响图元加入待计算列表中;

i4:j=j-1;

i5:j>0,则转步骤i2,否则结束。

根据本公开的又一个方面,还提供以下技术方案:

一种电子设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现上述任一方法中所述的步骤。

根据本公开的又一个方面,还提供以下技术方案:

一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行上述任一方法中所述的步骤。

本公开实施例通过监测任意一个构件类型的标高变化事件,并在接收到目标构件类型的标高变化事件后,建立目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表,通过反向遍历该单向依赖关系列表,重新计算各个构件类型下受影响图元的标高。通过这种方式,可以自动分析处理构件类型依赖关系,并通过挂起机制和构件类型依赖关系的反向处理避免重复计算同一构件类型下同一图元的标高,提高了计算效率。

上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

图1(a)-(b)为构件类型为板的图元标高的变化示意图;

图2为根据本公开一个实施例的标高确定方法的流程示意图;

图3(a)-(b)为根据本公开一个实施例的构件类型之间依赖关系示意图;

图4为根据图2所示实施例中步骤s202的流程示意图;

图5为根据本公开一个实施例的标高确定装置的结构示意图;

图6为根据图5所示实施例中确定模块502的结构示意图;

图7为根据本公开实施例提供的电子设备的结构示意图。

具体实施方式

以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。

还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。

图元计算标高的基本流程是,通过当前图元的位置及形状计算出搜索范围,在此范围内搜索所有可能的参照图元,再根据业务需求查找到符合条件的参照图元,最后计算出参照图元的顶/底标高并设置到相应的图元形状中。关联图元计算标高基本流程是,当前变化的图元计算搜索范围box,根据计算标高中的设置反向查找box范围内的所有关联图元,再依次计算标高。

但是已有技术基本都是采用图元变化直接通知关联图元,此方式有如下弊端:

其一、大批量修改图元信息时,会导致被影响的图元不停被搜索出来并重复计算,导致性能急速下降。如图1(a)所示,构件类型-板中的三个图元的标高均会影响到构件类型-梁中的四个图元的标高,构件类型-板中的三个图元标高均发生变化的情况下,构件类型-梁中的四个图元的标高被重复计算。

其二、各种构件类型重复递归依赖,逐一关联通知,导致某些构件类型的图元反复的重新计算,如图1(b)所示,构件类型-板的标高发生变化的情况下,构件类型-梁和构件类型-柱均会被重新计算标高,但是构件类型-梁重新计算标高后,又会重新计算构件类型-梁重的标高,以至于构件类型-板的标高发生变化的情况下,导致构件类型-梁要重复计算两次标高。

其三、复杂业务场景下,计算复杂度指数增长,导致业务逻辑容易遗漏。

本公开实施例提供一种标高确定方法。本实施例提供的该标高确定方法可以由一计算装置来执行,该计算装置可以实现为软件,或者实现为软件和硬件的组合,该计算装置可以集成设置在服务器、终端设备等中。如图2所示,该标高确定方法主要包括如下步骤:

步骤s201:接收目标构件类型的标高变化事件;

步骤s202:确定所述目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表;

步骤s203:反向遍历所述依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高;其中,所述受影响图元包括所述标高变化事件导致其标高变化的图元。

本实施例中,建筑行业的图纸对应三维模型中,可以包括多种构件类型。一个建筑包括的基本的构件类型有板、梁、柱、墙、基础等;板是覆盖一个具有较大平面尺寸,但却具有相对较小厚度的平面形结构构件;梁一般指承受垂直于其纵轴方向荷载的线型构件;柱是承受平行于其纵轴方向荷载的线形构件,它的截面尺寸小于它的高度,一般以受压和受弯为主,故柱也称压弯构件;墙主要是承受平行于墙体方向荷载的竖向构件,它在重力和竖向荷载作用下主要承受压力,有时也承受弯矩和剪力;基础是地面以下部分的结构构件,用来将上部结构(即地面以上结构)所承受的荷载传给地基。

而一个建筑中同一个构件类型可以包括多个实体,体现在三维模型上可以称之为图元,每种构件类型下可以包括多个图元,例如一个大楼的柱有很多个,因此构件类型-柱下会包括多个图元。图元的标高发生变化的情况下,可能会导致其他构件类型下的图元的标高发生变化,例如一个柱子的标高发生变化,那么该柱子顶上的板的标高也会相应发生变化。

在一些实施例中,图元的标高计算过程是根据当前标高发生变化的图元的二维投影位置向上或向下搜索有效图元,其中有效性是根据业务定义的,具体如下:在某些楼层范围内,查找某些构件类型,并符合投影相交关系、查找到多个标高取最高或最底的图元为参照。例如柱顶标高设置为【顶板顶标高】条件如下,在柱图元所在楼层内搜索投影多边形与之相交的最高板,如果当前层没有搜索到继续向上面楼层搜索。一种构件类型下所有图元的标高计算需求是一致的,因此依赖关系的最小粒度就可以做到以构件类型为单位,这样可以有效的避免重复计算。

本公开实施例通过监听标高变化事件,在接收到被监听的构件类型的标高发生变化后,根据预先设置的依赖关系设置信息确定发生标高变化的目标构件类型会影响到的其他构件类型,并形成单向依赖关系表。该单向依赖关系表中,可以包括多个构件类型,而前一项的构件类型的标高变化会导致后一项构件类型的标高发生变化,第一项构件类型为目标构件类型,且任意一个其他构件类型的标高变化均不会导致第一项构件类型的标高发生变化,最后一项构件类型的标高变化不会影响任意一个其他构件类型的标高发生变化。

如图3(a),构件类型a依赖构件类型b、c,但是b依赖c,业务原则上不会成环,因此通过处理可以得到一组单向依赖关系列表,a依赖b,b依赖c,如图3(b)所示。如果识别出成环,此状态为配置错误导致报警提示。

在确定了单向依赖关系表之后,可以反向遍历该单向依赖关系表,并从最后一项开始依次计算构件类型下受影响图元的标高。这是因为最后一项构件类型的标高变化不会影响到其他构件类型下的标高发生变化,因此先计算最后一项构件类型下受影响图元的标高。目标构件类型的标高变化事件会直接或者间接影响到一个或多个其构件类型下的一个或多个图元的标高发生变化,而最后一项构件类型可以包括多个图元,并非所有图元都会受目标构件类型标高变化事件的影响,例如一栋大楼中,顶层楼层的层高发生变化,则会影响到顶层楼层下所有相关构件类型中图元的标高,但是不一定会影响到其他楼层下构件类型中图元的标高。

在计算完单向依赖关系表中最后一项构件类型下受影响图元的标高后,可以继续遍历倒数第二项构件类型下受影响图元的标高,由于受倒数第二项构件类型下图元标高变化影响的最后一项构件类型下图元的标高已经经过了重新计算,因此重新计算倒数第二项构件类型下受影响图元的标高则不会再导致其他构件类型下图元标高发生变化,通过这种方式从最后一项构件类型开始,依次重新计算标高,直到计算完成第一项构件类型下受影响图元的标高为止。

本公开实施例通过监测任意一个构件类型的标高变化事件,并在接收到目标构件类型的标高变化事件后,建立目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表,通过反向遍历该单向依赖关系列表,重新计算各个构件类型下受影响图元的标高。通过这种方式,可以自动分析处理构件类型依赖关系,并通过挂起机制和构件类型依赖关系的反向处理避免重复计算同一构件类型下同一图元的标高,提高了计算效率。

在本公开实施例一可选实现方式中,如图4所示,所述步骤s202,即确定所述目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表的步骤,包括:

步骤s401:确定依赖于所述目标构件类型的标高变化的直接依赖构件类型,以及依赖于所述直接依赖构件类型的间接依赖构件类型;

步骤s402:根据所述直接依赖构件类型和间接依赖构件类型确定所述单项依赖关系表;其中,所述单向依赖关系表中第一项为所述目标构件类型,第二项为所述直接依赖构件类型之一,且所述单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

该可选的实现方式中,可以先根据目标构件类型的标高变化确定目标构件类型的一个或多个直接依赖构件类型,例如目标构件类型a中的图元与另一构件类型b中的图元的二维投影相交,则该构件类型b为目标构件类型a的直接依赖构件类型。之后,可以再依次确定该一个或多个直接依赖构件类型确定目标构件类型的间接依赖构件类型;例如,构件类型c为构件类型b的直接依赖构件类型,而构件类型c不是构件类型a的直接依赖构件类型,则构件类型c为目标构件类型a的间接依赖构件类型。可以理解的是,假如一个构件类型既直接依赖于目标构件类型,也间接依赖于目标构件类型(也即该构件类型也直接依赖于目标构件类型的另一直接依赖构件类型),则这种情况下出现了上文所提及的环形依赖关系,因此需要进行报警,进而从业务层面来解决该问题。

在确定了目标构件类型的直接依赖关系或者间接依赖关系类型之后,可以建立如图3(a)所示的单向依赖关系表。单向依赖关系表中第一项为所述目标构件类型,第二项为直接依赖构件类型之一,且单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

在本公开实施例一可选实现方式中,所述步骤s401,即确定依赖于所述目标构件类型的标高变化的直接依赖构件类型,以及依赖于所述直接依赖构件类型的间接依赖构件类型的步骤,包括:

根据预先设置的标高计算方式的计算原则确定所述直接依赖构件类型和所述间接依赖构件类型。

该可选的实现方式中,可以根据预先设置的标高计算方式的计算原则确定目标构件类型的直接依赖构件类型和间接依赖构件类型。直接依赖构件类型为标高直接受目标构件类型的标高变化影响的构件类型,而间接构件类型为标高间接受目标构件类型的标高变化影响的构件类型。

在一可选的实现方式中,计算原则包括:搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则。

某种构件类型可以有若干标高计算设置。每个标高计算设置的原则为,从某些楼层(楼层有搜索排序的要求)中的某些构件类型下搜索有效的图元,并得到最优先的参照图元取相应的顶、底标高,如果没找到图元取其所在楼层的顶、底标高。

因此可以预先由用户设置构件类型标高计算设置表:该表中设置某种构件类型下有多少种标高计算设置,并设置一种标高计算设置的搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则等。

通过数据库配置,各专业可以根据自己的业务原则配置自己的标高计算原则,从而实现业务的专业特性。

在本公开实施例一可选实现方式中,所述步骤s203,即反向遍历所述单向依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高的步骤,包括:

i1:j=n;其中,j和n均为大于等于0的整数;n为所述依赖关系表中构件类型的数量;

i2:计算所述依赖关系表中第j项构件类型下第一受影响图元的标高,以及计算待计算列表中第j项构件类型下第二受影响图元的标高;

i3:将依赖于所述第一受影响图元和第二受影响图元的其他构件类型下受影响图元加入待计算列表中;

i4:j=j-1;

i5:j>1,则转步骤i2,否则结束。

该可选的实现方式中,j=1时,表述处理到了目标构件类型,而目标构件类型为引起此次标高重新计算的源头,其下的图元标高已经发生了变化,而不需要重新计算,因此在j=1之后,结束依赖关系列表的遍历。

在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。

下面为本公开装置实施例,本公开装置实施例可用于执行本公开方法实施例实现的步骤,为了便于说明,仅示出了与本公开实施例相关的部分,具体技术细节未揭示的,请参照本公开方法实施例。

本公开实施例提供一种标高确定装置。该装置可以执行上述标高确定方法实施例中所述的步骤。如图5所示,该装置主要包括:

接收模块501,被配置为接收目标构件类型的标高变化事件;

确定模块502,被配置为构件类型与至少一个或多个依赖构件类型的单向依赖关系表;

遍历模块503,被配置为反向遍历所述依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高;其中,所述受影响图元包括所述标高变化事件导致其标高变化的图元。

本实施例中,建筑行业的图纸对应三维模型中,可以包括多种构件类型。一个建筑包括的基本的构件类型有板、梁、柱、墙、基础等;板是覆盖一个具有较大平面尺寸,但却具有相对较小厚度的平面形结构构件;梁一般指承受垂直于其纵轴方向荷载的线型构件;柱是承受平行于其纵轴方向荷载的线形构件,它的截面尺寸小于它的高度,一般以受压和受弯为主,故柱也称压弯构件;墙主要是承受平行于墙体方向荷载的竖向构件,它在重力和竖向荷载作用下主要承受压力,有时也承受弯矩和剪力;基础是地面以下部分的结构构件,用来将上部结构(即地面以上结构)所承受的荷载传给地基。

而一个建筑中同一个构件类型可以包括多个实体,体现在三维模型上可以称之为图元,每种构件类型下可以包括多个图元,例如一个大楼的柱有很多个,因此构件类型-柱下会包括多个图元。图元的标高发生变化的情况下,可能会导致其他构件类型下的图元的标高发生变化,例如一个柱子的标高发生变化,那么该柱子顶上的板的标高也会相应发生变化。

在一些实施例中,图元的标高计算过程是根据当前标高发生变化的图元的二维投影位置向上或向下搜索有效图元,其中有效性是根据业务定义的,具体如下:在某些楼层范围内,查找某些构件类型,并符合投影相交关系、查找到多个标高取最高或最底的图元为参照。例如柱顶标高设置为【顶板顶标高】条件如下,在柱图元所在楼层内搜索投影多边形与之相交的最高板,如果当前层没有搜索到继续向上面楼层搜索。一种构件类型下所有图元的标高计算需求是一致的,因此依赖关系的最小粒度就可以做到以构件类型为单位,这样可以有效的避免重复计算。

本公开实施例通过监听标高变化事件,在接收到被监听的构件类型的标高发生变化后,根据预先设置的依赖关系设置信息确定发生标高变化的目标构件类型会影响到的其他构件类型,并形成单向依赖关系表。该单向依赖关系表中,可以包括多个构件类型,而前一项的构件类型的标高变化会导致后一项构件类型的标高发生变化,第一项构件类型为目标构件类型,且任意一个其他构件类型的标高变化均不会导致第一项构件类型的标高发生变化,最后一项构件类型的标高变化不会影响任意一个其他构件类型的标高发生变化。

在确定了单向依赖关系表之后,可以反向遍历该单向依赖关系表,并从最后一项开始依次计算构件类型下受影响图元的标高。这是因为最后一项构件类型的标高变化不会影响到其他构件类型下的标高发生变化,因此先计算最后一项构件类型下受影响图元的标高。目标构件类型的标高变化事件会直接或者间接影响到一个或多个其构件类型下的一个或多个图元的标高发生变化,而最后一项构件类型可以包括多个图元,并非所有图元都会受目标构件类型标高变化事件的影响,例如一栋大楼中,顶层楼层的层高发生变化,则会影响到顶层楼层下所有相关构件类型中图元的标高,但是不一定会影响到其他楼层下构件类型中图元的标高。

在计算完单向依赖关系表中最后一项构件类型下受影响图元的标高后,可以继续遍历倒数第二项构件类型下受影响图元的标高,由于受倒数第二项构件类型下图元标高变化影响的最后一项构件类型下图元的标高已经经过了重新计算,因此重新计算倒数第二项构件类型下受影响图元的标高则不会再导致其他构件类型下图元标高发生变化,通过这种方式从最后一项构件类型开始,依次重新计算标高,直到计算完成第一项构件类型下受影响图元的标高为止。

本公开实施例通过监测任意一个构件类型的标高变化事件,并在接收到目标构件类型的标高变化事件后,建立目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表,通过反向遍历该单向依赖关系列表,重新计算各个构件类型下受影响图元的标高。通过这种方式,可以自动分析处理构件类型依赖关系,并通过挂起机制和构件类型依赖关系的反向处理避免重复计算同一构件类型下同一图元的标高,提高了计算效率。

在本公开实施例一可选实现方式中,如图6所示,所述确定模块502,包括:

第一确定子模块601,被配置为确定依赖于所述目标构件类型的标高变化的直接依赖构件类型,以及依赖于所述直接依赖构件类型的间接依赖构件类型;

第二确定子模块602,被配置为根据所述直接依赖构件类型和间接依赖构件类型确定所述单项依赖关系表;其中,所述单向依赖关系表中第一项为所述目标构件类型,第二项为所述直接依赖构件类型之一,且所述单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

该可选的实现方式中,可以先根据目标构件类型的标高变化确定目标构件类型的一个或多个直接依赖构件类型,例如目标构件类型a中的图元与另一构件类型b中的图元的二维投影相交,则该构件类型b为目标构件类型a的直接依赖构件类型。之后,可以再依次确定该一个或多个直接依赖构件类型确定目标构件类型的间接依赖构件类型;例如,构件类型c为构件类型b的直接依赖构件类型,而构件类型c不是构件类型a的直接依赖构件类型,则构件类型c为目标构件类型a的间接依赖构件类型。可以理解的是,假如一个构件类型既直接依赖于目标构件类型,也间接依赖于目标构件类型(也即该构件类型也直接依赖于目标构件类型的另一直接依赖构件类型),则这种情况下出现了上文所提及的环形依赖关系,因此需要进行报警,进而从业务层面来解决该问题。

在确定了目标构件类型的直接依赖关系或者间接依赖关系类型之后,可以建立如图3(a)所示的单向依赖关系表。单向依赖关系表中第一项为所述目标构件类型,第二项为直接依赖构件类型之一,且单向依赖关系表中前一项的标高变化会导致后一项的标高变化,最后一项的标高变化不会导致任何一项的标高变化。

在本公开实施例一可选实现方式中,所述第一确定子模块601,包括:

第三确定子模块,被配置为根据预先设置的标高计算方式的计算原则确定所述直接依赖构件类型和所述间接依赖构件类型。

该可选的实现方式中,可以根据预先设置的标高计算方式的计算原则确定目标构件类型的直接依赖构件类型和间接依赖构件类型。直接依赖构件类型为标高直接受目标构件类型的标高变化影响的构件类型,而间接构件类型为标高间接受目标构件类型的标高变化影响的构件类型。

在一可选的实现方式中,计算原则包括:搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则。

某种构件类型可以有若干标高计算设置。每个标高计算设置的原则为,从某些楼层(楼层有搜索排序的要求)中的某些构件类型下搜索有效的图元,并得到最优先的参照图元取相应的顶、底标高,如果没找到图元取其所在楼层的顶、底标高。

因此可以预先由用户设置构件类型标高计算设置表:该表中设置某种构件类型下有多少种标高计算设置,并设置一种标高计算设置的搜索楼层原则、楼层排序原则、搜索构建类型原则、图元排序原则、如无参照图元取楼层标高原则等。

通过数据库配置,各专业可以根据自己的业务原则配置自己的标高计算原则,从而实现业务的专业特性。

在本公开实施例一可选实现方式中,所述遍历模块703被配置为:

i1:j=n;其中,j和n均为大于等于0的整数;n为所述依赖关系表中构件类型的数量;

i2:计算所述依赖关系表中第j项构件类型下第一受影响图元的标高,以及计算待计算列表中第j项构件类型下第二受影响图元的标高;

i3:将依赖于所述第一受影响图元和第二受影响图元的其他构件类型下受影响图元加入待计算列表中;

i4:j=j-1;

i5:j>0,则转步骤i2,否则结束。

该可选的实现方式中,j=1时,表述处理到了目标构件类型,而目标构件类型为引起此次标高重新计算的源头,其下的图元标高已经发生了变化,而不需要重新计算,因此在j=1之后,结束依赖关系列表的遍历。

在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。

下面通过具体的实例说明本公开实施例的实现流程。

用户可以在数据库的配置中,明确每种构件类型可以有哪些标高计算设置,而每种标高计算设置从哪些构件类型下查找参照图元,从而得到一个1对n的依赖关系。

由于依赖关系中会有嵌套情况,比如图3(a)中a依赖b、c,但是b依赖c,通过算法处理可以得到一组单向的构件类型列表,a-》b-》c,如图3(b)所示。业务原则上不会成环,如果识别出成环,此状态为配置错误导致报警提示。

1、监听数据变化,自动计算

图元a新建时,a需要计算标高,同时关联a的图元b需要重新计算标高。

图元a删除时,关联图元b需要重新计算标高。

图元a标高设置变化时,a需要重新计算标高。

图元a的形状变化时,已经关联a或需要关联a的图元b重新计算标高。

楼层顶、底标高变化时,楼层内部的所有图元需要计算标高。

所有可能的业务逻辑全部通过监听变化,实时响应变化,这样可以降低收到调用标高计算的业务复杂度,避免掉遗漏、死循环等错误。

2、标高计算挂起机制

由于上述的第三点采用了监听数据变化的方式自动触发计算,如果所有计算都是实时响应,会导致大量的重复计算,效率下降。例如:场景一、新建图元后直接修改标高属性,导致a的标高被计算两次。场景二、修改a图元导致b和c图元变化,但是修改b图元又导致c图元变化,这样c图元的标高被重复计算。

所以,本方案中采用挂起机制避免重复计算从而提高计算效率。所有变化导致的变化都不实时计算,而是变化过程中记录相关的数据及变化,再最后统一计算,统一计算的时间点为模型挂起结算时机。

由于构件类型的单向依赖关系列表记录了关联的依赖顺序,前面的构件类型标高依赖后面的构件类型,所以统一计算过程中反向遍历构件类型列表再遍历所有图元依次计算相应的标高。

以图3(b)所示的单向依赖顺序为a-》b-》c为例:

第一步,排在最后的构件类型c不依赖其他任何构件类型,c计算标高后形状发生变化,影响a和b的图元,此时查找到的受影响的构件类型a、b图元继续添加到待计算列表中,c下的所有图元计算完成后,所有被c影响的a、b的图元已经全添加到待计算列表中,再计算构件类型b下的图元。

第二步,排在中间的构件类型b依赖的构件类型已经全部计算完成,b计算标高后形状发生变化,影响a的图元,此时查找到的受影响的构件类型a图元继续添加到待计算列表中,b下所有图元计算完成后,所有被b影响的a的图元已经全添加到待计算列表中,再计算构件类型a下的图元。

第三步,排在最前面的构件类型a依赖的构件类型已经全部计算完成,a计算标高后形状发生变化,不在影响任何构建类型,处理完成。

下面参考图7,其示出了适于用来实现本公开实施例的电子设备700的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储装置708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

通常,以下装置可以连接至i/o接口705:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从rom702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:

接收目标构件类型的标高变化事件;

确定所述目标构件类型与至少一个或多个依赖构件类型的单向依赖关系表;

反向遍历所述单向依赖关系表中的所有构件类型,依次计算所述所有构件类型下受影响图元的标高;其中,所述受影响图元包括所述标高变化事件导致其标高变化的图元。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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