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

下載本文檔

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

文檔簡介

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

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

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

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

5、數(shù)控程序按要求讀入并提取關(guān)鍵信息到兩個創(chuàng)建的Excel表格中,這兩個Excel表格存儲路徑是用戶自定義的;按鈕4“清除”用于修改路徑或者實(shí)現(xiàn)多次轉(zhuǎn)換;按鈕5“退出”用于實(shí)現(xiàn)關(guān)閉該界面和程序。主界面說明主界面說明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)建對話框UpdateData(true);m_Input = mFileDlg.GetPathName();UpdateData(false); /更改文本框的內(nèi)容3.2.1 3.2.1 按鈕按鈕1 1“選擇文本路選擇文本路徑徑”程程序分析序分析 以上為按鈕1“選擇文本路徑”的程序,在這個程序中首先創(chuàng)建了一個對話框,并且把用戶所選定的文本路徑作為一個字符串賦給變量m_Input,方便后續(xù)程序使用,比如VC+的file里面有個open()函數(shù),open(m_Input)就表示打開你選擇的TXT文檔,并且可以對這個文

7、檔進(jìn)行操作。更改對話框作用是顯示你選擇的文本路徑,就是告訴你所選擇的是哪個文件。3.2.2 3.2.2 按鈕按鈕2“2“選擇存儲路選擇存儲路徑徑”程程序分析序分析void CTXT_EXCLDlg:OnBnClickedButton2() /控制“選擇存儲路徑”按鈕,創(chuàng)建選擇存儲路徑對話框,該函數(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“選擇存儲路選擇存儲路徑徑”程程序分析序分析 以上為按鈕2“選擇存儲路徑”的程序,該程序創(chuàng)建選擇存儲路徑對話框,是win32的固定模式,其創(chuàng)建的對話框如圖3所示:圖3 選擇存儲路徑對話框 3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析void CTXT_EXCLDlg:OnBnClickedButton3() /控制“轉(zhuǎn)換”按鈕 /警告處理 TCHAR temp = _T(輸入文本路徑錯誤,請檢查文本路徑!); if (m_Input = ) MessageBox(temp, M

9、B_OK, 0);return; TCHAR temp1 = _T(EXCL存儲路徑錯誤,請檢查文本路徑!); if (m_Output = ) MessageBox(temp1, MB_OK, 0);return; CExcel excel; /使用CExcel類創(chuàng)建了一個類對象“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)題中要求功能的最核心的部分,在這個程序中按功能而言主要分為以下三大塊: 1)打開用戶需要轉(zhuǎn)換的TXT文本,并確定Excel表格的存儲路徑正確。在這個過程中,有兩種情況:當(dāng)輸入文本路徑為空(存儲路徑為空)時彈出如圖4所示消息框,提示輸入文本路徑錯誤(Excel存儲路徑錯誤),請用戶檢查相應(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ù)存儲到數(shù)組中。在這個過程中,用到了兩個函數(shù):void CExcel:ReadStr (CString* str1, CString* str2, CString* str3, CString* str4, CString* str5)和void CExcel:ReadStr1()。 void CExcel:ReadStr ()函數(shù)中有五個參數(shù),這個數(shù) 量的設(shè)定與我所給定的數(shù)控程序有關(guān),可以調(diào)整。這個函數(shù)用于讀取整個TXT文本,并通過循環(huán)將整個文本分行分列存儲在一個數(shù)組中,該數(shù)據(jù)需要存入表1“程序參數(shù)匯總表1“中的。舉例說明這個函數(shù)的讀取方法: 3

12、.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 程序(N0010 G00 X20 Z1)數(shù)據(jù)從第一行開始讀,在讀取過程中while(file1.ifile.Read(word,1)表示一個字母一個字母讀取數(shù)據(jù),第一個讀取的是word=N,判斷word!=n接著往下執(zhí)行,再判斷word!=“ ” ,執(zhí)行stringtemp+=word0, 這時stringtemp的值為N;接著進(jìn)行第二次讀取,word=0,stringteep=N0;同樣一直向下讀等到讀取到空格時,這時stringtemp=N0010不為空格,執(zhí)行switch語句(定義了一個變量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)換換”程程序分析序分析 這時record=0,形參*str1=N0060 ,清空變量stringtemp的值 ,record+;繼續(xù)讀取數(shù)據(jù),再次出現(xiàn)空格時繼續(xù)執(zhí)行switch語句,形參*str2=G00;同樣的方法,形參*str3=X20,形參*str4=Z1,

14、執(zhí)行到這里發(fā)現(xiàn)第一行只有四個值,形參*str5的值還沒有確定,執(zhí)行else()內(nèi)容,將沒有給定的值變成空值,就是說,第一行的形參*str5=“”。 TXT文檔在讀取過程中時會自動跳轉(zhuǎn)到下一行的,后面每一行 的 數(shù) 據(jù) 讀 取 和 這 個 方 法 一 樣 , 這 個 函 數(shù) 在 函 數(shù)CExcel:WExeExcel (CSpath,CSpath1)中被調(diào)用line(TXT文本的行數(shù))次,讀取整個文本。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文件)分類存儲到三個數(shù)組strT、strS和strF中,該數(shù)據(jù)是要存入表2“程序參數(shù)匯總2“中的。舉例說明這個函數(shù)的提取方法: 程序(N0040 M03 S700)(N0050 M06 T01),這個函數(shù)中調(diào)用了file1.ifile.ReadString(stringtemp)函數(shù),這個函數(shù)作用是一次讀一整行,并把這一行數(shù)據(jù)都存儲到數(shù)組型變量stringtemp中。3.2.3 3.2.3 按鈕按鈕3“3“轉(zhuǎn)轉(zhuǎn)換換”程程序分析序分析 讀第一行時,沒有出現(xiàn)T、S、F文件,繼續(xù)讀下一行,直到出現(xiàn)T、S、F文件,第二行出現(xiàn)T文件stringtemp10=T,執(zhí)行kindT+(用變量kindT記錄出

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

17、個工作表。這些都準(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組合了這五個參數(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行第一列的那個表格 單元,SetCellValue()函數(shù)作用是給指定的單元格填入數(shù)據(jù),結(jié)合這兩個函數(shù),再做一個循環(huán)就可以把數(shù)組tt5中的數(shù)據(jù)一行一行的寫入Excel1中了。 表2 調(diào)用了函數(shù)ReadStr1(),得到了三個數(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(請重新選擇文本路徑);m_Output = _T(請重新選擇保存路徑);UpdateData(FALSE);3.2.4 3.2.4 按鈕按鈕4“4“清除清除”程序分析程序分析 以上為按鈕4“清

溫馨提示

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

評論

0/150

提交評論