本發(fā)明涉及一種基于鈑金折彎件展開(kāi)圖的三維模型重構(gòu)方法,屬于三維模型構(gòu)建領(lǐng)域。
背景技術(shù):
1、在鈑金折彎領(lǐng)域,鈑金折彎件三維模型直觀反應(yīng)了零件的最終形狀、外觀和結(jié)構(gòu),是產(chǎn)品設(shè)計(jì)、工藝、制造、裝配及檢驗(yàn)的最初數(shù)據(jù)源。但對(duì)鈑金加工環(huán)節(jié)來(lái)說(shuō),一般鈑金工廠得到更多的是鈑金折彎件展開(kāi)圖紙,而非三維模型。鈑金折彎件展開(kāi)圖(以下簡(jiǎn)稱鈑金展開(kāi)圖)是鈑金三維模型的展開(kāi)后圖紙,是連接三維設(shè)計(jì)與實(shí)際生產(chǎn)制造的重要橋梁,被用于確定鈑金件毛坯的形狀尺寸,繼而用于套料排版和激光下料及分揀等環(huán)節(jié)。但對(duì)鈑金折彎加工中的折彎工序的自動(dòng)規(guī)劃過(guò)程來(lái)說(shuō),由于鈑金展開(kāi)圖缺少了空間幾何信息,無(wú)法在鈑金折彎工藝系統(tǒng)中通過(guò)建立空間碰撞檢測(cè)模型從而使用智能搜索算法的方法來(lái)提升折彎工序規(guī)劃的速度以及通過(guò)虛擬折彎仿真的方法驗(yàn)證折彎工序準(zhǔn)確性。因此,準(zhǔn)確地解析鈑金展開(kāi)圖并重構(gòu)三維模型對(duì)提升工序規(guī)劃效率,繼而間接提升鈑金折彎加工的效率具有重要意義。
2、申請(qǐng)公布號(hào)是cn118365782a的中國(guó)發(fā)明專利申請(qǐng)公開(kāi)的一種折彎鈑金件三維建模與碰撞檢測(cè)方法、終端及介質(zhì),通過(guò)從解析鈑金展開(kāi)件的dxf、dwg文件,從中搜索出零件展開(kāi)的封閉輪廓并對(duì)輪廓進(jìn)行分割,然后在此基礎(chǔ)上進(jìn)行三維模型構(gòu)建并以此建立了碰撞檢測(cè)模型,其滿足了簡(jiǎn)單鈑金展開(kāi)圖的三維構(gòu)型需求,并通過(guò)建立了碰撞模型一定程度上提升了折彎規(guī)劃的效率。但上述專利申請(qǐng)未公開(kāi)對(duì)一些常見(jiàn)幾何特征如樣條曲線、橢圓的處理方法,同時(shí),上述專利申請(qǐng)未公開(kāi)輪廓具體分割方法、更未考慮到包含內(nèi)輪廓分割、外輪廓和內(nèi)輪廓同時(shí)分割的復(fù)雜分割情形,無(wú)法正確對(duì)復(fù)雜的鈑金展開(kāi)圖進(jìn)行三維模型重構(gòu);其次,上述專利申請(qǐng)未考慮到鈑金展開(kāi)圖和三維成型圖在折彎處的區(qū)域扣除問(wèn)題,導(dǎo)致利用該方法構(gòu)建的三維模型與原始鈑金cad涉及模型存在明顯的尺寸誤差,?從而導(dǎo)致碰撞模型也存在精度誤差,影響最終碰撞檢測(cè)的準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是提供一種基于鈑金折彎件展開(kāi)圖的三維模型重構(gòu)方法,解決現(xiàn)有技術(shù)中折彎鈑金件三維建模無(wú)法正確對(duì)復(fù)雜的鈑金展開(kāi)圖進(jìn)行三維模型重構(gòu),以及轉(zhuǎn)換模型與設(shè)計(jì)模型尺寸誤差大的技術(shù)缺陷。
2、為解決上述問(wèn)題,本發(fā)明所采取的技術(shù)方案是:一種基于鈑金折彎件展開(kāi)圖的三維模型重構(gòu)方法,包括如下步驟,
3、s1、解析鈑金展開(kāi)圖,對(duì)解析到的圖元實(shí)體分類并分別存儲(chǔ)于對(duì)應(yīng)的圖元集合中;
4、s2、圖元預(yù)處理,對(duì)圖元進(jìn)行去重、打斷和離散處理、篩選出鈑金折彎線并進(jìn)行基礎(chǔ)的幾何編輯;
5、s3、閉合輪廓搜索;
6、s4、判斷是否存在閉合輪廓,若不存在閉合輪廓,則重復(fù)s3,若存在閉合輪廓,則進(jìn)入s5;
7、s5、輪廓分割及拓?fù)錁?gòu)建,利用折彎線對(duì)外輪廓和內(nèi)輪廓進(jìn)行分割,并在此基礎(chǔ)上建立內(nèi)輪廓與外輪廓的幾何鄰接關(guān)系,若拓?fù)錁?gòu)建成功,則進(jìn)入s6,若拓?fù)錁?gòu)建不成功,則s1解析的鈑金展開(kāi)圖不能重構(gòu)三維模型,三維模型的重構(gòu)結(jié)束;
8、s6、折彎扣除,根據(jù)工件和折彎信息計(jì)算出扣除值并沿折彎線法線方向?qū)喞M(jìn)行輪廓扣除;
9、s7、三維重建,構(gòu)建三維實(shí)體模型。
10、作為本發(fā)明的進(jìn)一步改進(jìn),s1包括
11、s1.1、加載二維鈑金展開(kāi)圖文件;
12、s1.2、解析圖形信息,從二維鈑金展開(kāi)圖文件中解析出構(gòu)成圖形的基礎(chǔ)幾何圖元spline、polyline、arc、line、circle和ellipse,其中spline是樣條圖元,polyline是多段線圖元,arc是圓弧圖元,line是線段圖元,circle是圓圖元,ellipse橢圓圖元;
13、s1.3、將s1.2解析的幾何圖元按類型分別存儲(chǔ)在集合splinesvec、集合polylinesvec、集合arcsvec、集合linesvec、集合circlesvec和集合ellipsesvec中。
14、作為本發(fā)明的進(jìn)一步改進(jìn),s2包括
15、s2.1、遍歷集合splinesvec,對(duì)集合splinesvec內(nèi)的spline進(jìn)行線段離散處理,并存入集合linesvec;
16、s2.2、遍歷集合polylinesvec,對(duì)集合polylinesvec內(nèi)的polyline進(jìn)行離散處理,將polyline裂解為line和/或arc,并分別存入集合linesvec和集合arcsvec;
17、s2.3、對(duì)集合arcsvec中的arc進(jìn)行去重、打斷,其包括
18、s2.3.1、去重,依次比較集合arcsvec中的arc,若存在幾何信息相等的arc,則去除其中任意對(duì)象,直至集合arcsvec中不存在幾何信息相同的arc;
19、s2.3.2、打斷,依次遍歷集合arcsvec,判斷兩個(gè)arc之間是否存在重疊區(qū)域,若存在,則根據(jù)重疊位置端點(diǎn)建立圓弧overlaparc,以兩個(gè)arc未重疊端點(diǎn)和臨近的重疊位置點(diǎn)建立圓弧nonoverrlaparcs,再?gòu)募蟖rcsvec中移除當(dāng)前的兩個(gè)arc和與overlaparc幾何信息相同的圓弧,加入新建立的overlaparc和nonoverlaparcs;
20、s2.3.3、重復(fù)s2.3.1及s2.3.2,直至arcsvec中無(wú)重復(fù)或重疊的arc;
21、s2.4、對(duì)集合linesvec中的line進(jìn)行去重、打斷,其包括
22、s2.4.1、去重,依次對(duì)集合linesvec中的line進(jìn)行兩兩比較,若存在幾何信息相同的line,則去除其中任意對(duì)象,直至不存在幾何信息相同的line;
23、s2.4.2、打斷,依次遍歷集合linesvec,判斷兩個(gè)line是否存在重疊區(qū)域,若存在,則根據(jù)重疊位置端點(diǎn)建立重疊線段overlapline,以兩個(gè)line未重疊端點(diǎn)和臨近的重疊位置點(diǎn)建立線段nonoverlaplines,再?gòu)募蟣inesvec中移除當(dāng)前的兩個(gè)line和與overlapline幾何信息相同的直線,加入新建立的overlapline和nonoverlaplines;
24、s2.4.3、重復(fù)s2.4.1和s2.4.2,直至集合linesvec中無(wú)重復(fù)或重疊的line;
25、s2.5、根據(jù)工件構(gòu)型的需要,對(duì)解析的圖元進(jìn)行基礎(chǔ)的二次幾何編輯;
26、s2.6、創(chuàng)建集合blinesvec,遍歷集合linesvec中的line,從中分離出bl并存入集合blinesvec,其中bl是折彎線。
27、作為本發(fā)明的進(jìn)一步改進(jìn),s3包括
28、s3.1、創(chuàng)建用于存入所有封閉輪廓的集合closedloopsvec、用于存入nonclosedent的集合nonclosedentsvec和用于存入搜索到可組合為封閉輪廓的圖元集合loop,將集合linesvec中的line和集合arcsvec中的arc存入集合nonclosedentsvec,nonclosedent是非閉合圖元;
29、s3.2、取出集合nonclosedentsvec中的首個(gè)圖元h,將圖元h存入集合loop,以圖元h的起點(diǎn)和終點(diǎn)建立點(diǎn)s和點(diǎn)e,圖元h是line或arc;
30、s3.3、獲取集合nonclosedentsvec中的下一個(gè)圖元t,判斷圖元t的端點(diǎn)與點(diǎn)s是否重合,若重合,則進(jìn)入s3.4,若不重合,則進(jìn)入s3.5,其中圖元t是line或arc;
31、s3.4、將圖元t存入集合loop的頭部,將圖元t中與點(diǎn)s不重合的點(diǎn)作為新的點(diǎn)s,從集合nonclosedentsvec中移除圖元t,從集合nonclosedentsvec頭部重新開(kāi)始搜索,并重復(fù)s3.3;
32、s3.5、判斷圖元t的端點(diǎn)與點(diǎn)e是否重合,若重合,則進(jìn)入s3.6,若不重合,則進(jìn)入s3.7;
33、s3.6、將圖元t存入集合loop的尾部,將圖元t中與點(diǎn)e不重合的點(diǎn)作為新的點(diǎn)e,從集合nonclosedentsvec中移除圖元t,從集合nonclosedentsvec頭部重新開(kāi)始搜索,并重復(fù)s3.3;
34、s3.7、判斷圖元t是否是集合nonclosedentsvec的尾部元素,若是,則進(jìn)入s3.8,若不是,則將圖元t從集合nonclosedentsvec中移除并重復(fù)s3.3;
35、s3.8、判斷點(diǎn)s和點(diǎn)e是否重合,若重合,表明已從集合nonclosedentsvec中搜索到一組由圖元構(gòu)成的封閉輪廓loop,并進(jìn)入s3.9,若不重合,表明未能從集合nonclosedentsvec中搜索到封閉輪廓loop,重復(fù)s3.3-s3.8;
36、s3.9、將s3.8的集合loop存入到集合closedloopsvec中;
37、s3.10、判斷圖元t是否是集合nonclosedentsvec中的尾元素,若是,表示nonclosedentsvec遍歷結(jié)束,已經(jīng)完成了所有封閉輪廓loop的搜索過(guò)程,進(jìn)入s3.11,若不是,表示nonclosedentsvec未遍歷結(jié)束,重復(fù)s3.2-s3.9;
38、s3.11、將集合circlesvec中的circle和集合ellipsesvec中的ellipse加入到closedloopsvec集合中。
39、作為本發(fā)明的進(jìn)一步改進(jìn),s4中判斷集合closedloopsvec是否為空,若集合closedloopsvec為空,則返回s2,直到集合closedloopsvec不為空,若集合closedloopsvec不為空,則進(jìn)入s5。
40、作為本發(fā)明的進(jìn)一步改進(jìn),s5包括
41、s5.1、遍歷集合closedloopsvec的所有集合loop,對(duì)集合loop內(nèi)構(gòu)封閉輪廓成loop的所有l(wèi)ine和/或arc的端點(diǎn)進(jìn)行順或逆時(shí)針排序,使封閉輪廓loop內(nèi)所有的line和/或arc按照終點(diǎn)-起點(diǎn)或者起點(diǎn)-終點(diǎn)的關(guān)系連接;
42、s5.2、遍歷計(jì)算集合closedloopsvec中封閉輪廓loop的面積并根據(jù)面積大小進(jìn)行排序;
43、s5.3、從排序后的集合closedloopsvec中取出面積最大封閉輪廓loop;
44、s5.4、從集合blinesvec中獲取首個(gè)bl;
45、s5.5、遍歷集合closedloopsvec,依次獲取每個(gè)封閉輪廓loop,并與bl進(jìn)行相交測(cè)試,判斷bl和封閉輪廓loop是否相交,若相交則進(jìn)入s5.6,若不相交則進(jìn)入s5.9;
46、s5.6、判定bl是否滿足分割條件,若滿足,則進(jìn)入s5.7,若不滿足,則進(jìn)入s5.9;
47、s5.7、由bl對(duì)封閉輪廓loop進(jìn)行分割;
48、s5.8、從排序后的集合closedloopsvec中獲取下一個(gè)封閉輪廓loop并進(jìn)入s5.4;
49、s5.9、判斷集合blinesvec對(duì)bl的遍歷是否結(jié)束,若未遍歷結(jié)束則進(jìn)入s5.10,若遍歷結(jié)束則進(jìn)入s5.11;
50、s5.10、從集合blinesvec中獲取下一個(gè)bl,并進(jìn)入s5.5;
51、s5.11、判斷集合closedloopsvec是否遍歷結(jié)束,若未遍歷結(jié)束則進(jìn)入s5.8,若遍歷結(jié)束則進(jìn)入s5.12;
52、s5.12、根據(jù)被分割的輪廓間共同的bl,建立分割輪廓之間的鏈?zhǔn)疥P(guān)系;
53、s5.13、建立封閉輪廓loop間的內(nèi)外包含關(guān)系;
54、s5.14、判定集合blinesvec是否為空,若為空則進(jìn)入s5.28,若不為空,則進(jìn)入s5.15;
55、s5.15、從集合blinesvec中構(gòu)建所有cbl的集合collinearblsvec,其中cbl是一組共線折彎線;
56、s5.16、從集合closedloopsvec中獲取首個(gè)封閉輪廓loop;
57、s5.17、判定s5.16獲取的封閉輪廓loop是否存在inloop,若不存在則進(jìn)入s5.25,若存在則進(jìn)入s5.18,其中:inloop是內(nèi)輪廓;
58、s5.18、從集合collinearblsvec中獲取首個(gè)cbl;
59、s5.19、判定cbl與s5.16獲取的封閉輪廓loop的每個(gè)inloop是否相交,若有相交的inloop,則建立集合inloopsvec并將每個(gè)相交的inloop存入集合inloopsvec內(nèi),再進(jìn)入s5.20,若不相交則進(jìn)入s2.23;
60、s5.20、判定cbl是否滿足分割條件,若滿足,則進(jìn)入s5.21,若不滿足,則進(jìn)入s5.23;
61、s5.21、由cbl對(duì)集合inloopsvec內(nèi)的inloop進(jìn)行分割;
62、s5.22、從集合closedloopvec中獲取下一個(gè)封閉輪廓loop,并進(jìn)入s5.17;
63、s5.23、判定集合collinearblsvec是否遍歷結(jié)束,若遍歷未結(jié)束,則進(jìn)入s5.24,若遍歷結(jié)束則進(jìn)入s5.25;
64、s5.24、從集合collinearblsvec中獲取另一個(gè)cbl,并進(jìn)入s5.19;
65、s5.25、判定集合closedloopsvec是否遍歷結(jié)束,若未遍歷結(jié)束則進(jìn)入s5.22,若遍歷結(jié)束則進(jìn)入s5.26;
66、s5.26、根據(jù)被分割的輪廓間存在共同的cbl建立分割輪廓之間的鏈?zhǔn)疥P(guān)系;
67、s5.27、重新建立輪廓間的內(nèi)外包含關(guān)系;
68、s5.28、構(gòu)建展開(kāi)輪廓分割樹(shù)loopsplitedtree。
69、作為本發(fā)明的進(jìn)一步改進(jìn),s5.7包括
70、s5.7.1、用bl將封閉輪廓loop分割為兩個(gè)封閉輪廓lloop和rloop;
71、s5.7.2、將lloop和rloop加入集合closedloopsvec;
72、s5.7.3、從集合closedloopsvec中移除封閉輪廓loop,從集合blinesvec中移除bl;
73、s5.21包括
74、s5.21.1、由cbl將封閉輪廓loop和inloop分割為兩個(gè)封閉的輪廓rloop和lloop;
75、s5.21.2、將lloop和rloop加入集合closedloopsvec的尾部;
76、s5.21.3、從集合closedloopsvec中移除封閉輪廓loop和集合inloopsvec中的每個(gè)inloop,從集合collinearblsvec中移除cbl。
77、作為本發(fā)明的進(jìn)一步改進(jìn),s6包括
78、s6.1、獲取展開(kāi)輪廓分割樹(shù)loopsplitedtree的根節(jié)點(diǎn)root;
79、s6.2、獲取root的連接邊集合linkededgesvec;
80、s6.3、遍歷linkededgesvec進(jìn)行折彎扣除:
81、s6.4、遍歷linkedbendsvec,判斷折彎關(guān)聯(lián)的輪廓節(jié)點(diǎn)是否存在連接邊,若存在的話,執(zhí)行s6.2至s6.6;
82、s6.5、獲取節(jié)點(diǎn)內(nèi)輪廓分割樹(shù)集合inloopsplitedtreesvec;
83、s6.6、遍歷集合inloopsplitedtreesvec,對(duì)每個(gè)內(nèi)輪廓分割樹(shù)inloopsplitedtree執(zhí)行s6.1至s6.5。
84、作為本發(fā)明的進(jìn)一步改進(jìn),s6.3包括
85、s6.3.1、獲取連接邊的父節(jié)點(diǎn)對(duì)應(yīng)的外輪廓parentloop;
86、s6.3.2、獲取連接邊的子節(jié)點(diǎn)對(duì)應(yīng)的外輪廓childloop;
87、s6.3.3、獲取工件的板厚、折彎線的參數(shù)信息;
88、s6.3.4、根據(jù)折彎板厚、折彎參數(shù)信息計(jì)算出折彎展開(kāi)區(qū)域?qū)挾龋瑢⒄蹚澱归_(kāi)區(qū)域?qū)挾鹊囊话胱鳛橛?jì)算扣除數(shù)值;
89、s6.3.5、判定當(dāng)前工件信息、折彎參數(shù)計(jì)算出的扣除值是否同時(shí)滿足下述扣除條件:
90、(a)不超出parentloop和childloop輪廓的范圍;
91、(b)偏移過(guò)程中,不與parentloop和childloop的內(nèi)輪廓發(fā)生干涉;
92、若滿足,則進(jìn)入s6.3.6,若不滿足,則修改工件的板厚、折彎線的參數(shù)信息后進(jìn)入s6.3.3;
93、s6.3.6、更新parentloop和childloop輪廓;
94、s6.3.7、偏移childloop,根據(jù)childloop中折彎線法向的反方向偏移2倍扣除值,使childloop和parentloop在折彎線處重疊。
95、作為本發(fā)明的更進(jìn)一步改進(jìn),s7包括
96、s7.1、板塊構(gòu)建;遍歷loopsplitedtree,根據(jù)板厚對(duì)每個(gè)節(jié)點(diǎn)的外輪廓進(jìn)行拉伸,若輪廓中存在內(nèi)輪廓,則通過(guò)拉伸內(nèi)輪廓對(duì)板塊進(jìn)行布爾切除;
97、s7.2、折彎體構(gòu)建;遍歷loopsplitedtree,?根據(jù)板厚、折彎半徑、折彎角度信息構(gòu)建以連接邊父節(jié)點(diǎn)的輪廓為固定面的旋轉(zhuǎn)矩陣,并在相應(yīng)空間位置構(gòu)建旋轉(zhuǎn)體;
98、s7.3、板塊成型;遍歷loopsplitedtree,,通過(guò)旋轉(zhuǎn)矩陣依次將子節(jié)點(diǎn)構(gòu)建的板塊旋轉(zhuǎn)到指定相應(yīng)空間位置;
99、s7.4、遍歷loopsplitedtree,獲取每個(gè)節(jié)點(diǎn)的內(nèi)部輪廓分割樹(shù)集合inloopsplitedtreesvec,遍歷inloopsplitedtreesvec,?對(duì)每個(gè)inloopsplitedtree執(zhí)行s7.1至s7.3。
100、綜上所述,本發(fā)明的有益效果是:1、本發(fā)明在對(duì)原始圖形解析環(huán)節(jié),相較于現(xiàn)有技術(shù),本發(fā)明不依賴任何固定格式的鈑金展開(kāi)圖文件,兼容性更高,對(duì)使用本發(fā)明方法的軟件程序帶來(lái)了更高的兼容性和魯棒性。
101、2、本發(fā)明考慮了對(duì)樣條曲線、多段線及橢圓等圖元特征的處理,其次通過(guò)相交圖元的去重、打散處理,保證了工件輪廓搜索的準(zhǔn)確性。
102、3、本發(fā)明考慮了鈑金展開(kāi)圖內(nèi)輪廓分割、內(nèi)輪廓和外輪廓共同分割的情況,然后依托分割線和輪廓包含關(guān)系建立了展開(kāi)圖拓?fù)潢P(guān)系,避免了現(xiàn)有方法無(wú)法對(duì)復(fù)雜展開(kāi)圖分割失敗的情況,極大程度提升了對(duì)復(fù)雜鈑金展開(kāi)圖的處理能力。
103、4、本發(fā)明考慮了折彎輪廓在折彎處的扣除情況,提出了折彎展開(kāi)區(qū)域扣除的具體方法,然后在所有折彎均已完成扣除的基礎(chǔ)上,構(gòu)建了鈑金件三維模型,解決了現(xiàn)有方法構(gòu)建的三維模型精度差、尺寸誤差大的問(wèn)題,大大提升了工件的幾何精度,保證了構(gòu)建碰撞檢測(cè)模型原始數(shù)據(jù)的準(zhǔn)確性。
104、5、本發(fā)明基于鈑金折彎件展開(kāi)圖的三維模型重構(gòu)方法,考慮鈑金展開(kāi)圖中主要圖形特征的處理方法,充分考慮了內(nèi)部輪廓分割、內(nèi)外輪廓共同分割的復(fù)雜情形,并以相同的分割線的共性和內(nèi)外包含關(guān)系建立了輪廓拓?fù)潢P(guān)系,從而避免了現(xiàn)有計(jì)算方法無(wú)法正確解析復(fù)雜折彎展開(kāi)圖的缺點(diǎn);同時(shí)對(duì)折彎處進(jìn)行折彎扣除處理,避免了現(xiàn)有方法鈑金件三維重構(gòu)后工件模型與原始模型存在明顯的幾何尺寸誤差的缺點(diǎn),保證了三維重構(gòu)模型尺寸精度。