張博林 黃 勇 宋傳斌
(①航宇救生裝備有限公司,湖北襄樊 441002;②華東交通大學(xué)機(jī)電學(xué)院,江西南昌 330013)
在現(xiàn)代CAD平臺(tái)上進(jìn)行應(yīng)用開(kāi)發(fā)過(guò)程中,隨著對(duì)數(shù)據(jù)信息需求量的增大以及日益繁多的數(shù)據(jù)種類,使得數(shù)據(jù)信息必須從應(yīng)用程序中獨(dú)立出來(lái),把運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù)組成獨(dú)立的數(shù)據(jù)庫(kù)。這樣既有利于應(yīng)用程序和數(shù)據(jù)相對(duì)獨(dú)立,方便數(shù)據(jù)的維護(hù),又有助于不同應(yīng)用程序之間的數(shù)據(jù)共享。
目前,UG平臺(tái)上的UG/Open開(kāi)發(fā)工具沒(méi)有提供直接訪問(wèn)數(shù)據(jù)庫(kù)的接口,極大限制了應(yīng)用系統(tǒng)的開(kāi)發(fā),因此,有必要對(duì)數(shù)據(jù)庫(kù)的開(kāi)發(fā)方法及開(kāi)發(fā)模式(C/S模式)在UG/Open開(kāi)發(fā)中的應(yīng)用進(jìn)行研究。
UG/Open是在UG平臺(tái)上進(jìn)行二次開(kāi)發(fā)的主要工具,使用該工具可以實(shí)現(xiàn)用戶的要求,完成個(gè)性化開(kāi)發(fā),主要包括以下四個(gè)部分:(1)UG/Open API,它提供了直接訪問(wèn)UG的函數(shù)接口;(2)UG/Open Grip,它是早期的UG二次開(kāi)發(fā)語(yǔ)言,適合于在UG中進(jìn)行自動(dòng)化建模,具有簡(jiǎn)單、易懂的特點(diǎn);(3)UG/Open Menu-Script,利用它可以實(shí)現(xiàn)對(duì)UG平臺(tái)上菜單、工具條進(jìn)行定制;(4)UG/Open UIStyler,利用它可以實(shí)現(xiàn)UG界面的可視化編輯,能方便的開(kāi)發(fā)出與UG平臺(tái)一致的交互界面。
(1)兩層C/S模式 是最簡(jiǎn)單的C/S模式,如圖1所示。它是由客戶層和數(shù)據(jù)層組成,當(dāng)客戶層向數(shù)據(jù)層發(fā)送請(qǐng)求時(shí),數(shù)據(jù)層根據(jù)請(qǐng)求做出相應(yīng)的反應(yīng),并把結(jié)果返回給客戶機(jī)。由于客戶層中包含請(qǐng)求服務(wù)的功能,因而,容易形成胖客戶層,導(dǎo)致功能更新繁煩,維護(hù)成本高,運(yùn)行效率低。
該模式的缺點(diǎn)主要是請(qǐng)求服務(wù)的功能安裝在客戶層,不同客戶端應(yīng)用程序安裝在不同的計(jì)算機(jī)上,對(duì)于功能需要經(jīng)常更新的系統(tǒng),升級(jí)、維護(hù)成本較高。
(2)三層C/S模式 為了克服兩層C/S模式的不足,可以將請(qǐng)求服務(wù)功能從客戶層中分離出來(lái),形成業(yè)務(wù)邏輯層。客戶層主要負(fù)責(zé)與用戶的交互,業(yè)務(wù)邏輯層主要完成請(qǐng)求服務(wù)的功能,數(shù)據(jù)層主要用來(lái)存儲(chǔ)程序運(yùn)行所需要的數(shù)據(jù)及運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù),形成三層C/S模式。為了在程序上實(shí)現(xiàn)三層C/S模式,需要有各種技術(shù)的支持,COM組件就是實(shí)現(xiàn)該模式的方式之一。基于COM組件的三層C/S模式如圖2所示。
目前,VC中的MFC是實(shí)現(xiàn)C/S模式的工具之一,但是,UG/Open一直沒(méi)有提供直接訪問(wèn)MFC的方法,在UG/Open應(yīng)用開(kāi)發(fā)中不能直接調(diào)用MFC類庫(kù)。為了開(kāi)發(fā)出用戶需求的應(yīng)用系統(tǒng),實(shí)現(xiàn)C/S模式在UG/Open開(kāi)發(fā)中的應(yīng)用,必須解決UG/Open與MFC的混合開(kāi)發(fā)問(wèn)題,因此,必須對(duì)應(yīng)用程序的結(jié)構(gòu)做出如下改變:
(1)利用應(yīng)用程序向?qū)е械腗FC AppWizard(dll)創(chuàng)建應(yīng)用程序,并在Project name和Location中寫入項(xiàng)目名稱和路徑;
(2)確定程序類型為:Regular DLL using shared MFC DLL;
(3)將 UG/Open API函數(shù)庫(kù)所在路徑加入到Tools/Options菜單Directaries選項(xiàng)卡Include files和Library files欄中;
(4)在Project/Settings菜單Link選項(xiàng)卡Object/library modules欄中加入庫(kù)文件libugopenint.lib和libufun.lib;
(5)在全局對(duì)象類theApp下面添加自定義函數(shù),編寫程序。
(6)編譯、連接。
(7)將產(chǎn)生的dll文件拷貝到startup文件夾中。
(8)如果其它應(yīng)用程序要引用自定義函數(shù),需將產(chǎn)生的lib文件拷貝到該應(yīng)用程序文件夾中,按動(dòng)態(tài)連接庫(kù)方式加以引用。
以下就以漸開(kāi)線直齒輪庫(kù)的建立為例,闡述三層C/S模式在UG/Open參數(shù)化設(shè)計(jì)中的應(yīng)用方法。
該系統(tǒng)采用C/S模式,主要由3個(gè)層次組成:客戶層、業(yè)務(wù)邏輯層和數(shù)據(jù)層??蛻魧又饕瓿色@取用戶輸入的數(shù)據(jù)、齒輪的參數(shù)化設(shè)計(jì)和后臺(tái)數(shù)據(jù)庫(kù)管理的界面。業(yè)務(wù)邏輯層主要完成對(duì)后臺(tái)數(shù)據(jù)庫(kù)的管理,通過(guò)COM組件實(shí)現(xiàn)。數(shù)據(jù)層主要用來(lái)存放直齒輪的相關(guān)信息。系統(tǒng)的總體結(jié)構(gòu)如圖3所示。
直齒輪數(shù)據(jù)庫(kù)中包含7個(gè)屬性,即:齒輪號(hào)、模數(shù)、齒數(shù)、壓力角、齒頂高系數(shù)、徑向間隙系數(shù)、齒寬,如圖4所示。
(1)在自定義目錄下創(chuàng)建startup、application、grip和database四個(gè)文件夾。其中,自定義的菜單及dll文件在startup文件夾中,對(duì)話框文件在application文件夾中,齒輪參數(shù)化設(shè)計(jì)程序在grip文件夾中,齒輪庫(kù)在database文件夾中。
(2)注冊(cè)環(huán)境變量,其中,變量名為UGII_USER_DIR,變量值為自定義目錄,如圖5所示。
(1)菜單的建立
(2)對(duì)話框的建立
該實(shí)例采用UG對(duì)話框與MFC對(duì)話框相結(jié)合的方式,利用UG/Open UIStyle工具與MFC對(duì)話框編輯器進(jìn)行,如圖6和圖7所示。
(1)漸開(kāi)線參數(shù)化程序的UG/Open Grip實(shí)現(xiàn)
(2)利用UG/Open API調(diào)用參數(shù)化設(shè)計(jì)程序
(1)COM組件接口
(2)通過(guò)COM組件對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)
(1)運(yùn)行UG,出現(xiàn)直齒輪庫(kù)菜單,如圖8所示。
(2)選擇漸開(kāi)線直齒輪菜單,彈出主界面,如圖9所示。
(3)選擇漸開(kāi)線直齒輪按鈕,進(jìn)入直齒輪庫(kù),如圖10所示。其中,入庫(kù)和刪除功能通過(guò)調(diào)用COM組件實(shí)現(xiàn),三維模型功能通過(guò)UG/Open實(shí)現(xiàn)。
(4)選擇齒輪號(hào)1和三維模型按鈕,完成從庫(kù)中調(diào)用齒輪號(hào)1的齒輪三維模型,如圖11所示。
本文在UG平臺(tái)上引入了C/S模式的開(kāi)發(fā)思想,總結(jié)出了C/S模式在UG/Open開(kāi)發(fā)中的應(yīng)用方法,并把數(shù)據(jù)庫(kù)通過(guò)三層C/S模式應(yīng)用到了UG/Open開(kāi)發(fā)中,實(shí)現(xiàn)了基于COM組件的三層C/S模式漸開(kāi)線直齒輪庫(kù)的開(kāi)發(fā),為UG平臺(tái)上CAD系統(tǒng)的開(kāi)發(fā)提供了數(shù)據(jù)支持,同時(shí),可為其它方面的UG/Open開(kāi)發(fā)提供參考和借鑒。
[1]董正衛(wèi),等編著.UG/OPEN API編程基礎(chǔ)[M].北京:清華大學(xué)出版社,2002.
[2]王慶林編著.UG/Open GRIP實(shí)用編程基礎(chǔ)[M].北京:清華大學(xué)出版社,2002.
[3]任哲,等編著.MFC Windows應(yīng)用程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[4]黃勇,張博林.MFC在UG二次開(kāi)發(fā)中的應(yīng)用[J].重型機(jī)械,2005(6).