田建立,何留杰
TIAN Jian-li, HE Liu-jie
(黃河科技學(xué)院,鄭州 450006)
CAD技術(shù)從誕生至今己有三十多年的歷史,其建模技術(shù)經(jīng)歷了二維繪圖、線框模型、自由曲面模型、實體造型、特征造型等重要發(fā)展階段,其間還伴隨著參數(shù)化、變量化、尺寸驅(qū)動等技術(shù)的融入。CAD系統(tǒng)的開發(fā)正伴隨著計算機(jī)軟硬件技術(shù)的高速發(fā)展向著更高、更深層次方向發(fā)展。當(dāng)今比較流行的CAD幾何平臺很多,主要有ACIS,PARASOLID, CAS.CADE,Pelorus,DESIGNBASE等。
CAD幾何平臺正在向著更深、更高層次發(fā)展,同時不斷融入計算機(jī)軟件新技術(shù),并呈現(xiàn)出開放化、多元化發(fā)展趨勢。支持多種主流的計算機(jī)操作系統(tǒng)平臺,包括Windows 98&NT,Apple Power Macintosh,UNIX工作站(如Sun,SGI,DEC Alpha,HP 9000,IBM RS/6000等)。面向?qū)ο蠹夹g(shù)具有封裝性、多態(tài)性、繼承性,使對象模塊化、即插化,從而提高應(yīng)用開發(fā)和軟件維護(hù)效率,增強(qiáng)了代碼的可重用性和互操作能力,最終達(dá)到改善應(yīng)用整體質(zhì)量的目標(biāo)[1]。
ACIS是美國Spatial Technology公司推出的面向?qū)ο蟮娜S幾何造型平臺,它集曲面、線框和實體造型于一體,并允許這三種表示共存于統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)中。ACIS是面向?qū)ο蟮挠?5個DLL組成的C++庫,為各種3D造型應(yīng)用開發(fā)者提供了豐富的復(fù)雜模型構(gòu)造與操作功能,如過渡、掃掠、蒙皮、放樣、覆蓋、等距、分割、縫合等等。Spatial Technology公司成立于1986年,到目前為止,ACIS 3D Toolkit在世界上已有380多個基于它的開發(fā)商,并有220多個基于它的商業(yè)應(yīng)用,最終用戶已達(dá)一百八十萬家左右。許多著名的大型系統(tǒng)都是以ACIS作為造型內(nèi)核,如AutoCAD,CADKEY,Mechanical Desktop,Bravo,TriSpectives,TurboCAD,Solid Modeler,Vellum Solid等[2]。
圖1 ACIS幾何總線
ACIS幾何總線由其開放體系結(jié)構(gòu)和它的SAT構(gòu)成,其核心提供了一個幾何總線(ACIS geometry bus),以連接其它的外殼(Husk)與應(yīng)用程序(如圖1所示)。它使線框、曲面、實體的幾何與拓?fù)淠P蛿?shù)據(jù)能夠自由交換,當(dāng)SAT模型在總線上流動時,不需任何翻譯與解釋。產(chǎn)品模型從概念設(shè)計到制造過程,可能使用多個商家提供的應(yīng)用,通過幾何總線擺脫了數(shù)據(jù)翻譯的負(fù)擔(dān),無須為模型的互操作做任何工作。
如圖2所示,基于ACIS的C++接口有3個:DI函數(shù)、API函數(shù)和C++類。開發(fā)者可以通過創(chuàng)建自己的API和類來擴(kuò)展ACIS的功能[3~5]。
3.1.1 DI函數(shù)((Direct Interface)
DI函數(shù)提供了不依賴于API而對ACIS造型功能可直接訪問的接口,與API不同的是,這些函數(shù)在各版本中可能有變化。DI函數(shù)并不能訪問ACIS中的所有功能,它們通常用于那些并不改變模型的操作,如查詢等功能。另外,DI函數(shù)提供了底層樣條庫的接口。
圖2 C++應(yīng)用與ACIS的C++接口
3.1.2 API函數(shù)(Application Procedural Interface)
API函數(shù)提供了應(yīng)用與ACIS間的主要接口。應(yīng)用通過調(diào)用API函數(shù)創(chuàng)建、修改或恢復(fù)數(shù)據(jù),API函數(shù)將造型功能與應(yīng)用支持特性集成起來,應(yīng)用支持特性如變量錯誤檢查和回溯。當(dāng)在API例程中發(fā)生錯誤時,ACIS可立即自動回溯到調(diào)用此API例程前的狀態(tài),從而保證模型不會崩潰。無論ACIS底層的數(shù)據(jù)結(jié)構(gòu)或函數(shù)如何修改,這些API函數(shù)在每一版本中均保持不變。
3.1.3 類(Class)
類是ACIS以C++類的形式提供的開發(fā)接口,可定義模型的幾何、拓?fù)湟约皩崿F(xiàn)其他功能。在應(yīng)用中,可直接通過類的公共(public)數(shù)據(jù)成員和保護(hù)(protected)數(shù)據(jù)成員以及成員函數(shù)(member function)與ACIS相互作用。開發(fā)者也可以根據(jù)自己系統(tǒng)的需要從ACIS類派生出自己的應(yīng)用類,類接口在各版本中可能有變化。
MFC由將近200個C++類組成。MFC提供了許多Windows程序所共有的任務(wù),為代碼重用提供了便利。應(yīng)用從MFC繼承所需的功能?;绢悗焖峁┑慕缑嬖诤艽蟪潭壬蠈崿F(xiàn)細(xì)節(jié)隱藏起來,因此使用MFC的應(yīng)用都非常精練,并且更易于將基于MFC的應(yīng)用升級到新的Windows版本。在近200個MFC類中,有4個類對ACISMFC是極其重要的,即Cdocument,Cwnd,CwinApp和ColeServerItem。ACIS AppWizard從這4個類派生自己的類。這些新類的不同之處在于它們有指向ACIS MFC類的指針,從而這些指針指向ACIS的類。在圖3中ACIS AppWizard創(chuàng)建了“My”工程。從MFC類派生的4個新類是CmyDoc,CmyView,CmyApp和可選的CmyServer。
圖4中AMFC(ACIS Microsoft Foundation Class Component)是專門為Microsoft Windows平臺提供的與MFC的接口,其中大部分的類是從MFC派生出的。此外,ACIS給出了一些工具類來提供多數(shù)應(yīng)用所需的操作,如camera movement(模型觀察),mouse movement(鼠標(biāo)消息響應(yīng)),dragging operations(拖曳操作),Boolean operations(布爾操作),drawing lines,circles(畫線、圓),and fillets(倒角)等等。
ACIS MFC的類和函數(shù)有雙重作用,一是為基于MFC的ACIS應(yīng)用程序提供初始的框架結(jié)構(gòu),二是提供ACIS與MFC的接口。由ACIS MFC提供的工具類都是從MouseTool派生而來的,而MouseTool又是從input_event_handler派生的。input_event_handler類處理鼠標(biāo)按下,抬起或雙擊事件。大多數(shù)的工具同時還與rubberband_driver類集成來處理鼠標(biāo)移動事件。
圖3 ACIS MFC與Microsoft Foundation Class的關(guān)系
ACIS MFC中提供的工具用來創(chuàng)建幾何模型(畫線、圓等)及管理視窗。工具棧用來指定激活的工具,同時可以將工具操作中斷和懸掛起來以執(zhí)行其它操作。所懸掛的操作在某個時刻可以恢復(fù)。工具棧的管理通過ACIS MFC的工具功用函數(shù)實現(xiàn)。
圖4 工具類的派生譜及功用函數(shù)
Scheme是一種解釋性的語言,由LISP派生而來。它提供快速、易于實現(xiàn)的原型實現(xiàn)功能,其運行效率非常高,許多基于ACIS的開發(fā)人員使用Scheme后感到許多情況下無需再把其Scheme代碼翻譯成C++或其他編譯語言代碼。
由于Scheme是解釋性的,所以其過程沒有編譯和調(diào)試階段,并且可以用來培訓(xùn)。Scheme尤其適合于控制像用戶界面指令處理這樣的任務(wù)。Scheme接口是一個允許基于Scheme的應(yīng)用和ACIS功能交互的函數(shù)集,通過ACIS Scheme解釋器處理Scheme命令。圖5表示了Scheme應(yīng)用構(gòu)建于ACIS之上,通過ACIS Scheme解釋器與造型平臺交互的情況。與ACIS其他部分的交互用C++調(diào)用。
圖5 Scheme與ACIS的應(yīng)用接口
ACIS產(chǎn)品由兩部分構(gòu)成:核心模塊(ACIS 3D Toolkit)和多種可選模塊(Optional Husks)。在核心模塊中提供了基本、通用功能,而在可選模塊中提供了一些更為高級的和更專用的功能,其主要功能如下[6]:
可通過一個線框或一組邊生成曲面,其方法包括覆蓋(covering)、蒙皮(skinning)、放樣(lofting)、網(wǎng)格曲面(net surfaces)、可變形曲面(deformable surfaces)??勺冃吻媸茿CIS可選模塊DS(Deformable Surface component)中提供的功能;變形造型是一種交互定義自由曲線曲面的方法,而不是一種曲線曲面的表示方法,它是一種基于能量優(yōu)化策略的方法,用戶可通過施加負(fù)載和約束來修改曲線或曲面的形狀。
求交器(intersector)用于判斷曲線和曲面是否相交并可求出交點。求交是通過底層的C++類實現(xiàn)的,用于對模型的幾何進(jìn)行操作,可進(jìn)行曲線和曲線、曲線和曲面、曲面和曲面的求交運算;布爾運算(Booleanoperations)包括并、交、差運算;縫合(stitching)是指通過共邊或共頂點縫合兩個體。
ACIS具有強(qiáng)大而豐富的過渡功能,標(biāo)準(zhǔn)的過渡功能內(nèi)置在ACIS核心模塊中,而更高級的過渡功能在可選模塊Advanced Blending Husk(ABH)中提供。
ACIS的模型分析功能主要包括:對象關(guān)系(object relationship)、物理特性(physical properties)、單元拓?fù)?cellular topology)、幾何分析(geometric analysis)和光線測試(ray testing)等。
ACIS的顯示方式包括線框圖、多面體圖、多面體消隱圖、光照圖。在交互方面提供了拾取和過濾(picking and filtering)、橡皮線(rubberbanding)、網(wǎng)格管理(grid management)等功能。
本文介紹了CAD幾何平臺ACIS的概況及發(fā)展趨勢。ACIS幾何平臺的體系結(jié)構(gòu)包括ACIS幾何總線,ACIS的開發(fā)接口一一C++接口、MFC接口、Scheme接口,分析了ACIS的主要功能。為在ACIS上開發(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)于軟件國產(chǎn)化的認(rèn)識與實踐[J].航空制造工程,1991,2:6-7.
[5]周儒榮.CAD/CAM軟件開發(fā)的回顧與思考[J].航空制造工程,1992,10:25-26.
[6]成基華,范玉青,袁國平,等.CAD/CAM開發(fā)平臺及其發(fā)展趨勢[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2000,12(2):154-159.