1.本发明涉及一种对空间数据进行限界的空间计算机实施的方法,所述空间数据与映射到一个或多个轴对齐的数据3d边界框的项目的几何边界相关联,特别地,界方该几何边界对项目的法流所有可能位置的每个排列都进行几何限界。
背景技术:
2.计算机辅助设计(cad)工具频繁地用于复杂产品的空间制造。在软件内,数据这些产品通常被表示为分层的界方产品结构,通常以产品树的法流形式显示。这允许用户以简单的空间方式查询产品结构,以查看或编辑存储在产品结构内的数据部件和部件组件。随着时间的界方推移,这些部件和部件组件将经历多次的法流修改,这需要进行配置以产生可制造的空间产品。例如,数据在汽车制造中,界方车轮需要数个车轮螺栓将其固定到轮轴上,车轮本身可以是前轮、后轮、左轮或右轮,轮轴将安装到底盘上,底盘连接到车辆模型等。这代表了根部(车辆)与最终项目(车轮螺栓)之间的产品树相当短的情况,但是对于完全配置的、可制造的产品而言,每个车轮螺栓需要在产品结构树中有其自己的分支。因为无论是否向用户显示,每个分支都必须经过配置,所以获得的经配置的产品的规模可能是相当大的。
3.为了对根产品(在本例中为车辆)进行修改、操作或做出选择,用户需要能够在产品结构内对部件和部件组件、单个部件或部件修改的事件进行搜索。取决于所涉及的数据量,搜索和配置这种产品结构可能是缓慢的,并且通常通过使用经配置的产品的缓存和将部件和部件组件的事件展开来改善搜索和配置。然而,用于这种经配置的产品的缓存方法具有多个缺点。首先,产品的每个单个的配置需要单独的缓存。需要对每个缓存进行存储并且将其保持为最新。其次,变更管理过程产生产品的变更特定、用户特定和分组特定的配置。这增加了所需的缓存数量。最后,无论做出修改的次数是多是少,历史配置还需要用于每个历史点的单独的缓存。这进一步增加了所需的缓存的数量。可替代的方法包括例如对产品结构中的路径进行数据库索引的技术,该技术虽然是对缓存方法的改进,但是仅在短时期内是有效的。在较长时间内,对部件和部件组件进行的修改可能会引发路径爆炸。这可以通过索引短时间范围内的最近的改变来限制,但是对于用户来说,这可能是不实际的或不期望的。
4.这个问题的一个解决方案是使用未经配置的产品结构索引。顾名思义,这是一种使用项目路径来存储结构的索引,而不是存储完全配置的产品和构建该产品所需的零件、组件和子组件的多种组合的索引。当零件在组件中重复时,例如车轮中的五个车轮螺母,与常规产品索引中的五个单独的车轮螺母条目相比,仅需要存储一个项目路径。这大大简化了索引。然而,在一些情况中,虽然实际零件可能是相同的,但是零件在同一产品中的位置可能不同。以车轮螺母为例,每个螺母被定位在轮毂上的不同位置处。为了反映该现象,未经配置的产品结构索引可以将与项目路径相关联的未经配置的几何边界存储为一个或多个轴对齐的3d边界框。这使得索引能够支持空间查询。几何边界必须在几何上限界零件的所有可能位置的每个排列,包括:
5.●
修改零件时零件的几何边界的变化;
6.·
对组件中的零件的每个实例的不同定位变换;
7.●
对父组件中的组件的每个实例的不同定位变换;
8.·
修改组件时定位变换的变化。
9.存储完整的排列可能占用大量的存储空间并且/或者需要较长的查询时间,即使准确的副本已经被移除。在总体上以及在经过多次修改(例如,使零件变得更坚固或更轻质)后,期望产品中零件和/或组件定位变换的几何边界的数值变化较小。在组件寿命周期上,定位变换也可能由于例如数值舍入或零件公差而发生小变化。这些差异的排列可能产生许多相似的、重叠的几何边界。然而,在上述示例中,几何边界是未经配置的,即,还没有与零件一起配置到特定组件或产品中,对于经配置的几何边界,上述示例会出现类似的问题。如果给定了与经配置的产品索引相关联的经配置的几何边界的数目,那么还是因为必须存储所有几何边界的完整排列而预期产生例如长的查询时间和大的存储要求。
10.虽然一个简单的解决方案是用单一边界来限界完整的排列,因为这种方案容易实现并且存储起来较紧凑,但是当查询索引时该解决方案产生太多误报(false positive)。一些索引条目可能具有许多不同的位置,因为小的零件可能用在许多广泛分散的位置中,例如上面给出的车轮螺栓示例。因此,需要避免出现如此多的误报,并且同时保持解决方案的容易实现性和有效存储性。
技术实现要素:
11.本发明旨在通过在第一方面中提供的一种对空间数据进行限界的计算机实施的方法来解决这些问题,其中,所述空间数据与映射到一个或多个轴对齐的3d边界框的项目的几何边界相关联,所述几何边界在几何上限界项目的所有可能位置的每个排列,所述方法包括以下步骤:
12.a)使用第一组区间沿x轴方向划分边界框的集合,并分配划分标识xpar;
13.b)使用第二组区间沿y轴方向划分边界框的所述集合,并分配划分标识ypar;
14.c)使用第三组区间沿z轴方向划分边界框的所述集合,并分配划分标识zpar;以及
15.d)通过划分标识元组(xpar,ypar,zpar)划分边界框所述集合。
16.本发明的实施例提供了如下优点,即,在不需要存储完整的排列的情况下保存几何边界,从而减少了在空间查询时所出现的误报,同时保持了较小的存储空间需求和较快的查询时间。对于n较大的情况,与本发明的实施例相关联的每个排序过程花费与n.log(n)成比例的时间,其中n是被排序的项目的数量。
17.优选地,所述方法进一步包括以下步骤:
18.e)识别所述集合中具有相同划分标识元组的任何边界框组,并合并该组边界框中的边界框。
19.优选地,每个边界框的格式为[xmin,ymin,zmin;xmax,ymax,zmax],使得当xmin≤x≤xmax,ymin≤y≤ymax并且zmin≤z≤zmax时,几何点[x,y,z]位于该框的边界之内或边界处。
[0020]
优选地,沿x轴、y轴或z轴方向划分边界框的所述集合包括以下步骤:
[0021]
i)将所述集合中的每个边界框投影到轴线方向上,以便从3d边界框形成1d区间;
[0022]
ii)按照xmin、ymin或zmin的升序值或xmax、ymax和zmax的降序值来对该1d区间排序;以及
[0023]
iii)以升序顺序或降序顺序遍历该1d区间,并分别向每个1d区间分配划分标识xpar、ypar或zpar。
[0024]
优选地,通过划分标识元组(xpar,ypar,zpar)对边界框的所述集合进行划分还包括以下步骤:将划分标识元组排序为字典顺序。
[0025]
优选地,合并的轴对齐的边界框是轴对齐的最小边界框。优选地,轴对齐的最小边界框包含形成边界框组的边界框的xmin、ymin和zmin中的每一者的最小值以及xmax、ymax和zmax中的每一者的最大值,形成所述边界框组的所述边界框具有相同的划分标识元组。
[0026]
所述方法还可包括以下步骤,即,在分配划分标识元组之前使用相同或不同的区间组对边界框的集合进行额外划分。在这种情况中,优选地重复额外划分直到达到预定结束点。优选地,预定结束点要么是空间索引目标的集合或时间索引目标的集合,要么是边界框组内仅保留单个边界框。替代地,在划分边界框之前,可以修改区间以增加或减少具有相同划分识别元组的边界框的数量。在这种情况中,可以扩展、收缩或变换区间。
[0027]
优选地,几何边界是未经配置的。在这种情况中,优选地,空间数据与未经配置的产品索引中的条目的项目路径相关联。
[0028]
在第二方面中,本发明还提供了一种包括指令的计算机程序,当所述程序由计算机执行时,所述指令使所述计算机执行所述方法的步骤。
[0029]
在第三方面中,本发明还提供了一种数据处理设备,所述数据处理设备包括适于执行所述方法的步骤的处理器。
具体实施方式
[0030]
现在将仅通过示例描述本发明。本发明优选地但不总是采用与合并步骤耦合地使用划分技术的方法,以便提供对与项目的几何边界相关联的空间数据进行限界的计算机实施的方法。这样的几何边界被映射到一个或多个轴对齐的3d边界框,并且几何地限界项目的所有可能位置的每个排列。首先,执行使用第一组区间沿x轴方向划分边界框的集合并分配划分标识xpar的步骤。接着,执行使用第二组区间沿y轴方向划分所述边界框的集合并分配划分标识ypar的步骤。然后,执行使用第三组区间沿z轴方向划分所述边界框的集合并分配划分标识zpar的步骤。最后,执行通过划分标识元组(xpar,ypar,zpar)来划分所述边界框的集合的步骤。如果将划分步骤与合并步骤耦合,那么识别集合中具有相同划分识别元组的任何边界框组并且合并该组中的边界框。这在几何边界未经配置时以及在创建未经配置的产品结构索引中具有主要用途。省略合并步骤在检查未经配置的产品结构索引中具有主要用途。边界框自身的格式为[xmin,ymin,zmin;xmax,ymax,zmax],使得当xmin≤x≤xmax、ymin≤y≤ymax并且zmin≤z≤zmax时,几何点[x,y,z]位于该框的边界之内或边界之上。本发明的基础是消除对存储几何边界的所有排列的需要,因此,虽然下面给出的示例是关于未经配置的几何边界,但是划分和合并边界框的原理仍然适用。
[0031]
区间和区间划分
[0032]
首先,本发明的实施例需要沿给定轴线方向划分边界框的集合。为此,初始步骤是将边界框投影到该轴线方向上,以便从3d边界框形成1d区间。对于边界框[xmin,ymin,
zmin;xmax,ymax,zmax],x区间将为[xmin,xmax],y区间将为[ymin,ymax],z区间将为[zmin,zmax]。以下述边界框为例:
[0033]
[0,0,0,10,3,1]
[0034]
当投影到x轴方向时得到[0,10],投影到y轴方向时得到[0,3]以及投影到z轴方向时得到[0,1]。一旦完成投影,就必须将1d区间[min,max]按照选定的顺序排序。在该示例中,1d区间按照下限值min的升序进行排序,然而,可能优选或期望将1d区间按照上限值max的降序进行排序。以下述区间为例:
[0035]
[5,6],[0,1],[10,11],[5,7]
[0036]
它们可能的顺序为:
[0037]
[0,1],[5,7],[5,6],[10,11]
[0038]
其中,下限值min相等的区间[5,6]和[5,7]的相对顺序不是重要的,因为这不影响顺序的结束点。同样地,如果希望按照上限值max的降序进行排序,将得到顺序:
[0039]
[10,11],[5,7],[5,6],[0,1]
[0040]
一旦完成了排序,下一阶段是以升序(或降序,如适用)顺序遍历1d区间,并且分配整数划分标识。这里,重叠的区间将具有相同的标识。再次,使用基于下限值min升序的排序,遍历过程需要以排序后的顺序迭代地通过1d区间,并且跟踪上限值的“高水位线(high-water mark)”,对应于上限值max的最大值。因此,从已排序的列表开始:
[0041]
[0,1],[5,7],[5,6],[10,11]
[0042]
第一个区间(具有最小的下限值min)是[0,1]。该区间被分配的划分标识xpar为0,并且高水位线是1。下一个区间是[5,7],该区间在高水位线1之上,并且因此被分配新的划分标识1。新的高水位线为7。下一个区间是[5,6],该区间不在高水位线之上(因为6小于7),因此也被分配划分标识1。最后,区间[10,11]高于高水位线7,因此被分配新的划分标识2,并且设置新的高水位线11。
[0043]
实际上,遍历已排序的区间是为了确定间隙,并且每当发现间隙时就开始新的划分。使用反向的方法(即使用降序的上限值max来对区间排序)时也是如此,然后使用低水位线(low-water mark)(min的最小值)来分配划分标识。
[0044]
对于y轴和z轴重复该过程,分配xpar、ypar和zpar的值。由此,每个边界框由划分标识元组[xpar,ypar,zpar]表示。
[0045]
使用不规则网格划分
[0046]
在所述方法的下一步骤中,一旦已经分配了划分标识并且由划分标识元组表示了边界框,就需要通过划分标识元组来划分边界框。例如,以下三个边界框
[0047]
i)[0,0,0,10,10,10]
[0048]
ii)[5,15,0,15,25,10]
[0049]
iii)[5,0,0,15,10,10]
[0050]
具有x划分标识xpar:0、0和0;y划分标识ypar:0、1和0以及z划分标识zpar:0、0和0。这产生以下划分标识:
[0051]
xpar:000
[0052]
ypar:010
[0053]
zpar:000
[0054]
并且,因此产生以下划分标识元组:
[0055]
i)(0,0,0)
[0056]
ii)(0,1,0)
[0057]
iii)(0,0,0)
[0058]
然后,这些划分标识元组按照字典顺序排序以便将相同元组分组在一起:i)和iii)一起,ii)单独。只要排序条件一致,排序条件的选择就不重要。例如,我们可以按xpar排序,然后对xpar相同的按ypar排序,然后对xpar和ypar都相同的按zpar排序。这将把相同的(xpar,ypar,zpar)值分组在一起。使用不规则网格方法有效地使得围绕边界框形成尺寸不规则的网格,使得网格中的每个平面接触至少一个边界框但不与任何边界框相交。每个边界框正好占据一个网格单元,并且每个被占据的单元具有划分标识元组标签(xpar,ypar,zpar)。因此,单独的区间遍历等效于在x、y和z轴方向中的每一个上遍历平面。
[0059]
合并边界框
[0060]
到目前为止,所述方法适于对未经配置的产品结构索引进行排序,以便检查在索引中是否存在某些边界框。然而,为了创建未经配置的产品结构索引的未经配置的空间边界元素,下一阶段是合并享有相同划分标识元组的边界框。取上述框i)、ii)和iii),对于划分标识元组(0,0,0),框i)和iii)将被合并。合并位于网格单元中的边界框。这是通过创建轴对齐的最小边界框来完成的,其中,轴对齐的最小边界框包含边界框的xmin、ymin和zmin中的每一个的最小值以及xmax、ymax和zmax中的每一个的最大值,所述边界框形成具有相同划分标识元组的边界框组。对于上述边界框i)和iii),这产生单个边界框:
[0061]
[0,0,0,15,10,10]
[0062]
没有其它边界框与框ii)共享相同的划分标识元组,因此边界框ii)保持不变。
[0063]
边界框的重复划分
[0064]
在某些情况中,可能希望重复对边界框组的划分步骤,因为单次划分步骤可能产生共享相同划分标识元组的庞大边界框组。较小的边界框组可以具有合并成更大边界框组的不同选项,因此执行划分过程直到到达预定结束点可能是优选的。该预定结束点要么是空间索引目标的集合或时间索引目标的集合,要么是组内仅保留单个边界框。这有效地使得在分配划分标识元组之前使用相同或不同的区间组来再次划分边界框集合。例如,边界框:
[0065]
iv)[0,0,0,1,1,1]
[0066]
v)[2,0,0,3,1,1]
[0067]
vi)[0,2,0,3,3,1]
[0068]
分组如下:
[0069]
划分标识元组(0,0,0)——边界框iv)和v)
[0070]
划分标识元组(0,1,0)——边界框vi)
[0071]
采取第一次划分和再次划分得到框iv)的次划分标识元组(0,0,0),以及框v)的次划分标识元组(1,0,0)。再次划分使得框iv)沿x、y和z分别得到区间[0,1]、[0,1]和[0,1],并使得框v)沿x、y和z分别得到区间[2,3]、[0,1]和[0,1]。执行上述排序过程并且以相同方式分配次划分标识产生了次划分标识元组。
[0072]
相邻和附近边界框
[0073]
当在设计产品期间旋转零件时,所需的变换可能不总是保持原始边界框的轴对齐特性,或者可能存在产品固有的浮点舍入误差、几何公差和定位公差,导致边界框扩展。这意味着两个相邻的边界框可能并不精确地相邻。为了解决这个问题并且确保边界框可以成功地合并,可以修改区间来增加或减少具有相同划分标识元组的边界框的数量。这可以通过被扩展、收缩或变换的区间来实现。例如,取两个边界框:
[0074]
vii)[1,1,1,1.99999999,2,2]
[0075]
viii)[2,1,1,3,2,2]
[0076]
在x轴方向上它们之间具有小的(0.00000001)间隙。将稍微不同的边界框划分为原始边界框从而能够控制分组——这可以允许合并存在10%间隙的边界框,或者避免合并具有10%重叠的边界框。取边界框vii)和viii)并在每个方向上扩展10%将得到:
[0077]
vii)'[0.90000001,0.9,0.9,2.099999989,2.1,2.1]
[0078]
viii)'[1.9,0.9,0.9,3.1,2.1,2.1]
[0079]
这些改变的边界框现在重叠并且具有划分标识元组(90,0,0)和(0,0,0)。合并原始框产生单个框[1,1,1,3,2,2]。因此,如果合并存在n%间隙的边界框,则在分配划分标识之前将区间扩展n%。如果存在数值不精确性或公差,则将区间扩展对应的不精确值或公差值。
[0080]
优选地,通过计算机程序并且/或者通过使用数据处理设备来执行所述方法。