VC++編程改良數(shù)控仿真加工_第1頁(yè)
VC++編程改良數(shù)控仿真加工_第2頁(yè)
VC++編程改良數(shù)控仿真加工_第3頁(yè)
VC++編程改良數(shù)控仿真加工_第4頁(yè)
VC++編程改良數(shù)控仿真加工_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、利用利用VC+VC+編程改進(jìn)編程改進(jìn)數(shù)控?cái)?shù)控加工加工仿真仿真軟件軟件學(xué)生學(xué)生:趙遠(yuǎn)飛:趙遠(yuǎn)飛學(xué)號(hào):學(xué)號(hào):201403086201403086目錄目錄第一章第一章 引言引言第二章第二章 VC+VC+簡(jiǎn)簡(jiǎn)介介第三章第三章 VC+VC+編編程程第四章第四章 結(jié)結(jié)果果驗(yàn)證驗(yàn)證第五第五章章 結(jié)論結(jié)論1 1 引言引言 伴隨著數(shù)控加工技術(shù)的發(fā)展,各類仿真軟件隨之而出。由于零件的形狀和加工環(huán)境的復(fù)雜性,在加工過(guò)程中很容易出現(xiàn)“過(guò)切”和“欠切”,甚至?xí)霈F(xiàn)刀具與工件及機(jī)床部件的干涉和碰撞,因此在實(shí)際加工前,采取適當(dāng)有效的措施對(duì)數(shù)控程序進(jìn)行檢驗(yàn)和修正是十分必要的。 也正是基于這種需求,各種數(shù)控加工仿真軟件應(yīng)運(yùn)而生

2、,其中最具有代表性的是由美國(guó)CGTECH公司開發(fā)的數(shù)控加工仿真軟件VERICUT,它作為世界最強(qiáng)的數(shù)控模擬仿真軟件,是全世界NC驗(yàn)證軟體的領(lǐng)導(dǎo)者。1 1 引言引言 該軟件若用數(shù)控代碼進(jìn)行仿真加工時(shí),其加工代碼編輯在TXT文檔中,當(dāng)加工代碼較多時(shí),用戶無(wú)法迅速瀏覽刀具類型、主軸轉(zhuǎn)速、進(jìn)給量等重要信息,也無(wú)法及時(shí)修正加工代碼。 正是基于數(shù)控仿真加工軟件的這一弊端,本文中采用VC+編程,現(xiàn)以下兩種功能: 1)將TXT文檔中的數(shù)控程序分行分列對(duì)齊輸入到表EXCEL1(程序參數(shù)匯總1)中,使數(shù)控程序更直觀、清晰、有條理,方便用戶瀏覽和修改程序?;脽羝?271 1 引言引言 2)提煉TXT文檔中數(shù)控程序的

3、重要信息,如刀具類型、主軸轉(zhuǎn)速、進(jìn)給量等。并將這三類信息分列輸入到表EXCEL2(程序參數(shù)匯總2)中,方便用戶及時(shí)捕捉關(guān)鍵信息,并根據(jù)編程經(jīng)驗(yàn)調(diào)整參數(shù)?;脽羝?282 2 VC+VC+簡(jiǎn)簡(jiǎn)介介Microsoft Visual C+,是Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不但具有程序框架自動(dòng)生成、靈活方便的類管理、代碼編寫和界面設(shè)計(jì)集成交互操作、可開發(fā)多種程序等優(yōu)點(diǎn),而且通過(guò)簡(jiǎn)單的設(shè)置就可使其生成的程序框架支持?jǐn)?shù)據(jù)庫(kù)接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面。它以擁有“語(yǔ)法高亮”,IntelliSense以及高級(jí)除錯(cuò)功能而著稱。比如,它允許用

4、戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重建功能及累加連結(jié)著稱。 3 3 VC+VC+編編程程3.1 3.1 程序流程圖程序流程圖圖1 程序流程圖3.2 3.2 主模塊分析主模塊分析 采用VC+編寫這個(gè)程序最終的實(shí)現(xiàn)的界面如圖2所示:圖2 程序界面 在此界面中有五個(gè)按鈕和兩個(gè)對(duì)話框,其中按鈕1 “選擇文本路徑”控制選擇輸入TXT文本的路徑;按鈕2“選擇存儲(chǔ)路徑”控制選擇最終生成的Excel表格的存儲(chǔ)路徑;對(duì)應(yīng)的兩個(gè)對(duì)話框既可以輸入路徑也可以顯示按鈕選擇的路徑;按鈕3“轉(zhuǎn)換”用于控制將TXT文本中的

5、數(shù)控程序按要求讀入并提取關(guān)鍵信息到兩個(gè)創(chuàng)建的Excel表格中,這兩個(gè)Excel表格存儲(chǔ)路徑是用戶自定義的;按鈕4“清除”用于修改路徑或者實(shí)現(xiàn)多次轉(zhuǎn)換;按鈕5“退出”用于實(shí)現(xiàn)關(guān)閉該界面和程序。主界面說(shuō)明主界面說(shuō)明3.2.1 3.2.1 按鈕按鈕1 1“選擇文本路選擇文本路徑徑”程程序分析序分析void CTXT_EXCLDlg:OnBnClickedButton1() /控制“選擇文本路徑”按鈕 CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOW MULTISELECT, NUL

6、L, AfxGetMainWnd();mFileDlg.DoModal(); /創(chuàng)建對(duì)話框UpdateData(true);m_Input = mFileDlg.GetPathName();UpdateData(false); /更改文本框的內(nèi)容3.2.1 3.2.1 按鈕按鈕1 1“選擇文本路選擇文本路徑徑”程程序分析序分析 以上為按鈕1“選擇文本路徑”的程序,在這個(gè)程序中首先創(chuàng)建了一個(gè)對(duì)話框,并且把用戶所選定的文本路徑作為一個(gè)字符串賦給變量m_Input,方便后續(xù)程序使用,比如VC+的file里面有個(gè)open()函數(shù),open(m_Input)就表示打開你選擇的TXT文檔,并且可以對(duì)這個(gè)文

7、檔進(jìn)行操作。更改對(duì)話框作用是顯示你選擇的文本路徑,就是告訴你所選擇的是哪個(gè)文件。3.2.2 3.2.2 按鈕按鈕2“2“選擇存儲(chǔ)路選擇存儲(chǔ)路徑徑”程程序分析序分析void CTXT_EXCLDlg:OnBnClickedButton2() /控制“選擇存儲(chǔ)路徑”按鈕,創(chuàng)建選擇存儲(chǔ)路徑對(duì)話框,該函數(shù) 是win32 固定模式UpdateData(true);BROWSEINFO bi; ZeroMemory(&bi,sizeof(BROWSEINFO); LPMALLOC pMalloc;LPITEMIDLIST pidl = SHBrowseForFolder(&bi); if (pidl=NU

8、LL) return; if(pidl != NULL) 3.2.2 3.2.2 按鈕按鈕2“2“選擇存儲(chǔ)路選擇存儲(chǔ)路徑徑”程程序分析序分析 以上為按鈕2“選擇存儲(chǔ)路徑”的程序,該程序創(chuàng)建選擇存儲(chǔ)路徑對(duì)話框,是win32的固定模式,其創(chuàng)建的對(duì)話框如圖3所示:圖3 選擇存儲(chǔ)路徑對(duì)話框 3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析void CTXT_EXCLDlg:OnBnClickedButton3() /控制“轉(zhuǎn)換”按鈕 /警告處理 TCHAR temp = _T(輸入文本路徑錯(cuò)誤,請(qǐng)檢查文本路徑!); if (m_Input = ) MessageBox(temp, M

9、B_OK, 0);return; TCHAR temp1 = _T(EXCL存儲(chǔ)路徑錯(cuò)誤,請(qǐng)檢查文本路徑!); if (m_Output = ) MessageBox(temp1, MB_OK, 0);return; CExcel excel; /使用CExcel類創(chuàng)建了一個(gè)類對(duì)象“excel” excel.WExeExcel(m_Output,m_Input); /執(zhí)行WExeExcel函數(shù),用于創(chuàng)建表1 excel.WExeExcel1(m_Output, m_Input); / 執(zhí)行WExeExcel函數(shù),用于創(chuàng)建表2 3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)換轉(zhuǎn)換“程序分析程序分析

10、以上為按鈕3“轉(zhuǎn)換“的主程序,這段程序是實(shí)現(xiàn)題中要求功能的最核心的部分,在這個(gè)程序中按功能而言主要分為以下三大塊: 1)打開用戶需要轉(zhuǎn)換的TXT文本,并確定Excel表格的存儲(chǔ)路徑正確。在這個(gè)過(guò)程中,有兩種情況:當(dāng)輸入文本路徑為空(存儲(chǔ)路徑為空)時(shí)彈出如圖4所示消息框,提示輸入文本路徑錯(cuò)誤(Excel存儲(chǔ)路徑錯(cuò)誤),請(qǐng)用戶檢查相應(yīng)的路徑;否則,順利打開文本,用戶可以操作該文本。圖4 提示消息框3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)換轉(zhuǎn)換“程序分析程序分析 2)讀取TXT文本的數(shù)據(jù),用函數(shù)file.CountLine()統(tǒng)計(jì)該文本的行數(shù),int line = file.CountLine()

11、表示用變量line記錄文本的行數(shù);把讀取到的數(shù)據(jù)存儲(chǔ)到數(shù)組中。在這個(gè)過(guò)程中,用到了兩個(gè)函數(shù):void CExcel:ReadStr (CString* str1, CString* str2, CString* str3, CString* str4, CString* str5)和void CExcel:ReadStr1()。 void CExcel:ReadStr ()函數(shù)中有五個(gè)參數(shù),這個(gè)數(shù) 量的設(shè)定與我所給定的數(shù)控程序有關(guān),可以調(diào)整。這個(gè)函數(shù)用于讀取整個(gè)TXT文本,并通過(guò)循環(huán)將整個(gè)文本分行分列存儲(chǔ)在一個(gè)數(shù)組中,該數(shù)據(jù)需要存入表1“程序參數(shù)匯總表1“中的。舉例說(shuō)明這個(gè)函數(shù)的讀取方法: 3

12、.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 程序(N0010 G00 X20 Z1)數(shù)據(jù)從第一行開始讀,在讀取過(guò)程中while(file1.ifile.Read(word,1)表示一個(gè)字母一個(gè)字母讀取數(shù)據(jù),第一個(gè)讀取的是word=N,判斷word!=n接著往下執(zhí)行,再判斷word!=“ ” ,執(zhí)行stringtemp+=word0, 這時(shí)stringtemp的值為N;接著進(jìn)行第二次讀取,word=0,stringteep=N0;同樣一直向下讀等到讀取到空格時(shí),這時(shí)stringtemp=N0010不為空格,執(zhí)行switch語(yǔ)句(定義了一個(gè)變量record記錄每行中出現(xiàn)空格的

13、次數(shù),當(dāng)record=0,形參*str1=stringtemp;record=1,形參*str2=stringtemp;record=2,形參*str3=stringtemp;record=3, 形參*str4=stringtemp; record=4,形參*str5=stringtemp)3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 這時(shí)record=0,形參*str1=N0060 ,清空變量stringtemp的值 ,record+;繼續(xù)讀取數(shù)據(jù),再次出現(xiàn)空格時(shí)繼續(xù)執(zhí)行switch語(yǔ)句,形參*str2=G00;同樣的方法,形參*str3=X20,形參*str4=Z1,

14、執(zhí)行到這里發(fā)現(xiàn)第一行只有四個(gè)值,形參*str5的值還沒(méi)有確定,執(zhí)行else()內(nèi)容,將沒(méi)有給定的值變成空值,就是說(shuō),第一行的形參*str5=“”。 TXT文檔在讀取過(guò)程中時(shí)會(huì)自動(dòng)跳轉(zhuǎn)到下一行的,后面每一行 的 數(shù) 據(jù) 讀 取 和 這 個(gè) 方 法 一 樣 , 這 個(gè) 函 數(shù) 在 函 數(shù)CExcel:WExeExcel (CSpath,CSpath1)中被調(diào)用line(TXT文本的行數(shù))次,讀取整個(gè)文本。3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 void CExcel:ReadStr1()函數(shù),用于讀取TXT文本,并將其中的刀具類型(T文件)、主軸轉(zhuǎn)速(S文件)、進(jìn)給量(

15、F文件)分類存儲(chǔ)到三個(gè)數(shù)組strT、strS和strF中,該數(shù)據(jù)是要存入表2“程序參數(shù)匯總2“中的。舉例說(shuō)明這個(gè)函數(shù)的提取方法: 程序(N0040 M03 S700)(N0050 M06 T01),這個(gè)函數(shù)中調(diào)用了file1.ifile.ReadString(stringtemp)函數(shù),這個(gè)函數(shù)作用是一次讀一整行,并把這一行數(shù)據(jù)都存儲(chǔ)到數(shù)組型變量stringtemp中。3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 讀第一行時(shí),沒(méi)有出現(xiàn)T、S、F文件,繼續(xù)讀下一行,直到出現(xiàn)T、S、F文件,第二行出現(xiàn)T文件stringtemp10=T,執(zhí)行kindT+(用變量kindT記錄出

16、現(xiàn)的T文件的數(shù)目),此時(shí)kindT=1,記錄刀具文件的數(shù)組strTkindT+=strT1 (strT0 = _T(T(刀具)),用循環(huán)實(shí)現(xiàn)將字母T后面的信息都存儲(chǔ)到strT1=T01;再繼續(xù)讀下一行程序,和前面方法一樣,會(huì)得到strT2、strT3等。同理,主軸轉(zhuǎn)速(S文件)的數(shù)據(jù)存儲(chǔ)在數(shù)組strS中,進(jìn)給量(F文件)的數(shù)據(jù)存儲(chǔ)在數(shù)組strF中。3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)換轉(zhuǎn)換“程序分析程序分析 3)首先,啟動(dòng)Excel服務(wù)器;而后,打開一個(gè)工作薄,若不存在則新增一個(gè)工作?。ㄟ@個(gè)工作薄路徑為用戶選定的Excel存儲(chǔ)路徑+程序匯總/參數(shù)匯總);再打開一個(gè)工作表,若不存在則新增一

17、個(gè)工作表。這些都準(zhǔn)備好后,就可以將數(shù)組中的數(shù)據(jù)按要求寫入Excel表格中了,表1和表2的要求不同,寫入方法也不同。 表1 調(diào)用了函數(shù)ReadStr(tt, tt+1, tt+2, tt+3, tt+4),這里(tt,tt+1,tt+2,tt+3,tt+4)函數(shù)實(shí)參(形參是*str1,*str2,*str3,*str4,*str5),并且用數(shù)組tt5組合了這五個(gè)參數(shù)。3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 用SetRange(int ColNum, int RowNum)(ColNum表示列數(shù), RowNum表示行數(shù))表示定位表格單元,如SetRange(1,2)表示

18、第2行第一列的那個(gè)表格 單元,SetCellValue()函數(shù)作用是給指定的單元格填入數(shù)據(jù),結(jié)合這兩個(gè)函數(shù),再做一個(gè)循環(huán)就可以把數(shù)組tt5中的數(shù)據(jù)一行一行的寫入Excel1中了。 表2 調(diào)用了函數(shù)ReadStr1(),得到了三個(gè)數(shù)組數(shù)據(jù)strT、strS和strF,在循環(huán)中結(jié)合SetRange(int ColNum, int RowNum)和SetCellValue()函數(shù),將T、S、F文件一列一列寫入Excel2中(T文件是第一列,S文件是第二列,F(xiàn)文件是第三列)。 最后,就是把寫入數(shù)據(jù)的Excel表格保存,釋放資源。3.2.4 3.2.4 按鈕按鈕4“4“清清除除”程程序分析序分析 void CTXT_EXCLDlg:OnBnClickedButton4() /控制“清除”按鈕UpdateData(TRUE);m_Input = _T(請(qǐng)重新選擇文本路徑);m_Output = _T(請(qǐng)重新選擇保存路徑);UpdateData(FALSE);3.2.4 3.2.4 按鈕按鈕4“4“清除清除”程序分析程序分析 以上為按鈕4“清

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論