胡慧慧, 趙 韓
(1.南通航運(yùn)職業(yè)技術(shù)學(xué)院 交通工程系,江蘇 南通 226010;2.合肥工業(yè)大學(xué) 機(jī)械與汽車工程學(xué)院,安徽 合肥 230009)
良好的交互性是網(wǎng)絡(luò)協(xié)同CAD系統(tǒng)順利運(yùn)行的前提條件,因此實(shí)時(shí)高效的協(xié)同數(shù)據(jù)交換是實(shí)現(xiàn)分布式環(huán)境下實(shí)時(shí)協(xié)同造型的關(guān)鍵。網(wǎng)絡(luò)協(xié)同造型具有分散性和分布性特點(diǎn),且數(shù)據(jù)交換受網(wǎng)絡(luò)傳輸能力限制,要保證其實(shí)時(shí)性,應(yīng)滿足以下要求[1]:① 數(shù)據(jù)傳輸量小,即模型描述的數(shù)據(jù)量盡可能小,這點(diǎn)是關(guān)鍵;② 各協(xié)同客戶端的模型數(shù)據(jù)保持幾何和拓?fù)潢P(guān)系的一致性;③模型必須在特征級(jí)別上可編輯,用戶可對(duì)交換后的模型特征進(jìn)行各種操作。
CAD模型通常采用精確的數(shù)學(xué)形式表達(dá)幾何模型,數(shù)據(jù)量十分龐大,網(wǎng)絡(luò)通信的帶寬和延時(shí)成為主要的應(yīng)用障礙。為此,學(xué)者們針對(duì)數(shù)據(jù)模型的4個(gè)層次提出了一些專門針對(duì)協(xié)同設(shè)計(jì)環(huán)境下的CAD模型的數(shù)據(jù)交換方法:① 早期模型中基于中性文件(STEP等)的方法,該方法未對(duì)設(shè)計(jì)過(guò)程進(jìn)行描述,數(shù)據(jù)量大,無(wú)法滿足協(xié)同CAD應(yīng)用的實(shí)時(shí)、動(dòng)態(tài)要求;② 基于三角網(wǎng)格模型的交換方法[2],該方法實(shí)現(xiàn)三維模型的遠(yuǎn)程實(shí)時(shí)傳輸、觀察和特征參數(shù)修改,傳輸量較大,且難以對(duì)產(chǎn)品模型進(jìn)行精確的分析和編輯;③ 基于高層語(yǔ)義歷史的交換方法[3],數(shù)據(jù)量小,但相同語(yǔ)義在不同的CAD系統(tǒng)中可能產(chǎn)生不同的執(zhí)行結(jié)果,一致性轉(zhuǎn)換難度大;④ 基于顯式表示的特征數(shù)據(jù)交換方法,特征表示方式有顯示和隱式2種,文獻(xiàn)[4]采用了該方法,該法只能重構(gòu)模型的靜態(tài)表示,且丟失了高層語(yǔ)義信息,無(wú)法支持協(xié)同用戶對(duì)模型進(jìn)行回溯和編輯處理。
在當(dāng)前網(wǎng)絡(luò)條件下,現(xiàn)有數(shù)據(jù)交換方法不能較好地滿足協(xié)同實(shí)時(shí)造型的要求。為此,本文根據(jù)協(xié)同產(chǎn)品開(kāi)發(fā)特點(diǎn),提出基于隱式特征表達(dá)的數(shù)據(jù)交換(implicit feature representation data exchange,簡(jiǎn)稱IFDE)方法,力圖保證功能性并達(dá)到良好的反饋速度和用戶體驗(yàn)感。
IFDE數(shù)據(jù)交換方法如圖1所示。
圖1 基于隱式特征表達(dá)的協(xié)同數(shù)據(jù)交換方法
(1)IFDE的優(yōu)勢(shì)。IFDE的實(shí)質(zhì)是不交換模型的幾何拓?fù)湫畔?,只交換特征的隱式參數(shù)信息及特征之間的操作關(guān)系,即以結(jié)構(gòu)化特征模型表達(dá)為中心信息,僅交換用戶某次操作產(chǎn)生的特征信息(如特征結(jié)構(gòu)、定位信息和形狀參數(shù)等高層信息),模型的幾何拓?fù)渲貥?gòu)交由客戶端CAD系統(tǒng)調(diào)用幾何建模引擎實(shí)現(xiàn)。以隱式特征為單元進(jìn)行數(shù)據(jù)交換,增量式傳輸協(xié)同操作中刪、改、增的特征,與幾何拓?fù)湫畔⑾啾龋磉_(dá)更簡(jiǎn)潔,數(shù)據(jù)量更小,因此,該方法可極大減少模型交換的數(shù)據(jù)量。
(2)IFDE的實(shí)現(xiàn)過(guò)程。協(xié)同數(shù)據(jù)交換過(guò)程包括3個(gè)步驟:從CAD模型到協(xié)同特征模型的數(shù)據(jù)交換、協(xié)同特征模型數(shù)據(jù)的網(wǎng)絡(luò)傳輸和協(xié)同特征模型到CAD模型的數(shù)據(jù)交換。IFDE具體步驟如下:① 客戶端A調(diào)用API函數(shù),監(jiān)聽(tīng)并分析當(dāng)前網(wǎng)絡(luò)特征操作;② 識(shí)別網(wǎng)絡(luò)操作特征類型,并提取構(gòu)建特征的全部隱式表達(dá)信息;③ 將隱式特征表達(dá)信息進(jìn)行消息類封裝,經(jīng)序列化后多播發(fā)送;④客戶端B反序列化網(wǎng)絡(luò)封裝消息后進(jìn)行解析,識(shí)別及提取特征隱式表達(dá)參數(shù);⑤ 經(jīng)轉(zhuǎn)換后調(diào)用本地造型引擎中的API函數(shù),進(jìn)行特征重構(gòu)。
IFDE不交換模型的幾何拓?fù)湫畔?,因此,傳輸?shù)南⒈仨毎卣髦貥?gòu)所需的所有隱式參數(shù),才能保證各客戶端系統(tǒng)產(chǎn)生的模型一致。為此,在協(xié)同設(shè)計(jì)系統(tǒng)中,定義了一種由3層封裝機(jī)制構(gòu)成的消息事件為分布式環(huán)境信息通訊提供層次性和擴(kuò)展性封裝。該機(jī)制利用面向?qū)ο蠹夹g(shù)對(duì)特征的隱式表達(dá)進(jìn)行描述,并建立可序列化的網(wǎng)絡(luò)消息類以便網(wǎng)絡(luò)傳輸和特征的正確重構(gòu)。
如圖2所示,第1層為消息基類,定義了協(xié)同造型過(guò)程中統(tǒng)一的消息事件發(fā)送和接收機(jī)制。
第2層為操作消息類封裝,從消息基類繼承并根據(jù)需要進(jìn)行擴(kuò)充,分成4種類型:
(1)設(shè)計(jì)特征的造型事件。主要在協(xié)同造型過(guò)程中由參與設(shè)計(jì)的客戶端產(chǎn)生,用來(lái)封裝創(chuàng)建新特征或修改特征的隱式參數(shù),并通知接收端對(duì)該特征進(jìn)行相應(yīng)更新并調(diào)用其造型核心用B-rep表示實(shí)體。
(2)設(shè)計(jì)特征的控制事件。此消息事件主要用來(lái)封裝特征操作時(shí)根據(jù)角色分配訪問(wèn)權(quán)限,用于訪問(wèn)控制過(guò)程。
(3)設(shè)計(jì)零件的同步事件。此消息事件主要用來(lái)封裝設(shè)計(jì)零件的狀態(tài)矢量表和最小矢量信息,用于遲加入或者非正常退出的同步過(guò)程。
(4)設(shè)計(jì)零件的其他事件。此消息主要用于封裝設(shè)計(jì)零件的全生命周期信息,由于本文主要研究協(xié)同造型,因此這里只作為預(yù)留事件定義。
圖2 協(xié)同造型消息類封裝
第3層為具體特征操作消息類封裝,根據(jù)不同的通訊目的,從第2層消息類派生,并重寫相應(yīng)的抽象屬性、方法和擴(kuò)展特征參數(shù)域,如對(duì)某一具體特征操作的不同實(shí)現(xiàn)方法進(jìn)行封裝。這樣使得在協(xié)同造型時(shí)不必局限于特征交互方式,并使網(wǎng)絡(luò)協(xié)同過(guò)程對(duì)用戶透明化。
根據(jù)C#的定義,為能在網(wǎng)絡(luò)中正常通訊,所定義的通訊事件基類必須能被“序列化”。因此,在第1層通訊消息基類封裝時(shí),必須從可序列化類派生,這樣其余2層從基類派生的事件封裝能自動(dòng)地進(jìn)行序列化。
以面向?qū)ο螅?]的特征消息類定義方式有利于特征信息的隱式表達(dá),利用網(wǎng)絡(luò)序列化技術(shù)在網(wǎng)絡(luò)間交換特征操作數(shù)據(jù),簡(jiǎn)化網(wǎng)絡(luò)傳輸操作,為異地客戶端的特征重構(gòu)提供可靠的信息。
客戶端接收到設(shè)計(jì)組內(nèi)用戶發(fā)送的造型消息時(shí),首先進(jìn)行消息解析,識(shí)別并提取當(dāng)前操作特征的隱式表達(dá)參數(shù),然后進(jìn)行特征坐標(biāo)轉(zhuǎn)換與重構(gòu)定位,最后調(diào)用本地的特征重構(gòu)標(biāo)準(zhǔn)表達(dá)函數(shù)實(shí)現(xiàn)協(xié)同特征操作的異地重構(gòu),重構(gòu)過(guò)程如圖3所示。
特征重構(gòu)的關(guān)鍵是:特征的重構(gòu)表達(dá)、特征的參數(shù)坐標(biāo)轉(zhuǎn)換及特征的重構(gòu)定位。
圖3 特征操作重構(gòu)過(guò)程
(1)特征重構(gòu)表達(dá)。為使協(xié)同造型過(guò)程對(duì)用戶透明化,對(duì)各特征(如拉伸、旋轉(zhuǎn)等)重構(gòu)統(tǒng)一參數(shù)化驅(qū)動(dòng)表達(dá)式,使得特征重構(gòu)過(guò)程與特征構(gòu)建方式無(wú)關(guān)。
(2)特征的坐標(biāo)轉(zhuǎn)換。本設(shè)計(jì)系統(tǒng)采用笛卡爾坐標(biāo)系統(tǒng)(Descartes Coordinates),并遵守右手準(zhǔn)則,為簡(jiǎn)化某些局部特征和實(shí)體的構(gòu)造,系統(tǒng)同時(shí)使用絕對(duì)坐標(biāo)系(ACS)、工作坐標(biāo)系(WCS)和局部坐標(biāo)系(LCS)。在協(xié)同幾何造型時(shí),特征消息封裝中的定形和定位參數(shù)均用相對(duì)WCS進(jìn)行描述。但協(xié)同客戶端當(dāng)前的WCS與操作發(fā)起站點(diǎn)的WCS往往不一致。在特征異地重構(gòu)時(shí),為保持特征的LCS與WCS相對(duì)位置不變,需要在特征重構(gòu)前計(jì)算出當(dāng)前系統(tǒng)的 WCS位置,再對(duì)定形和定位參數(shù)進(jìn)行坐標(biāo)變換,此問(wèn)題可轉(zhuǎn)化為求ACS中WCS經(jīng)一系列幾何變換后的新位置,具體求解過(guò)程可用矩陣?yán)碚撏瓿伞?/p>
(3)特征的重構(gòu)定位。在零件造型過(guò)程中,通常要引用一些幾何元素來(lái)輔助實(shí)現(xiàn)特征定位,如拉伸特征參考面、圓角特征參考邊等,然后再以被引用對(duì)象為基準(zhǔn)設(shè)置特征的位置參數(shù)或約束關(guān)系。根據(jù)被引用對(duì)象在特征構(gòu)建中作用不同,分參照定位對(duì)象和操作定位對(duì)象2類。重構(gòu)定位的關(guān)鍵在于高效可靠的對(duì)象引用。
協(xié)同CAD造型采用復(fù)制式體系架構(gòu),每個(gè)協(xié)同應(yīng)用程序維護(hù)各本地模型,通過(guò)造型操作消息實(shí)現(xiàn)模型狀態(tài)的增量式更新與同步,維護(hù)各分布式客戶端模型對(duì)象的一致性,其難點(diǎn)是讓計(jì)算機(jī)自動(dòng)引用對(duì)象。因此,必須有一種可靠的對(duì)象引用機(jī)制來(lái)實(shí)現(xiàn)特征的重構(gòu)定位。本文針對(duì)復(fù)制式協(xié)同CAD系統(tǒng)的特點(diǎn),將對(duì)象引用分為直接引用和間接引用2種,并針對(duì)2類特點(diǎn)采用對(duì)象命名映射[6]和幾何匹配相結(jié)合的方法來(lái)解決協(xié)同環(huán)境下的對(duì)象引用問(wèn)題。
直接引用對(duì)象是指在協(xié)同造型中對(duì)零件或特征進(jìn)行編輯時(shí)的操作對(duì)象,主要包括零件對(duì)象和特征對(duì)象。直接引用對(duì)象通過(guò)對(duì)象標(biāo)識(shí)號(hào)來(lái)引用,較容易實(shí)現(xiàn),因此采用對(duì)象命名映射機(jī)制來(lái)實(shí)現(xiàn)復(fù)制模型之間直接對(duì)象引用。間接引用對(duì)象是指協(xié)同造型中特征創(chuàng)建時(shí)作為輔助參照或操作對(duì)象的拓?fù)鋵?duì)象,主要包括參照定位對(duì)象和操作定位對(duì)象。本文在支持八叉樹(shù)場(chǎng)景管理的CAD系統(tǒng)中采用基于面向?qū)ο蟮膭?dòng)態(tài)八叉樹(shù)幾何匹配算法來(lái)實(shí)現(xiàn)復(fù)制模型之間的間接對(duì)象引用。
幾何匹配算法框架:根據(jù)網(wǎng)絡(luò)消息確定一個(gè)被引用對(duì)象時(shí),首先給定形狀單元的拾取類型、被引用對(duì)象的幾何特征值及設(shè)定特征點(diǎn);再以特征點(diǎn)為中心,構(gòu)建一個(gè) AABB層次包圍盒[7-8],即特征包圍盒,邊長(zhǎng)可根據(jù)當(dāng)前場(chǎng)景的繪制精度設(shè)定,通常取5個(gè)單位;最后利用特征包圍盒與面向?qū)ο髣?dòng)態(tài)八叉樹(shù)各節(jié)點(diǎn)碰撞求交確定被引用對(duì)象的本地標(biāo)識(shí)號(hào)。具體流程如圖4所示,包含3個(gè)階段:碰撞檢測(cè)、類型篩選以及對(duì)象判定。
圖4 基于面向?qū)ο蟮膭?dòng)態(tài)八叉樹(shù)幾何匹配算法
該拾取算法充分利用八叉樹(shù)的快速搜索特性,對(duì)象辨識(shí)只需匹配一個(gè)特征點(diǎn),因而使匹配算法響應(yīng)速度較快。由于算法不依賴拓?fù)鋵?shí)體的命名、操作順序和設(shè)計(jì)初始狀態(tài),因此,對(duì)“遲加入”客戶端同樣適用。
為滿足網(wǎng)絡(luò)化幾何建模的特殊需求,本文開(kāi)發(fā)了基于開(kāi)源內(nèi)核Open CADCADE的協(xié)同CAD基礎(chǔ)平臺(tái)開(kāi)發(fā)框架——復(fù)制式協(xié)同CAD系統(tǒng)。
如圖5所示,以一個(gè)簡(jiǎn)單的零件為例來(lái)說(shuō)明協(xié)同CAD軟件基于IFDE的實(shí)時(shí)協(xié)同造型過(guò)程。實(shí)例零件由拉伸、偏置切除、通孔、圓周陣列等基本特征組成,造型過(guò)程同普通CAD系統(tǒng)操作。
以零件的協(xié)同特征創(chuàng)建為例分析隱式特征數(shù)據(jù)交換過(guò)程,假設(shè)當(dāng)前設(shè)計(jì)組內(nèi)成員完成特征操作步驟④。此時(shí)協(xié)同用戶A擁有系統(tǒng)操作訪問(wèn)控制權(quán)并在拉伸基體上創(chuàng)建偏置切除5 mm操作特征,如圖6所示,選擇XY平面上的一個(gè)閉合的草繪輪廓作為切除輪廓,然后使用拉伸切除特征創(chuàng)建工具,在其屬性選擇器里設(shè)置好相關(guān)參數(shù),在鼠標(biāo)或者鍵盤操作觸發(fā)該特征的OnDone()函數(shù),本地特征造型請(qǐng)求立即執(zhí)行,同時(shí),系統(tǒng)根據(jù)構(gòu)建方式調(diào)用相應(yīng)的特征消息類,提取此特征的隱式表達(dá)參數(shù),對(duì)特征消息類進(jìn)行實(shí)例化并對(duì)其賦值,經(jīng)二進(jìn)制序列化后利用Socket發(fā)送至多播組。
圖5 協(xié)同零件特征造型過(guò)程圖
圖6 偏置切除網(wǎng)絡(luò)特征創(chuàng)建
遠(yuǎn)程客戶端B在收到多播消息后反序列化,調(diào)用消息解析器進(jìn)行解析并識(shí)別特征操作,提取特征的隱式表達(dá)參數(shù),經(jīng)并發(fā)控制機(jī)制確認(rèn)無(wú)沖突發(fā)生后,網(wǎng)絡(luò)特征重構(gòu)模塊根據(jù)拉伸切除特征的重構(gòu)表達(dá)式對(duì)其隱式參數(shù)進(jìn)行標(biāo)準(zhǔn)化處理,調(diào)用特征操作重構(gòu)類進(jìn)行實(shí)例化,然后調(diào)用本地的幾何建模引擎來(lái)重構(gòu)該特征。若協(xié)同用戶對(duì)操作過(guò)程不滿意,在取得系統(tǒng)操作訪問(wèn)控制權(quán)后,可以對(duì)協(xié)同特征進(jìn)行編輯和刪除,其過(guò)程同上。
上述過(guò)程中每次交換消息只記錄隱式特征信息,模型數(shù)據(jù)交換的數(shù)據(jù)量很小,經(jīng)多播數(shù)據(jù)測(cè)試工具M(jìn)ultiCast Test測(cè)試一般在10~30 K左右。若采用中間文件STEP文件方式,數(shù)據(jù)量則在1 M(1 024 k)左右,顯式實(shí)體特征則要200 k左右。
為更好地測(cè)試IFDE性能,進(jìn)行模擬測(cè)試分析,即對(duì)復(fù)制式協(xié)同CAD系統(tǒng)采用基于3種不同表達(dá)(中間文件、顯式實(shí)體特征和隱式特征)的數(shù)據(jù)交換法引起的初始化延遲時(shí)間和網(wǎng)絡(luò)負(fù)荷變化進(jìn)行近似模擬測(cè)試,測(cè)試結(jié)果數(shù)值取模擬測(cè)試20次并去掉3個(gè)最高和最低數(shù)值后的算術(shù)平均值。
測(cè)試條件為:協(xié)同CAD系統(tǒng)成員相對(duì)穩(wěn)定,在設(shè)計(jì)過(guò)程中只有少數(shù)成員加入或者退出;測(cè)試場(chǎng)景為二維草圖設(shè)計(jì);場(chǎng)景數(shù)據(jù)請(qǐng)求策略采用“立即請(qǐng)求策略”;同一用戶隨機(jī)2次操作的時(shí)間間隔為0.8~1.0 s;網(wǎng)絡(luò)延遲20~150 ms,且假設(shè)數(shù)據(jù)不丟失。
圖7所示為3種數(shù)據(jù)傳輸方法的初始化延遲對(duì)比圖,用戶的初始化延遲采用“最快響應(yīng)法”,即用戶發(fā)送請(qǐng)求到接收到響應(yīng)數(shù)據(jù)之間的時(shí)間間隔來(lái)衡量,由圖7可知,中間文件和實(shí)體特征的方法延遲時(shí)間大約為10 000 ms和2 000 ms,延遲較多。而隱式特征方法,請(qǐng)求和響應(yīng)數(shù)據(jù)均由專門多播組承擔(dān),一開(kāi)始可能需要進(jìn)行服務(wù)器選擇,一旦服務(wù)器組形成后,延遲將會(huì)逐漸變小,平均延時(shí)只有500 ms,響應(yīng)速度極快。圖8所示為測(cè)試某一時(shí)間段內(nèi)以上3種數(shù)據(jù)交換方法在進(jìn)行相同操作時(shí)累計(jì)傳輸?shù)臄?shù)據(jù)對(duì)比圖。
圖7 初始化延時(shí)對(duì)比圖
圖8 累計(jì)數(shù)據(jù)傳輸量對(duì)比圖
由圖8可知,在一段時(shí)間內(nèi)完成相同功能時(shí)中間文件需要傳輸?shù)臄?shù)據(jù)量極大,實(shí)體特征方法的累計(jì)數(shù)據(jù)量次之,隱式特征方法數(shù)據(jù)量最小,因此即使是在用戶數(shù)較多、操作頻繁時(shí)也能保證系統(tǒng)的低網(wǎng)絡(luò)負(fù)荷。
由上述測(cè)試結(jié)果可知,基于隱式特征表達(dá)的數(shù)據(jù)交換方法延遲時(shí)間短,網(wǎng)絡(luò)負(fù)荷低,能較好地滿足實(shí)時(shí)性要求。
本文對(duì)復(fù)制式協(xié)同CAD環(huán)境下數(shù)據(jù)交換方法進(jìn)行了深入的研究,提出了一種基于隱式特征表達(dá)的協(xié)同數(shù)據(jù)交換方法(IFDE)。該方法利用面向?qū)ο蟮奶卣飨㈩惙庋b、網(wǎng)絡(luò)序列化傳輸以及語(yǔ)義特征重構(gòu)技術(shù),增量式交換協(xié)同操作特征的隱式表達(dá)信息,而將特征的幾何拓?fù)湫畔⒔挥山邮斩讼到y(tǒng)的建模引擎重構(gòu)實(shí)現(xiàn)。該方法極大地減少了網(wǎng)絡(luò)數(shù)據(jù)傳輸,降低了協(xié)同過(guò)程中網(wǎng)絡(luò)傳輸延時(shí),提高了實(shí)時(shí)性。
[1]Li W D,Ong S K,F(xiàn)uh J Y H,et al.Feature-based design in a distributed and collaborative environment[J].Computer-Aided Design,2003,36(9):775-797.
[2]張必強(qiáng),邢 淵,阮雪榆.分布式同步協(xié)同設(shè)計(jì)中基于三角網(wǎng)格 模 型 的 實(shí) 時(shí) 傳 輸 [J].中 國(guó) 機(jī) 械 工 程,2003,13(4):305-308.
[3]劉云華,陳立平,鐘 毅.利用設(shè)計(jì)歷史實(shí)現(xiàn)異構(gòu)CAD系統(tǒng)特 征 信 息 交 換 [J].中 國(guó) 機(jī) 械 工 程,2003,14(21):1845-1847.
[4]汪慧芬,張友良,曹 健.基于特征的協(xié)同設(shè)計(jì)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2001,13(4):367.
[5]黃素英,王周敬.面向?qū)ο罂蚣茉谛畔⑾到y(tǒng)開(kāi)發(fā)中的應(yīng)用[J].合 肥 工 業(yè) 大 學(xué) 學(xué) 報(bào):自 然 科 學(xué) 版,2003,26(Z1):896-898.
[6]彭 維.網(wǎng)絡(luò)化協(xié)同CAD系統(tǒng)的關(guān)鍵技術(shù)研究[D].西安:西北工業(yè)大學(xué),2001.
[7]高玉琴,何云峰,于俊清.改進(jìn)的基于AABB包圍盒的碰撞檢測(cè)算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(16):3815-3817.
[8]Bergen G V D.Efficient collision detection of complex deformable models using AABB trees[J].Journals of Graphics Tools,1997,2(4):1-14.