專利名稱:一種異構(gòu)cad集成中的拓?fù)湓仄ヅ浞椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及CAD領(lǐng)域,特別是涉及一種異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒ā?br>
背景技術(shù):
協(xié)同產(chǎn)品設(shè)計(jì)作為一種新興的產(chǎn)品設(shè)計(jì)方式,大大提高了產(chǎn)品開發(fā)能力和效率。 在協(xié)同產(chǎn)品設(shè)計(jì)過程,使用最多的數(shù)字化工具便是CAD系統(tǒng)。由于不同的CAD系統(tǒng)具有不同的功能特性,而且不同的產(chǎn)品設(shè)計(jì)人員都有自己熟悉的CAD系統(tǒng),因此從經(jīng)濟(jì)、功能、工作習(xí)慣等方面考慮,不同的企業(yè)或部門往往會(huì)選用具有不同特點(diǎn)的CAD系統(tǒng)進(jìn)行協(xié)同產(chǎn)品設(shè)計(jì)。因此,為了支持產(chǎn)品設(shè)計(jì)人員使用自己慣用的CAD系統(tǒng)進(jìn)行協(xié)同產(chǎn)品設(shè)計(jì),實(shí)現(xiàn)異構(gòu) CAD系統(tǒng)集成勢(shì)在必行。目前,異構(gòu)CAD系統(tǒng)集成已經(jīng)成為CAD技術(shù)的一個(gè)新的且至關(guān)重要的研究領(lǐng)域。異構(gòu)CAD集成分為兩種異構(gòu)CAD離線集成和異構(gòu)CAD在線集成。前者通過將源模型的特征建模過程交換到目標(biāo)CAD系統(tǒng)并實(shí)現(xiàn)特征模型重建,進(jìn)而實(shí)現(xiàn)異構(gòu)CAD系統(tǒng)間的數(shù)據(jù)集成; 后者是通過在異構(gòu)CAD系統(tǒng)之間實(shí)時(shí)交換特征建模操作來實(shí)現(xiàn)數(shù)據(jù)集成的。盡管兩者有區(qū)別,但是它們面臨著一個(gè)共同的問題如何處理引用了拓?fù)湓氐奶卣骰蚪2僮?,該問題即是拓?fù)湓仄ヅ鋯栴}。對(duì)于異構(gòu)CAD系統(tǒng)集成問題的研究工作主要從以下三個(gè)層面開展
(1)基于幾何數(shù)據(jù)交換的異構(gòu)CAD系統(tǒng)離線集成。它是通過在異構(gòu)CAD系統(tǒng)之間交換模型的幾何表示來實(shí)現(xiàn)產(chǎn)品信息集成的。(2)基于特征數(shù)據(jù)交換的異構(gòu)CAD離線集成。其本質(zhì)是將源模型的特征建模過程交換到目標(biāo)CAD系統(tǒng)并實(shí)現(xiàn)特征模型重建,進(jìn)而實(shí)現(xiàn)異構(gòu)CAD系統(tǒng)間的數(shù)據(jù)集成。(3)基于操作命令交換的異構(gòu)CAD在線集成。它也是一種基于參數(shù)化特征的集成方法,但與基于完整特征模型交換的離線集成不同的是基于操作命令交換的異構(gòu)CAD在線集成是通過在CAD系統(tǒng)之間實(shí)時(shí)交換特征建模操作來實(shí)現(xiàn)數(shù)據(jù)集成的。目前,基于幾何數(shù)據(jù)交換的異構(gòu)CAD系統(tǒng)離線集成技術(shù)已經(jīng)比較成熟。然而,通過幾何數(shù)據(jù)交換所得到的幾何數(shù)據(jù)中不包含高層語義信息,無法在數(shù)據(jù)接收端對(duì)原設(shè)計(jì)進(jìn)行參數(shù)化的編輯、修改和再設(shè)計(jì)活動(dòng)。而企業(yè)在開發(fā)產(chǎn)品時(shí),大約80%的設(shè)計(jì)工作是基于現(xiàn)有設(shè)計(jì)實(shí)例進(jìn)行再設(shè)計(jì)的。因此,與工業(yè)界的實(shí)際需要相比,這樣的集成還遠(yuǎn)遠(yuǎn)不夠。為了滿足工業(yè)界對(duì)異構(gòu)CAD系統(tǒng)集成的實(shí)際需求,近年來國(guó)內(nèi)外開始探索更高層次(基于特征的)的集成方法,并且正在形成異構(gòu)CAD系統(tǒng)集成研究的一個(gè)新高潮。目前在高層次集成的研究上已經(jīng)取得了一些進(jìn)展,其中比較具有代表性的集成方法有STEP標(biāo)準(zhǔn)、 宏命令方法、UPR (Universal Product R印resentation)方法和基于中性命令的異構(gòu)CAD 在線集成方法。對(duì)于拓?fù)湓仄ヅ鋯栴},STEP標(biāo)準(zhǔn)給出了中性文件中所應(yīng)包含的拓?fù)湓氐臄?shù)據(jù)信息,如拓?fù)湓氐膸缀涡畔⒑屯負(fù)湫畔?。然而,STEP標(biāo)準(zhǔn)并沒有給出,如何使用這些信息在目標(biāo)CAD系統(tǒng)中找到匹配的拓?fù)湓氐姆椒ā6?,基于STEP標(biāo)準(zhǔn)的數(shù)據(jù)交換也無法解決,由異構(gòu)CAD系統(tǒng)采用不同的幾何造型內(nèi)核所造成的幾何相同、拓?fù)浣Y(jié)構(gòu)不同的拓?fù)湓刂g的匹配問題?;诤昝畹臄?shù)據(jù)交換是通過命名映射的機(jī)制來實(shí)現(xiàn)拓?fù)湓仄ヅ涞?。該方法必須通過創(chuàng)建一個(gè)內(nèi)部幾何模型來實(shí)現(xiàn)相匹配的拓?fù)湓刂g的名字的映射, 這給該方法的實(shí)現(xiàn)帶來了很大的困難。另外,該方法中所使用的拓?fù)湓氐拿謥碓从诤晡募?,而CAD用戶在建模結(jié)束時(shí)通常會(huì)保存模型文件而不是其對(duì)應(yīng)的宏文件,因此在宏文件丟失的情況下,該方法就失效了。在基于UPR的數(shù)據(jù)交換中,采用拓?fù)湓谻over算法來實(shí)現(xiàn)拓?fù)湓仄ヅ洹T谠撍惴ㄖ写嬖趦煞矫嬗绊懶屎托Ч囊蛩匾环矫?,使用點(diǎn)來找初始拓?fù)湓?,而?dāng)點(diǎn)的選取不當(dāng)時(shí),算法的效率和效果均會(huì)受到影響;另一方面,由于所找到的Cover可能比源拓?fù)湓卮螅虼诉€需要進(jìn)行校驗(yàn),這也將會(huì)影響算法的效率。另外, 該方法中還存在著一些不必要的導(dǎo)致高層語義丟失的重寫操作?;谥行悦畹漠悩?gòu)CAD 在線集成是通過比較源拓?fù)湓睾湍繕?biāo)拓?fù)湓氐膸缀蝸韺?shí)現(xiàn)拓?fù)湓仄ヅ涞?,該方法以各協(xié)同站點(diǎn)的CAD模型中相匹配的拓?fù)湓鼐哂邢嗤膸缀螢榍疤?。然而,在異?gòu)協(xié)同設(shè)計(jì)過程中,各站點(diǎn)建模操作的亂序執(zhí)行,并不能保證在任何時(shí)刻,各站點(diǎn)模型中相匹配的拓?fù)湓囟季哂邢嗤膸缀?,因此該方法的適用范圍有限。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服上述背景技術(shù)的不足之處,提供一種異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,使其既適用于異構(gòu)CAD系統(tǒng)離線集成,又適用于異構(gòu)CAD系統(tǒng)在線集成。為了上述目的,本發(fā)明提供的一種異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,包括以下步驟
步驟1,在本地的源CAD系統(tǒng)中,將特征或建模操作所引用的源拓?fù)湓氐南鄳?yīng)信息提取出來;
步驟2,特征或建模操作所引用的拓?fù)湓亟M成的集合記為源拓?fù)湓丶?,在本地的源CAD系統(tǒng)中,對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,然后將合并后的拓?fù)湓氐男畔魉椭吝h(yuǎn)端的目標(biāo)CAD系統(tǒng)中;
步驟3,在目標(biāo)CAD系統(tǒng)中,以步驟2每一個(gè)合并所得的拓?fù)湓貫樵赐負(fù)湓兀诋?dāng)前目標(biāo)模型中,為每一個(gè)源拓?fù)湓貙ふ覞M足匹配條件的目標(biāo)拓?fù)湓兀?br>
步驟4,在目標(biāo)CAD系統(tǒng)中,對(duì)于某個(gè)源拓?fù)湓兀粼诋?dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,則進(jìn)行1:0匹配關(guān)系處理。而且,步驟1中所述的源拓?fù)湓氐南鄳?yīng)信息,包括以下四類信息
(a)類型信息,是指拓?fù)湓氐念愋停?br>
(b)屬性信息,是指拓?fù)湓氐膸缀螌傩裕?br>
(c)界限信息,是指一維拓?fù)湓氐亩它c(diǎn)信息和二維拓?fù)湓氐倪吔邕呅畔ⅲ?br>
(d)校驗(yàn)信息,是指一維拓?fù)湓氐拈L(zhǎng)度和二維拓?fù)湓氐拿娣e。而且,步驟1中提取源拓?fù)湓氐南鄳?yīng)信息,具體包括以下步驟 步驟1. 1,在源CAD系統(tǒng)中獲取當(dāng)前源模型的指針;
步驟1. 2,獲取引用了拓?fù)湓氐奶卣骰蚪2僮鞯闹羔槪?步驟1. 3,獲取特征或建模操作所引用的當(dāng)前拓?fù)湓氐闹羔?;步驟1. 4,提取當(dāng)前拓?fù)湓氐南鄳?yīng)信息;
步驟1. 5,獲取特征或建模操作所引用的下一個(gè)拓?fù)湓氐闹羔?,如果為空則結(jié)束,否則返回步驟1.4。而且,步驟2中對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,具體包括以下步驟
步驟2. 1,記Sl為源拓?fù)湓丶希瑥腟l中取出一個(gè)拓?fù)湓赜洖門Pl ; 步驟2. 2,從Sl中找出滿足TPl的合并條件的拓?fù)湓夭⒂洖門P2,若找到,則從Sl 中取出TP2,將TP2與TPl進(jìn)行合并,并將合并所得的拓?fù)湓刈鳛橄乱粋€(gè)TP1,返回步驟 2. 2,,若未找到,則將TPl放入合并所得拓?fù)湓氐募嫌洖镾2,進(jìn)入步驟2. 3 ; 步驟2. 3,判斷Sl是否為空,若為空,則結(jié)束,否則,轉(zhuǎn)入步驟2. 2。而且,步驟2中所述的合并是指拓?fù)湓匦畔⒌暮喜?,包括類型信息合并、幾何信息合并、邊界信息合并和校?yàn)信息合并。而且,步驟2中所述的合并條件如下 條件a,兩個(gè)拓?fù)湓氐念愋拖嗤?br>
條件b,兩個(gè)拓?fù)湓叵嗷ム徑樱?br>
條件c,若將滿足條件a和條件b的兩個(gè)拓?fù)湓剡M(jìn)行合并,合并所得拓?fù)湓嘏c合并前的拓?fù)湓鼐哂邢嗤蛳嘟念愋汀6?,步驟3中所述的匹配條件如下
條件a,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤蛳嘟念愋停?條件b,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤膸缀危?br>
條件c,若源拓?fù)湓貫橐痪S拓?fù)湓?,則目標(biāo)拓?fù)湓氐膬蓚€(gè)端點(diǎn)必須在源拓?fù)湓氐膬?nèi)部或與源拓?fù)湓氐膬蓚€(gè)端點(diǎn)重合;若源拓?fù)湓貫槎S拓?fù)湓?,則目標(biāo)拓?fù)湓氐倪吔绫仨殱M足源拓?fù)湓氐倪吔绲钠ヅ錀l件。而且,當(dāng)源拓?fù)湓貫橐痪S拓?fù)湓貢r(shí),執(zhí)行步驟3. 1尋找滿足匹配條件的目標(biāo)拓?fù)湓兀襟E3. 1具體包括以下步驟
步驟3. 11,合并后所得的邊集記為S2,從S2中選取一條未處理的邊h ; 步驟3. 12,當(dāng)前目標(biāo)模型的所有邊集記為S3,從S3中找出滿足Es的匹配條件的邊并記為Et,若找到,則將肚從S3中取出放入與h相匹配的目標(biāo)邊的集合,與h相匹配的目標(biāo)邊的集合記為S4,轉(zhuǎn)入步驟3. 13,若未找到,則轉(zhuǎn)入步驟3. 14 ;
步驟3. 13,若S4中與h相匹配的所有邊的校驗(yàn)值之和等于h的校驗(yàn)值,則轉(zhuǎn)入步驟3. 15,否則,返回步驟3. 12 ;
步驟3. 14,若S4為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓兀駝t,轉(zhuǎn)入步驟3. 15;
步驟3. 15,若S2中的每條邊均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 11 ; 當(dāng)源拓?fù)湓貫槎S拓?fù)湓貢r(shí),執(zhí)行步驟3. 2尋找滿足匹配條件的目標(biāo)拓?fù)湓兀?步驟3. 2具體包括以下步驟
步驟3. 21,合并后所得的面的集合記為S7,從S7中選取一個(gè)未處理的面Fs ; 步驟3. 22,執(zhí)行步驟3. 1,在當(dāng)前目標(biāo)模型中為Fs的邊界找匹配的目標(biāo)邊,并放入匹配邊界集合中,匹配邊界集合記為S8 ;步驟3. 23,從S8中選取一條未用過的邊記為肚,在當(dāng)前目標(biāo)模型中,查找與肚相鄰接且滿足Fs的匹配條件的面并記為Ft,若找到Ft且不在已找到的與Fs匹配的面的集合中,與Fs匹配的面的集合記為S6,則將Ft放入S6中,轉(zhuǎn)入步驟3. 24,若未找到,則轉(zhuǎn)入步驟 3. 25 ;
步驟3. M,若S6中所有面的校驗(yàn)值之和與Fs的校驗(yàn)值相等,則轉(zhuǎn)入步驟3.沈,否則, 返回步驟3. 23 ;
步驟3. 25,若S6為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,否則,轉(zhuǎn)入步驟3. 26 ;
步驟3.沈,若S7中的每個(gè)面均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 21。而且,步驟4中所述的1:0匹配關(guān)系處理具體方式如下,
(a)生成與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓氐慕2僮饔洖?j,若Oj在目標(biāo)CAD系統(tǒng)中還未執(zhí)行,則基于狀態(tài)向量進(jìn)行處理,保證在進(jìn)行拓?fù)湓仄ヅ鋾r(shí),Oj已經(jīng)在目標(biāo)CAD 系統(tǒng)中得以執(zhí)行;
(b)若目標(biāo)CAD系統(tǒng)中已執(zhí)行的建模操作將與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓貏h除或進(jìn)行了擴(kuò)展,則進(jìn)行Undo/Do/Redo處理恢復(fù)目標(biāo)拓?fù)湓?,保證引用了拓?fù)湓氐慕2僮髟谀繕?biāo)CAD系統(tǒng)中的執(zhí)行;
(c)若目標(biāo)CAD系統(tǒng)為了簡(jiǎn)化邊界表示,自動(dòng)刪除了與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓兀瑒t基于面分裂進(jìn)行處理,保證引用了拓?fù)湓氐奶卣骰蚪2僮髟谀繕?biāo)CAD系統(tǒng)中的正確重建或執(zhí)行。而且,所述的基于狀態(tài)向量進(jìn)行處理,狀態(tài)向量是一個(gè)N維向量,記為SV,其中N 為參與協(xié)同設(shè)計(jì)的站點(diǎn)的個(gè)數(shù),SV的每一個(gè)元素記為SViUL j e {0,1,···,Ν-1};當(dāng)協(xié)同設(shè)計(jì)開始時(shí),SVi中的每一個(gè)元素SViU]均置為0,站點(diǎn)i每執(zhí)行一個(gè)來自站點(diǎn)j的操作, SViLj]= sVi[j]+i,SViU]中存放的是站點(diǎn) 已執(zhí)行的來自站點(diǎn)j的操作的個(gè)數(shù);由站點(diǎn) 所發(fā)出的操作O的狀態(tài)向量記為SVo, SVo [j],j e {0,1,…,N-1}中記錄著操作0在站點(diǎn)i上執(zhí)行時(shí)站點(diǎn)i上已經(jīng)執(zhí)行的來自各個(gè)站點(diǎn)j的操作個(gè)數(shù);當(dāng)0到達(dá)某個(gè)目標(biāo)站點(diǎn)k 時(shí),如果站點(diǎn)k上的狀態(tài)向量SVk和SV。滿足條件SV。[j]含SVk[j], j e {0,1,…,N_l},則操作0在源站點(diǎn)i上執(zhí)行時(shí)所有已執(zhí)行的操作在站點(diǎn)k上已經(jīng)得以執(zhí)行;
所述的Undo/Do/Redo處理具體實(shí)現(xiàn)方式如下
首先執(zhí)行Undo處理,Undo處理為撤銷已執(zhí)行的刪除或擴(kuò)展了目標(biāo)拓?fù)湓氐牟僮鳎?br>
然后執(zhí)行Do處理,Do處理為執(zhí)行引用了拓?fù)湓氐慕2僮鳎?br>
最后執(zhí)行Redo處理,Redo處理為重新執(zhí)行之前Undo處理的操作;
所述的基于面分裂進(jìn)行處理包括以下步驟
步驟cl,引用了拓?fù)湓氐奶卣骰蚪2僮饔洖樘卣鹘2僮鱔,若源拓?fù)湓厥亲鳛樘卣鹘2僮鱔所需的參照對(duì)象來用,則轉(zhuǎn)入步驟c2,若源拓?fù)湓厥亲鳛樘卣鹘2僮鱔所需的操作對(duì)象來用,則轉(zhuǎn)入步驟c3 ;
步驟c2,利用所提取到的源拓?fù)湓氐膸缀涡畔?,?chuàng)建相應(yīng)的基準(zhǔn)特征代替目標(biāo)拓?fù)湓夭⒔Y(jié)束;
步驟c3,若目標(biāo)CAD系統(tǒng)支持面分裂特征,則通過創(chuàng)建面分裂特征來添加缺失的與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓夭⒔Y(jié)束,否則,轉(zhuǎn)入步驟c4 ;步驟c4,若目標(biāo)CAD系統(tǒng)提供了能夠創(chuàng)建出與面分裂特征具有相同語義的新特征的 APIs,則利用新特征代替面分裂特征實(shí)現(xiàn)缺失拓?fù)湓氐膭?chuàng)建并結(jié)束,否則,轉(zhuǎn)入步驟c5 ; 步驟c5,用引用了拓?fù)湓氐奶卣鞯膸缀位蚪2僮魉鶆?chuàng)建的幾何,代替特征建模
操作X。本發(fā)明與已有技術(shù)相比較,效果是積極且明顯的首先,本發(fā)明適用范圍廣,其不僅適用于解決異構(gòu)CAD離線集成中的拓?fù)湓仄ヅ鋯栴},而且還適用于解決異構(gòu)CAD在線集成中的拓?fù)湓仄ヅ鋯栴}。在處理異構(gòu)CAD離線集成中的拓?fù)湓仄ヅ鋯栴}時(shí),本方法既避免了由于點(diǎn)選取失敗所造成的問題,也避免了一些不必要的重寫。其次,本方法在應(yīng)用于異構(gòu)CAD在線集成中時(shí),在模型或拓?fù)湓貛缀尾灰恢碌那闆r下,也可以實(shí)現(xiàn)成功匹配, 從而提高了協(xié)同過程中的并發(fā)程度。
圖1為本發(fā)明在異構(gòu)CAD集成中的實(shí)施例。
具體實(shí)施例方式下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,但不限定本發(fā)明。本實(shí)施例采用CATIA、Solid Works和Pro/E這三個(gè)目前流行的異構(gòu)CAD系統(tǒng)作為集成的基礎(chǔ)系統(tǒng),三個(gè)協(xié)同設(shè)計(jì)站點(diǎn)對(duì)應(yīng)的站點(diǎn)號(hào)分別為0、1和2,站點(diǎn)0、站點(diǎn)1和站點(diǎn)2 分別采用CATIA、Solidworks和Pro/E作為其CAD系統(tǒng)。以Winsocket2. O作為通訊工具, 以VC6. O作為開發(fā)平臺(tái)進(jìn)行實(shí)施。實(shí)施例提供的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒ǎㄒ韵虏襟E
步驟1,在本地的源CAD系統(tǒng)中,將特征或建模操作所引用的源拓?fù)湓氐南鄳?yīng)信息提取出來。實(shí)施例的步驟1中所述的源拓?fù)湓氐南鄳?yīng)信息,包括以下四類信息
(a)類型信息,是指拓?fù)湓氐念愋停?br>
(b)屬性信息,是指拓?fù)湓氐膸缀螌傩裕?br>
(c)界限信息,是指一維拓?fù)湓氐亩它c(diǎn)信息和二維拓?fù)湓氐倪吔邕呅畔ⅲ?br>
(d)校驗(yàn)信息,是指一維拓?fù)湓氐拈L(zhǎng)度和二維拓?fù)湓氐拿娣e。實(shí)施例的步驟1中提取源拓?fù)湓氐南鄳?yīng)信息,具體包括以下步驟 步驟1. 1,在源CAD系統(tǒng)中獲取當(dāng)前源模型的指針;
步驟1. 2,獲取引用了拓?fù)湓氐奶卣骰蚪2僮鞯闹羔槪?步驟1. 3,獲取特征或建模操作所引用的當(dāng)前拓?fù)湓氐闹羔槪?步驟1.4,提取當(dāng)前拓?fù)湓氐南鄳?yīng)信息;具體實(shí)施時(shí),可以利用現(xiàn)有技術(shù)中的拓?fù)湓氐男畔⑻崛『瘮?shù)實(shí)現(xiàn)提??;
步驟1. 5,獲取特征或建模操作所引用的下一個(gè)拓?fù)湓氐闹羔槪绻麨榭談t結(jié)束,否則返回步驟1.4。步驟2,特征或建模操作所引用的拓?fù)湓亟M成的集合記為源拓?fù)湓丶希诒镜氐脑碈AD系統(tǒng)中,對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,然后將合并后的拓?fù)湓氐男畔魉椭吝h(yuǎn)端的目標(biāo)CAD系統(tǒng)中。
實(shí)施例的步驟2中對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,具體包括以下步驟
步驟2. 1,記Sl為源拓?fù)湓丶?,從Sl中取出一個(gè)拓?fù)湓赜洖門Pl ; 步驟2. 2,從Sl中找出滿足TPl的合并條件的拓?fù)湓夭⒂洖門P2,若找到,則從Sl 中取出TP2,將TP2與TPl進(jìn)行合并,并將合并所得的拓?fù)湓刈鳛橄乱粋€(gè)TP1,返回步驟 2. 2,,若未找到,則將TPl放入合并所得拓?fù)湓氐募嫌洖镾2,進(jìn)入步驟2. 3 ; 步驟2. 3,判斷Sl是否為空,若為空,則結(jié)束,否則,轉(zhuǎn)入步驟2. 2。所述的合并是指拓?fù)湓匦畔⒌暮喜?,包括類型信息合并、幾何信息合并、邊界信息合并和校?yàn)信息合并。實(shí)施例的步驟2中所述的合并條件如下 條件a,兩個(gè)拓?fù)湓氐念愋拖嗤?br>
條件b,兩個(gè)拓?fù)湓叵嗷ム徑樱?br>
條件c,若將滿足條件a和條件b的兩個(gè)拓?fù)湓剡M(jìn)行合并,合并所得拓?fù)湓嘏c合并前的拓?fù)湓鼐哂邢嗤蛳嘟念愋汀2襟E3,在目標(biāo)CAD系統(tǒng)中,以步驟2每一個(gè)合并所得的拓?fù)湓貫樵赐負(fù)湓?,在?dāng)前目標(biāo)模型中,為每一個(gè)源拓?fù)湓貙ふ覞M足匹配條件的目標(biāo)拓?fù)湓?。?shí)施例的步驟3中所述的匹配條件如下
條件a,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤蛳嘟念愋停?條件b,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤膸缀危?br>
條件c,若源拓?fù)湓貫橐痪S拓?fù)湓?,則目標(biāo)拓?fù)湓氐膬蓚€(gè)端點(diǎn)必須在源拓?fù)湓氐膬?nèi)部或與源拓?fù)湓氐膬蓚€(gè)端點(diǎn)重合;若源拓?fù)湓貫槎S拓?fù)湓?,則目標(biāo)拓?fù)湓氐倪吔绫仨殱M足源拓?fù)湓氐倪吔绲钠ヅ錀l件。實(shí)施例的步驟3根據(jù)源拓?fù)湓貫橐痪S拓?fù)湓剡€是二維拓?fù)湓?,分別執(zhí)行步驟3. 1和步驟3. 2。當(dāng)源拓?fù)湓貫橐痪S拓?fù)湓貢r(shí),執(zhí)行步驟3. 1尋找滿足匹配條件的目標(biāo)拓?fù)湓?,步驟3. 1具體包括以下步驟
步驟3. 11,合并后所得的邊集記為S2,從S2中選取一條未處理的邊& ;
步驟3. 12,當(dāng)前目標(biāo)模型的所有邊集記為S3,從S3中找出滿足h的匹配條件的邊并記為Et,若找到,則將肚從S3中取出放入與h相匹配的目標(biāo)邊的集合,與h相匹配的目標(biāo)邊的集合記為S4,轉(zhuǎn)入步驟3. 13,若未找到,則轉(zhuǎn)入步驟3. 14 ;
步驟3. 13,若S4中與h相匹配的所有邊的校驗(yàn)值之和等于h的校驗(yàn)值,則轉(zhuǎn)入步驟3. 15,否則,返回步驟3. 12 ;
步驟3. 14,若S4為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,否則,轉(zhuǎn)入步驟3. 15;
步驟3. 15,若S2中的每條邊均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 11 ; 當(dāng)源拓?fù)湓貫槎S拓?fù)湓貢r(shí),執(zhí)行步驟3. 2尋找滿足匹配條件的目標(biāo)拓?fù)湓兀?步驟3. 2具體包括以下步驟
步驟3. 21,合并后所得的面的集合記為S7,從S7中選取一個(gè)未處理的面Fs ; 步驟3. 22,執(zhí)行步驟3. 1,在當(dāng)前目標(biāo)模型中為Fs的邊界找匹配的目標(biāo)邊,并放入匹配邊界集合中,匹配邊界集合記為S8 ;
步驟3. 23,從S8中選取一條未用過的邊記為肚,在當(dāng)前目標(biāo)模型中,查找與肚相鄰接且滿足Fs的匹配條件的面并記為Ft,若找到Ft且不在已找到的與Fs匹配的面的集合中,與Fs匹配的面的集合記為S6,則將Ft放入S6中,轉(zhuǎn)入步驟3. 24,若未找到,則轉(zhuǎn)入步驟 3. 25 ;
步驟3. M,若S6中所有面的校驗(yàn)值之和與Fs的校驗(yàn)值相等,則轉(zhuǎn)入步驟3.沈,否則, 返回步驟3. 23 ;
步驟3. 25,若S6為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,否則,轉(zhuǎn)入步驟3. 26 ;
步驟3.沈,若S7中的每個(gè)面均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 21。步驟4,在目標(biāo)CAD系統(tǒng)中,對(duì)于某個(gè)源拓?fù)湓?,若在?dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓兀瑒t進(jìn)行1:0匹配關(guān)系處理。實(shí)施例的步驟4中所述的1:0匹配關(guān)系處理具體方式如下,
(a)生成與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓氐慕2僮饔洖?j,若Oj在目標(biāo)CAD系統(tǒng)中還未執(zhí)行,則基于狀態(tài)向量進(jìn)行處理,保證在進(jìn)行拓?fù)湓仄ヅ鋾r(shí),Oj已經(jīng)在目標(biāo)CAD 系統(tǒng)中得以執(zhí)行。所述的基于狀態(tài)向量進(jìn)行處理,處理方式如下
狀態(tài)向量是一個(gè)N維向量,記為SV,其中N為參與協(xié)同設(shè)計(jì)的站點(diǎn)的個(gè)數(shù),SV的每一個(gè)元素記為SViU], j e {0,1,···,Ν-1};當(dāng)協(xié)同設(shè)計(jì)開始時(shí),SVi中的每一個(gè)元素SViU]均置為0,站點(diǎn) 每執(zhí)行一個(gè)來自站點(diǎn)j的操作,SViU]= sVi[j]+i,SViU]中存放的是站點(diǎn) 已執(zhí)行的來自站點(diǎn)j的操作的個(gè)數(shù);由站點(diǎn)i所發(fā)出的操作O的狀態(tài)向量記為SVo,SVo[j] ,j e {0,1,…,N-1}中記錄著操作0在站點(diǎn)i上執(zhí)行時(shí)站點(diǎn)i上已經(jīng)執(zhí)行的來自各個(gè)站點(diǎn)j的操作個(gè)數(shù);當(dāng)0到達(dá)某個(gè)目標(biāo)站點(diǎn)k時(shí),如果站點(diǎn)k上的狀態(tài)向量SVk和SV。滿足條件sv。[j]含SVk[j], j e {0,1,···,N-1},則操作0在源站點(diǎn)i上執(zhí)行時(shí)所有已執(zhí)行的操作在站點(diǎn)k上已經(jīng)得以執(zhí)行。(b)若目標(biāo)CAD系統(tǒng)中已執(zhí)行的建模操作將與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓貏h除或進(jìn)行了擴(kuò)展,則進(jìn)行Undo/Do/Redo處理(/表示先后順序)恢復(fù)目標(biāo)拓?fù)湓?,保證引用了拓?fù)湓氐慕2僮髟谀繕?biāo)CAD系統(tǒng)中的執(zhí)行。所述的Undo/Do/Redo處理具體實(shí)現(xiàn)方式如下
首先執(zhí)行Undo處理,Undo處理為撤銷已執(zhí)行的刪除或擴(kuò)展了目標(biāo)拓?fù)湓氐牟僮鳎?然后執(zhí)行Do處理,Do處理為執(zhí)行引用了拓?fù)湓氐慕2僮鳎?最后執(zhí)行Redo處理,Redo處理為重新執(zhí)行之前Undo處理的操作; (c)若目標(biāo)CAD系統(tǒng)為了簡(jiǎn)化邊界表示,自動(dòng)刪除了與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓?,則基于面分裂進(jìn)行處理,保證引用了拓?fù)湓氐奶卣骰蚪2僮髟谀繕?biāo)CAD系統(tǒng)中的正確重建或執(zhí)行。所述的基于面分裂進(jìn)行處理包括以下步驟
步驟Cl,引用了拓?fù)湓氐奶卣骰蚪2僮饔洖樘卣鹘2僮鱔,若源拓?fù)湓厥亲鳛樘卣鹘2僮鳓炙璧膮⒄諏?duì)象來用,則轉(zhuǎn)入步驟C2,若源拓?fù)湓厥亲鳛樘卣鹘2僮鱔所需的操作對(duì)象來用,則轉(zhuǎn)入步驟c3 ;步驟c2,利用所提取到的源拓?fù)湓氐膸缀涡畔?,?chuàng)建相應(yīng)的基準(zhǔn)特征代替目標(biāo)拓?fù)湓夭⒔Y(jié)束;
步驟c3,若目標(biāo)CAD系統(tǒng)支持面分裂特征,則通過創(chuàng)建面分裂特征來添加缺失的與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓夭⒔Y(jié)束,否則,轉(zhuǎn)入步驟c4 ;
步驟c4,若目標(biāo)CAD系統(tǒng)提供了能夠創(chuàng)建出與面分裂特征具有相同語義的新特征的 APIs (Application Programming Interfaces,應(yīng)用程序編程接口),則利用新特征代替面分裂特征實(shí)現(xiàn)缺失拓?fù)湓氐膭?chuàng)建并結(jié)束,否則,轉(zhuǎn)入步驟c5 ;
步驟c5,用引用了拓?fù)湓氐奶卣鞯膸缀位蚪2僮魉鶆?chuàng)建的幾何,代替特征建模
操作X。具體實(shí)施時(shí),步驟1、步驟2、步驟3、步驟4都可以采用計(jì)算機(jī)軟件技術(shù)實(shí)現(xiàn)為DLL 插件,分別稱為拓?fù)湓匦畔⑻崛〔考?、拓?fù)湓睾喜⒉考?、拓?fù)湓仄ヅ洳考? 0匹配關(guān)系處理部件。為便于實(shí)施參考起見,提供實(shí)施例的一個(gè)協(xié)同設(shè)計(jì)過程舉例。該協(xié)同設(shè)計(jì)過程中包含三個(gè)引用了拓?fù)湓氐慕2僮?O1、04和05。以下為本發(fā)明實(shí)施例的具體步驟
(1)各站點(diǎn)的CAD系統(tǒng)安裝各自DLL插件,這些插件包括拓?fù)湓匦畔⑻崛〔考⑼負(fù)湓睾喜⒉考?、拓?fù)湓仄ヅ洳考?:0匹配關(guān)系處理部件和Socket通訊部件。Socket通訊為現(xiàn)有技術(shù),站點(diǎn)0、站點(diǎn)1和站點(diǎn)2之間通過Socket建立點(diǎn)到點(diǎn)的網(wǎng)絡(luò)通訊連接。(2)站點(diǎn)0、站點(diǎn)1和站點(diǎn)2上的初始狀態(tài)為站點(diǎn)0發(fā)出創(chuàng)建拉伸特征的建模操作Otl生成了一個(gè)圓柱體,O0已經(jīng)在站點(diǎn)1和站點(diǎn)2上得到了正確的執(zhí)行。
(3) O1是由站點(diǎn)0發(fā)出的用于對(duì)由Otl生成的圓柱體上表面的兩條半圓弧邊E1和E2及下表面的兩條半圓弧邊&和&做倒圓角。首先,站點(diǎn)0作為本地的源CAD系統(tǒng),在站點(diǎn)0 上調(diào)用拓?fù)湓匦畔⑻崛〔考崛pE2A3和&的相應(yīng)信息(即執(zhí)行步驟1);然后,調(diào)用合并處理部件對(duì)這些信息進(jìn)行合并(即執(zhí)行步驟2),其中E1和E2被合并為一條邊E12A3和& 被合并為一條邊E34,并將合并所得的邊的信息作為操作命令的一部分傳送到站點(diǎn)1和站點(diǎn) 2,此時(shí)站點(diǎn)1和站點(diǎn)2作為目標(biāo)CAD系統(tǒng);站點(diǎn)1上已執(zhí)行的本地操作&使圓柱體上表面的兩條半圓弧邊分別被分裂為四條圓弧邊=E1YEifEn和Ey,這四條邊均滿足E12的匹配條件,因此調(diào)用拓?fù)湓仄ヅ洳考梢灾苯诱业竭@些匹配邊,同理,也能夠找到站點(diǎn)1上的圓柱體底面的四條邊(即執(zhí)行步驟3)。當(dāng)O1到達(dá)站點(diǎn)2時(shí),已執(zhí)行的并發(fā)操作O3并未改變與E12和E34相匹配的圓柱體的上下兩表面的邊界,通過拓?fù)湓仄ヅ洳考部芍苯诱业脚c E12和E34相匹配目標(biāo)邊,并執(zhí)行O1 (即執(zhí)行步驟3)。(4) O4是由站點(diǎn)2發(fā)出的用于對(duì)由O3所生成的圓柱體的側(cè)面進(jìn)行拔模操作,此時(shí)站點(diǎn)2作為本地的源CAD系統(tǒng)。首先,在站點(diǎn)2上調(diào)用拓?fù)湓匦畔⑻崛〔考崛“文L卣魉玫膬蓚€(gè)半圓柱面的相應(yīng)信息(即執(zhí)行步驟1);然后,調(diào)用合并處理部件對(duì)這些信息進(jìn)行合并(即執(zhí)行步驟2),得到一個(gè)圓柱面F12,并將F12的信息作為O4對(duì)應(yīng)的操作命令的一部分傳送至站點(diǎn)0和站點(diǎn)1,此時(shí)站點(diǎn)0和站點(diǎn)1作為目標(biāo)CAD系統(tǒng);當(dāng)O4的操作命令到達(dá)站點(diǎn)0時(shí),通過拓?fù)湓仄ヅ洳考业脚c面F12相匹配的目標(biāo)面F/和F2’,從而O4在站點(diǎn)0 上得以正確地執(zhí)行(即執(zhí)行步驟3)。O4在站點(diǎn)1上執(zhí)行的情況與其在站點(diǎn)0上執(zhí)行的情況相同。(5)05是由站點(diǎn)1發(fā)出的引用了由O3所生成的圓柱體上表面的邊E的創(chuàng)建倒圓角操作,此時(shí)站點(diǎn)1作為本地的源CAD系統(tǒng)。首先,在站點(diǎn)1上調(diào)用拓?fù)湓匦畔⑻崛〔考崛∵匛的相關(guān)信息(即執(zhí)行步驟1);然后,調(diào)用合并處理部件對(duì)這些信息進(jìn)行合并(即執(zhí)行步驟2),由于只有一條邊E,因此不需進(jìn)行合并處理,直接將包含邊E的相關(guān)信息的操作命令發(fā)送至站點(diǎn)0和站點(diǎn)2,此時(shí)站點(diǎn)0和站點(diǎn)2作為目標(biāo)CAD系統(tǒng);當(dāng)O5到達(dá)站點(diǎn)2時(shí),站點(diǎn)2上已執(zhí)行的操作O6修改了由O3所生成的圓柱體的高度,因此調(diào)用拓?fù)湓仄ヅ洳考凑业脚c邊E相匹配的目標(biāo)邊(即執(zhí)行步驟3);通過調(diào)用1:0匹配關(guān)系處理部件(即執(zhí)行步驟 4),首先把站點(diǎn)2上已執(zhí)行的與O5并發(fā)的操作O6撤銷,圖中記為Undo (O6);然后執(zhí)行05, 圖中記為Do (05),最后將O6恢復(fù)執(zhí)行(圖中記為Redo (06))。與O5在站點(diǎn)2上執(zhí)行的情況不同的是,當(dāng)O5到達(dá)站點(diǎn)O時(shí),通過調(diào)用拓?fù)湓仄ヅ洳考芍苯诱业脚c邊E相匹配的目標(biāo)邊,并執(zhí)行O5。 由以上實(shí)施例可知,通過本技術(shù)方案,既可以保證引用了拓?fù)湓氐奶卣髟谀繕?biāo) CAD系統(tǒng)中的正確重建,又保證了引用了拓?fù)湓氐慕2僮髟诟鲄f(xié)同CAD系統(tǒng)中的并發(fā)執(zhí)行。
權(quán)利要求
1.一種異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是,包括以下步驟步驟1,在本地的源CAD系統(tǒng)中,將特征或建模操作所引用的源拓?fù)湓氐南鄳?yīng)信息提取出來;步驟2,特征或建模操作所引用的拓?fù)湓亟M成的集合記為源拓?fù)湓丶?,在本地的源CAD系統(tǒng)中,對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,然后將合并后的拓?fù)湓氐男畔魉椭吝h(yuǎn)端的目標(biāo)CAD系統(tǒng)中;步驟3,在目標(biāo)CAD系統(tǒng)中,以步驟2每一個(gè)合并所得的拓?fù)湓貫樵赐負(fù)湓?,在?dāng)前目標(biāo)模型中,為每一個(gè)源拓?fù)湓貙ふ覞M足匹配條件的目標(biāo)拓?fù)湓?;步驟4,在目標(biāo)CAD系統(tǒng)中,對(duì)于某個(gè)源拓?fù)湓兀粼诋?dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,則進(jìn)行1:0匹配關(guān)系處理。
2.根據(jù)權(quán)利要求1所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟1中所述的源拓?fù)湓氐南鄳?yīng)信息,包括以下四類信息(a)類型信息,是指拓?fù)湓氐念愋停?b)屬性信息,是指拓?fù)湓氐膸缀螌傩裕?c)界限信息,是指一維拓?fù)湓氐亩它c(diǎn)信息和二維拓?fù)湓氐倪吔邕呅畔ⅲ?d)校驗(yàn)信息,是指一維拓?fù)湓氐拈L(zhǎng)度和二維拓?fù)湓氐拿娣e。
3.根據(jù)權(quán)利要求1所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒ǎ涮卣魇遣襟E1中提取源拓?fù)湓氐南鄳?yīng)信息,具體包括以下步驟步驟1. 1,在源CAD系統(tǒng)中獲取當(dāng)前源模型的指針; 步驟1. 2,獲取引用了拓?fù)湓氐奶卣骰蚪2僮鞯闹羔槪?步驟1. 3,獲取特征或建模操作所引用的當(dāng)前拓?fù)湓氐闹羔槪?步驟1. 4,提取當(dāng)前拓?fù)湓氐南鄳?yīng)信息;步驟1. 5,獲取特征或建模操作所引用的下一個(gè)拓?fù)湓氐闹羔?,如果為空則結(jié)束,否則返回步驟1.4。
4.根據(jù)權(quán)利要求1所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟2中對(duì)源拓?fù)湓丶现袧M足合并條件的拓?fù)湓剡M(jìn)行合并,具體包括以下步驟步驟2. 1,記Sl為源拓?fù)湓丶?,從Sl中取出一個(gè)拓?fù)湓赜洖門Pl ; 步驟2. 2,從Sl中找出滿足TPl的合并條件的拓?fù)湓夭⒂洖門P2,若找到,則從Sl 中取出TP2,將TP2與TPl進(jìn)行合并,并將合并所得的拓?fù)湓刈鳛橄乱粋€(gè)TP1,返回步驟 2. 2,,若未找到,則將TPl放入合并所得拓?fù)湓氐募嫌洖镾2,進(jìn)入步驟2. 3 ; 步驟2. 3,判斷Sl是否為空,若為空,則結(jié)束,否則,轉(zhuǎn)入步驟2. 2。
5.根據(jù)權(quán)利要求4所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟2中所述的合并是指拓?fù)湓匦畔⒌暮喜?,包括類型信息合并、幾何信息合并、邊界信息合并和校?yàn)信息合并。
6.根據(jù)權(quán)利要求5所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟2中所述的合并條件如下條件a,兩個(gè)拓?fù)湓氐念愋拖嗤?條件b,兩個(gè)拓?fù)湓叵嗷ム徑?;條件c,若將滿足條件a和條件b的兩個(gè)拓?fù)湓剡M(jìn)行合并,合并所得拓?fù)湓嘏c合并前的拓?fù)湓鼐哂邢嗤蛳嘟念愋汀?br>
7.根據(jù)權(quán)利要求1所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟3中所述的匹配條件如下條件a,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤蛳嘟念愋停粭l件b,目標(biāo)拓?fù)湓嘏c源拓?fù)湓鼐哂邢嗤膸缀?;條件c,若源拓?fù)湓貫橐痪S拓?fù)湓?,則目標(biāo)拓?fù)湓氐膬蓚€(gè)端點(diǎn)必須在源拓?fù)湓氐膬?nèi)部或與源拓?fù)湓氐膬蓚€(gè)端點(diǎn)重合;若源拓?fù)湓貫槎S拓?fù)湓?,則目標(biāo)拓?fù)湓氐倪吔绫仨殱M足源拓?fù)湓氐倪吔绲钠ヅ錀l件。
8.根據(jù)權(quán)利要求1所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是?dāng)源拓?fù)湓貫橐痪S拓?fù)湓貢r(shí),執(zhí)行步驟3. 1尋找滿足匹配條件的目標(biāo)拓?fù)湓?,步驟3. 1具體包括以下步驟步驟3. 11,合并后所得的邊集記為S2,從S2中選取一條未處理的邊h ; 步驟3. 12,當(dāng)前目標(biāo)模型的所有邊集記為S3,從S3中找出滿足h的匹配條件的邊并記為Et,若找到,則將Et從S3中取出放入與h相匹配的目標(biāo)邊的集合,與h相匹配的目標(biāo)邊的集合記為S4,進(jìn)入步驟3. 13,若未找到,則轉(zhuǎn)入步驟3. 14 ;步驟3. 13,若S4中與h相匹配的所有邊的校驗(yàn)值之和等于h的校驗(yàn)值,則轉(zhuǎn)入步驟3. 15,否則,返回步驟3. 12 ;步驟3. 14,若S4為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,否則,轉(zhuǎn)入步驟3. 15;步驟3. 15,若S2中的每條邊均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 11 ;當(dāng)源拓?fù)湓貫槎S拓?fù)湓貢r(shí),執(zhí)行步驟3. 2尋找滿足匹配條件的目標(biāo)拓?fù)湓兀?步驟3. 2具體包括以下步驟步驟3. 21,合并后所得的面的集合記為S7,從S7中選取一個(gè)未處理的面Fs ; 步驟3. 22,執(zhí)行步驟3. 1,在當(dāng)前目標(biāo)模型中為Fs的邊界找匹配的目標(biāo)邊,并放入匹配邊界集合中,匹配邊界集合記為S8 ;步驟3. 23,從S8中選取一條未用過的邊記為肚,在當(dāng)前目標(biāo)模型中,查找與肚相鄰接且滿足Fs的匹配條件的面并記為Ft,若找到Ft且不在已找到的與Fs匹配的面的集合中,與Fs匹配的面的集合記為S6,則將Ft放入S6中,轉(zhuǎn)入步驟3. 24,若未找到,則轉(zhuǎn)入步驟 3. 25 ;步驟3. M,若S6中所有面的校驗(yàn)值之和與Fs的校驗(yàn)值相等,則轉(zhuǎn)入步驟3.沈,否則, 返回步驟3. 23 ;步驟3. 25,若S6為空,則在當(dāng)前目標(biāo)模型中未找到滿足匹配條件的目標(biāo)拓?fù)湓?,否則,轉(zhuǎn)入步驟3. 26 ;步驟3.沈,若S7中的每個(gè)面均已處理過,則結(jié)束,否則,轉(zhuǎn)入步驟3. 21。
9.根據(jù)權(quán)利要求2所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,其特征是步驟4中所述的1:0匹配關(guān)系處理具體方式如下(a)生成與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓氐慕2僮饔洖?j,若Oj在目標(biāo)CAD系統(tǒng)中還未執(zhí)行,則基于狀態(tài)向量進(jìn)行處理,保證在進(jìn)行拓?fù)湓仄ヅ鋾r(shí),Oj已經(jīng)在目標(biāo)CAD 系統(tǒng)中得以執(zhí)行;(b)若目標(biāo)CAD系統(tǒng)中已執(zhí)行的建模操作將與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓貏h除或進(jìn)行了擴(kuò)展,則進(jìn)行Undo/Do/Redo處理恢復(fù)目標(biāo)拓?fù)湓?,保證引用了拓?fù)湓氐慕2僮髟谀繕?biāo)CAD系統(tǒng)中的執(zhí)行;(c)若目標(biāo)CAD系統(tǒng)為了簡(jiǎn)化邊界表示,自動(dòng)刪除了與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓?,則基于面分裂進(jìn)行處理,保證引用了拓?fù)湓氐奶卣骰蚪2僮髟谀繕?biāo)CAD系統(tǒng)中的正確重建或執(zhí)行。
10.根據(jù)權(quán)利要求9所述的異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒ǎ涮卣魇撬龅幕跔顟B(tài)向量進(jìn)行處理,狀態(tài)向量是一個(gè)N維向量,記為SV,其中N為參與協(xié)同設(shè)計(jì)的站點(diǎn)的個(gè)數(shù),SV的每一個(gè)元素記為SVi[j], j e {0,1,…,N-1};當(dāng)協(xié)同設(shè)計(jì)開始時(shí),SVi中的每一個(gè)元素SViU]均置為0,站點(diǎn)i每執(zhí)行一個(gè)來自站點(diǎn)j的操作,SViU]= sVi[j]+i,SViLj] 中存放的是站點(diǎn)i已執(zhí)行的來自站點(diǎn)j的操作的個(gè)數(shù);由站點(diǎn)i所發(fā)出的操作0的狀態(tài)向量記為SVo,SVo[j],je {0,1,-,N-1}中記錄著操作0在站點(diǎn)i上執(zhí)行時(shí)站點(diǎn)i上已經(jīng)執(zhí)行的來自各個(gè)站點(diǎn)j的操作個(gè)數(shù);當(dāng)0到達(dá)某個(gè)目標(biāo)站點(diǎn)k時(shí),如果站點(diǎn)k上的狀態(tài)向量 SVk和SV。滿足條件:SV0 [j]含SVk[j],j e {0,1,…,N-1},則操作0在源站點(diǎn)i上執(zhí)行時(shí)所有已執(zhí)行的操作在站點(diǎn)k上已經(jīng)得以執(zhí)行;所述的Undo/Do/Redo處理具體實(shí)現(xiàn)方式如下首先執(zhí)行Undo處理,Undo處理為撤銷已執(zhí)行的刪除或擴(kuò)展了目標(biāo)拓?fù)湓氐牟僮鳎?然后執(zhí)行Do處理,Do處理為執(zhí)行引用了拓?fù)湓氐慕2僮鳎?最后執(zhí)行Redo處理,Redo處理為重新執(zhí)行之前Undo處理的操作; 所述的基于面分裂進(jìn)行處理包括以下步驟步驟cl,引用了拓?fù)湓氐奶卣骰蚪2僮饔洖樘卣鹘2僮鱔,若源拓?fù)湓厥亲鳛樘卣鹘2僮鱔所需的參照對(duì)象來用,則轉(zhuǎn)入步驟c2,若源拓?fù)湓厥亲鳛樘卣鹘2僮鱔所需的操作對(duì)象來用,則轉(zhuǎn)入步驟c3 ;步驟c2,利用所提取到的源拓?fù)湓氐膸缀涡畔?,?chuàng)建相應(yīng)的基準(zhǔn)特征代替目標(biāo)拓?fù)湓夭⒔Y(jié)束;步驟c3,若目標(biāo)CAD系統(tǒng)支持面分裂特征,則通過創(chuàng)建面分裂特征來添加缺失的與源拓?fù)湓叵嗥ヅ涞哪繕?biāo)拓?fù)湓夭⒔Y(jié)束,否則,轉(zhuǎn)入步驟c4 ;步驟c4,若目標(biāo)CAD系統(tǒng)提供了能夠創(chuàng)建出與面分裂特征具有相同語義的新特征的 APIs,則利用新特征代替面分裂特征實(shí)現(xiàn)缺失拓?fù)湓氐膭?chuàng)建并結(jié)束,否則,轉(zhuǎn)入步驟c5 ; 步驟c5,用引用了拓?fù)湓氐奶卣鞯膸缀位蚪2僮魉鶆?chuàng)建的幾何,代替特征建模操作X。
全文摘要
本發(fā)明公開了一種異構(gòu)CAD集成中的拓?fù)湓仄ヅ浞椒?,本方法首先在源CAD系統(tǒng)中,獲取特征建模操作所引用的拓?fù)湓氐南嚓P(guān)信息,然后將這些信息進(jìn)行合并,最后將合并所得的拓?fù)湓氐男畔魉椭聊繕?biāo)CAD系統(tǒng),在目標(biāo)CAD系統(tǒng)中,為合并所得的每一個(gè)拓?fù)湓貙ふ蚁嗥ヅ涞哪繕?biāo)拓?fù)湓?,從而保證相同特征和建模操作在目標(biāo)CAD系統(tǒng)中的正確重建及執(zhí)行。
文檔編號(hào)G06F17/50GK102567588SQ20121000498
公開日2012年7月11日 申請(qǐng)日期2012年1月10日 優(yōu)先權(quán)日2012年1月10日
發(fā)明者何發(fā)智, 李小霞, 蔡賢濤 申請(qǐng)人:武漢大學(xué)