田建立,何留杰
TIAN Jian-li, HE Liu-jie
(黃河科技學(xué)院,鄭州 450006)
CAD技術(shù)從誕生至今己有三十多年的歷史,其建模技術(shù)經(jīng)歷了二維繪圖、線(xiàn)框模型、自由曲面模型、實(shí)體造型、特征造型等重要發(fā)展階段,其間還伴隨著參數(shù)化、變量化、尺寸驅(qū)動(dòng)等技術(shù)的融入。CAD系統(tǒng)的開(kāi)發(fā)正伴隨著計(jì)算機(jī)軟硬件技術(shù)的高速發(fā)展向著更高、更深層次方向發(fā)展。當(dāng)今比較流行的CAD幾何平臺(tái)很多,主要有ACIS,PARASOLID, CAS.CADE,Pelorus,DESIGNBASE等。
CAD幾何平臺(tái)正在向著更深、更高層次發(fā)展,同時(shí)不斷融入計(jì)算機(jī)軟件新技術(shù),并呈現(xiàn)出開(kāi)放化、多元化發(fā)展趨勢(shì)。支持多種主流的計(jì)算機(jī)操作系統(tǒng)平臺(tái),包括Windows 98&NT,Apple Power Macintosh,UNIX工作站(如Sun,SGI,DEC Alpha,HP 9000,IBM RS/6000等)。面向?qū)ο蠹夹g(shù)具有封裝性、多態(tài)性、繼承性,使對(duì)象模塊化、即插化,從而提高應(yīng)用開(kāi)發(fā)和軟件維護(hù)效率,增強(qiáng)了代碼的可重用性和互操作能力,最終達(dá)到改善應(yīng)用整體質(zhì)量的目標(biāo)[1]。
ACIS是美國(guó)Spatial Technology公司推出的面向?qū)ο蟮娜S幾何造型平臺(tái),它集曲面、線(xiàn)框和實(shí)體造型于一體,并允許這三種表示共存于統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)中。ACIS是面向?qū)ο蟮挠?5個(gè)DLL組成的C++庫(kù),為各種3D造型應(yīng)用開(kāi)發(fā)者提供了豐富的復(fù)雜模型構(gòu)造與操作功能,如過(guò)渡、掃掠、蒙皮、放樣、覆蓋、等距、分割、縫合等等。Spatial Technology公司成立于1986年,到目前為止,ACIS 3D Toolkit在世界上已有380多個(gè)基于它的開(kāi)發(fā)商,并有220多個(gè)基于它的商業(yè)應(yīng)用,最終用戶(hù)已達(dá)一百八十萬(wàn)家左右。許多著名的大型系統(tǒng)都是以ACIS作為造型內(nèi)核,如AutoCAD,CADKEY,Mechanical Desktop,Bravo,TriSpectives,TurboCAD,Solid Modeler,Vellum Solid等[2]。

圖1 ACIS幾何總線(xiàn)
ACIS幾何總線(xiàn)由其開(kāi)放體系結(jié)構(gòu)和它的SAT構(gòu)成,其核心提供了一個(gè)幾何總線(xiàn)(ACIS geometry bus),以連接其它的外殼(Husk)與應(yīng)用程序(如圖1所示)。它使線(xiàn)框、曲面、實(shí)體的幾何與拓?fù)淠P蛿?shù)據(jù)能夠自由交換,當(dāng)SAT模型在總線(xiàn)上流動(dòng)時(shí),不需任何翻譯與解釋。產(chǎn)品模型從概念設(shè)計(jì)到制造過(guò)程,可能使用多個(gè)商家提供的應(yīng)用,通過(guò)幾何總線(xiàn)擺脫了數(shù)據(jù)翻譯的負(fù)擔(dān),無(wú)須為模型的互操作做任何工作。
如圖2所示,基于A(yíng)CIS的C++接口有3個(gè):DI函數(shù)、API函數(shù)和C++類(lèi)。開(kāi)發(fā)者可以通過(guò)創(chuàng)建自己的API和類(lèi)來(lái)擴(kuò)展ACIS的功能[3~5]。
3.1.1 DI函數(shù)((Direct Interface)
DI函數(shù)提供了不依賴(lài)于A(yíng)PI而對(duì)ACIS造型功能可直接訪(fǎng)問(wèn)的接口,與API不同的是,這些函數(shù)在各版本中可能有變化。DI函數(shù)并不能訪(fǎng)問(wèn)ACIS中的所有功能,它們通常用于那些并不改變模型的操作,如查詢(xún)等功能。另外,DI函數(shù)提供了底層樣條庫(kù)的接口。

圖2 C++應(yīng)用與ACIS的C++接口
3.1.2 API函數(shù)(Application Procedural Interface)
API函數(shù)提供了應(yīng)用與ACIS間的主要接口。應(yīng)用通過(guò)調(diào)用API函數(shù)創(chuàng)建、修改或恢復(fù)數(shù)據(jù),API函數(shù)將造型功能與應(yīng)用支持特性集成起來(lái),應(yīng)用支持特性如變量錯(cuò)誤檢查和回溯。當(dāng)在A(yíng)PI例程中發(fā)生錯(cuò)誤時(shí),ACIS可立即自動(dòng)回溯到調(diào)用此API例程前的狀態(tài),從而保證模型不會(huì)崩潰。無(wú)論ACIS底層的數(shù)據(jù)結(jié)構(gòu)或函數(shù)如何修改,這些API函數(shù)在每一版本中均保持不變。
3.1.3 類(lèi)(Class)
類(lèi)是ACIS以C++類(lèi)的形式提供的開(kāi)發(fā)接口,可定義模型的幾何、拓?fù)湟约皩?shí)現(xiàn)其他功能。在應(yīng)用中,可直接通過(guò)類(lèi)的公共(public)數(shù)據(jù)成員和保護(hù)(protected)數(shù)據(jù)成員以及成員函數(shù)(member function)與ACIS相互作用。開(kāi)發(fā)者也可以根據(jù)自己系統(tǒng)的需要從ACIS類(lèi)派生出自己的應(yīng)用類(lèi),類(lèi)接口在各版本中可能有變化。
MFC由將近200個(gè)C++類(lèi)組成。MFC提供了許多Windows程序所共有的任務(wù),為代碼重用提供了便利。應(yīng)用從MFC繼承所需的功能?;绢?lèi)庫(kù)所提供的界面在很大程度上將實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),因此使用MFC的應(yīng)用都非常精練,并且更易于將基于MFC的應(yīng)用升級(jí)到新的Windows版本。在近200個(gè)MFC類(lèi)中,有4個(gè)類(lèi)對(duì)ACISMFC是極其重要的,即Cdocument,Cwnd,CwinApp和ColeServerItem。ACIS AppWizard從這4個(gè)類(lèi)派生自己的類(lèi)。這些新類(lèi)的不同之處在于它們有指向ACIS MFC類(lèi)的指針,從而這些指針指向ACIS的類(lèi)。在圖3中ACIS AppWizard創(chuàng)建了“My”工程。從MFC類(lèi)派生的4個(gè)新類(lèi)是CmyDoc,CmyView,CmyApp和可選的CmyServer。
圖4中AMFC(ACIS Microsoft Foundation Class Component)是專(zhuān)門(mén)為Microsoft Windows平臺(tái)提供的與MFC的接口,其中大部分的類(lèi)是從MFC派生出的。此外,ACIS給出了一些工具類(lèi)來(lái)提供多數(shù)應(yīng)用所需的操作,如camera movement(模型觀(guān)察),mouse movement(鼠標(biāo)消息響應(yīng)),dragging operations(拖曳操作),Boolean operations(布爾操作),drawing lines,circles(畫(huà)線(xiàn)、圓),and fillets(倒角)等等。
ACIS MFC的類(lèi)和函數(shù)有雙重作用,一是為基于MFC的ACIS應(yīng)用程序提供初始的框架結(jié)構(gòu),二是提供ACIS與MFC的接口。由ACIS MFC提供的工具類(lèi)都是從MouseTool派生而來(lái)的,而MouseTool又是從input_event_handler派生的。input_event_handler類(lèi)處理鼠標(biāo)按下,抬起或雙擊事件。大多數(shù)的工具同時(shí)還與rubberband_driver類(lèi)集成來(lái)處理鼠標(biāo)移動(dòng)事件。

圖3 ACIS MFC與Microsoft Foundation Class的關(guān)系
ACIS MFC中提供的工具用來(lái)創(chuàng)建幾何模型(畫(huà)線(xiàn)、圓等)及管理視窗。工具棧用來(lái)指定激活的工具,同時(shí)可以將工具操作中斷和懸掛起來(lái)以執(zhí)行其它操作。所懸掛的操作在某個(gè)時(shí)刻可以恢復(fù)。工具棧的管理通過(guò)ACIS MFC的工具功用函數(shù)實(shí)現(xiàn)。

圖4 工具類(lèi)的派生譜及功用函數(shù)
Scheme是一種解釋性的語(yǔ)言,由LISP派生而來(lái)。它提供快速、易于實(shí)現(xiàn)的原型實(shí)現(xiàn)功能,其運(yùn)行效率非常高,許多基于A(yíng)CIS的開(kāi)發(fā)人員使用Scheme后感到許多情況下無(wú)需再把其Scheme代碼翻譯成C++或其他編譯語(yǔ)言代碼。
由于Scheme是解釋性的,所以其過(guò)程沒(méi)有編譯和調(diào)試階段,并且可以用來(lái)培訓(xùn)。Scheme尤其適合于控制像用戶(hù)界面指令處理這樣的任務(wù)。Scheme接口是一個(gè)允許基于Scheme的應(yīng)用和ACIS功能交互的函數(shù)集,通過(guò)ACIS Scheme解釋器處理Scheme命令。圖5表示了Scheme應(yīng)用構(gòu)建于A(yíng)CIS之上,通過(guò)ACIS Scheme解釋器與造型平臺(tái)交互的情況。與ACIS其他部分的交互用C++調(diào)用。

圖5 Scheme與ACIS的應(yīng)用接口
ACIS產(chǎn)品由兩部分構(gòu)成:核心模塊(ACIS 3D Toolkit)和多種可選模塊(Optional Husks)。在核心模塊中提供了基本、通用功能,而在可選模塊中提供了一些更為高級(jí)的和更專(zhuān)用的功能,其主要功能如下[6]:
可通過(guò)一個(gè)線(xiàn)框或一組邊生成曲面,其方法包括覆蓋(covering)、蒙皮(skinning)、放樣(lofting)、網(wǎng)格曲面(net surfaces)、可變形曲面(deformable surfaces)??勺冃吻媸茿CIS可選模塊DS(Deformable Surface component)中提供的功能;變形造型是一種交互定義自由曲線(xiàn)曲面的方法,而不是一種曲線(xiàn)曲面的表示方法,它是一種基于能量?jī)?yōu)化策略的方法,用戶(hù)可通過(guò)施加負(fù)載和約束來(lái)修改曲線(xiàn)或曲面的形狀。
求交器(intersector)用于判斷曲線(xiàn)和曲面是否相交并可求出交點(diǎn)。求交是通過(guò)底層的C++類(lèi)實(shí)現(xiàn)的,用于對(duì)模型的幾何進(jìn)行操作,可進(jìn)行曲線(xiàn)和曲線(xiàn)、曲線(xiàn)和曲面、曲面和曲面的求交運(yùn)算;布爾運(yùn)算(Booleanoperations)包括并、交、差運(yùn)算;縫合(stitching)是指通過(guò)共邊或共頂點(diǎn)縫合兩個(gè)體。
ACIS具有強(qiáng)大而豐富的過(guò)渡功能,標(biāo)準(zhǔn)的過(guò)渡功能內(nèi)置在A(yíng)CIS核心模塊中,而更高級(jí)的過(guò)渡功能在可選模塊Advanced Blending Husk(ABH)中提供。
ACIS的模型分析功能主要包括:對(duì)象關(guān)系(object relationship)、物理特性(physical properties)、單元拓?fù)?cellular topology)、幾何分析(geometric analysis)和光線(xiàn)測(cè)試(ray testing)等。
ACIS的顯示方式包括線(xiàn)框圖、多面體圖、多面體消隱圖、光照?qǐng)D。在交互方面提供了拾取和過(guò)濾(picking and filtering)、橡皮線(xiàn)(rubberbanding)、網(wǎng)格管理(grid management)等功能。
本文介紹了CAD幾何平臺(tái)ACIS的概況及發(fā)展趨勢(shì)。ACIS幾何平臺(tái)的體系結(jié)構(gòu)包括ACIS幾何總線(xiàn),ACIS的開(kāi)發(fā)接口一一C++接口、MFC接口、Scheme接口,分析了ACIS的主要功能。為在A(yíng)CIS上開(kāi)發(fā)超人2000CAD系統(tǒng)提供了基礎(chǔ)。
[1]Faux I D,Pratt M J.Computational Geometry for Design and Manufacture[M].Ellis Horwood,1979.
[2]Duncan J P,Mair S G.Sculptured Surfaces in Engineering and Medicine[M].Cambridge University Press,1983.
[3]Duncan J P,Law K K,Computer-Aided Sculpture[M].Cambridge University Press,1989.
[4]周儒榮.關(guān)于軟件國(guó)產(chǎn)化的認(rèn)識(shí)與實(shí)踐[J].航空制造工程,1991,2:6-7.
[5]周儒榮.CAD/CAM軟件開(kāi)發(fā)的回顧與思考[J].航空制造工程,1992,10:25-26.
[6]成基華,范玉青,袁國(guó)平,等.CAD/CAM開(kāi)發(fā)平臺(tái)及其發(fā)展趨勢(shì)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2000,12(2):154-159.