黃 靖, 王 斌,, 胡楷模,, 張 慧,
(1. 清華大學軟件學院,北京 100084;2. 清華大學計算機科學與技術系,北京 100084;3. 信息系統(tǒng)安全教育部重點實驗室,北京 100084;4. 清華大學信息科學與技術國家實驗室,北京 100084)
基于DAG表示與產生式的IGES裝配體數(shù)據(jù)交換算法
黃 靖1, 王 斌1,3,4, 胡楷模1,2,3,4, 張 慧1,3,4
(1. 清華大學軟件學院,北京 100084;2. 清華大學計算機科學與技術系,北京 100084;3. 信息系統(tǒng)安全教育部重點實驗室,北京 100084;4. 清華大學信息科學與技術國家實驗室,北京 100084)
初始圖形交換規(guī)范(IGES)是目前應用最為廣泛的中性文件格式標準之一,但是相關的研究主要集中在單零件的格式轉換上面,對設計中經常用到的裝配體的IGES格式研究較少。該文總結了常用CAD軟件中裝配體導出的IGES文件存儲格式,提出并實現(xiàn)了一種基于圖表示與產生式規(guī)則的IGES裝配體數(shù)據(jù)交換算法,將IGES格式的解析過程標準化,使其具有通用性和可擴展性,并且正確性可以進行形式化驗證。應用該方法,該文具體實現(xiàn)了多文件格式的裝配體IGES前置和后置處理器。在幾何造型系統(tǒng)TiGems7.0中進行的實驗結果表明該算法具有較快的速度,也具有較好的魯棒性。
初始圖形交換規(guī)范;裝配體;數(shù)據(jù)交換;有向無環(huán)圖;產生式
初始圖形交換規(guī)范(IGES)是目前應用最為廣泛的中性文件格式標準之一。知名的CAD軟件,包括 Solidworks,Unigraphics NX(以下簡稱 UGS),Pro/Engineering(以下簡稱 Pro/E),CATIA等都配置了IGES的導入/導出接口。由于數(shù)據(jù)交換算法對于實現(xiàn)CAD零部件的大規(guī)模復用起著非常重要的關鍵作用,所以基于IGES標準的數(shù)據(jù)交換算法及其相關問題在近年來也得到了廣泛研究。
然而,現(xiàn)有的大部分方法主要是針對 IGES基本零部件的數(shù)據(jù)交換,以及與其相關的拓撲重構算法、曲面縫合算法、拓撲定向算法提出的,關于IGES裝配體導入導出的相關理論和算法仍然很少。同時,由于涉及商業(yè)機密,現(xiàn)有商業(yè)軟件對其基于IGES裝配體的算法的設計原則和接口細節(jié)緘口不提。但從另外一方面來講,為方便工業(yè)界中對零部件的交互設計,以及學術界中在對幾何約束求解算法的研究中借鑒成熟CAD軟件,十分有必要對IGES裝配體的數(shù)據(jù)交換模塊進行研究和實現(xiàn)。
早期有關IGES的論文主要以介紹不斷更新的IGES標準為主,通過對IGES標準本身的分析,給業(yè)界提供一定的借鑒意義[1-3]。隨著IGES標準的不斷成熟和完善,越來越多的學者開始研究IGES前后置處理器設計以及相應的曲線曲面算法[4-8]。其中Kahrs等[7]描述了前置處理器設計,重點討論了如何從IGES實體中提取有用信息,以及如何把IGES中的實體轉換到適當?shù)淖鴺讼到y(tǒng)中;Kahrs[8]在1995年分析了IGES的句法,介紹了IGES所包含的主要實體以及內部實現(xiàn)細節(jié),并且在最后分析了前后置處理器的復雜度,為前后置處理器的設計提供了一定的理論依據(jù)。
隨著我國CAD技術的不斷發(fā)展,更多的國內學者也針對IGES數(shù)據(jù)交換做了有益的工作。劉德智等[9]較早設計了一種基于裁剪NURBS曲面片的IGES曲面模型的前后置處理器,討論了邊界表示(B-Rep)表示的實體模型和曲面模型的相互轉換,采用基于OpenEdge結構的曲面拓撲信息重建技術實現(xiàn)了拓撲重構;他們還對一些典型的CAD/CAM系統(tǒng)支持的IGES元素(實體)進行了總結,并給出了簡略的IGES曲面模型的組織樹圖。冉紅強等[10]介紹了IGES后處理器設計的全過程,提出了將曲面模型轉換為實體模型的方法——以曲面拼合為核心的拓撲信息重構算法,同時引入了兩種控制曲線精度的方法。徐昕等[11]探討了用IGES文件作為數(shù)據(jù)交換文件開發(fā)IGES后處理器,實現(xiàn)了CMM(三坐標測量機)與CAD集成的算法。
由于上述算法所針對的IGES曲面模型中不記錄零部件的拓撲信息,所以在后置處理器處理時必須進行相應的拓撲重構,這需要經過曲面拼合、拓撲定向等大量的數(shù)值計算,算法較為復雜,并且容易由于容差定義不一致而導致轉換失敗。針對這一問題,胡楷模等[12]基于IGES5.3標準,設計并實現(xiàn)了基于邊界表示(B-rep)的IGES前后置處理器,實現(xiàn)了對單零件IGES格式(包括186多面實體B-Rep格式和144曲面格式)的導入和導出算法。針對IGES標準中實體模型有可能缺少參數(shù)域的情況,他們還提出了一套用于后置處理器中的參數(shù)域重構和修正算法[13]。
然而,上述算法和系統(tǒng)僅僅討論了基本零件(包括曲面模型和實體模型)的導入導出和系統(tǒng)實現(xiàn),并沒有涉及裝配體數(shù)據(jù)交換的相關理論和算法。截止目前查閱過的已有文獻中,僅有孫偉寧等[14]提出了IGES裝配體信息的提取流程,實現(xiàn)了Pro/E形式的裝配體數(shù)據(jù)導入。但是,其分析是基于Pro/E的單文件裝配體IGES格式的,對其他幾個軟件的IGES并未包括在內——事實上,本文的研究表明,CAD軟件之間的裝配體IGES存儲格式有不小的差距;并且文獻[14]只實現(xiàn)了后置處理器,而沒有實現(xiàn)IGES導出的前置處理器。
另外,IGES標準[15]規(guī)定,聲稱支持該標準的實現(xiàn)應當說明對標準中各個實體類型號及格式號的支持情況,但是調查表明,并沒有任何一個CAD軟件說明支持情況的IGES用戶文檔。針對以上現(xiàn)狀,本文通過測試逆推的方法分析研究了當前Solidworks、UGS、Pro/E、CATIA等軟件生成的IGES裝配體文件存儲格式。在分析的過程中,本文提出了一種基于有向無環(huán)圖(DAG)和產生式表示的IGES裝配體數(shù)據(jù)交換算法,通過這種表示可以形式化定義裝配體的數(shù)據(jù)結構,保證系統(tǒng)轉換理論上的完備性和實踐上的可行性。在此基礎上,本文基于文獻[12]所實現(xiàn)的單零件前后置處理器,設計和實現(xiàn)了基于IGES裝配體的前后置處理器,可以統(tǒng)一處理與上述4種商業(yè)軟件的裝配體數(shù)據(jù)交換。
一般而言,裝配體可以看作一個較為復雜的樹狀結構。為便于討論,首先定義本文表述中常用的一些名詞。
定義1(零件) 不含任何裝配信息的基本零件,對應普通個體或裝配樹的葉子。
定義2(裝配體) 包含一定裝配信息的零件集合,對應裝配樹的非葉子結點,有時也指以該結點為根的子樹。
定義3(組件) 零件和裝配體統(tǒng)稱為組件,對應裝配樹的任意結點。
定義4(總裝配) 裝配體中的最頂層裝配體,對應裝配樹的根結點。
定義5(子裝配) 裝配體中非總裝配的裝配體,對應裝配樹的非根且非葉結點。
定義6(子組件) 裝配體下屬的直接子裝配或基本零件通稱為子組件,對應裝配結點所屬的直接子結點。
IGES標準[15]規(guī)定,一個IGES文件按下述次序由 5個或 6個順序編號的段組成:標志段(Flag)、開始段(Start)、全局段(Global)、目錄條目段(Directory Entry)、參數(shù)數(shù)據(jù)段(Parameter Data)和結束段(Terminate)組成,對應的標識符分別為首字母F、S、G、D、P、T,其中標志段(F)為可選。由于主要的CAD/CAM系統(tǒng)均只支持未壓縮的ASCII格式,因此一般文件不包含標志段。開始段(S)一般包含生成文件的前置處理器的名字,全局段(G)包含作者、時間和精度等信息,結束段(T)包含每個段的標識符及所使用的最大序號,這3個部分包含的信息與數(shù)據(jù)本身并沒有太大聯(lián)系,因此數(shù)據(jù)內容主要包含在目錄條目段(D)和參數(shù)數(shù)據(jù)段(P)中。數(shù)據(jù)的基本單元是實體,每個實體的格式包括一個實體類型和格式號。對每一種實體類型來說,缺省格式號為0;某些實體有大于0的格式號,用以區(qū)分附加的功能。D段和P段均是由若干實體構成,其中D段為包含固定長度的表示公共屬性的數(shù)據(jù),每個實體占兩行,第k個實體占據(jù)D段的第2k-1行和第2k行,索引值為2k-1;P段的實體則按順序和D段實體一一對應,包含該實體特有的數(shù)據(jù)。在本文中,指針即為索引,例如,“實體a具有指向實體b的指針”指的是“實體a的D段或P段包含實體b的D段的索引值”。
文獻[9]和文獻[14]都給出了一些CAD/CAM系統(tǒng)支持的IGES實體類型號列表,但是均不完整。經過詳細測試,表1給出了包含裝配體在內的典型CAD/CAM系統(tǒng)對IGES標準支持的實體集合總結(括號內數(shù)字表示格式號,未注明格式號的為缺省值)。
IGES格式中不同的實體之間是通過指針標號相互關聯(lián)的,如果把每個實體看成圖的頂點,在實體的數(shù)據(jù)域中的D段指針看成是有向邊,那么就能得到一個有向無環(huán)圖。并且,由于 IGES標準的定義中不允許正向指針,即指針只能從序號大的實體指向序號小的實體,因此整個 IGES文件的實體存儲順序實際上是對該圖的一種拓撲排序的反序排列。
表1 典型CAD/CAM系統(tǒng)支持的IGES實體類型/格式號
以圖1所示的簡單裝配樹為例分析IGES標準對于裝配體格式的定義結構。該裝配體由兩個相同的長方體以及一個圓柱體構成:首先圓柱體和其中一個長方體以共面約束構成一個子裝配,然后該子裝配和另一長方體以另一共面約束構成總裝配。該裝配體的裝配樹如圖1(b)所示。注意圖1(a)中裝配體的兩個長方體用的是同一零件,且子裝配對應的REC-CYL文件在物理上其實是不存在的。
圖1 具有3層裝配結構的裝配樹
由于裝配體中不同子裝配有可能指向同一葉子節(jié)點,所以本文將文獻[9]中的樹圖擴展到了裝配體的有向無環(huán)圖。將圖1所示的簡單裝配體用Solidworks以多文件的IGES存儲格式導出,則其實體關系所對應的有向無環(huán)圖如圖2所示。
圖2 Solidworks導出的多文件IGES格式實體關系圖
在實驗中以Solidworks為例,測試了大量裝配樹所對應的實體關系抽象圖,同時參照 IGES的最新標準[15]中的相關定義,總結出如下兩條重要規(guī)律:
1) 相關性實例實體402的孩子總是由一系列單子圖實例實體408或408-402組合加上1個變換矩陣實體124和1個名稱特性實體406(格式號為15)組成;
2) 單子圖實例實體408的孩子總是由1個子圖定義實體308(可能共用)和變換矩陣實體124組成。
將這些關系以產生式形式描述出來,可以得到如下產生式(其中“+”表示1個或多個,“?”表示0個或1個):
(1) [402] ? ([408] | ([408] [402]))+[124] [406-15]
(2) [408] ? [308]? [124]
(3) [308] ? [416]
(4) [416] ? [文件名]
(5) [406-12] ? [文件名]+
這些產生式就構成了裝配體IGES文件的骨架,也是下面多文件IGES裝配體導出/導入算法的基礎。事實上,對于各個CAD/CAM系統(tǒng)的單文件格式,其主要思想也是相同的。
本文在前后置處理器中設計了如下內置裝配樹數(shù)據(jù)結構:裝配體的類是AssemblyStep,零件的類為 PartStep,它們都是組件類ComponentStep的子類,AssemblyStep具有一個ComponentStep指針列表指向子組件,PartStep具有一個 Body的指針指向零件體內容。每個ComponentStep都包含名稱、文件名及一個變換矩陣Ucs。該數(shù)據(jù)結構對應的類圖如圖3所示。
對比實體關系圖與數(shù)據(jù)結構類圖,容易得到IGES標準中定義的實體與內置數(shù)據(jù)結構之間的對應關系,如表2所示。
表2 實體類型同內置數(shù)據(jù)結構之間的對應關系
由于導出算法要有輸出,因此需要在進行產生式變換的同時進行輸出。為方便導出,可以把輸出看成是終止符號(用尖括號表示),則原有的產生式可改寫為如下形式:
(1) [裝配體文件 D 段或 P段] ?[406-12][402]
(2) [402] ? ([408] | ([408] [402]))+[124] [406-15]<402>
(3) [408] ? [308]? [124]<408>
(4) [308] ? [416]<308>
(5) [416] ? <416>(包含[文件名])
(6) [406-12] ? <406-12>(包含[文件名]+)
(7) [406-15] ? <406-15>(包含[組件名])
(8) [124] ? <124>
Procedure Write408()
//功能:輸出408實體樹
Begin
(9) [文件名] ?
(10) [組件名] ?
在上面的產生式中,為滿足IGES標準規(guī)定的拓撲排序的性質,終止符號應放在每個產生式的最后,使得該實體的所有子實體均已輸出完畢之后再輸出該實體本身,如產生式(2)~(4)所示。
在IGES文件中,實體主要通過目錄條目段(Directory Entry)、參數(shù)數(shù)據(jù)段(Parameter Data)中的相互引用而組織起來,因此,對于每項實體,需要同時在P段和D段添加指針。對于修改后的每項產生式,容易直接寫出其相應的導出函數(shù)。例如對于單子圖實例實體所對應的(3)式,可以直接寫出如下類似后序遍歷的函數(shù):
If (PartBody已訪問過) Then Dire308 := PartBody.Dire308;
Else Dire308 := Write308();
ent408.addPara(Dire308); //在P段添加指針
ent408.addDire(Write124()); //在D段添加指針
Return WriteEntity(ent408); //返回本408實體的指針End.
其它子過程可類似寫出,不再一一列舉。將所有產生式的導出函數(shù)展開,可得到基于Solidworks多文件存儲IGES裝配體導出算法,其主要流程如下:
1) 輸出標志段(F)、開始段(S)和全局段(G)配置全局參數(shù)到文件;
2) 遍歷裝配樹獲得所有子組件的文件名列表,輸出406-格式12實體;
3) 將總裝配設為當前裝配;
4) 如果當前裝配存在下一個直接子組件,將其設為當前組件,轉到步驟5);否則轉到步驟10);
5) 如果當前組件是零件,則轉到步驟6);否則設為當前裝配,并轉到步驟9);
6) 如果已訪問過零件體內容,則添加原308實體指針到408實體,并轉到步驟8);
7) 調用單零件輸出模塊[12]輸出到相應文件,輸出包含零件文件名的416實體,并添加指針到308實體,輸出308實體并將指針添加到408實體;
8) 輸出本零件變換矩陣生成的124實體并添加指針到408實體,輸出408實體并將指針添加到上一級402實體,轉到步驟4);
9) 輸出包含文件名的416實體(文件實質上不存在)并添加指針到308實體,輸出308實體并添加指針到408實體,輸出本裝配變換矩陣生成的124實體并添加指針到408實體,輸出408實體并將指針添加到本級 402實體,轉到步驟4);
10) 輸出包含變換矩陣的 124實體并將指針添加到402實體,輸出包含名稱的406實體格式15并將指針添加到402實體,輸出402實體,如果當前裝配是總裝配,則轉到步驟11);否則將指針添加到上一級402實體并將當前裝配設成上一級裝配,轉到步驟4);
11) 計算 P段中每個實體占用的行數(shù)并對緩沖區(qū)中D段和P段中相應的字段進行填充,將包含D段和P段內容的緩沖區(qū)輸出到文件;
12) 輸出結束段(T)到文件。
在IGES文件中,所有的D段數(shù)據(jù)均在P段數(shù)據(jù)之前,而且D段實體和P段實體存在一一對應關系。為提高輸出效率,在上述導出算法中,未指明輸出到文件的輸出都是指同時輸出到目錄條目段(D)和參數(shù)數(shù)據(jù)段(P)的緩沖區(qū),只有當所有實體均已處理完成時,才最終填充D段和P段相應字段的數(shù)據(jù),并輸出到文件。
對于Solidworks的單文件格式,用同樣的分析方法可以得到表達裝配的產生式:
(1) [裝配體文件D段或P段] ? [總體408]
(2) [總體408] ? [308] <408>
(3) [308] ? [408]+ | [零件內容]
(4) [408] ? [308]? [124] <408>
(5) [124] ? <124>
(6) [零件內容] ? [186] | [144]* (進入單零件導入部分)
更進一步,還可以寫出零件IGES格式對應的產生式。鑒于本文主要研究對象是裝配體,而零件格式的導入/導出可由原有模塊實現(xiàn),這里就不一一列舉產生式了。
經過測試發(fā)現(xiàn),Solidworks、UGS和 Pro/E均能讀取Solidworks的單文件格式的IGES,而CATIA讀取時會丟失層次關系,但是其原因在于CATIA本身沒有實現(xiàn)IGES的裝配層次關系導入與導出。因此只需利用 Solidworks單文件輸出IGES格式,即可實現(xiàn)各個CAD軟件能夠正確識別的IGES文件的導出。
在導入算法中,本文應用原有的詞法分析模塊,首先將文件按相應實體的填充定義導入內存,在此基礎上構造內置裝配樹,最后讀入零件內容。算法主要流程如下:
1) 讀取標志段(F)、開始段(S)和全局段(G)配置全局參數(shù);
2) 將目錄條目段(D)和參數(shù)數(shù)據(jù)段(P)數(shù)據(jù)按格式讀入線性表;
3) 如果存在402實體,判斷為裝配體類型,轉到步驟4);
否則判斷為零件類型,調用零件讀入模塊進行輸入,轉到步驟13);
4) 新建裝配根結點(總裝配)并設為當前裝配,將文件末的402實體設為當前402實體;
5) 如果當前402實體存在下一個子結點,則判斷子節(jié)點的類型:
如果是124實體,則轉到步驟6);
如果是402實體,則將其設為當前402實體并轉到步驟7);
如果是406實體,則轉到步驟10);
如果是408實體,則轉到步驟8);
否則轉到步驟11);
6) 將當前裝配的變換矩陣Ucs根據(jù)124實體參數(shù)填充,轉回步驟5);
7) 在當前裝配結點下增加一裝配子結點并設為當前裝配,轉回步驟5);
8) 在當前裝配結點下增加一零件子結點并設為當前零件;
9) 輸入308實體并從其附屬416實體獲得文件名,判斷是否訪問過:
若未訪問過,則新建一零件體內容對象并與當前零件及308實體關聯(lián);
若訪問過,則將當前零件與308實體對應的已存在的零件體內容對象關聯(lián);
輸入124實體,將其參數(shù)填充至當前零件變換矩陣Ucs,轉回步驟5);
10) 輸入 406實體獲取當前裝配名字,檢查父裝配體的其它直接子零件結點是否有同名的,如果同名則刪除該子零件結點,轉回步驟5);
11) 如果當前裝配是總裝配則繼續(xù)步驟12),否則將當前裝配設為上一級裝配,將當前402實體設為上一級402實體,轉回步驟5);
12) 遍歷裝配樹,遇到未訪問過的零件體內容對象時打開對應文件,調用讀取單零件IGES格式的算法進行讀入;
13) 結束輸入并顯示。
上面的流程是將一系列子過程進行展開之后的結果,例如步驟 5)~步驟 11)實際對應Read402子過程,是算法的主體部分;步驟8)~ 9)對應Read408子過程,步驟10)對應Read406子過程。步驟5)中的判斷方式實際上對產生式進行了一定程度的放寬,即允許402實體所包含的子實體以不同順序及任意數(shù)量出現(xiàn),在未來,依據(jù)IGES標準,我們可以導出更加精確的產生式,并對不符合產生式要求的實體做容錯處理。
此外,步驟8)并不能保證當前408實體對應的確實是一個零件,因為子裝配體也會產生一個408實體,因此步驟10)中的去重操作是必要的,它利用子裝配體的名字與其對應的408實體的名字是相同的這一性質將所生成的“偽”子零件刪去。
以上過程針對的是多文件格式的裝配體導入,如果想導入不同商業(yè)CAD軟件生成的單文件IGES格式的裝配體,只需根據(jù)各個軟件的存儲文件畫出所生成實體的有向無環(huán)圖,導出相應的產生式,再轉化成相應的算法即可。測試表明,Solidworks的單文件格式、UGS、Pro/E和CATIA中表示零件的實體均是“分片連續(xù)”的,描述某零件內容的部分與該零件單獨存儲時的段落相差無幾,因此可重點關注剩余部分表示他們之間裝配關系的實體。需要注意的是,UGS與Pro/E在總裝配層級上各個組件是相互沒有顯式關聯(lián)的,即對應的拓撲排序的首個結點不像Solidworks一樣必定是某個實體(多文件格式中是402實體,單文件格式中是408實體),這可以通過虛擬一個總裝配結點來化歸為熟悉的形式。單文件格式的工作現(xiàn)已基本完成。
在清華大學計算機輔助設計與圖形學研究所開發(fā)的具有我國自主知識產權的幾何造型系統(tǒng)TiGems7.0版本中,我們采用本文算法,設計并實現(xiàn)了基于IGES多文件形式的裝配體前后置處理器,并進行了相應的實驗,結果表明,該算法能夠順利實現(xiàn)和Solidworks系統(tǒng)之間的數(shù)據(jù)交換功能。
首先采用前置處理器,導出一個在工業(yè)界中實用的“前橋總裝”裝配體,然后用Solidworks 2007打開,其效果如圖4所示。該裝配體一共包含9個不同的零件,其中輪胎、前鋼圈等6個零件組成一個子裝配 qqzz2,而總裝中由兩個相同的子裝配qqzz2及若干其它零件組成,裝配樹一共是 3層??梢钥吹剑醒b配結構能夠被Solidworks 2007正確識別。
為測試后置處理器的正確性,我們用Solidworks 2007生成了一個包含4層裝配關系的裝配體,并導出為IGES多文件格式,圖5顯示了它在TiGems 7.0中打開的效果示意圖。該裝配包含a, b, c, e, f, g 6個零件,由一系列共面、面平行、面垂直、共軸等關系裝配而成。圖5高亮部分是被選中的由f和g組成的子裝配體??梢姡琒olidworks所定義的裝配層次也能被我們的后置處理器正確處理。
圖4 “前橋總裝”的裝配體IGES文件打開效果(左邊是其裝配樹結構)
圖5 層次為4,由6種不同零件組成的裝配體(左邊是其裝配樹結構)
我們在Intel Pentium D CPU 2.80GHz, 2 GB內存的臺式機上的Windows XP Professional SP3系統(tǒng)環(huán)境下,還測試了一系列其它裝配體,其導入時間對比如表3所示,其中最后一欄即為“前橋總裝”測試文件。
表3 多文件格式裝配體IGES文件導入時間對比表(單位:s)
表3中所列舉的所有測試均得到了正確的裝配樹和零件結構。可以看到TiGems比Solidworks打開裝配體的速度普遍要快將近一個數(shù)量級。此外測試表明,UGS和CATIA均無法打開多文件格式的IGES裝配體文件,而Pro/E雖然能打開,并且用時和TiGems相當,但是打開后只是把所有涉及到的零件按各自的初始坐標羅列在界面上,相對位置信息和裝配樹信息都丟失了,在“前橋總裝”測試數(shù)據(jù)上甚至少了一個輪胎,因此這里就不將它們列入對比了。
本文提出并實現(xiàn)了一種基于DAG表示與產生式法的分析方法,將IGES格式的解析過程標準化。該方法與其它的實現(xiàn)相比具有以下優(yōu)點:
1) 具有通用性和良好的可擴展性,從短期來看IGES的其它格式均可通過類似方法實現(xiàn),從長遠來看可以應用到其它類似IGES的格式的解析之中;
2) 產生式表示使得算法的正確性可以進行形式化驗證;
3) 實驗結果證明該算法具有較快的速度,也具有較好的魯棒性。
目前已經實現(xiàn)了與 Solidworks的多文件格式,以及與Solidworks、UGS、Pro/E、CATIA的單文件格式裝配體IGES格式的數(shù)據(jù)交換。
下一步的工作主要包括:
(1) 詳細測試表明,幾大商業(yè)軟件均無法在IGES中保存零件之間的裝配關系,只能保存它們之間的位置關系和層次關系。然而,IGES中確實為裝配關系的存儲提供了定義接口,因此,未來可以在不影響其它軟件讀取IGES格式文件的基礎上,嘗試實現(xiàn)基于IGES的裝配體裝配關系的保存和讀取。
(2) 現(xiàn)在缺少一個權威的IGES文件,尤其是裝配體文件的測試數(shù)據(jù)庫,因此轉換的成功率、正確性和魯棒性難以得到有效的衡量。希望在未來能夠建立起一套IGES文件測試數(shù)據(jù)庫。
[1] Smith B M. IGES-initial graphics exchange specification [C]//Proceedings of Striving for Technological Excellence in Manufacturing Through Communication, Planning and Professionalism: Proceedings of 18th International Technical Conference, Dallas, TX, USA: Number Control Soc, 1981: 179-186.
[2] Liewald M H, Kennicott P R. Intersystem data transfer via IGES [J]. IEEE Computer Graphics and Applications, 1982, 2(3): 55-58, 60-63.
[3] Smith B M. IGES: A key to CAD/CAM systems integration [J]. IEEE Computer Graphics and Applications, 1983, 3(8): 78-83.
[4] Lewis J W. Interchanging spline curves using IGES [J]. Computer Aided Design, 1981, 13(6): 359-364.
[5] Wilkinson D, Hallam R. A study of product data transfer using IGES [J]. Computer-Aided Engineering Journal, 1987, 4(3): 131-136.
[6] Coles K, Hou C A. Enhancement of IGES preprocessor for data exchange [C]//Atlanta, GA, USA, 1991: 1-5.
[7] Kalta M, Davies B J. An IGES pre-processor to integrate CAD and CAPP for turned components [J]. International Journal of Advanced Manufacturing Technology, 1994, 9(5): 291-304.
[8] Kahrs M. The heart of IGES [J]. Software: Practice and Experience, 1995, 25(8): 935-946.
[9] 劉德智, 董金祥, 何志均. 基于曲面模型的IGES前后置處理器的設計[J]. 計算機輔助設計與圖形學學報, 1999, 11(2): 100 -103.
[10] 冉紅強, 鄭國磊. 基于模型轉換的 IGES后置處理器開發(fā)[J]. 工程圖學學報, 2003, 24(4): 44-49.
[11] 徐 昕, 劉書桂. CMM/CAD集成系統(tǒng)中IGES后處理器的開發(fā)[J]. 天津大學學報(自然科學與工程技術版), 2003, 36(1): 28-32.
[12] 胡楷模. 基于邊界表示的IGES數(shù)據(jù)交換算法的研究與實現(xiàn)[D]. 北京: 清華大學, 2009.
[13] 胡楷模, 王 斌, 雍俊海. IGES邊界模型轉換中的參數(shù)域重構與修正算法[J]. 計算機輔助設計與圖形學學報, 2009, 21(9): 1243-1250.
[14] 孫偉寧. 三維圖形瀏覽系統(tǒng)IGES后處理器的研究與實現(xiàn)[D]. 杭州: 浙江大學, 2002.
[15] ANS US PRO/IPO-100-1996, Initial Graphics Exchange Specification IGES 5.3 [S].
IGES data exchange algorithm for assemblies based on DAG representation and production Rules
Huang Jing1, Wang Bin1,3,4, Hu Kaimo1,2,3,4, Zhang Hui1,3,4
( 1. School of Software, Tsinghua University, Beijing 100084, China; 2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China; 3. Key Laboratory for Information System Security, Ministry of Education, Beijing 100084, China; 4. Tsinghua National Laboratory for Information Science and Technology, Beijing 100084, China )
The Initial Graphics Exchange Specification (IGES) is one of the most widely used neutral file standards. The related researches have mainly focused on the translation of single parts, however, few of them dealt with the IGES form for assemblies, which appear frequently in design. In this paper, we first summarize the IGES-file form of assemblies in most popular CAD software and then propose an IGES data exchange algorithm for assemblies based on Directed Acyclic Graph (DAG) Representation and Production Rules. This method standardizes the process of analysis of IGES forms, which enhances its commonality and extensibility. Moreover, the correctness of the method can be formally verified. With this method, we implement the pre-processor and post-processor for the multi-file IGES representation for assemblies. The experiments conducted in our geometry modeling system TiGems 7.0 show that the algorithm is fast and robust.
IGES; assembly; data exchange; DAG; production rules
TP 391
A
2095-302X (2012)04-0050-09
2010-07-18
黃 靖(1987-),男,福建南安人,博士研究生,主要研究方向為計算機視覺、計算機圖形學。