本發(fā)明涉及三維建模領(lǐng)域,特別涉及一種三維裝配模型自動(dòng)分解方法和裝置。
背景技術(shù):
由于產(chǎn)品分解圖能夠清晰地表達(dá)產(chǎn)品的構(gòu)成,因此對(duì)于產(chǎn)品拆裝及維修具有一定的指導(dǎo)意義。目前,隨著三維CAD技術(shù)在產(chǎn)品設(shè)計(jì)中的應(yīng)用日益深入,根據(jù)三維模型制作分解圖的需求亦逐漸增強(qiáng)。
但是,在當(dāng)前的產(chǎn)品三維模型領(lǐng)域內(nèi),并沒有出現(xiàn)關(guān)于三維模型自動(dòng)分解的相關(guān)技術(shù),只能通過人工方式手動(dòng)對(duì)三維模型進(jìn)行分解。而通過手動(dòng)拖拽模型實(shí)體進(jìn)行分解,操作繁瑣,工作強(qiáng)度大,且工作效率低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種三維裝配模型自動(dòng)分解方法和裝置,通過自動(dòng)對(duì)裝配模型進(jìn)行分解,減輕相關(guān)人員的工作強(qiáng)度,并顯著提高了工作效率。
根據(jù)本發(fā)明的一個(gè)方面,提供一種三維裝配模型自動(dòng)分解方法,包括:
通過將三維裝配模型轉(zhuǎn)換為邊界框形式,以確定需要進(jìn)行干涉檢測(cè)的模型范圍;
通過干涉檢測(cè),確定模型的分解方向;
在模型的分解方向上確定模型的分解距離,從而實(shí)現(xiàn)模型的自動(dòng)分解。
在一個(gè)實(shí)施例中,通過將三維裝配模型轉(zhuǎn)換為邊界框形式,以確定需要進(jìn)行干涉檢測(cè)的模型范圍包括:
將三維裝配模型轉(zhuǎn)換為邊界框形式;
將轉(zhuǎn)換后的三維裝配模型的端點(diǎn)坐標(biāo)轉(zhuǎn)換到裝配坐標(biāo)系中,以在端點(diǎn)中確定最大值點(diǎn)和最小值點(diǎn);
根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè),確定出需要干涉檢測(cè)的模型。
在一個(gè)實(shí)施例中,將三維裝配模型轉(zhuǎn)換為邊界框形式后,還包括:
將可拆除零件的模型放入子裝配模型集合A中,將未拆除零件的模型放入未拆除零件模型集合B中。
在一個(gè)實(shí)施例中,根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè),確定出需要干涉檢測(cè)的模型包括:
將子裝配模型集合A中的每個(gè)模型與未拆除零件模型集合B中的每個(gè)模型進(jìn)行相交檢測(cè),將子裝配模型集合A中與未拆除零件模型集合B相交的模型作為需要干涉檢測(cè)的模型放入模型集合A1中;
將未拆除零件模型集合B中的每個(gè)模型與模型集合A1中的每個(gè)模型進(jìn)行相交檢測(cè),將未拆除零件模型集合B中與模型集合A1相交的模型放入模型集合B1中。
在一個(gè)實(shí)施例中,通過干涉檢測(cè)確定模型的分解方向包括:
對(duì)于模型集合A1中的每個(gè)模型,以該模型的最小值點(diǎn)為參照點(diǎn),利用該模型上與參照點(diǎn)相鄰的頂點(diǎn),確定該模型的6個(gè)移動(dòng)方向;
使該模型在每個(gè)移動(dòng)方向上,按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng),并檢測(cè)在該移動(dòng)方向上是否與模型集合B1中的模型存在干涉;
根據(jù)該模型在各移動(dòng)方向上的干涉檢測(cè)結(jié)果確定分解方向。
在一個(gè)實(shí)施例中,在確定該模型的6個(gè)移動(dòng)方向后,還包括:
檢測(cè)該模型在每個(gè)移動(dòng)方向上是否與模型集合B1中的模型存在干涉,然后執(zhí)行使該模型在每個(gè)移動(dòng)方向上按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng)的步驟。
在一個(gè)實(shí)施例中,根據(jù)該模型在各移動(dòng)方向上的干涉檢測(cè)結(jié)果確定分解方向包括:
若不存在干涉情況,則表明該模型的裝配位置懸空,根據(jù)用戶指示確定分解方向。
在一個(gè)實(shí)施例中,若在1個(gè)移動(dòng)方向上存在干涉情況,則將該移動(dòng)方向的相反方向作為分解方向。
在一個(gè)實(shí)施例中,若在2-4個(gè)移動(dòng)方向上存在干涉情況,則將該模型到整個(gè)裝配體的邊界框面最近的方向作為分解方向。
在一個(gè)實(shí)施例中,若在5個(gè)移動(dòng)方向上存在干涉情況,則將不存在干涉情況的方向作為分解方向。
在一個(gè)實(shí)施例中,若在6個(gè)移動(dòng)方向上均存在干涉情況,則根據(jù)用戶指示確定分解方向。
在一個(gè)實(shí)施例中,在模型的分解方向上確定模型的分解距離包括:
對(duì)于模型m,確定模型m的中心點(diǎn)與提供基準(zhǔn)平面的基準(zhǔn)包圍盒的中心點(diǎn)之間的距離L;
確定基準(zhǔn)包圍盒在分解方向上的對(duì)應(yīng)邊長(zhǎng)2LA,確定模型m在分解方向上的對(duì)應(yīng)邊長(zhǎng)2Lm;
利用L-LA-Lm確定模型m在分解方向上與基準(zhǔn)平面之間的距離m_dis_m;
判斷在模型m與基準(zhǔn)平面之間是否還存在其它模型;
若不存在其它模型,則將距離m_dis_m作為模型m在分解方向上的分解距離。
在一個(gè)實(shí)施例中,若存在其它模型,則將m_dis_m-m_dis_n-Ln的差作為該模型在分解方向上的分解距離,其中模型n是在分解方向上,在模型m和基準(zhǔn)平面之間距離模型m最近的模型,Ln為模型n在分解方向上的對(duì)應(yīng)邊長(zhǎng),m_dis_n為模型n在分解方向上與基準(zhǔn)平面之間的距離。
根據(jù)本發(fā)明的另一方面,提供一種三維裝配模型自動(dòng)分解裝置,包括模型轉(zhuǎn)換模塊、干涉檢測(cè)模塊和分解距離確定模塊,其中:
模型轉(zhuǎn)換模塊,用于通過將三維裝配模型轉(zhuǎn)換為邊界框形式,以確定需要進(jìn)行干涉檢測(cè)的模型范圍;
干涉檢測(cè)模塊,用于通過干涉檢測(cè),確定模型的分解方向;
分解距離確定模塊,用于在模型的分解方向上確定模型的分解距離,從而實(shí)現(xiàn)模型的自動(dòng)分解。
在一個(gè)實(shí)施例中,模型轉(zhuǎn)換模塊具體將三維裝配模型轉(zhuǎn)換為邊界框形式,將轉(zhuǎn)換后的三維裝配模型的端點(diǎn)坐標(biāo)轉(zhuǎn)換到裝配坐標(biāo)系中,以在端點(diǎn)中確定最大值點(diǎn)和最小值點(diǎn),根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè),確定出需要干涉檢測(cè)的模型。
在一個(gè)實(shí)施例中,模型轉(zhuǎn)換模塊還用于在將三維裝配模型轉(zhuǎn)換為邊界框形式后,將可拆除零件的模型放入子裝配模型集合A中,將未拆除零件的模型放入未拆除零件模型集合B中。
在一個(gè)實(shí)施例中,模型轉(zhuǎn)換模塊還用于將子裝配模型集合A中的每個(gè)模型與未拆除零件模型集合B中的每個(gè)模型進(jìn)行相交檢測(cè),將子裝配模型集合A中與未拆除零件模型集合B相交的模型作為需要干涉檢測(cè)的模型放入模型集合A1中;將未拆除零件模型集合B中的每個(gè)模型與模型集合A1中的每個(gè)模型進(jìn)行相交檢測(cè),將未拆除零件模型集合B中與模型集合A1相交的模型放入模型集合B1中。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體對(duì)于模型集合A1中的每個(gè)模型,以該模型的最小值點(diǎn)為參照點(diǎn),利用該模型上與參照點(diǎn)相鄰的頂點(diǎn),確定該模型的6個(gè)移動(dòng)方向;使該模型在每個(gè)移動(dòng)方向上,按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng),并檢測(cè)在該移動(dòng)方向上是否與模型集合B1中的模型存在干涉;根據(jù)該模型在各移動(dòng)方向上的干涉檢測(cè)結(jié)果確定分解方向。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊還用于在確定該模型的6個(gè)移動(dòng)方向后,檢測(cè)該模型在每個(gè)移動(dòng)方向上是否與模型集合B1中的模型存在干涉,然后執(zhí)行使該模型在每個(gè)移動(dòng)方向上按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng)的操作。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體在不存在干涉情況時(shí),根據(jù)用戶指示確定分解方向。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體在1個(gè)移動(dòng)方向上存在干涉情況時(shí),將該移動(dòng)方向的相反方向作為分解方向。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體在2-4個(gè)移動(dòng)方向上存在干涉情況時(shí),將該模型到整個(gè)裝配體的邊界框面最近的方向作為分解方向。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體在5個(gè)移動(dòng)方向上存在干涉情況時(shí),將不存在干涉情況的方向作為分解方向。
在一個(gè)實(shí)施例中,干涉檢測(cè)模塊具體在6個(gè)移動(dòng)方向上均存在干涉情況時(shí),根據(jù)用戶指示確定分解方向。
在一個(gè)實(shí)施例中,分解距離確定模塊具體對(duì)于模型m,確定模型m的中心點(diǎn)與提供基準(zhǔn)平面的基準(zhǔn)包圍盒的中心點(diǎn)之間的距離L,確定基準(zhǔn)包圍盒在分解方向上的對(duì)應(yīng)邊長(zhǎng)2LA,確定模型m在分解方向上的對(duì)應(yīng)邊長(zhǎng)2Lm,利用L-LA-Lm確定模型m在分解方向上與基準(zhǔn)平面之間的距離m_dis_m;判斷在模型m與基準(zhǔn)平面之間是否還存在其它模型,若不存在其它模型,則將距離m_dis_m作為模型m在分解方向上的分解距離。
在一個(gè)實(shí)施例中,分解距離確定模塊還用于在存在其它模型的情況下,將m_dis_m-m_dis_n-Ln的差作為該模型在分解方向上的分解距離,其中模型n是在分解方向上,在模型m和基準(zhǔn)平面之間距離模型m最近的模型,Ln為模型n在分解方向上的對(duì)應(yīng)邊長(zhǎng),m_dis_n為模型n在分解方向上與基準(zhǔn)平面之間的距離。
通過以下參照附圖對(duì)本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會(huì)變得清楚。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明三維裝配模型自動(dòng)分解方法一個(gè)實(shí)施例的示意圖。
圖2為本發(fā)明裝配模型轉(zhuǎn)換為邊界框形式一個(gè)示例的示意圖。
圖3為本發(fā)明邊界框輪廓示意圖。
圖4為邊界框相離示意圖。
圖5為邊界框相鄰示意圖。
圖6為本發(fā)明縮小干涉檢測(cè)范圍的流程示意圖。
圖7為本發(fā)明模型移動(dòng)方向示意圖。
圖8為本發(fā)明模型移動(dòng)示意圖。
圖9為本發(fā)明干涉檢測(cè)流程示意圖。
圖10為本發(fā)明模型移動(dòng)距離分解一個(gè)實(shí)施例的示意圖。
圖11為本發(fā)明模型移動(dòng)距離分解另一實(shí)施例的示意圖。
圖12為本發(fā)明三維裝配模型自動(dòng)分解裝置一個(gè)實(shí)施例的示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
除非另外具體說明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為授權(quán)說明書的一部分。
在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它示例可以具有不同的值。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。
圖1為本發(fā)明三維裝配模型自動(dòng)分解方法一個(gè)實(shí)施例的示意圖。其中:
步驟101,通過將三維裝配模型轉(zhuǎn)換為邊界框形式,以確定需要進(jìn)行干涉檢測(cè)的模型范圍。
其中,可將三維裝配模型轉(zhuǎn)換為邊界框(BOX)形式,相應(yīng)的示意圖如圖2所示。在將三維裝配模型轉(zhuǎn)換為邊界框形式后,可將可拆除零件的模型放入子裝配模型集合A中,將未拆除零件的模型放入未拆除零件模型集合B中。其中,相應(yīng)的邊界框示意圖如圖3所示,其中模型的對(duì)角點(diǎn)為C1和C2。
之后,將轉(zhuǎn)換后的三維裝配模型的端點(diǎn)坐標(biāo)轉(zhuǎn)換到裝配坐標(biāo)系中,其中通過相應(yīng)的變換矩陣進(jìn)行坐標(biāo)轉(zhuǎn)換。由于模型在裝配體中的裝配位置不定,可能發(fā)生顛倒或傾斜,因此需要對(duì)8個(gè)頂點(diǎn)的坐標(biāo)點(diǎn)進(jìn)行比較以確定最值點(diǎn),即最大值點(diǎn)和最小值點(diǎn)。
接下來,需要根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè),確定出需要干涉檢測(cè)的模型。
這里需要說明的是,可根據(jù)兩個(gè)模型的最大值點(diǎn)和最小值點(diǎn),來判斷相交或相離。如果一個(gè)模型的最小值比另一模型的最大值還大或者是該模型的最大值點(diǎn)比另一個(gè)模型的最小值還小,則這兩個(gè)模型的BOX肯定相離。如圖4所示,考慮到可能出現(xiàn)兩個(gè)模型BOX恰好相鄰,但不相交,如圖5所示,需要對(duì)該模型的BOX適當(dāng)?shù)脑黾右欢ǖ钠浦怠?/p>
計(jì)算兩個(gè)模型的BOX是否相交,只要兩個(gè)坐標(biāo)點(diǎn)的三個(gè)分量在一個(gè)方向上滿足所述的條件,兩個(gè)BOX就相離,不必在每個(gè)坐標(biāo)方向上都滿足相離的條件。如果兩個(gè)模型的BOX不滿足上述的任何一個(gè)條件的話則說明兩者是相交的,需要進(jìn)行后序的干涉檢測(cè)。
此外,在根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè)以確定出需要干涉檢測(cè)的模型時(shí),為了縮小干涉檢測(cè)的范圍,以提高計(jì)算速度,本申請(qǐng)還提出以下處理方式,如圖6所示:
第一,將子裝配模型集合A中的每個(gè)模型與未拆除零件模型集合B中的每個(gè)模型進(jìn)行相交檢測(cè),將子裝配模型集合A中與未拆除零件模型集合B相交的模型作為需要干涉檢測(cè)的模型放入模型集合A1中。
第二,將未拆除零件模型集合B中的每個(gè)模型與模型集合A1中的每個(gè)模型進(jìn)行相交檢測(cè),將未拆除零件模型集合B中與模型集合A1相交的模型放入模型集合B1中。
由此,通過利用BOX檢測(cè)不斷縮小需要干涉檢測(cè)的模型數(shù)目和未拆除零件中的模型數(shù)目,可有效縮小干涉檢測(cè)的范圍,并提高計(jì)算速度。
此外,需要說明的是,已經(jīng)拆除的零件不能放入集合B中,否則在進(jìn)行干涉檢測(cè)時(shí),無法確定模型的分解方向。
步驟102,通過干涉檢測(cè),確定模型的分解方向。
其中,在通過干涉檢測(cè)確定模型的分解方向時(shí),對(duì)于模型集合A1中的每個(gè)模型,以該模型的最小值點(diǎn)為參照點(diǎn),利用該模型上與參照點(diǎn)相鄰的頂點(diǎn),確定該模型的6個(gè)移動(dòng)方向。
如圖7所示,以P0為參照點(diǎn),即r_outline_point[0],并結(jié)合頂點(diǎn)P1、P2和P3來確定模型的6個(gè)移動(dòng)方向。即用一個(gè)向量數(shù)組來表示模型的6個(gè)移動(dòng)方向。其中:
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
相應(yīng)的模型移動(dòng)示意圖如圖8所示。
接下來,使該模型在每個(gè)移動(dòng)方向上,按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng),并檢測(cè)在該移動(dòng)方向上是否與模型集合B1中的模型存在干涉。
具體來說,確定零件在裝配坐標(biāo)系下的6個(gè)移動(dòng)方向向量后,就可以讓零件在移動(dòng)方向上做一個(gè)微小的擾動(dòng),然后通過干涉檢測(cè)來判斷其在該方向是否存在干涉。如果零件與所有的BOX相交模型干涉檢測(cè)后都不存在干涉,此時(shí)就將該方向是否干涉的標(biāo)志m_bInter設(shè)為false,否則,遇到了干涉的模型就停止后面模型的檢測(cè),并將干涉的標(biāo)志m_bInter設(shè)為true。這樣完成6個(gè)方向的干涉判斷,就可以判斷零件模型的移動(dòng)方向。
優(yōu)選的,為了進(jìn)一步減小需要干涉檢測(cè)的模型,如圖9所示,對(duì)于集合A1(參見圖6)中的一個(gè)元素A1(i),若該元素與集合B1(參見圖6)中的部分元素的BOX相交,利用BOX相交檢測(cè)找出這部分元素將他們存儲(chǔ)在B2中,這樣需要進(jìn)行干涉檢測(cè)模型的數(shù)目就進(jìn)一步減少,提高計(jì)算速度。
此外需要說明的是,模型進(jìn)行微小擾動(dòng)的具體值是非常關(guān)鍵的,這個(gè)值如果過大則會(huì)將模型移動(dòng)到裝配體的外部,如果過小對(duì)于間隙配合的模型來說可能不能發(fā)生干涉情況,在這里可采用模型移動(dòng)方向的偏移最小不能小于1mm,最大不能超過10mm的方法來解決,具體的值是根據(jù)模型響應(yīng)移動(dòng)模型的邊長(zhǎng)的0.1倍來判斷的。
另外,還需要考慮的是,若兩個(gè)模型本身就存在著干涉,那么當(dāng)進(jìn)行模型位置的擾動(dòng)后,再去進(jìn)行干涉檢測(cè)是無法判斷這個(gè)干涉是不是由于擾動(dòng)引起的。為了解決這一問題,本發(fā)明采用了對(duì)模型進(jìn)行兩次干涉檢測(cè)的方法來解決這個(gè)問題。首先,在模型沒有進(jìn)行位置擾動(dòng)之前進(jìn)行干涉檢測(cè)。若判斷兩個(gè)模型之間本身就存在這干涉,則可計(jì)算出模型的干涉體積pre_value。此時(shí),就可繼續(xù)利用上面涉及的方式進(jìn)行干涉檢測(cè)。同樣去計(jì)算模型的干涉體積cur_value,如果兩個(gè)干涉體積的差值超出了一定的精度范圍就認(rèn)為他們之間存在干涉。
最后,根據(jù)該模型在各移動(dòng)方向上的干涉檢測(cè)結(jié)果確定分解方向。模型的干涉?zhèn)€數(shù)有以下幾種情況:
1)不存在干涉情況,表明該模型的裝配位置懸空,不與任何一個(gè)模型接觸或者說是距離較遠(yuǎn)。此時(shí)可根據(jù)用戶指示確定分解方向。
2)在1個(gè)移動(dòng)方向上存在干涉情況,此時(shí)該模型只在一個(gè)方向上與其他模型干涉,可將該移動(dòng)方向的相反方向作為分解方向。
3)在2-4個(gè)移動(dòng)方向上存在干涉情況,在這種情況下可將該模型到整個(gè)裝配體的邊界框面最近的方向作為分解方向。
4)在5個(gè)移動(dòng)方向上存在干涉情況,將不存在干涉情況的方向作為分解方向。
5)在6個(gè)移動(dòng)方向上均存在干涉情況,在這種情況下說明模型在6個(gè)方向上都不可以移動(dòng),產(chǎn)生這種情況的原因可能是由于裝配的需要將模型裝配的不可以移動(dòng),也有可能是裝配順序不對(duì)導(dǎo)致的。在這種情況下可根據(jù)用戶指示確定分解方向。
步驟103,在模型的分解方向上確定模型的分解距離,從而實(shí)現(xiàn)模型的自動(dòng)分解。
容易發(fā)現(xiàn)模型的BOX也就是我們平時(shí)所說的包圍盒,為了使同一個(gè)方向上的模型都按照同一個(gè)相對(duì)距離進(jìn)行移動(dòng),本發(fā)明采用了計(jì)算出模型移動(dòng)到包圍盒在移動(dòng)方向上對(duì)應(yīng)的面的距離的方案,這樣就可以將同一個(gè)方向上的所有模型都移動(dòng)到一個(gè)基準(zhǔn)平面上,然后在結(jié)合模型在對(duì)應(yīng)移動(dòng)方向上的邊長(zhǎng),計(jì)算出模型的最終的移動(dòng)距離。如圖10所示,在圖中A為基體模型的包圍盒,m為需要在方向(0,0,1)上移動(dòng)的模型,箭頭表示移動(dòng)方向。L表示兩個(gè)模型的包圍盒的中心點(diǎn)在移動(dòng)方向上的投影距離,LA與Lm分別表示的是兩個(gè)包圍盒在移動(dòng)方向上對(duì)應(yīng)的邊長(zhǎng)的一半。即:
LA=(模型A在移動(dòng)方向上對(duì)應(yīng)的邊長(zhǎng))/2
Lm=(模型m在移動(dòng)方向上對(duì)應(yīng)的邊長(zhǎng))/2
m_dis_m=L-LA-Lm
若模型m與基準(zhǔn)平面C之間不存在其它模型,則將距離m_dis_m作為模型m在分解方向上的分解距離。
如圖11所示,若模型m與基準(zhǔn)平面C之間還存在其它模型,若模型n是在分解方向上,在模型m和基準(zhǔn)平面之間距離模型m最近的模型,Ln為模型n在分解方向上的對(duì)應(yīng)邊長(zhǎng),m_dis_n為模型n在分解方向上與基準(zhǔn)平面之間的距離,則將m_dis_m-m_dis_n-Ln的差作為該模型在分解方向上的分解距離。
基于本發(fā)明上述實(shí)施例提供的三維裝配模型自動(dòng)分解方法,通過自動(dòng)對(duì)裝配模型進(jìn)行分解,減輕相關(guān)人員的工作強(qiáng)度,并顯著提高了工作效率。
圖12為本發(fā)明三維裝配模型自動(dòng)分解裝置一個(gè)實(shí)施例的示意圖。如圖12所示,該裝置包括模型轉(zhuǎn)換模塊1201、干涉檢測(cè)模塊1202和分解距離確定模塊1203,其中:
模型轉(zhuǎn)換模塊1201用于通過將三維裝配模型轉(zhuǎn)換為邊界框形式,以確定需要進(jìn)行干涉檢測(cè)的模型范圍。
干涉檢測(cè)模塊1202用于通過干涉檢測(cè),確定模型的分解方向。
分解距離確定模塊1203用于在模型的分解方向上確定模型的分解距離,從而實(shí)現(xiàn)模型的自動(dòng)分解。
可選地,模型轉(zhuǎn)換模塊1201具體將三維裝配模型轉(zhuǎn)換為邊界框形式,將轉(zhuǎn)換后的三維裝配模型的端點(diǎn)坐標(biāo)轉(zhuǎn)換到裝配坐標(biāo)系中,以在端點(diǎn)中確定最大值點(diǎn)和最小值點(diǎn),根據(jù)模型的最大值點(diǎn)和最小值點(diǎn)進(jìn)行模型相交檢測(cè),確定出需要干涉檢測(cè)的模型。
其中,模型轉(zhuǎn)換模塊1201還用于在將三維裝配模型轉(zhuǎn)換為邊界框形式后,將可拆除零件的模型放入子裝配模型集合A中,將未拆除零件的模型放入未拆除零件模型集合B中。
為了盡量減少需要干涉檢測(cè)的模型,模型轉(zhuǎn)換模塊1201還用于將子裝配模型集合A中的每個(gè)模型與未拆除零件模型集合B中的每個(gè)模型進(jìn)行相交檢測(cè),將子裝配模型集合A中與未拆除零件模型集合B相交的模型作為需要干涉檢測(cè)的模型放入模型集合A1中;將未拆除零件模型集合B中的每個(gè)模型與模型集合A1中的每個(gè)模型進(jìn)行相交檢測(cè),將未拆除零件模型集合B中與模型集合A1相交的模型放入模型集合B1中。
可選地,干涉檢測(cè)模塊1202可具體對(duì)于模型集合A1中的每個(gè)模型,以該模型的最小值點(diǎn)為參照點(diǎn),利用該模型上與參照點(diǎn)相鄰的頂點(diǎn),確定該模型的6個(gè)移動(dòng)方向;使該模型在每個(gè)移動(dòng)方向上,按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng),并檢測(cè)在該移動(dòng)方向上是否與模型集合B1中的模型存在干涉;根據(jù)該模型在各移動(dòng)方向上的干涉檢測(cè)結(jié)果確定分解方向。
其中,干涉檢測(cè)模塊1202還用于在確定該模型的6個(gè)移動(dòng)方向后,檢測(cè)該模型在每個(gè)移動(dòng)方向上是否與模型集合B1中的模型存在干涉,然后執(zhí)行使該模型在每個(gè)移動(dòng)方向上按照預(yù)定偏移長(zhǎng)度進(jìn)行移動(dòng)的操作。從而能夠識(shí)別出干涉是否由模型位置擾動(dòng)所引起的。
其中,干涉檢測(cè)模塊可根據(jù)干涉情況進(jìn)行相應(yīng)的處理。例如,在不存在干涉情況時(shí),根據(jù)用戶指示確定分解方向;在1個(gè)移動(dòng)方向上存在干涉情況時(shí),將該移動(dòng)方向的相反方向作為分解方向;在2-4個(gè)移動(dòng)方向上存在干涉情況時(shí),將該模型到整個(gè)裝配體的邊界框面最近的方向作為分解方向;在5個(gè)移動(dòng)方向上存在干涉情況時(shí),將不存在干涉情況的方向作為分解方向;在6個(gè)移動(dòng)方向上均存在干涉情況時(shí),根據(jù)用戶指示確定分解方向。
可選地,分解距離確定模塊1203具體對(duì)于模型m,確定模型m的中心點(diǎn)與提供基準(zhǔn)平面的基準(zhǔn)包圍盒的中心點(diǎn)之間的距離L,確定基準(zhǔn)包圍盒在分解方向上的對(duì)應(yīng)邊長(zhǎng)2LA,確定模型m在分解方向上的對(duì)應(yīng)邊長(zhǎng)2Lm,利用L-LA-Lm確定模型m在分解方向上與基準(zhǔn)平面之間的距離m_dis_m;判斷在模型m與基準(zhǔn)平面之間是否還存在其它模型,若不存在其它模型,則將距離m_dis_m作為模型m在分解方向上的分解距離。
分解距離確定模塊1203還用于在存在其它模型的情況下,將m_dis_m-m_dis_n-Ln的差作為該模型在分解方向上的分解距離,其中模型n是在分解方向上,在模型m和基準(zhǔn)平面之間距離模型m最近的模型,Ln為模型n在分解方向上的對(duì)應(yīng)邊長(zhǎng),m_dis_n為模型n在分解方向上與基準(zhǔn)平面之間的距離。
通過實(shí)施本發(fā)明,可有效減輕相關(guān)人員的工作強(qiáng)度,并顯著提高了工作效率。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無遺漏的或者將本發(fā)明限于所公開的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。