本发明涉及三维建模领域,特别涉及一种三维装配模型自动分解方法和装置。
背景技术:
由于产品分解图能够清晰地表达产品的构成,因此对于产品拆装及维修具有一定的指导意义。目前,随着三维CAD技术在产品设计中的应用日益深入,根据三维模型制作分解图的需求亦逐渐增强。
但是,在当前的产品三维模型领域内,并没有出现关于三维模型自动分解的相关技术,只能通过人工方式手动对三维模型进行分解。而通过手动拖拽模型实体进行分解,操作繁琐,工作强度大,且工作效率低。
技术实现要素:
本发明实施例提供一种三维装配模型自动分解方法和装置,通过自动对装配模型进行分解,减轻相关人员的工作强度,并显著提高了工作效率。
根据本发明的一个方面,提供一种三维装配模型自动分解方法,包括:
通过将三维装配模型转换为边界框形式,以确定需要进行干涉检测的模型范围;
通过干涉检测,确定模型的分解方向;
在模型的分解方向上确定模型的分解距离,从而实现模型的自动分解。
在一个实施例中,通过将三维装配模型转换为边界框形式,以确定需要进行干涉检测的模型范围包括:
将三维装配模型转换为边界框形式;
将转换后的三维装配模型的端点坐标转换到装配坐标系中,以在端点中确定最大值点和最小值点;
根据模型的最大值点和最小值点进行模型相交检测,确定出需要干涉检测的模型。
在一个实施例中,将三维装配模型转换为边界框形式后,还包括:
将可拆除零件的模型放入子装配模型集合A中,将未拆除零件的模型放入未拆除零件模型集合B中。
在一个实施例中,根据模型的最大值点和最小值点进行模型相交检测,确定出需要干涉检测的模型包括:
将子装配模型集合A中的每个模型与未拆除零件模型集合B中的每个模型进行相交检测,将子装配模型集合A中与未拆除零件模型集合B相交的模型作为需要干涉检测的模型放入模型集合A1中;
将未拆除零件模型集合B中的每个模型与模型集合A1中的每个模型进行相交检测,将未拆除零件模型集合B中与模型集合A1相交的模型放入模型集合B1中。
在一个实施例中,通过干涉检测确定模型的分解方向包括:
对于模型集合A1中的每个模型,以该模型的最小值点为参照点,利用该模型上与参照点相邻的顶点,确定该模型的6个移动方向;
使该模型在每个移动方向上,按照预定偏移长度进行移动,并检测在该移动方向上是否与模型集合B1中的模型存在干涉;
根据该模型在各移动方向上的干涉检测结果确定分解方向。
在一个实施例中,在确定该模型的6个移动方向后,还包括:
检测该模型在每个移动方向上是否与模型集合B1中的模型存在干涉,然后执行使该模型在每个移动方向上按照预定偏移长度进行移动的步骤。
在一个实施例中,根据该模型在各移动方向上的干涉检测结果确定分解方向包括:
若不存在干涉情况,则表明该模型的装配位置悬空,根据用户指示确定分解方向。
在一个实施例中,若在1个移动方向上存在干涉情况,则将该移动方向的相反方向作为分解方向。
在一个实施例中,若在2-4个移动方向上存在干涉情况,则将该模型到整个装配体的边界框面最近的方向作为分解方向。
在一个实施例中,若在5个移动方向上存在干涉情况,则将不存在干涉情况的方向作为分解方向。
在一个实施例中,若在6个移动方向上均存在干涉情况,则根据用户指示确定分解方向。
在一个实施例中,在模型的分解方向上确定模型的分解距离包括:
对于模型m,确定模型m的中心点与提供基准平面的基准包围盒的中心点之间的距离L;
确定基准包围盒在分解方向上的对应边长2LA,确定模型m在分解方向上的对应边长2Lm;
利用L-LA-Lm确定模型m在分解方向上与基准平面之间的距离m_dis_m;
判断在模型m与基准平面之间是否还存在其它模型;
若不存在其它模型,则将距离m_dis_m作为模型m在分解方向上的分解距离。
在一个实施例中,若存在其它模型,则将m_dis_m-m_dis_n-Ln的差作为该模型在分解方向上的分解距离,其中模型n是在分解方向上,在模型m和基准平面之间距离模型m最近的模型,Ln为模型n在分解方向上的对应边长,m_dis_n为模型n在分解方向上与基准平面之间的距离。
根据本发明的另一方面,提供一种三维装配模型自动分解装置,包括模型转换模块、干涉检测模块和分解距离确定模块,其中:
模型转换模块,用于通过将三维装配模型转换为边界框形式,以确定需要进行干涉检测的模型范围;
干涉检测模块,用于通过干涉检测,确定模型的分解方向;
分解距离确定模块,用于在模型的分解方向上确定模型的分解距离,从而实现模型的自动分解。
在一个实施例中,模型转换模块具体将三维装配模型转换为边界框形式,将转换后的三维装配模型的端点坐标转换到装配坐标系中,以在端点中确定最大值点和最小值点,根据模型的最大值点和最小值点进行模型相交检测,确定出需要干涉检测的模型。
在一个实施例中,模型转换模块还用于在将三维装配模型转换为边界框形式后,将可拆除零件的模型放入子装配模型集合A中,将未拆除零件的模型放入未拆除零件模型集合B中。
在一个实施例中,模型转换模块还用于将子装配模型集合A中的每个模型与未拆除零件模型集合B中的每个模型进行相交检测,将子装配模型集合A中与未拆除零件模型集合B相交的模型作为需要干涉检测的模型放入模型集合A1中;将未拆除零件模型集合B中的每个模型与模型集合A1中的每个模型进行相交检测,将未拆除零件模型集合B中与模型集合A1相交的模型放入模型集合B1中。
在一个实施例中,干涉检测模块具体对于模型集合A1中的每个模型,以该模型的最小值点为参照点,利用该模型上与参照点相邻的顶点,确定该模型的6个移动方向;使该模型在每个移动方向上,按照预定偏移长度进行移动,并检测在该移动方向上是否与模型集合B1中的模型存在干涉;根据该模型在各移动方向上的干涉检测结果确定分解方向。
在一个实施例中,干涉检测模块还用于在确定该模型的6个移动方向后,检测该模型在每个移动方向上是否与模型集合B1中的模型存在干涉,然后执行使该模型在每个移动方向上按照预定偏移长度进行移动的操作。
在一个实施例中,干涉检测模块具体在不存在干涉情况时,根据用户指示确定分解方向。
在一个实施例中,干涉检测模块具体在1个移动方向上存在干涉情况时,将该移动方向的相反方向作为分解方向。
在一个实施例中,干涉检测模块具体在2-4个移动方向上存在干涉情况时,将该模型到整个装配体的边界框面最近的方向作为分解方向。
在一个实施例中,干涉检测模块具体在5个移动方向上存在干涉情况时,将不存在干涉情况的方向作为分解方向。
在一个实施例中,干涉检测模块具体在6个移动方向上均存在干涉情况时,根据用户指示确定分解方向。
在一个实施例中,分解距离确定模块具体对于模型m,确定模型m的中心点与提供基准平面的基准包围盒的中心点之间的距离L,确定基准包围盒在分解方向上的对应边长2LA,确定模型m在分解方向上的对应边长2Lm,利用L-LA-Lm确定模型m在分解方向上与基准平面之间的距离m_dis_m;判断在模型m与基准平面之间是否还存在其它模型,若不存在其它模型,则将距离m_dis_m作为模型m在分解方向上的分解距离。
在一个实施例中,分解距离确定模块还用于在存在其它模型的情况下,将m_dis_m-m_dis_n-Ln的差作为该模型在分解方向上的分解距离,其中模型n是在分解方向上,在模型m和基准平面之间距离模型m最近的模型,Ln为模型n在分解方向上的对应边长,m_dis_n为模型n在分解方向上与基准平面之间的距离。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明三维装配模型自动分解方法一个实施例的示意图。
图2为本发明装配模型转换为边界框形式一个示例的示意图。
图3为本发明边界框轮廓示意图。
图4为边界框相离示意图。
图5为边界框相邻示意图。
图6为本发明缩小干涉检测范围的流程示意图。
图7为本发明模型移动方向示意图。
图8为本发明模型移动示意图。
图9为本发明干涉检测流程示意图。
图10为本发明模型移动距离分解一个实施例的示意图。
图11为本发明模型移动距离分解另一实施例的示意图。
图12为本发明三维装配模型自动分解装置一个实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本发明三维装配模型自动分解方法一个实施例的示意图。其中:
步骤101,通过将三维装配模型转换为边界框形式,以确定需要进行干涉检测的模型范围。
其中,可将三维装配模型转换为边界框(BOX)形式,相应的示意图如图2所示。在将三维装配模型转换为边界框形式后,可将可拆除零件的模型放入子装配模型集合A中,将未拆除零件的模型放入未拆除零件模型集合B中。其中,相应的边界框示意图如图3所示,其中模型的对角点为C1和C2。
之后,将转换后的三维装配模型的端点坐标转换到装配坐标系中,其中通过相应的变换矩阵进行坐标转换。由于模型在装配体中的装配位置不定,可能发生颠倒或倾斜,因此需要对8个顶点的坐标点进行比较以确定最值点,即最大值点和最小值点。
接下来,需要根据模型的最大值点和最小值点进行模型相交检测,确定出需要干涉检测的模型。
这里需要说明的是,可根据两个模型的最大值点和最小值点,来判断相交或相离。如果一个模型的最小值比另一模型的最大值还大或者是该模型的最大值点比另一个模型的最小值还小,则这两个模型的BOX肯定相离。如图4所示,考虑到可能出现两个模型BOX恰好相邻,但不相交,如图5所示,需要对该模型的BOX适当的增加一定的偏移值。
计算两个模型的BOX是否相交,只要两个坐标点的三个分量在一个方向上满足所述的条件,两个BOX就相离,不必在每个坐标方向上都满足相离的条件。如果两个模型的BOX不满足上述的任何一个条件的话则说明两者是相交的,需要进行后序的干涉检测。
此外,在根据模型的最大值点和最小值点进行模型相交检测以确定出需要干涉检测的模型时,为了缩小干涉检测的范围,以提高计算速度,本申请还提出以下处理方式,如图6所示:
第一,将子装配模型集合A中的每个模型与未拆除零件模型集合B中的每个模型进行相交检测,将子装配模型集合A中与未拆除零件模型集合B相交的模型作为需要干涉检测的模型放入模型集合A1中。
第二,将未拆除零件模型集合B中的每个模型与模型集合A1中的每个模型进行相交检测,将未拆除零件模型集合B中与模型集合A1相交的模型放入模型集合B1中。
由此,通过利用BOX检测不断缩小需要干涉检测的模型数目和未拆除零件中的模型数目,可有效缩小干涉检测的范围,并提高计算速度。
此外,需要说明的是,已经拆除的零件不能放入集合B中,否则在进行干涉检测时,无法确定模型的分解方向。
步骤102,通过干涉检测,确定模型的分解方向。
其中,在通过干涉检测确定模型的分解方向时,对于模型集合A1中的每个模型,以该模型的最小值点为参照点,利用该模型上与参照点相邻的顶点,确定该模型的6个移动方向。
如图7所示,以P0为参照点,即r_outline_point[0],并结合顶点P1、P2和P3来确定模型的6个移动方向。即用一个向量数组来表示模型的6个移动方向。其中:
Dir[0].m_dir=P1–r_outline_point[0]
Dir[1].m_dir=r_outline_point[0]–P1
Dir[2].m_dir=P2–r_outline_point[0]
Dir[3].m_dir=r_outline_point[0]–P2
Dir[4].m_dir=P3–r_outline_point[0]
Dir[5].m_dir=r_outline_point[0]–P3
相应的模型移动示意图如图8所示。
接下来,使该模型在每个移动方向上,按照预定偏移长度进行移动,并检测在该移动方向上是否与模型集合B1中的模型存在干涉。
具体来说,确定零件在装配坐标系下的6个移动方向向量后,就可以让零件在移动方向上做一个微小的扰动,然后通过干涉检测来判断其在该方向是否存在干涉。如果零件与所有的BOX相交模型干涉检测后都不存在干涉,此时就将该方向是否干涉的标志m_bInter设为false,否则,遇到了干涉的模型就停止后面模型的检测,并将干涉的标志m_bInter设为true。这样完成6个方向的干涉判断,就可以判断零件模型的移动方向。
优选的,为了进一步减小需要干涉检测的模型,如图9所示,对于集合A1(参见图6)中的一个元素A1(i),若该元素与集合B1(参见图6)中的部分元素的BOX相交,利用BOX相交检测找出这部分元素将他们存储在B2中,这样需要进行干涉检测模型的数目就进一步减少,提高计算速度。
此外需要说明的是,模型进行微小扰动的具体值是非常关键的,这个值如果过大则会将模型移动到装配体的外部,如果过小对于间隙配合的模型来说可能不能发生干涉情况,在这里可采用模型移动方向的偏移最小不能小于1mm,最大不能超过10mm的方法来解决,具体的值是根据模型响应移动模型的边长的0.1倍来判断的。
另外,还需要考虑的是,若两个模型本身就存在着干涉,那么当进行模型位置的扰动后,再去进行干涉检测是无法判断这个干涉是不是由于扰动引起的。为了解决这一问题,本发明采用了对模型进行两次干涉检测的方法来解决这个问题。首先,在模型没有进行位置扰动之前进行干涉检测。若判断两个模型之间本身就存在这干涉,则可计算出模型的干涉体积pre_value。此时,就可继续利用上面涉及的方式进行干涉检测。同样去计算模型的干涉体积cur_value,如果两个干涉体积的差值超出了一定的精度范围就认为他们之间存在干涉。
最后,根据该模型在各移动方向上的干涉检测结果确定分解方向。模型的干涉个数有以下几种情况:
1)不存在干涉情况,表明该模型的装配位置悬空,不与任何一个模型接触或者说是距离较远。此时可根据用户指示确定分解方向。
2)在1个移动方向上存在干涉情况,此时该模型只在一个方向上与其他模型干涉,可将该移动方向的相反方向作为分解方向。
3)在2-4个移动方向上存在干涉情况,在这种情况下可将该模型到整个装配体的边界框面最近的方向作为分解方向。
4)在5个移动方向上存在干涉情况,将不存在干涉情况的方向作为分解方向。
5)在6个移动方向上均存在干涉情况,在这种情况下说明模型在6个方向上都不可以移动,产生这种情况的原因可能是由于装配的需要将模型装配的不可以移动,也有可能是装配顺序不对导致的。在这种情况下可根据用户指示确定分解方向。
步骤103,在模型的分解方向上确定模型的分解距离,从而实现模型的自动分解。
容易发现模型的BOX也就是我们平时所说的包围盒,为了使同一个方向上的模型都按照同一个相对距离进行移动,本发明采用了计算出模型移动到包围盒在移动方向上对应的面的距离的方案,这样就可以将同一个方向上的所有模型都移动到一个基准平面上,然后在结合模型在对应移动方向上的边长,计算出模型的最终的移动距离。如图10所示,在图中A为基体模型的包围盒,m为需要在方向(0,0,1)上移动的模型,箭头表示移动方向。L表示两个模型的包围盒的中心点在移动方向上的投影距离,LA与Lm分别表示的是两个包围盒在移动方向上对应的边长的一半。即:
LA=(模型A在移动方向上对应的边长)/2
Lm=(模型m在移动方向上对应的边长)/2
m_dis_m=L-LA-Lm
若模型m与基准平面C之间不存在其它模型,则将距离m_dis_m作为模型m在分解方向上的分解距离。
如图11所示,若模型m与基准平面C之间还存在其它模型,若模型n是在分解方向上,在模型m和基准平面之间距离模型m最近的模型,Ln为模型n在分解方向上的对应边长,m_dis_n为模型n在分解方向上与基准平面之间的距离,则将m_dis_m-m_dis_n-Ln的差作为该模型在分解方向上的分解距离。
基于本发明上述实施例提供的三维装配模型自动分解方法,通过自动对装配模型进行分解,减轻相关人员的工作强度,并显著提高了工作效率。
图12为本发明三维装配模型自动分解装置一个实施例的示意图。如图12所示,该装置包括模型转换模块1201、干涉检测模块1202和分解距离确定模块1203,其中:
模型转换模块1201用于通过将三维装配模型转换为边界框形式,以确定需要进行干涉检测的模型范围。
干涉检测模块1202用于通过干涉检测,确定模型的分解方向。
分解距离确定模块1203用于在模型的分解方向上确定模型的分解距离,从而实现模型的自动分解。
可选地,模型转换模块1201具体将三维装配模型转换为边界框形式,将转换后的三维装配模型的端点坐标转换到装配坐标系中,以在端点中确定最大值点和最小值点,根据模型的最大值点和最小值点进行模型相交检测,确定出需要干涉检测的模型。
其中,模型转换模块1201还用于在将三维装配模型转换为边界框形式后,将可拆除零件的模型放入子装配模型集合A中,将未拆除零件的模型放入未拆除零件模型集合B中。
为了尽量减少需要干涉检测的模型,模型转换模块1201还用于将子装配模型集合A中的每个模型与未拆除零件模型集合B中的每个模型进行相交检测,将子装配模型集合A中与未拆除零件模型集合B相交的模型作为需要干涉检测的模型放入模型集合A1中;将未拆除零件模型集合B中的每个模型与模型集合A1中的每个模型进行相交检测,将未拆除零件模型集合B中与模型集合A1相交的模型放入模型集合B1中。
可选地,干涉检测模块1202可具体对于模型集合A1中的每个模型,以该模型的最小值点为参照点,利用该模型上与参照点相邻的顶点,确定该模型的6个移动方向;使该模型在每个移动方向上,按照预定偏移长度进行移动,并检测在该移动方向上是否与模型集合B1中的模型存在干涉;根据该模型在各移动方向上的干涉检测结果确定分解方向。
其中,干涉检测模块1202还用于在确定该模型的6个移动方向后,检测该模型在每个移动方向上是否与模型集合B1中的模型存在干涉,然后执行使该模型在每个移动方向上按照预定偏移长度进行移动的操作。从而能够识别出干涉是否由模型位置扰动所引起的。
其中,干涉检测模块可根据干涉情况进行相应的处理。例如,在不存在干涉情况时,根据用户指示确定分解方向;在1个移动方向上存在干涉情况时,将该移动方向的相反方向作为分解方向;在2-4个移动方向上存在干涉情况时,将该模型到整个装配体的边界框面最近的方向作为分解方向;在5个移动方向上存在干涉情况时,将不存在干涉情况的方向作为分解方向;在6个移动方向上均存在干涉情况时,根据用户指示确定分解方向。
可选地,分解距离确定模块1203具体对于模型m,确定模型m的中心点与提供基准平面的基准包围盒的中心点之间的距离L,确定基准包围盒在分解方向上的对应边长2LA,确定模型m在分解方向上的对应边长2Lm,利用L-LA-Lm确定模型m在分解方向上与基准平面之间的距离m_dis_m;判断在模型m与基准平面之间是否还存在其它模型,若不存在其它模型,则将距离m_dis_m作为模型m在分解方向上的分解距离。
分解距离确定模块1203还用于在存在其它模型的情况下,将m_dis_m-m_dis_n-Ln的差作为该模型在分解方向上的分解距离,其中模型n是在分解方向上,在模型m和基准平面之间距离模型m最近的模型,Ln为模型n在分解方向上的对应边长,m_dis_n为模型n在分解方向上与基准平面之间的距离。
通过实施本发明,可有效减轻相关人员的工作强度,并显著提高了工作效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。