本發明涉及三維建模領域,特別涉及一種三維裝配模型自動分解方法和裝置。
背景技術:
由于產品分解圖能夠清晰地表達產品的構成,因此對于產品拆裝及維修具有一定的指導意義。目前,隨著三維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在分解方向上與基準平面之間的距離。
通過實施本發明,可有效減輕相關人員的工作強度,并顯著提高了工作效率。
本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
本發明的描述是為了示例和描述起見而給出的,而并不是無遺漏的或者將本發明限于所公開的形式。很多修改和變化對于本領域的普通技術人員而言是顯然的。選擇和描述實施例是為了更好說明本發明的原理和實際應用,并且使本領域的普通技術人員能夠理解本發明從而設計適于特定用途的帶有各種修改的各種實施例。