文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)09-0125-03
隨著計算機技術(shù)的發(fā)展,,軟件系統(tǒng)越來越復(fù)雜,。這種變化在計算機輔助設(shè)計/制造(CAD/CAM)領(lǐng)域表現(xiàn)得尤為明顯,以往大而全的CAD/CAM軟件越來越顯得力不從心,。眾多CAD/CAM軟件開發(fā)者轉(zhuǎn)而開始對這類軟件的基礎(chǔ)和共性進(jìn)行研究,,希望提供可進(jìn)行二次開發(fā)的CAD/CAM平臺支撐系統(tǒng)[1],使用戶能在該支撐系統(tǒng)上進(jìn)行二次開發(fā),,實現(xiàn)所需的特殊功能,,定制出用戶所在特殊領(lǐng)域的專用CAD/CAM軟件。目前,,為用戶提供功能強大,、使用靈活的二次開發(fā)接口,已經(jīng)成為對CAD/CAM軟件的普遍要求,。二次開發(fā)也成為發(fā)揮CAD/CAM軟件功能的重要途徑之一[2],。TiGEMS是采用特征造型技術(shù)的三維幾何造型軟件[3],而特征造型技術(shù)也是當(dāng)前CAD軟件主流實現(xiàn)技術(shù)[4]。如何在二次開發(fā)接口中體現(xiàn)特征造型思想的特色和優(yōu)點,,是本文要探討的主要問題,。
二次開發(fā)接口的實現(xiàn)方式多種多樣,目前流行的有通用文件格式實現(xiàn)的接口[5],、組件技術(shù)實現(xiàn)的接口[6],、數(shù)據(jù)庫技術(shù)實現(xiàn)的接口[7]以及動態(tài)鏈接庫技術(shù)實現(xiàn)的接口。不同的實現(xiàn)技術(shù)各有其優(yōu)缺點,,并且隨軟件技術(shù)的發(fā)展,,二次開發(fā)接口技術(shù)也在發(fā)展變化中。當(dāng)前很多CAD/CAM軟件系統(tǒng)都同時實現(xiàn)了多種接口方式,,以滿足不同用戶的不同需求,。不論使用何種技術(shù),,能夠?qū)⒔涌诰幊碳夹g(shù)與宿主軟件完美結(jié)合,在接口中體現(xiàn)宿主軟件的特色和優(yōu)點才是關(guān)鍵,。并在三維幾何造型系統(tǒng)TiGEMS中,選用動態(tài)庫技術(shù)實現(xiàn)TiGEMS的二次開發(fā)接口的原因在于:(1)動態(tài)庫技術(shù)有利于在接口中體現(xiàn)TiGEMS的特征造型思想,,保持了各類用戶對TiGEMS技術(shù)和使用特征的認(rèn)知一致性;(2)用戶有自定義特征的需求,,在考察多種實現(xiàn)方式后認(rèn)為,,動態(tài)庫技術(shù)為實現(xiàn)該需求的最好方式,;(3)動態(tài)鏈接庫技術(shù)發(fā)展時間長,,技術(shù)成熟,掌握該種編程技術(shù)的程序員較多,,適宜為工程技術(shù)人員做二次開發(fā)用,; (4)使用基于動態(tài)庫技術(shù)編寫的用戶程序執(zhí)行效率高、速度快,,能夠充分滿足用戶的各種需求,。
1 設(shè)計目標(biāo)及原則
1.1 設(shè)計目標(biāo)
設(shè)計目標(biāo)用于規(guī)定設(shè)計的大方向和基本功能描述,在設(shè)計中起總括和綱領(lǐng)的作用,,設(shè)計目標(biāo)應(yīng)該在設(shè)計方案中被逐一細(xì)化并最終得到實現(xiàn),。
(1)設(shè)計良好的三維幾何造型系統(tǒng)的二次開發(fā)接口應(yīng)該能夠向用戶展示系統(tǒng)的設(shè)計思想,引導(dǎo)用戶正確,、快速地掌握三維幾何造型系統(tǒng)的特點,;使接口開發(fā)用戶對系統(tǒng)的感知與直接操作三維幾何造型系統(tǒng)的感知一致。用戶可以無障礙地從直接操作轉(zhuǎn)到二次開發(fā)上來,。
(2)用戶通過接口開發(fā)模塊能以插件形式載入三維幾何造型系統(tǒng)中,,也能以獨立程序的形式與三維幾何造型系統(tǒng)共同運行。用戶可根據(jù)自己的需求和喜好在用戶界面加入自己的設(shè)計元素,,因此接口應(yīng)該實現(xiàn)動態(tài)的用戶界面(UI)管理功能,,方便用戶根據(jù)自己的需要定制操作界面,甚至重新構(gòu)造用戶操作界面[8],。
(3) 二次開發(fā)接口應(yīng)該具有良好的可擴(kuò)展性,。二次開發(fā)接口不但要求實現(xiàn)用戶直接操作的所有功能,還應(yīng)該實現(xiàn)更底層的數(shù)據(jù)定義和微操作功能,,以及更高層的批量操作和集合操作功能,。用戶能夠通過二次開發(fā)賦予三維幾何造型系統(tǒng)更強大或更專業(yè)的功能。
1.2 設(shè)計原則
設(shè)計原則規(guī)定了在二次開發(fā)接口設(shè)計過程中需要遵守的規(guī)則和方法,。遵守設(shè)計規(guī)則可以保證最終代碼的質(zhì)量,、效率和穩(wěn)定性,并為今后工作的可延續(xù)性提供方便,。
(1) 屏蔽不必要的細(xì)節(jié),。進(jìn)行二次開發(fā)的用戶多數(shù)是工程技術(shù)人員,,不太可能精通專業(yè)的程序開發(fā)技術(shù)。他們要求的二次開發(fā)接口在功能強大的同時又要易學(xué)好用,。因此封裝細(xì)節(jié)信息,,簡化操作過程非常必要。
(2) 嚴(yán)格封裝內(nèi)部對象和方法,。二次開發(fā)程序?qū)AD軟件功能的調(diào)用和對變量的存取,,都要通過二次開發(fā)接口進(jìn)行,嚴(yán)禁越過接口函數(shù)直接存取變量對象或者調(diào)用內(nèi)部方法,。
(3) 保證接口的魯棒性和獨立性,。用戶往往會以設(shè)計人員沒有想到的方式調(diào)用二次開發(fā)接口,因此必須保證接口函數(shù)的魯棒性,,不能在屏蔽細(xì)節(jié)的同時埋下隱患,。每個接口函數(shù)實現(xiàn)的功能要單一、明確[9],。
(4) 充分考慮接口可擴(kuò)充性,。二次開發(fā)接口程序架構(gòu)應(yīng)該是開放性的,可平滑擴(kuò)展,,能根據(jù)應(yīng)用需求的增加將新的功能加入到接口中去,,同時不影響已經(jīng)實現(xiàn)的接口功能[9]。
2 TiGEMS二次開發(fā)接口的設(shè)計方案
TiGEMS是多文檔/視圖結(jié)構(gòu)的應(yīng)用程序,共實現(xiàn)了零件,、裝配,、渲染、有限元和工程圖5種文檔類型,。用戶可以同時打開多種類型的多個文檔,,但在同一時刻只能編輯一個文檔,即當(dāng)前活動文檔,。TiGEMS使用特征樹組織和管理特征并表示它們之間的相互關(guān)系,。特征就是TiGEMS的核心數(shù)據(jù),特征樹即TiGEMS的核心數(shù)據(jù)組織方式: (1)二次開發(fā)接口應(yīng)開放特征和特征樹的操作方法,讓用戶能夠編程實現(xiàn)對TiGEMS文檔的操作,;(2)實現(xiàn)用戶定義特征功能,,擴(kuò)展特征外延;(3)能夠?qū)Χ鄠€用戶插件進(jìn)行有效管理,最后可修改用戶界面,,實現(xiàn)動態(tài)UI,。
2.1 接口功能模塊綜述
TiGEMS的二次開發(fā)接口可分為插件管理模塊、UI控制模塊,、用戶特征管理模塊和用戶接口模塊,,如圖1所示。
為了使得TiGEMS支持二次開發(fā),,首先對TiGEMS的核心進(jìn)行修改:增加了插件管理,、UI控制和用戶特征管理3個模塊,,然后在TiGEMS核心之外創(chuàng)建用戶接口模塊,封裝所有TiGEMS功能調(diào)用,,并向用戶提供函數(shù)調(diào)用和對象定義的頭文件和庫文件,。
2.2 插件管理模塊
TiGEMS允許用戶通過二次開發(fā)接口編寫插件,插件可以調(diào)用所有二次開發(fā)接口提供的功能,,但是不能獨立運行,,必須載入TiGEMS中才能使用。插件管理模塊作為常住TiGEMS核心的一個功能模塊,,提供了載入,、管理、卸載用戶插件的功能,。
由于TiGEMS的不同文檔類型使用不同的類實現(xiàn),,具有不同的屬性和操作方法,所以某個插件在某種文檔中的功能對另一種文檔并不適用,。因此,要將插件和文檔對應(yīng)起來,,同類文檔的插件可以共享,,不同類文檔的插件必須相互隔離。
插件管理模塊管理用戶插件,,根據(jù)用戶需求將用戶插件載入或者卸載,,同時隔離對應(yīng)不同文檔類型的插件模塊,避免沖突和混亂,。
2.3 UI控制模塊
UI控制模塊可根據(jù)用戶載入插件中定義的界面信息構(gòu)造用戶界面,以及在卸載插件時恢復(fù)以前的用戶界面,。當(dāng)用戶在不同文檔類型中切換時,UI控制模塊還需根據(jù)當(dāng)前活動文檔的不同重新構(gòu)造用戶界面,。
2.4 用戶特征管理模塊
用戶特征管理模塊專門用來管理用戶自定義的特征,,由于用戶定義的特征需要被TiGEMS的核心處理和識別[10],因此TiGEMS核心不可避免地要對用戶定義的特征處理函數(shù)進(jìn)行調(diào)用,,這極大增加了TiGEMS的潛在不穩(wěn)定性,。為了最大可能地避免這種風(fēng)險,用戶特征管理模塊統(tǒng)一負(fù)責(zé)用戶定義特征的注冊和TiGEMS核心對用戶特征的調(diào)用,,嚴(yán)格限制用戶特征的行為,。
2.5 用戶接口模塊
所有接口函數(shù)都封裝在動態(tài)鏈接庫文件中,與API函數(shù)聲明、對象定義頭文件一起提供給用戶,。用戶編寫好的插件程序也以動態(tài)鏈接庫的形式載入TiGEMS,。
接口函數(shù)部分根據(jù)功能的不同可以分為通用特征操作函數(shù)、UI控制函數(shù),、用戶特征操作函數(shù),、插件管理函數(shù)及其他雜項函數(shù),。
通用特征即TiGEMS已經(jīng)定義好的特征,這些特征的操作函數(shù)包括特征創(chuàng)建函數(shù)、特征修改函數(shù),、特征刪除函數(shù),、特征復(fù)制函數(shù)、特征查詢函數(shù),、特征重構(gòu)函數(shù)和特征加入函數(shù),。
UI控制函數(shù)專門用來創(chuàng)建和修改用戶菜單、工具條,、按鈕及浮動面板等用戶界面元素,,同時還可以添加更改窗口布局,整體顯示風(fēng)格等,。UI控制接口函數(shù)通過調(diào)用處于TiGEMS核心的UI控制模塊起作用,。
用戶特征操作函數(shù)可向TiGEMS注冊、修改及刪除用戶自定義的特征類,。
插件管理函數(shù)為用戶提供在自主開發(fā)程序中管理TiGEMS二次開發(fā)接口插件的功能,當(dāng)然也可以在插件中管理其他插件,,進(jìn)行插件的載入、卸載等操作,。插件甚至可以通過管理接口函數(shù)實現(xiàn)卸載自身的操作,。
其他雜項函數(shù)包括對象操作函數(shù)和輔助功能函數(shù)及文件操作函數(shù)。其中文件操作函數(shù)可用來打開,、保存和關(guān)閉TiGEMS創(chuàng)建的特定格式,,因為保密或者其他原因不能將格式開放給用戶的文件。
3 TiGEMS二次開發(fā)接口的實現(xiàn)
TiGEMS二次開發(fā)接口的代碼實現(xiàn)在Windows平臺下VC++6.0中完成,具體工作可以分為TiGEMS核心代碼修改和接口函數(shù)封裝兩大部分,。TiGEMS二次開發(fā)接口代碼實現(xiàn)的關(guān)健主要集中在TiGEMS核心代碼的修改,。插件管理、UI控制和用戶特征管理都涉及到了對TiGEMS核心代碼的修改,。
3.1 插件管理
TiGEMS是多文檔/視圖結(jié)構(gòu)的程序,,同類文檔的用戶插件是共享的,但是不同類文檔的用戶插件互相隔離,。實現(xiàn)插件的載入/卸載以及初始化都有一套專用的接口函數(shù),,并且插件管理模塊在載入插件的同時將當(dāng)前活動文檔的類型作為插件的類型保存起來,為以后可能發(fā)生的文檔切換等操作保存必要的信息,。插件管理模塊使用一個結(jié)構(gòu)數(shù)組m_moduleList來管理所有被載入的用戶插件,,這個數(shù)組的每個組元對應(yīng)一個插件,存放插件的名稱,、句柄,、類型以及插件內(nèi)部相關(guān)信息。其他模塊通過識別插件的類型來判斷該插件是否屬于當(dāng)前的活動文檔。
3.2 UI控制
所有用戶插件造成的用戶界面的動態(tài)變化都由UI控制模塊進(jìn)行統(tǒng)一的調(diào)度和控制,。用戶插件中會攜帶有關(guān)用戶界面的修改信息,,在載入初始化時向UI控制模塊提出界面請求,UI控制模塊使用一個結(jié)構(gòu)數(shù)來保存每個插件對用戶界面的更改要求,。每遇到一個新插件的界面更改要求,,UI控制模塊都會先進(jìn)行條件預(yù)判斷,全部或部分允許該用戶插件對用戶界面的改變,。之后UI控制模塊就不再干預(yù)界面與插件之間的交互,。直到有插件載入、卸載以及文檔切換時,,UI控制模塊才會干預(yù)用戶界面的生成,。
UI控制模塊的另一個重要功能是在非同類文檔切換時保證用戶界面隨之改變,對于可以與MFC文檔類關(guān)聯(lián),隨文檔的切換而切換的界面元素(如菜單等),,UI控制模塊無需干預(yù),。但對于無法隨文檔切換而切換的界面元素(如命令窗口等),UI控制器需要捕捉文檔切換消息,,在消息處理中完成界面元素的重新構(gòu)造,。
3.3 用戶定義特征管理
用戶特征實現(xiàn)的關(guān)鍵在于如何定義以及TiGEMS如何識別并處理用戶特征。為了讓用戶能在插件中創(chuàng)建特征定義,,需要繼承特征基類C_FeatureDef和c_FeatureStep的定義,。考慮到用戶特征的特殊性,,在GEMSAPI模塊中繼承這兩個類,定義了兩個新的用戶特征基類C_UserFeatureDef和C_UserFeatureStep,增加了表征用戶特征的變量,,并規(guī)定所有用戶特征必須繼承這兩個特征基類,。這樣就解決了用戶特征定義的問題,同時用戶特征識別問題也因為用戶特征繼承自TiGEMS通用特征基類而得到解決,,TiGEMS可以從特征基類中的m_property變量中獲取所需的特征信息,。用戶特征在使用前需要先向用戶特征管理模塊注冊,只有不存在重名和其他沖突的用戶定義特征類才被允許注冊,。用戶特征管理模塊使用一個結(jié)構(gòu)數(shù)組m_userFeature來管理用戶特征,。TiGEMS對用戶特征的任何調(diào)用都要通過用戶特征管理模塊間接執(zhí)行。這樣做的好處在于提高了TiGEMS的穩(wěn)定性,,而且用戶特征管理模塊可以及時攔截某些可能出錯的調(diào)用,,如用戶插件已卸載,但TiGEMS卻要調(diào)用該插件中用戶特征處理函數(shù)等,。TiGEMS核心代碼中所有需要判斷特征類型并調(diào)用對應(yīng)處理的模塊,,都要加入對用戶特征判斷的代碼,以及通過用戶特征管理模塊調(diào)用用戶特征處理的代碼,以便實現(xiàn)TiGEMS對新加用戶特征的響應(yīng),。
為用戶提供二次開發(fā)接口,,滿足各種專業(yè)用戶的不同需求是提高三維造型軟件使用范圍和生命力的一個重要途徑。TiGEMS作為一個成功的國產(chǎn)CAD軟件,,實現(xiàn)了二次開發(fā)接口,,其功能得到進(jìn)一步完善,應(yīng)用范圍得到了擴(kuò)展,,使用方式也變得更加豐富,。
參考文獻(xiàn)
[1] SABIN M. CAD system component [J]. Computer-Aided Design, 1996,28(3):183-192.
[2] 趙衛(wèi)東, 柳先輝, 衛(wèi)剛. CAD軟件二次開發(fā)平臺實現(xiàn)技術(shù)[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報, 2003,15(4):512- 516.
[3] 袁奕. 特征造型在GEMS5.0中的實現(xiàn)[D]. 北京: 清華大學(xué),1998.
[4] 葉修梓,彭維,何利力. 從工業(yè)界的角度看CAD 技術(shù)的研究主題與發(fā)展方向[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報,2003,15(10):1194-1199.
[5] 陳為. 基于AutoCAD 二次開發(fā)的研究[J]. 計算機工程與應(yīng)用,1997,33(1):39-43.
[6] 陸薇,劉強,,周琛,等.基于組件的開放式CAD系統(tǒng)模型[J].軟件學(xué)報, 1998,9(9):651-655.
[7] 趙付青,,余冬梅,張聚禮. CAD智能工程數(shù)據(jù)庫實現(xiàn)方法的研究與應(yīng)用[J]. 計算機工程與應(yīng)用 ,2003,39(2):215-219.
[8] 吳余華,,童水光,,許躍敏. 國外CAD/CAM系統(tǒng)二次開發(fā)關(guān)鍵技術(shù)的研究[J]. 計算機輔助設(shè)計與制造,1996,15(8):11-12.
[9] 王云鵬,雷毅,潘翔,等. CAXA電子圖版的二次開發(fā)技術(shù)[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2002,14(2):189-192.
[10] 宋玉銀, 蔡復(fù)之, 張伯鵬,等. 基于特征設(shè)計的CAD系統(tǒng)[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報, 1998,10(2):145-151.