本文探討研究了ProE調(diào)用MFC對(duì)話框技術(shù)的相關(guān)內(nèi)容。
Pro/ENGINEER 是美國(guó)參數(shù)化公司PTC( Parametric Technology Corporation) 于1989 年開(kāi)發(fā)出的三維CAD/CAM 系統(tǒng),可以為工業(yè)產(chǎn)品設(shè)計(jì)提供完整的解決方案,廣泛應(yīng)用于造型設(shè)計(jì)、機(jī)械設(shè)計(jì)、模具設(shè)計(jì)、加工制造、機(jī)構(gòu)分析、有限元分析及相關(guān)數(shù)據(jù)庫(kù)管理系統(tǒng)等各個(gè)領(lǐng)域。目前Pro/E在我國(guó)應(yīng)用較廣。
Pro/TOOLKIT是Pro/ENGINEER系統(tǒng)的個(gè)性化開(kāi)發(fā)工具包,也可稱為應(yīng)用程序接口(Application programmer Interface) ,它提供了大量的C語(yǔ)言庫(kù)函數(shù),能夠使外部應(yīng)用程序安全有效地訪問(wèn)Pro/ENGINEER 的數(shù)據(jù)庫(kù)和應(yīng)用程序,通過(guò)C語(yǔ)言編程及應(yīng)用程序與Pro/ ENGINEER 的無(wú)縫集成,客戶和第三方能夠在Pro/ENGINEE 系統(tǒng)中增加所需的功能。
Pro/TOOLKIT 應(yīng)用程序共有兩種工作方式:同步模式(synchronous Mode)和異步模式(SynchronousMode) , 我們常用的是同步模式。同步模式分為DLL模式和多進(jìn)程模式。DLL模式指運(yùn)用動(dòng)態(tài)鏈接庫(kù)(Dynamically Linked Library , DLL ) 將Pro/TOOLKIT 應(yīng)用程序集成到Pro/EN GINEER中,用戶編譯C語(yǔ)言應(yīng)用程序,與Pro/TOOLKIT 庫(kù)連接,生成一個(gè)對(duì)象庫(kù)文件,最后與Pro/ENGINEER的可執(zhí)行文件連接。在DLL 模式中, Pro/TOOLKIT 應(yīng)用程序與Pro/ENGINEER之間的信息交換是通過(guò)直接的函數(shù)調(diào)用來(lái)實(shí)現(xiàn)。本文采用的就是DLL 模式。
1 問(wèn)題的提出
自Pro/ EN GINEER2001 之后, Pro/ TOOL KIT就提供用戶開(kāi)發(fā)界面的編程接口。利用Pro/TOOL KIT 可以開(kāi)發(fā)出具有Pro/ EN GINEER 風(fēng)格的對(duì)話框,能向用戶提供人機(jī)交互界面,進(jìn)行簡(jiǎn)單的人機(jī)交互。但是目前這種方法還不太完善,功能有限,而且對(duì)話框資源編寫(xiě)起來(lái)繁瑣,一個(gè)簡(jiǎn)單的對(duì)話框資源就會(huì)用去很多的時(shí)間,對(duì)于稍為復(fù)雜的對(duì)話框更是無(wú)能為力。
MFC具有強(qiáng)大的編制對(duì)話框能力,編制簡(jiǎn)單,但Pro/ TOOL KIT 并不提供對(duì)MFC 的支持,在Pro/TOOL KIT 中并不能直接應(yīng)用MFC 對(duì)話框。本文通過(guò)動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)了Pro/ TOOL KIT 與MFC 的接口,利用MFC 強(qiáng)大的功能實(shí)現(xiàn)對(duì)話框的開(kāi)發(fā),在Pro/ EN GINEER 環(huán)境中生成MFC 對(duì)話框,方便、自然、快捷地進(jìn)行人機(jī)交互。
2 基本思想
在Pro/ EN GINEER 系統(tǒng)中調(diào)用MFC 對(duì)話框所需解決的關(guān)鍵問(wèn)題就是實(shí)現(xiàn)Pro/ E 系統(tǒng), Pro/TOOL KIT 應(yīng)用程序與MFC 對(duì)話框三者之間的通信。Pro/ E 系統(tǒng)與Pro/ TOOL KIT 應(yīng)用程序可以采用動(dòng)態(tài)鏈接庫(kù)(DLL ) 方式進(jìn)行通信。由于Pro/TOOL KIT 是通過(guò)C 語(yǔ)言進(jìn)行編程,無(wú)法直接調(diào)用MFC 對(duì)話框,這就使得必須運(yùn)用通信方式實(shí)現(xiàn)在Pro/ TOOL KIT 中調(diào)用MFC 對(duì)話框,本文作者采用動(dòng)態(tài)鏈接庫(kù)(DLL) 實(shí)現(xiàn)二者的通信。
3 Pro/ E 調(diào)用MFC 對(duì)話框?qū)嵗?/P>
本文作者開(kāi)發(fā)了一個(gè)Pro/ EN GINEER 調(diào)用MFC 對(duì)話框?qū)嵗?該實(shí)例在Pro/ EN GINEER 2001中產(chǎn)生MFC 對(duì)話框,接受用戶的輸入信息,然后生成三維實(shí)體。編譯器使用Microsoft Visual C ++610 。具體的實(shí)現(xiàn)步驟如下。
(1) 編輯MFC 對(duì)話框應(yīng)用程序
利用MFC AppWizard (dll) ,工程類型選用MFC的常規(guī)DLL (Regular DLL using shared MFC DLL) ,生成一個(gè)DLL 工程,加入對(duì)話框資源,并聲明導(dǎo)出變量:
(1) 編輯MFC 對(duì)話框應(yīng)用程序
利用MFC AppWizard (dll) ,工程類型選用MFC的常規(guī)DLL (Regular DLL using shared MFC DLL) ,生成一個(gè)DLL 工程,加入對(duì)話框資源,并聲明導(dǎo)出變量:
_declspec ( dllexport ) double m _ width , m _height ,m _ depth ,m _ bite _ radius ,m _ bite _ height ,和導(dǎo)出函數(shù):
extem“C”_ declspec (dllexport) void LoadDialog)
AFX _ MANAGE _ STATE(AfxGetStatic ModuleState) ;
CProDialog dlg ,
if (dlg. DoModal () = IDOK)
{
m _ width = dlg.m _ input1 ;
m _ height = dlg.m _ input2 ;
m _ depth = dlg.m _ input3 ;
m _ bite _ radius = dlg.m _ input4 ;
m _ bite _ height = dlg.m _ input5 ;
}
}
編譯程序,生成Dialog. dll 。
(2) 編輯Pro/ TOOL KITS 應(yīng)用程序
利用A Pro TK AppWizard (Pro/ TOOL KIT 編程向?qū)? ,生成一個(gè)Pro/ TOOL KIT 應(yīng)用程序,首先聲明導(dǎo)入變量及導(dǎo)入函數(shù)。修改user _ initialize ( ) 函數(shù),在這個(gè)函數(shù)中添加菜單和菜單響應(yīng)函數(shù)。
∥為PART 菜單組加載菜單文件
ProMenuFileRegister (“part ”, “part . mnu ”,NULL) ;
ProMenuAuxfileRegister (“part ”,“part . aux ”,NULL) ;
∥在PART 菜單組中定義新的按鈕Create Solid及其響應(yīng)函數(shù)
ProMenubuttonActionSet (“part ”,“Create Solid”,(ProMenubuttonAction) ProDemoBaseExtrudeProtrCreate ,NULL ,NULL) ,
在該P(yáng)ro/ TOOL KITS 應(yīng)用程序中,最為關(guān)鍵的函數(shù)就是菜單響應(yīng)函數(shù)ProDemoBaseEx2t rudeProt rCr2eate ,在該函數(shù)中載入MFC 對(duì)話框資源,獲得用戶的輸入信息,創(chuàng)建拉伸特征,生成二維實(shí)體。ProError ProDemoBaseExt rudeProt rCreate()
{
??
LoadDialog () ; ∥加載對(duì)話框
??
width = m _ width ;
height = m _ height ;
bite _ radius = m _ bit _ radius ;
bite _ height = m _ bit _ height ;
st rcpy (name ,″2DSection″) ;
alloc = PRO _ B _ FALSE ;
err = ProDemoSectCreate (width ,height ,bite _ radius ,bite _ height , name ,alloc , &Section) ; ∥得到用戶輸入信息,生成二維草圖截面。
??∥省略特征創(chuàng)建過(guò)程
opt s[0 ] = PRO _ FEAT _ CR _ DEFINE _ MISS_ EL EMS ;
err = ProSelectionAsmcomppathGet (mode/_ sel ,&comp _ path) ;
err = ProFeatureRedefine ( &comp _ path ,&feature ,elem. t ree ,opt s ,1 , &errs) ; ∥重定義特征,完成特征創(chuàng)建。
}
編譯程序,生成SolidCreate. dll 。
(3) 加載應(yīng)用程序
在Pro/ EN GINEER 中加載動(dòng)態(tài)鏈接庫(kù)SolidCreate. dll ,加載成功后在Part 菜單組中增加了Create Solid 項(xiàng),點(diǎn)擊該項(xiàng),產(chǎn)生MFC 對(duì)話框,輸入?yún)?shù)。
點(diǎn)擊確定,生成三維實(shí)體。
4 結(jié)論
(1) Pro/ EN GINEER 作為先進(jìn)的CAD/ CAM 系統(tǒng),為用戶提供了二次開(kāi)發(fā)工具Pro/ TOOL KIT ,用戶可以結(jié)合自己的產(chǎn)品和實(shí)際情況定制個(gè)性化的Pro/ EN GINEER 系統(tǒng)。
(2) Pro/ TOOL KIT 提供了用戶界面接口的開(kāi)發(fā),但目前還不太完善,本文運(yùn)用DLL 技術(shù)實(shí)現(xiàn)了在Pro/ EN GINEER 中調(diào)用MFC 對(duì)話框, 完成了Pro/ EN GINEER 與MFC 的接口開(kāi)發(fā)。
(3) Pro/ EN GINEER 可以調(diào)用MFC 對(duì)話框,運(yùn)用相同的方法,也可以調(diào)用MFC 函數(shù),MFC 函數(shù)具有很強(qiáng)的編程功能,Pro/ TOOL KIT 的二次開(kāi)發(fā)功能將更加強(qiáng)大。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書(shū)Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國(guó)專業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書(shū) AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開(kāi)始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開(kāi)始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計(jì)案例教程中文版AutoCAD 建筑設(shè)計(jì)案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF