1922_基于ProToolkit的止動片沖裁模三維參數(shù)化設(shè)計
1922_基于ProToolkit的止動片沖裁模三維參數(shù)化設(shè)計,基于,protoolkit,止動片沖裁模,三維,參數(shù),設(shè)計
黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 1 頁 1 緒論1.1 課題研究的目的和意義1.1.1 目的參數(shù)化設(shè)計方法具有高效性、實用性的特點,在產(chǎn)品的系列設(shè)計、相似設(shè)計及專用 CAD 系統(tǒng)開發(fā)方面都具有較大的使用價值。與傳統(tǒng)設(shè)計方法相比,能夠減少重復勞動,提高設(shè)計效率,符合現(xiàn)代產(chǎn)品設(shè)計要求。Pro/E軟件系統(tǒng)是美國參數(shù)化技術(shù)公司PTC 的優(yōu)秀產(chǎn)品,提供了集成產(chǎn)品的三維模型設(shè)計、加工、分析及繪圖等功能的完整的CAD/CAE/CAM 解決方案。Pro/E 軟件在我國的機械、電子、家電、塑料模具等行業(yè)取得了廣泛的應(yīng)用,并且在這些行業(yè)里應(yīng)用的時間也較長。企業(yè)在自身發(fā)展和使用Pro/E 的過程之中積累了許多有用的寶貴的數(shù)據(jù)、企業(yè)自身的標準以及特殊圖形等參數(shù)資料,如果能把這些參數(shù)資料整理出來,然后再把這些參數(shù)資料掛靠在Pro/E 軟件系統(tǒng)的主菜單和彈出式菜單上,即編譯生成應(yīng)用程序與Pro/E 軟件系統(tǒng)進行無縫連接,這樣一來,不但能提高設(shè)計人員的設(shè)計速度,對市場需求做出快速反應(yīng),設(shè)計出滿足市場需求的產(chǎn)品,及時贏得市場份額,而且還能夠提高企業(yè)的生產(chǎn)能力和經(jīng)濟效益,這也是Pro/E 二次開發(fā)的首要目的。1.1.2 意義沖 裁 模 具 的 應(yīng) 用 非 常 廣 泛 , 通 過 對 他 的 參 數(shù) 化 設(shè) 計 , 來 熟 練 的 掌 握 proe 的 參數(shù) 化 設(shè) 計 過 程 , 以 及 對 vc++語 言 的 過 程 。 通 過 程 序 的 編 寫 可 以 達 到 改 變 零 件 的 尺寸 來 改 變 裝 配 圖 的 尺 寸 , 然 后 對 一 些 標 準 的 零 件 需 要 建 立 一 些 數(shù) 據(jù) 庫 , 數(shù) 據(jù) 庫 的 作用 是 把 一 些 零 件 的 主 要 尺 寸 儲 存 起 來 , 以 便 調(diào) 用 。 主 要 的 作 用 是 通 過 proe 的 開 發(fā)工 具 protoolkit 結(jié) 合 著 vs2005+sql2000 來 達 到 多 零 件 的 參 數(shù) 化 設(shè) 計 和 參 數(shù) 化 調(diào)用 , 通 過 對 話 框 的 形 式 對 其 進 行 改 變 。1.2 本課題在國內(nèi)的研究和發(fā)展現(xiàn)狀1.2.1 國內(nèi) cad 的應(yīng)用現(xiàn)狀我國 CAD 技術(shù)的應(yīng)用起步于 20 世紀 60 年代末,經(jīng)過近 40 年的研究、開發(fā)與推廣應(yīng)用,CAD 技術(shù)已經(jīng)廣泛應(yīng)用于機械設(shè)計領(lǐng)域,應(yīng)用 CAD 技術(shù)提高了企業(yè)的設(shè)計效率、優(yōu)化了設(shè)計方案,減輕了技術(shù)入員的勞動強度,縮短了設(shè)計周期,加強了設(shè)計的標準化,CAD/CAM 技術(shù)的應(yīng)用正在如火如茶地展開。但是,目前國內(nèi) CAD 系統(tǒng)的 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 2 頁 應(yīng)用還停留在比較低的水平上,國內(nèi) CAD 技術(shù)的應(yīng)用現(xiàn)狀主要表現(xiàn)在以下幾個方面: 1.2.1.1 二維CAD市場日漸紅火 企業(yè)對二維CAD軟件的功能和作用已經(jīng)有了充分的認識,二維CAD軟件已經(jīng)成為設(shè)計師進行設(shè)計的一種主要工具,一些條件較好的企業(yè),認識到資源共享的意義,已從原來單機使用CAD軟件轉(zhuǎn)化為基于網(wǎng)絡(luò)的團隊協(xié)作共享。由于國產(chǎn)CAD軟件價格較低,符合國入設(shè)計習慣,技術(shù)上又十分成熟,服務(wù)水平逐漸提高,因此企業(yè)在上CAI)項目時,國產(chǎn)二維CAD軟件會受到青睞,特別是國產(chǎn)CAI)軟件的使用量。需要說明的是,CAD 軟件的技術(shù)含量高,而且應(yīng)用軟件的企業(yè)個性很強,需要大量的技術(shù)服務(wù)和支持。如果開發(fā)者在技術(shù)上沒什么創(chuàng)新,缺乏設(shè)計方法和設(shè)計理論上的研究,只是在應(yīng)用上符合國入習慣,價格上有些優(yōu)勢,又不給用戶提供培訓、升級和技術(shù)服務(wù),很難保證CAD技術(shù)的應(yīng)用效果,缺乏核心競爭力。 1.2.1.2微機三維CAD市場前景廣闊 CAD/CAM(CAM即計算機輔助制造 )市場一個重要的變化就是微機平臺的三維造型軟件開始嶄露頭角。從企業(yè)應(yīng)用情況來看,二維CAD占據(jù)較大的份額,軟件應(yīng)用大多停留在低層次的繪圖而不是設(shè)計工作上。隨著應(yīng)用水平的提高,基于三維CAI)進行設(shè)計的優(yōu)勢已顯現(xiàn)出來。目前三維造型軟件仍以國外廠為主。國產(chǎn)CAD/CAM軟件與國外競爭最大優(yōu)勢就是服務(wù),這種服務(wù)既有售前普及化服務(wù)和售后的本地化服務(wù),又有由此延伸出來的一系列增值服務(wù)。應(yīng)用推廣,三維造型軟件這樣復雜產(chǎn)品特別需要優(yōu)質(zhì)的服務(wù)。目前來看,國內(nèi)的CAD/CAM軟件市場經(jīng)過商家激烈競爭的洗禮,已經(jīng)變得更加理性和成熟。廣大用戶已經(jīng)能夠根據(jù)自己的需要和軟件的功能、價格、服務(wù)、升級、兼容性,以及軟件公司的發(fā)展前景作出正確的選擇。 1.2.1.3 國內(nèi)CAD技術(shù)的研究存在的幾個問題 國內(nèi) CAD 軟件占領(lǐng)的市場主要是二維繪圖軟件,自主開發(fā)的商品化三維 CAI)系統(tǒng)還未成熟,其功能、穩(wěn)定性與國外同類產(chǎn)品相比還有差距,在應(yīng)用層次上缺乏創(chuàng)新。CAD 軟件開發(fā)者缺乏對模型的建立的理論和算法的研究。雖然有這方面的的研究論文發(fā)表,但在系統(tǒng)性和實用性方面還有很大差距。對于產(chǎn)品數(shù)據(jù)管理(PDM)的研究過于局限,對以 PDM 為基礎(chǔ)實現(xiàn) CAD/CAPP/CAM 和 ERP 等有機集成方面的研究還不夠深入“CAD/CAM 技術(shù)的深化應(yīng)用和企業(yè)信息化需要較大的投資,同時需要企業(yè)在管理 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 3 頁 模式、業(yè)務(wù)流程等方面進行探入的變革,所以是名符其實的“一把手工程” 。 1.2.2 分析目前,雖然制造業(yè)的廠家均已完成“甩圖板”工作,在產(chǎn)品設(shè)計中應(yīng)用二維 CAD圖形繪制工具----AutoCAD 或是基于 AutoCAD 平臺的二次開發(fā)軟件,實現(xiàn)計算機制圖并做一些技術(shù)文檔的編制工作。但是,隨著軟件應(yīng)用時間的增長,企業(yè)各部門都保存有大量的 DWG 格式的產(chǎn)品圖紙文件。在設(shè)計過程中,由于二維 CAD 軟件存在局限性,不能完整地表達產(chǎn)品的設(shè)計信息。所以,要達到真正意義上的計算機輔助設(shè)計,則必須要使用三維 CAD 軟件,完成諸如零部件的裝配干涉檢查,有限元分析,機構(gòu)的運動仿真,數(shù)控加工代碼的生成。只有運用三維 CAD 設(shè)計軟件,才能在產(chǎn)品設(shè)計初始階段全面了解產(chǎn)品的外觀、性能,從而避免產(chǎn)品設(shè)計中出現(xiàn)的低級錯誤。1.3 我國制造業(yè)的發(fā)展形勢二十一世紀初的機械制造業(yè),總的發(fā)展趨勢為:柔性化、靈捷化、智能化、信息化(網(wǎng)絡(luò)化 )。信息產(chǎn)業(yè)將成為社會的主導產(chǎn)業(yè),機械制造業(yè)也將由信息主導,并采用先進生產(chǎn)模式、先進制造技術(shù)、先進組織管理方式的全新機械制造業(yè)。其中柔性化是使下藝裝備與工藝路線能適于生產(chǎn)各種產(chǎn)品的需要,能適于迅速更換工藝、更換產(chǎn)品的需要。靈捷化是使生產(chǎn)推向市場的準備時間縮為最短,使機械制造廠的機制能靈活轉(zhuǎn)向。智能化是柔性自動化的重要組成部分,也是柔性自動化的新發(fā)展和延伸,智能化促進柔性化,它使生產(chǎn)系統(tǒng)具有更完善的判斷與適應(yīng)能力。信息化是使機械制造業(yè)不再是由物質(zhì)和能量借助于信息的力量牛產(chǎn)出價值,而是由信息借助于物質(zhì)和能最的力量生產(chǎn)出價值。因此,信息產(chǎn)業(yè)和智力產(chǎn)業(yè)將成為社會的主導產(chǎn)業(yè)。目前,隨著CAD/CAM/CAPP技術(shù)的逢勃發(fā)展,計算機越來越成為人們從事機械設(shè)計與制造的重要手段。計算機輔助產(chǎn)品造型是所有上述工作的基礎(chǔ)。因為只有精確的產(chǎn)品造型,才能對產(chǎn)品的裝配與干涉進行檢驗?;谏鲜隹梢钥偨Y(jié)出我國CAD/CAE/CAM 的發(fā)展趨勢:1. 新產(chǎn)品使用基于特征建模的三維造型來進行設(shè)計;2. 在計算機上完成產(chǎn)品整機的總裝配,進行干涉檢查和動力學分析;3. 重要零件在計算機上進行有限元剛度、強度分析、模態(tài)分析、產(chǎn)品的形狀優(yōu)化設(shè)計;4. 建立各單位自己的三維常用零件庫,盡量避免重復勞動,提高設(shè)計效率; 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 4 頁 5. 對于有數(shù)控加工工序的零部件自動生成加工代碼。1.4 關(guān)鍵的問題及解決的思路 1.4.1 關(guān)鍵問題完成本課題關(guān)鍵的就是做好各個零件的參數(shù)化設(shè)計,包括標準模架、螺釘、墊板等。在這個課題中,我是通過pro/e 軟件來完成各個零件的三維圖形的設(shè)計,然后通過Visual C++語言和pro/toolkit 接口,將完成的三維圖形做成一個插件的形式插入到pro/e的菜單欄中,然后再通過輸入?yún)?shù)的方式對其做設(shè)計變更。1.4.2 我的思路用 pro/e 軟件對沖裁模具進行建模設(shè)計的關(guān)鍵還在于正確地建立各個零件的參數(shù),編程確定合乎要求的參數(shù)關(guān)系式,搞清各個零件變化的每一步驟的目的。掌握了這種經(jīng)編程并輸入?yún)?shù)關(guān)系式進行設(shè)計的方法——即參數(shù)化設(shè)計方法。就能迅速地對不同參數(shù)的零件進行建模,極大地提高工效。 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 5 頁 2 系統(tǒng)開發(fā)環(huán)境與開發(fā)策略2.1 系統(tǒng)開發(fā)環(huán)境2.1.1 Pro/toolkit 接口Pro/E 安裝盤提供的Pro/Toolkit 工具包主要提供了創(chuàng)建用戶應(yīng)用程序所需函數(shù)庫文件、頭文件、用戶指南和示例程序。其中頭文件Pro/Toolkit\includes 目錄,庫文件位于Pro/Toolkit\i486-NT\obj目錄,這兩種類型的文件是用VC開發(fā)Pro/E應(yīng)用程序必不可少的支持文件。在Windows 環(huán)境下,可采用各種C 語言為編程語言。我們以WindowsXP為平臺,VC++6.0為開發(fā)環(huán)境,通過Pro/Toolkit接口來實現(xiàn)對Pro/E的二次開發(fā)。2.1.2 關(guān)于 Pro/engineer 系統(tǒng)Pro/Engineer 系統(tǒng)是美國參數(shù)技術(shù)公司(Parametric Technology Corporation,簡稱PTC)的產(chǎn)品。PTC 公司提出的單一數(shù)據(jù)庫、參數(shù)化、基于特征、全相關(guān)的概念改變了機械CAD/CAE/CAM 的傳統(tǒng)觀念,這種全新的概念已成為當今世界機械CAD/CAE/CAM領(lǐng)域的標準。利用該概念開發(fā)出來的第三代機械CAD/CAE/CAM 產(chǎn)品,Pro/Engineer 軟件能將設(shè)計至生產(chǎn)全過程集成到一起,讓所有的用戶能夠同時進行同一產(chǎn)品的設(shè)計制造工作,即實現(xiàn)所謂的并行工程(Concurrent engineering).Pro/Engineer 系統(tǒng)主要特點如下:1 真正的全相關(guān)性,任何地方的修改都會自動反映到所有相關(guān)的地方。2 具有真正管理并發(fā)進程、實現(xiàn)并行工程的能力。3 具有強大的裝配功能,能夠始終保持設(shè)計者的設(shè)計意圖。4 容易使用,可以極大地提高設(shè)計效率。而且,Pro/Engineer 系統(tǒng)用戶界面簡潔,概念清晰,符合工程人員的設(shè)計思想與習慣。整個系統(tǒng)建立在統(tǒng)一的數(shù)據(jù)庫上,具有完整而統(tǒng)一的模型。另外,Pro/Engineer建立在工作站上,系統(tǒng)獨立于硬件,便于移植。Proe/Engineer(簡稱Pro/E)之所以得到廣泛應(yīng)用,不僅是因為它成熟的參數(shù)化技術(shù),更重要的是它具有開放的體系結(jié)構(gòu)和優(yōu)秀的二次開發(fā)工具。Pro/E允許用戶和開發(fā)者對其進行擴充和修改。此次設(shè)計以Pro/E為支撐平臺,應(yīng)用Pro/Toolkit工具包和 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 6 頁 visualC++6.0 來開發(fā),將用戶應(yīng)用程序編譯成可執(zhí)行文件(.exe文件)或動態(tài)鏈接庫文件(.dll文件),在Pro/e環(huán)境下加載運行.這樣既利用了Pro/E強大的開發(fā)功能,又利用了VC編程效率高的優(yōu)勢。2.1.3 Visual C++ 6.0Visual C++ 6.0 是Microsoft 公司推出的基于C/C++的集成開發(fā)工具,它不僅是C/C++語言的集成開發(fā)環(huán)境,而且與Win32 緊密相連,功能相當強大,代碼效率很高,可以實現(xiàn)從底層軟件直到上層直接面向用戶的軟件。Visual C++ 6.0 向用戶提供了一個面向?qū)ο蟆⒖梢暬木幊汰h(huán)境,它的MFC(Microsoft Foundation Class, 微軟基礎(chǔ)類庫)封裝了大部分Windows API函數(shù),大大簡化了用戶的編程工作,提高了代碼的可重用性,使得用戶可以快速地進行軟件開發(fā)。在 Visual C++ 6.0 集成開發(fā)環(huán)境下,用戶可以使用兩種方式開發(fā)Windows 應(yīng)用程序,一種是基于Windows API 的C 編程方式,這種方式的開發(fā)難度與開發(fā)的工作量較大,但代碼的運行效率較高;另一種是基于MFC 的C++編程方式,相對第一種方式,用這種方式編寫的代碼運行效率低,但開發(fā)難度小,工作量小、原代碼效率較高。2.2 開發(fā)策略目前,對于CAD系統(tǒng)的開發(fā)方法主要有三種:(1) 完全自主版權(quán)的開發(fā);(2) 基于CAD/CAM軟件平臺的開發(fā);(3) 基于某個通用CAD軟件的開發(fā).其中第一種方法一切從底層做起,開發(fā)周期最長,適于大型CAD系統(tǒng)的開發(fā);第二種方法開發(fā)周期較短,但開發(fā)平臺價格昂貴,適合大中型CAD系統(tǒng)的開發(fā);第三種方法開發(fā)周期最短,開發(fā)成本最低,且靈活多變,適合中小型CAD系統(tǒng)的開發(fā)。本次設(shè)計采用了第三種方法,即利用美國PTC公司開發(fā)的Pro/Engineer三維設(shè)計軟件,再結(jié)合Pro/toolkit 接口以及V C++語言對用于夾具的零件進行參數(shù)化設(shè)計。Pro/Toolkit 應(yīng)用程序共有 2 種工作方式:同步模式包括兩種(SynchronousMode)和異步模式(Asyn-chronousMode)。同步模式分為DLL模式和多進程模式(Multi-processMode)。DLL模式是指運用動態(tài)鏈接庫將Pro/Toolkit 應(yīng)用程序集成到Pro/E 中,在該模式下,Pro/Toolkit 應(yīng)用程序與Pro/E 之間的信息交換是通過直接的函數(shù)調(diào)用來實現(xiàn)。多進程模式是指Pro/Toolkit代碼經(jīng)過編譯和連接后生成一個.EXE文件,作為Pro/E 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 7 頁 的一個子程序來運行。異步模式可以開發(fā)出獨立于Pro/E 系統(tǒng)環(huán)境的應(yīng)用程序,有自己獨立的程序界面。一般來說在沒有特殊的要求下采用同步模式中的DLL 模式,這種方法實現(xiàn)了Pro/E 與應(yīng)用程序之間的無縫集成?;咀鞣ㄊ怯媒换シ绞絼?chuàng)建三維模型,再利用Pro/E的參數(shù)功能建立設(shè)計參數(shù),然后由Pro/Toolkit 應(yīng)用程序檢索出模型的設(shè)計參數(shù), 并提供參數(shù)的編輯功能和根據(jù)新的設(shè)計參數(shù)再生三維模型的功能。其過程如圖2-1所示。圖2-1 實現(xiàn)參數(shù)化設(shè)計的設(shè)計流程圖 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 8 頁 3 主要零部件設(shè)計3.1 沖裁模具設(shè)計要點沖壓模具按工藝性質(zhì)可分為沖裁模、彎曲模、拉伸模、成形模等。無論何種模具,基本上都需要上、下模體、導向裝置、壓料裝置、定位裝置等。本次設(shè)計采用的是多工序復合沖裁模------導柱式落料模。導柱式?jīng)_模的上下模利用導柱和導套來導向來保證其正確位置,所以凸凹模間隙均勻,制件質(zhì)量比較高,模具壽命也比較長,導柱,導套都是圓柱形,加工比導板方便,安裝維修也比較方便。其缺點是制造成本比較高。3.2 主要零件的選用1)標準模架的選用根據(jù)零件的加工要求以及零件的尺寸要求對標準模架進行了篩選。最終選用后側(cè)導柱模架。如圖3-1所示: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 9 頁 圖3-1 后側(cè)導柱模架圖4 各個零件的造型和參數(shù)化設(shè)計4.1 沖裁模的三維造型4.1.1 非標準件的設(shè)計1)空心墊板的三維設(shè)計根據(jù)零件的尺寸及各個部件之間的配合關(guān)系,對其進行三維化參數(shù)設(shè)計kongxindianban.prt,并最終組裝成裝配圖zhuangpei.asm。建立三維模型如圖4-1: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 10 頁 圖4-1 空心墊板 由于空心墊板不是標準件,不必要對其進行建立數(shù)據(jù)庫,要對其進行參數(shù)設(shè)計,利用proe中的參數(shù)和關(guān)系對其進行約束,為空心墊板設(shè)置六個參數(shù),分別是 空心的長l,寬b,總長b1,大孔邊距s,高度h,小孔邊距s1。2)利用同樣的方法對凸凹模固定板,頂件塊,調(diào)料,落料,卸料板,下墊板,凸凹模等進行三維化設(shè)計。其三維模型如圖4-2至圖4-8:圖4-2 凸凹模固定板 圖4-3 頂件塊圖4-4 調(diào)料 圖4-5 落料 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 11 頁 圖4-6 卸料板 圖4-7 下墊板圖4-8 凸凹模對以上元件進行類似的三位參數(shù)設(shè)計,并設(shè)置一些參數(shù)值來改變他們之間的關(guān)系,以達到變化。 4.1.2 標準件的三維參數(shù)化設(shè)計1)元件的三維設(shè)計由于標準件有相應(yīng)的尺寸要求,需要對其進行建立數(shù)據(jù)庫,使其數(shù)據(jù)更加的規(guī)范。A. 上模座的三維參數(shù)設(shè)計,其三維造型如圖4-9所示:圖4-9 上模座對其進行設(shè)計參數(shù),因為是標準件,所以只需從數(shù)據(jù)庫選取相應(yīng)的參數(shù)和參數(shù)值即可。 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 12 頁 B. 下模座維參數(shù)設(shè)計,其三維造型如圖4-10所示:圖4-10 下模座C. 導柱三維參數(shù)設(shè)計,其三維造型如圖4-11所示:圖4-11 導柱D. 導套三維設(shè)計,其三維造型如圖4-12所示:圖4-12 導套E. 螺釘三維設(shè)計,其三維造型如圖4-13所示: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 13 頁 圖4-13 螺釘F. 卸料螺釘三維設(shè)計,其三維造型如圖4-14所示:圖4-14 卸料螺釘G. 沖孔凸模三維設(shè)計,其三維造型如圖4-15所示:圖4-15 沖孔凸模 H. 打料桿三維設(shè)計,其三維造型如圖4-16所示:圖4-16 打料桿 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 14 頁 I. 擋料銷三維設(shè)計,其三維造型如圖4-17所示:圖4-17 擋料銷J. 模柄三維設(shè)計,其三維造型如圖4-18所示:圖4-18 模柄K. 橡膠三維設(shè)計,其三維造型如圖4-19所示:圖4-19 橡膠L. 止轉(zhuǎn)銷三維設(shè)計,其三維造型如圖4-20所示: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 15 頁 圖4-20 止轉(zhuǎn)銷2)建立工程數(shù)據(jù)庫和標準零件的數(shù)據(jù)表。使用SQL Server 2000建立一個“Engineering”數(shù)據(jù)庫,并在其中建立一系列的零件數(shù)據(jù)表,表結(jié)構(gòu)如表4-1、表4-2所示:表 4-1 上模座結(jié)構(gòu)表列明 數(shù)據(jù)類型 長度B float 8H float 8L1 float 8S float 8A1 float 8A2 float 8R float 8L2 float 8D float 8并輸入以下數(shù)據(jù):B H L1 S A1 A2 R L2 D50 20 70 70 45 75 25 40 2580 25 130 130 65 110 32 60 32125 30 130 130 85 150 35 60 35160 40 170 170 110 195 42 80 42200 45 210 210 130 235 45 100 45 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 16 頁 表 4-2 導套結(jié)構(gòu)表列明 類型 長度D float 8L float 8H float 8Dd float 8輸入以下數(shù)據(jù):D L H Dd16 60 18 2518 60 18 2820 65 23 3222 65 23 3525 80 28 3828 85 33 4232 100 38 4535 105 43 5040 115 43 5545 125 48 6050 125 48 6555 150 53 7060 160 58 764.2 沖裁模具的二次開發(fā)(利用 protoolkit 實現(xiàn))1)Vs2005 配置啟動 vs2005。在“項目和解決方案”中選擇“VC++目錄” ,在“顯示以下內(nèi)容的目錄”中選擇“包含文件” ,加入以下文件(其中,D:是 pro/E 的安裝盤符): 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 17 頁 D:\proeWildfire4.0\protoolkit\includesD:\proeWildfire4.0\protoolkit\protk_appls\includesD:\proeWildfire4.0\prodevelop\includes 在“顯示以下內(nèi)容的目錄”中選擇“庫文件” ,加入以下文件:D:\proeWildfire4.0\protoolkit\i486_nt\objD:\proeWildfire4.0\prodevelop\i486_nt\obj(注:請認真檢查 pro/E 的安裝目錄(路徑名) 。在以上配置中,輸入路徑名時不能有空格,比如在以上設(shè)置中輸入“D:\Program Files\proeWildfire 4.0”是不對的,要把路徑中的空格去掉,如“D:\proeWildfire4.0” 。如果已經(jīng)按默認設(shè)置安裝了pro/E(此時安裝目錄中是有空格的) ,則必須用 D:\Progra~1\proeWi~1.0 輸入)(以上工作僅做一次。 )2)建立新項目,并做項目配置在 vs2005 中,建立一個新項目,使用 MFC DLL 模板,項目名稱為 jiajusheji 。vs2005 會自動建立名為 jiajusheji 的文件夾。配置以下三個項目屬性:(1) 常規(guī)——字符集,將其中的默認“使用 Unicode 字符集”改為“使用多字節(jié)字符集”(2) C/C++——預處理器,在“預處理器定義”里加入:PRO_USE_VAR_ARGS(3) 連接器——輸入,在“附加依賴項”里加入:wsock32.libmpr.libpsapi.libprotk_dllmd.lib3)建立信息和菜單文件在項目所在目錄下,建立一個 text 目錄: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 18 頁 在 text 目錄下,新建一個信息文本文件,取名為 msg.txt,文件內(nèi)容為:MyHello&歡迎使用基于 pro/Toolkit 的機床夾具三維參數(shù)化設(shè)計系統(tǒng)!#MyBye&再見!#在 text 目錄下,再新建一個信息文本文件,取名為 menu.txt,文件內(nèi)容為:m_chongcaimo&沖裁模設(shè)計#b_zhijian&止件參數(shù)輸入#zhijiantip&輸入止件的長寬等參數(shù)#b_para& 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 19 頁 元件參數(shù)輸入#zhijiantip&修改元件參數(shù)#1) 源代碼輸入在 chongcaimo.cpp 文件中,輸入以下代碼(刪除所有已有代碼):// chongcaimo.cpp : 定義 DLL 的初始化例程。#include "stdafx.h"#include "chongcaimo.h"#include "dlg_para.h"#include //包含 pro/Toolkit 必要的頭文件#include #include #include #include ProFileName msgfil; //定義文件類型的變量,用于顯示消息//這三個函數(shù)的定義在后面,此處僅說明函數(shù)原型void MyDLG();void MyDLGzhijian();static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode);//初始化函數(shù),此函數(shù)將在啟動鉆模設(shè)計輔助應(yīng)用程序時被調(diào)用執(zhí)行extern "C" int user_initialize() { 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 20 頁 AfxEnableControlContainer();ProError status;ProName menumsgfile; //定義名稱類型的變量,用于生成菜單uiCmdCmdId cmd_id; //定義菜單項標識類型的變量//在 pro/E 的主菜單欄上添加一個新的菜單ProStringToWstring(menumsgfile,"menu.txt");status = ProMenubarMenuAdd("chongcaimo","m_jchongcaimo","Help", PRO_B_FALSE,menumsgfile);//添加新菜單下的第一個菜單項status = ProCmdActionAdd("MyDLGzhijian",(uiCmdCmdActFn)MyDLGzhijian,uiCmdPrioDefault,UserAccessTestMenu,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);//先指定回調(diào)函數(shù),即點擊此菜單后要執(zhí)行什么動作(本菜單項的功能是打開工件參數(shù)輸入對話框)status = ProMenubarmenuPushbuttonAdd("chongcaimo","zhijian","b_zhijian","zhijiantip",NULL,PRO_B_TRUE,cmd_id,menumsgfile);//然后才添加第二個菜單項status = ProCmdActionAdd("MyDLG",(uiCmdCmdActFn)MyDLG,uiCmdPrioDefault,UserAccessTestMenu,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);status = ProMenubarmenuPushbuttonAdd("chongcaimo","para","b_para", NULL,PRO_B_TRUE,cmd_id,menumsgfile);//在 pro/E 的消息區(qū)顯示消息ProStringToWstring(msgfil,"msg.txt");ProMessageDisplay(msgfil,"MyHello");return(0);} 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 21 頁 //菜單可訪問性(此函數(shù)的定義一般不需修改!)static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode){return (ACCESS_AVAILABLE);}void MyDLGzhijian() //自定義的第一個菜單項的菜單回調(diào)函數(shù){ AFX_MANAGE_STATE(AfxGetStaticModuleState());dlg_zhijian dlg_zhijian; //先定義一個對話框類對象dlg_zhijian.DoModal(); //以模態(tài)方式打開工件尺寸參數(shù)輸入對話框(其中內(nèi)容視對話框類的名稱而變)}void MyDLG() //自定義的第二個菜單項的菜單回調(diào)函數(shù){ AFX_MANAGE_STATE(AfxGetStaticModuleState());dlg_para dlg_para; //先定義一個對話框類對象dlg_para.DoModal(); //以模態(tài)方式打開工件尺寸參數(shù)輸入對話框(其中內(nèi)容視對話框類的名稱而變)}//結(jié)束函數(shù),此函數(shù)將在停止車床夾具設(shè)計輔助應(yīng)用程序時被調(diào)用執(zhí)行extern "C" void user_terminate(){ProMessageDisplay(msgfil,"MyBye"); //在 pro/E 的消息區(qū)顯示消息return; 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 22 頁 }2) 加入工件參數(shù)輸入對話框添加一個對話框資源圖 4-21:圖4-21 對話框1在上面的原始對話框中添加一些按鈕控件(button) ,并將對話框界面修改為以下布局圖局圖 4-22:圖4-22 對話框2在對話框空白處點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加類” ,類名稱為dlg_para。 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 23 頁 事先做好下面這幅圖,并保存成位圖(BMP )格式的文件,圖 4-23:圖4-23 元件添加一個位圖資源(使用“添加資源”對話框中的“導入”按鈕,導入位圖)如圖 4-24:圖4-24 添加資源框圖4-24-1 資源視圖再對每個按鈕添加個對話框資源:以下墊板和導套為例子來進行說明,如圖 4-25:A. 下墊板 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 24 頁 圖4-25 對話框3在上面的原始對話框中,添加靜態(tài)文本控件(Static Text) 、編輯控件(Edit Control)和圖片控件(Picture Control) ,并將對話框界面修改成以下布局,如圖 4-26所示:圖4-26 對話框43) 為工件參數(shù)輸入對話框添加類并為編輯控件關(guān)聯(lián)成員變量在對話框空白處點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加類” ,類名稱為dlg_xiadianban。選中編輯控件,點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加變量” ,為每個編輯控件添加一個 double 類型的變量,變量名取為m_l1,m_h,m_d,m_dd,m_s2,m_s,m_s1, 。這個成員變量的初始值為零,下面改變 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 25 頁 初始值。打開 dlg_daotao.cpp 源程序文件,找到代碼段,并作如下聲明:dlg_xiadianban::dlg_xiadianban(CWnd* pParent /*=NULL*/): CDialog(dlg_xiadianban::IDD, pParent), m_l1(125), m_h(16), m_dd(12), m_d(10), m_s2(18.5), m_s(47.5), m_s1(25) {}4) 為“確定”按鈕添加消息處理代碼回到對話框設(shè)計界面,雙擊“確定”按鈕,會出現(xiàn)以下程序段(這是“確定”按鈕的單擊事件過程代碼):// dlg 消息處理程序void dlg_xiadianban::OnBnClickedOk(){// TODO: 在此添加控件通知處理程序代碼OnOK();}將其中的兩行代碼刪除,并用以下的程序段替換:// dlg_xiadianban 消息處理程序void dlg_xiadianban ::OnBnClickedOk(){ProMdl model; //模型ProFamilyName partname; //零件模型文件名int nWindowID; //窗口標識 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 26 頁 ProModelitem feature; //特征ProParameter param1,param2,param3,param4,param5,param6,param7 ; //參數(shù)(變量個數(shù)應(yīng)以所有模型中參數(shù)最多的為準)ProParamvalue value1,value2,value3,value4,value5,value6,value7; //參數(shù)值(同上)//打開鉆套模型ProStringToWstring(partname,"xiadianban.prt");ProMdlRetrieve(partname, PRO_MDL_PART, &model); //提取工作目錄中的零件模型ProMdlDisplay(model); //顯示模型ProMdlWindowGet(model,&nWindowID); //獲取模型窗口標識符ProWindowActivate(nWindowID); //激活模型窗口//初始化鉆套參數(shù)int i;double l1,h,d,dd,s2,s,s1;ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, L"l1", ¶m1); //這些參數(shù)在零件模型中應(yīng)提前設(shè)置好ProParameterInit(&feature, L"h", ¶m2);ProParameterInit(&feature, L"d", ¶m3);ProParameterInit(&feature, L"dd", ¶m4);ProParameterInit(&feature, L"s2", ¶m5);ProParameterInit(&feature, L"s", ¶m6);ProParameterInit(&feature, L"s1", ¶m7);UpdateData(true); //將編輯框中的數(shù)據(jù)傳送到關(guān)聯(lián)變量l1=m_l1; //直接取用變量的值即可h=m_h;d=m_d;dd=m_dd; 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 27 頁 s2=m_s2;s=m_s;s1=m_s1;//為下墊板參數(shù)賦新值(一定要對應(yīng)上面?zhèn)€參數(shù)的順序)value1.type=PRO_PARAM_DOUBLE; //在pro/E中,所有的參數(shù)都是實數(shù)類型value1.value.d_val=l1; ProParameterValueSet(¶m1, &value1); //設(shè)置新的參數(shù)值value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=h; // atof函數(shù)將串類型轉(zhuǎn)換成實數(shù)類型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=d; ProParameterValueSet(¶m3, &value3);value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=dd; ProParameterValueSet(¶m4, &value4);value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=s2; ProParameterValueSet(¶m5, &value5);value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=s; ProParameterValueSet(¶m6, &value6);Value7.type=PRO_PARAM_DOUBLE;Value7.value.d_val=s1; ProParameterValueSet(¶m7, &value7); 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 28 頁 ProSolidRegenerate((ProSolid)model, PRO_B_TRUE); //再生模型ProMdlSave(model); //保存模型 //////////////////////////以上下墊板處理完畢////////////////////////OnOK(); //關(guān)閉對話框}5) 為 dlg_xiadianban.cpp 源程序添加必要的頭文件#include //包含pro/Toolkit必要的頭文件#include #include #include "ProParameter.h"#include "ProSolid.h"#include "ProMdl.h"#include "ProModelItem.h"#include "ProUIInputpanel.h"#include #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") //上面一行導入ADO相關(guān)的類聲明B.導套添加一個對話框資源圖 4-27:圖4-27 對話框5 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 29 頁 在上面的原始對話框中,添加靜態(tài)文本控件(Static Text) 、編輯控件(Edit Control)和圖片控件(Picture Control) ,并將對話框界面修改成以下布局圖 4-28。圖4-28 對話框61) 為工件參數(shù)輸入對話框添加類并為編輯控件關(guān)聯(lián)成員變量在對話框空白處點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加類” ,類名稱為dlg_daotao。選中編輯控件,點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加變量” ,為IDC_EDIT1 添加一個 double 類型的變量,變量名取為 m_d。這個成員變量的初始值為零,下面改變初始值。打開 dlg_daotao.cpp 源程序文件,找到如下代碼段并作相應(yīng)的變量聲明:dlg_daotao::dlg_daotao(CWnd* pParent /*=NULL*/): CDialog(dlg_daotao::IDD, pParent), m_d (D_HOLE){}2) 為“確定”按鈕添加消息處理代碼回到對話框設(shè)計界面,雙擊“確定”按鈕,會出現(xiàn)以下程序段(這是“確定”按鈕的單擊事件過程代碼): 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 30 頁 // dlg 消息處理程序void dlg_daotao::OnBnClickedOk(){// TODO: 在此添加控件通知處理程序代碼OnOK();}將其中的兩行代碼刪除,并用以下的程序段替換:// dlg_daotao 消息處理程序void dlg_daotao::OnBnClickedOk() //OK按鈕處理程序{UpdateData(true); //將編輯框中的數(shù)據(jù)(工件孔徑)傳送到關(guān)聯(lián)變量m_DHole//根據(jù)SQL語句生成記錄集m_p1Recordset.CreateInstance(__uuidof(Recordset));_variant_t RecordsAffected; CString vSQL;vSQL.Format("SELECT * FROM 導套WHERE d='%f'",m_d );m_p1Recordset=m_p1Connection->Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText); if((m_p1Recordset->adoBOF)&&(m_p1Recordset->adoEOF)){AfxMessageBox("沒有滿足條件的記錄!");m_p1Recordset->Close();return;}//從記錄集獲取相應(yīng)的值,并賦給變量// while(!m_p1Recordset->adoEOF) //如果要處理多條記錄,則可用循環(huán)語句// { //目前記錄集中只會有一條記錄 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 31 頁 // int d; CString l,H,dd; // 暫時全部設(shè)為串類型,后面再進行轉(zhuǎn)換_variant_t vFieldValue;D_HOLE=m_d //直接取用文本框中所輸入直徑 (關(guān)聯(lián)變量的值)vFieldValue = m_p1Recordset->GetCollect("l"); l= (char*)_bstr_t(vFieldValue); vFieldValue = m_p1Recordset->GetCollect("H"); H = (char*)_bstr_t(vFieldValue); vFieldValue = m_p1Recordset->GetCollect("dd"); dd = (char*)_bstr_t(vFieldValue); // m_p1Recordset->MoveNext(); //將記錄指針移到下一條記錄// }//聲明變量ProMdl model; //模型ProFamilyName partname; //零件模型文件名int nWindowID; //窗口標識ProModelitem feature; //特征ProParameter param1,param2,param3,param3; //參數(shù)(變量個數(shù)應(yīng)以所有模型中參數(shù)最多的為準)ProParamvalue value1,value2,value3,value3; //參數(shù)值(同上)/*打開導套模型*/ProStringToWstring(partname,"daotao.prt");ProMdlRetrieve(partname, PRO_MDL_PART, &model); //提取工作目錄中的零件模型ProMdlDisplay(model); //顯示模型ProMdlWindowGet(model,&nWindowID); //獲取模型窗口標識符ProWindowActivate(nWindowID); //激活模型窗口//初始化墊圈參數(shù)int i; 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 32 頁 ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, L"D", ¶m1); //這些參數(shù)在零件模型中應(yīng)提前設(shè)置好ProParameterInit(&feature, L"l", ¶m2);ProParameterInit(&feature, L"H", ¶m3);ProParameterInit(&feature, L"dd", ¶m4);//為導套參數(shù)賦新值(一定要對應(yīng)上面?zhèn)€參數(shù)的順序)value1.type=PRO_PARAM_DOUBLE; //在pro/E中,所有的參數(shù)都是實數(shù)類型value1.value.d_val=D_HOLE ; //導套孔徑ProParameterValueSet(¶m1, &value1); //設(shè)置新的參數(shù)值value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=atof(l) ; // atof函數(shù)將串類型轉(zhuǎn)換成實數(shù)類型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=atof(H); ProParameterValueSet(¶m3, &value3);Value4.type=PRO_PARAM_DOUBLE;Value4.value.d_val=atof(dd); ProParameterValueSet(¶m4, &value4);ProSolidRegenerate((ProSolid)model, PRO_B_TRUE); //再生模型ProMdlSave(model); //保存模型 //////////////////////////以上墊圈處理完畢//////////////////////////打開裝配文件ProMdlRetrieve(L"zhuangpei.asm",PRO_MDL_ASSEMBLY, &model);ProMdlDisplay(model);ProSolidRegenerate((ProSolid)model, PRO_B_TRUE); //一定要再生裝配模型 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 33 頁 OnOK(); //關(guān)閉對話框}3) 為 dlg_daotao.cpp 源程序添加必要的頭文件、添加 ADO 類支持和相關(guān)變量#include //包含pro/Toolkit必要的頭文件#include #include #include "ProParameter.h"#include "ProSolid.h"#include "ProMdl.h"#include "ProModelItem.h"#include "ProUIInputpanel.h"#include #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") //上面一行導入ADO相關(guān)的類聲明static int D_HOLE=22; //靜態(tài)變量,存對話框中輸入的工件孔直徑_ConnectionPtr m_p1Connection; //定義數(shù)據(jù)庫連接對象_RecordsetPtr m_p1Recordset; //定義記錄集對象4) 為 dlg_dianquan 類重載 OnInitDialog()函數(shù)在類視圖下,選中 dlg_daotao 類,在屬性面板中點擊“重寫”按鈕,在下方找到OnInitDialog,選擇右邊的“添加 OnInitDialog”如圖 4-29、4-30: 黃 河 科 技 學 院 畢 業(yè) 設(shè) 計 第 34 頁 圖4-29 類視圖圖4-30 屬性此時代碼窗口中會顯示以下內(nèi)容:BOOL dlg_daotao::OnInitDialog(){CDialog::OnInitDialog();// TODO: 在此添加額外的初始化return TRUE; // return TRUE unless you set the focus to a control// 異常: OCX 屬性頁應(yīng)返回FALSE}@n
收藏