版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《CADCAM課程設(shè)計》任務(wù)書
設(shè)計題目:選題1、電動絞盤外形設(shè)計與制造選題2、光桿排線器設(shè)計與制造一、目的:計算機(jī)輔助設(shè)計與制造(CAD/CAM)技術(shù)已經(jīng)用于研究、開發(fā)、制造等方面。由于這一技術(shù)將計算機(jī)高速而精確的計算能力、大容量存儲和處理數(shù)據(jù)的能力與人的邏輯判斷、綜合分析能力以及創(chuàng)造性思維結(jié)合起來,從而產(chǎn)生了巨大的威力,應(yīng)用范圍及廣,經(jīng)濟(jì)效益顯著。目前,在發(fā)達(dá)國家已經(jīng)形成了關(guān)于計算機(jī)輔助設(shè)計與制造的研究、開發(fā)、制造、銷售以及咨詢服務(wù)的新產(chǎn)業(yè)。本課程的任務(wù)是使學(xué)生掌握計算機(jī)輔助設(shè)計與制造(CAD/CAM)技術(shù)的基本理論、基本知識和基本技能,學(xué)會各種常用的計算機(jī)輔助設(shè)計與制造(CAD/CAM)技術(shù)的基本方法,并具有計算機(jī)輔助設(shè)計與制造(CAD/CAM)的初步能力。二、要求:CAD/CAM課程設(shè)計的基本要求是結(jié)合一個典型的機(jī)械產(chǎn)品,綜合運(yùn)用計算機(jī)輔助設(shè)計與制造(CAD/CAM)技術(shù)的基本方法,對典型的機(jī)械產(chǎn)品進(jìn)行設(shè)計、數(shù)控編程、工藝編程等。通過設(shè)計進(jìn)一步提高學(xué)生計算機(jī)輔助設(shè)計與制造(CAD/CAM)的能力。在設(shè)計過程中必須做到:(1)隨時復(fù)習(xí)教科書、聽課筆記及習(xí)題。(2)及時了解有關(guān)資料,做好準(zhǔn)備工作,充分發(fā)揮自己的主觀能動性和創(chuàng)造性。(3)按預(yù)定計劃循序完成任務(wù)。三、設(shè)計內(nèi)容:1、零件測繪、建模和零件圖繪制2)零件加工工藝分析和數(shù)控編程3)零件制造4)編寫設(shè)計說明書(1)目錄;(2)任務(wù)書及進(jìn)度安排;(3)設(shè)計制造過程;(4)設(shè)計小結(jié)(心得體會);(5)參考文獻(xiàn)資料。四、注意事項(xiàng):1、課程設(shè)計過程中時發(fā)現(xiàn)問題,首先應(yīng)自己考慮,查找資料,提出自己的看法和意見,與指導(dǎo)教師磋商,不應(yīng)向指導(dǎo)教師直接尋求答案。2、設(shè)計時學(xué)生必須在規(guī)定的教室進(jìn)行設(shè)計,未經(jīng)批準(zhǔn)不得缺席,經(jīng)常遲到或曠課者,除按考勤記錄外,視情節(jié)輕重,影響設(shè)計成績。3、在最后一周星期五下午,將設(shè)計說明書和實(shí)物上交,遲交者扣分。五、參考書目:Pro/ENGINEERwildfire3.0機(jī)械設(shè)計實(shí)例教程趙秋玲電子工業(yè)出版社2007MastercamX4中文版從入門到精通胡仁喜,劉昌麗,董榮榮機(jī)械工業(yè)出版社2010制造工藝實(shí)訓(xùn)教程劉鎮(zhèn)昌主編機(jī)械工業(yè)出版社2005《CADCAM課程設(shè)計》進(jìn)度安排周次日期主要內(nèi)容結(jié)果19.6-9.121)人員分組、任務(wù)分解2)零件三維建模(PRO-E或MASTERCAM環(huán)境下)3)熟悉機(jī)床操作三維零件圖29.13-9.191)數(shù)字化制造工藝規(guī)劃,編制數(shù)控制造工藝過程卡2)編制數(shù)控程序、制造仿真(在MASTERCAM環(huán)境下)零件制造工藝規(guī)劃說明,制造工藝過程卡數(shù)控代碼,仿真過程39.20-9.261)零件數(shù)控制造2)整理課程設(shè)計說明書合格零件實(shí)體,課程設(shè)計說明書建模過程新建一個文件(1)執(zhí)行文件新建命令,彈出新建對話框。(2)在類型選項(xiàng)中選中零件選項(xiàng),在名稱文本框中輸入名稱“huogai”單擊確定。2.旋轉(zhuǎn)(1)單擊草繪按鈕指定top面為草繪平面,參照面為right基準(zhǔn)面。(2)繪制草繪圖(3)單擊旋轉(zhuǎn)按鈕,產(chǎn)生實(shí)體拔模斜度(1)單擊拔模按鈕,設(shè)置角度為1°(2)單擊確定3.倒角(1)單擊倒角按鈕,設(shè)置dxd倒角半徑為3,選取底面邊線,單擊確定4.拉伸扇形(1)創(chuàng)建一個基準(zhǔn)平面1,選?。ǖ菇桥c曲面的相交線)(2)單擊草繪按鈕,選擇基準(zhǔn)平面1為草繪平面(3)繪制草繪圖(4)單擊拉伸按鈕,并單擊去除材料按鈕,高度能切除即可(5)單擊倒圓角按鈕,設(shè)置半徑為0.5,選取扇形區(qū)域的邊線(6)在模型樹下同時選中拉伸,然后單擊陣列按鈕,按軸旋轉(zhuǎn),360°內(nèi)設(shè)置4個5.圓柱邊上的切除材料(1)創(chuàng)建基準(zhǔn)平面2偏移圓柱平面12(2)單擊草繪按鈕,選擇基準(zhǔn)平面2為草繪平面(3)繪制草繪圖(1)單擊拉伸按鈕,并單擊去除材料按鈕,高度設(shè)置合適即可(2)單擊拔模按鈕,設(shè)置角度為2°(5)單擊倒圓角按鈕,設(shè)置圓角半徑為4,選取底角的兩條邊線(6)在模型樹下選中拉伸,然后單擊陣列按鈕,按軸旋轉(zhuǎn),360°內(nèi)設(shè)置8個6.抽殼(1)單擊抽殼按鈕,選取圓柱上平面,設(shè)置厚度為2.57.倒圓角單擊到圓角按鈕,設(shè)置圓角半徑為6單擊倒圓角按鈕,設(shè)置如下圖單擊倒圓角按鈕,設(shè)置圓角半徑為14.偏移(1)選取曲面,執(zhí)行編輯,偏移命令,設(shè)置如下(2)單擊確定9.倒圓角(1)單擊倒圓角按鈕,對各個邊進(jìn)行到圓角,上曲面扇形倒角半徑0.5其他為110.內(nèi)部構(gòu)造(1)單擊草繪按鈕,設(shè)置蓋口處為基準(zhǔn)平面3,繪制草繪圖(2)單擊拉伸,設(shè)置厚度為2.5,(1)單擊草繪按鈕,設(shè)置基準(zhǔn)平面4偏移基準(zhǔn)平面3距離為16,以基準(zhǔn)平面4為草繪平面,繪制草繪圖(1)單擊拉伸,厚度為2.5(1)單擊草繪按鈕,設(shè)置基準(zhǔn)平面3為草繪平面,繪制草繪圖(4)單擊拉伸按鈕,單擊去除材料按鈕,高度設(shè)置為28.3,單擊確定(1)單擊斜度按鈕,設(shè)置如下(1)單擊草繪按鈕,設(shè)置基準(zhǔn)平面3為草繪平面。繪制草繪圖(2)單擊拉伸按鈕,設(shè)置高度為7,單擊去除材料按鈕單擊倒圓角按鈕,對中間部分倒圓角(2)單擊偏移按鈕,繪制如下(9)生成如下圖(10)進(jìn)行倒圓角,然后完成保存數(shù)控加工工藝的基本過程及工藝描述(1)確定進(jìn)行數(shù)控加工的內(nèi)容(2)進(jìn)行零件數(shù)控加工的工藝分析(3)數(shù)控加工的工藝設(shè)計(4)工件裝夾(5)后處理工作機(jī)床的選擇(1)數(shù)控機(jī)床主要規(guī)格的尺寸應(yīng)與工件的輪廓尺寸相適應(yīng)。即小的共建應(yīng)當(dāng)選擇小規(guī)格的機(jī)床加工,而大的工件則選擇大規(guī)格的機(jī)床加工,做到設(shè)備的合理使用。(2)機(jī)床結(jié)構(gòu)取決于機(jī)床規(guī)格尺寸,加工工件的重量等因素的影響。(3)機(jī)床的工件精度與工序要求的加工精度相適應(yīng)。根據(jù)零件的加工精度要求選擇機(jī)床,如精度要求低的粗加工工序,應(yīng)選擇經(jīng)度低的機(jī)床,精度要求高的精加工工序,應(yīng)選擇精度高的機(jī)床。(4)機(jī)床的功率與剛度以及機(jī)動范圍應(yīng)與工序的性質(zhì)和最合適的切削用量相適應(yīng)。如粗加工工序去除的毛坯余量大,切削余量選得大,就要求機(jī)床有大的功率和較好的剛度。(5)裝夾方便,夾具結(jié)構(gòu)簡單也是選擇數(shù)控設(shè)備需要考慮的一個因素。選擇采用臥式數(shù)控機(jī)床,還是選擇立式數(shù)控機(jī)床,將直接影響所選擇的夾具的結(jié)構(gòu)和加工坐標(biāo)系,直接關(guān)系到數(shù)控編程的難易程度和數(shù)控加工的可靠性。此處選擇數(shù)控機(jī)床為SIEMENS銑床道具的選擇及材料道具的選擇是數(shù)控加工的重要工藝內(nèi)容之一,它不僅影響機(jī)床的加工效率,而且直接影響加工質(zhì)量。編程時,選擇道具通常要考慮,機(jī)床的加工能力,工序內(nèi)容,工件材料等因素。與傳統(tǒng)的加工方法相比,數(shù)控加工對刀具的要求更高。不僅要求精度高,剛度高,耐用度高,而且要求尺寸穩(wěn)定,安裝調(diào)整方便。這就要求用新型優(yōu)質(zhì)材料數(shù)控加工刀具,并優(yōu)選刀具參數(shù)。選取刀具時,要使刀具的尺寸與被加工工件的表面尺寸和形式相適應(yīng)。生產(chǎn)中,平面零件周邊輪廓的加工,常采用立銑刀。銑削平面時,應(yīng)選用硬質(zhì)合金刀片銑刀;加工凸臺或凹槽時,選用速鋼立銑刀。對一些立體型面和變斜角輪廓形的加工,常采用球頭銑刀,環(huán)形銑刀,鼓形銑刀,錐形刀和盤形刀。曲面加工常采用球頭銑刀,但加工曲面較低平坦部位時,刀具以球頭頂?shù)度星邢?,切削條件較差,因而采用環(huán)形銑刀數(shù)控加工工序工步號工步內(nèi)容刀具號刀具規(guī)格主軸轉(zhuǎn)速r/min進(jìn)給速度mm/min1粗銑外形T01Φ6球刀7003002精銑外形T01Φ6球刀7003003雕刻T-MAXT02Φ1刻字刀7003004粗銑內(nèi)腔T03Φ8圓鼻刀700300數(shù)控加工仿真這里先要借助實(shí)體建模建立的模型,并且要對機(jī)床,刀具,以及各種加工參數(shù)選擇設(shè)置。對這些選擇要能夠滿足所加工表面的精度等級。然后進(jìn)行NC序列設(shè)置,加工軌跡演示及NC檢測,最后生成零件數(shù)控加工的相關(guān)文件(如刀位數(shù)據(jù)文件,刀具清單和數(shù)控加工代碼等)需要注意的問題是加工確定加工順序及走到路線,考慮刀具的進(jìn),退刀(切入,切出)路線時,刀具的切入,切出點(diǎn)應(yīng)沿零件輪廓的切線上,以保證工件輪廓光滑;應(yīng)避免在工件輪廓面上垂直上,下刀而劃傷工件表面;盡量減少在輪廓加工切削過程中的暫停(切削力突然變化造成彈性變形),以免留下刀痕。故外輪廓加工采用順銑方式,刀具沿切線方向切入和切出。在數(shù)控加工中,常常要注意并防止刀具在運(yùn)動過程中與夾具或工件發(fā)生意外碰撞,為此必須設(shè)法告訴操作者關(guān)于編程中的刀具運(yùn)動路線,這是數(shù)控加工中關(guān)鍵所在。MasterCAM的編程仿真需要加工的零件模型圖(減速箱后蓋)1.打開轉(zhuǎn)換好的igs文件,旋轉(zhuǎn)零件使要加工的外形面朝向Z軸,減速箱蓋的最高高度為34.99mm,最大直徑為90.29mm,所以我們將毛坯材料設(shè)置為高度37mm,直徑91mm的實(shí)體圓柱2.先用等高外形進(jìn)行外形粗銑,選用直徑6mm的球刀,將要加工的外形面全部選中加工面預(yù)留量為0.3mm等高外形粗加工結(jié)果如下圖所示3.然后采用精加工放射狀進(jìn)行精銑,還是選用直徑6mm的球刀,將要加工的外形面全部選中放射狀精加工的結(jié)果如下圖所示外形的精粗加工都是同一把刀,所以我們把NC在一起導(dǎo)出,保存為“外形精粗加工.nc”4.再進(jìn)行T-MAX字的雕刻,采用粗加工平行銑削,選用直徑1mm的雕刻刀,將要雕刻字選中字的仿真結(jié)果如下圖所示導(dǎo)出T-MAX字的NC程序?yàn)椤癟-MAX.nc”5.應(yīng)時間有限,我們就主要加工外形,內(nèi)腔就是銑出個大概形狀即可以了,重新打開igs文件,旋轉(zhuǎn)零件使要加工的內(nèi)腔朝向Z軸,材料毛坯設(shè)置還是和銑外形面是設(shè)置一樣,就是改了下視點(diǎn)坐標(biāo)6.內(nèi)腔加工采用曲面粗加工挖槽,選用直徑8mm,刀角半徑1mm的圓鼻刀使用螺旋切削方式,預(yù)留量為0,最后仿真結(jié)果如下圖所示導(dǎo)出內(nèi)腔NC程序?yàn)椤皟?nèi)腔挖槽.nc”《NC程序詳見附件》課程設(shè)計心得為期三周的課程設(shè)計終于結(jié)束了,這是第一次實(shí)踐課程設(shè)計,需要接觸機(jī)床加工零件,說實(shí)話,機(jī)床操作大家都不會,我想沒一個人會吧,只是大二精工實(shí)習(xí)的時候稍微學(xué)了一點(diǎn)點(diǎn),現(xiàn)在早忘得一干二凈了!全考研究生學(xué)長幫我們操作機(jī)床,銑床加工比我們想象中的要慢很多很多,大概每組的零件加工都差不多要20個小時.第一周吧,接到任務(wù)都不知道干什么,我們組做的是減速箱蓋,當(dāng)時老師沒給我們介紹清楚那個可以自動編程的軟件MasterCAM,還以為是和ProE的建模軟件,不過網(wǎng)上關(guān)于MasterCAM的資料不是很多,和ProE,UG是沒得比的,不過感覺很奇怪,這么好的軟件用的人這么少,而且這軟件之前從沒聽說過,教程貌似也不多不知道它還有數(shù)控自動編程的功能,這個軟件真的很強(qiáng)大,絕對很強(qiáng)大。導(dǎo)致第一周大家都不知道干什么,以為要自己手動編程,差不多都放棄了,有個同學(xué)叫他朋友幫忙用其它軟件編出了程序,不知道他朋友用的是什么軟件!第二周的時候才開始學(xué)MasterCAM,網(wǎng)上好不容易找到了個X3版本的,帶漢化和破解,剛開始的時候是下了最新版本的X4而且剛升級到MU1,不過下好了按安裝說明一步步操作下來,也沒出現(xiàn)過什么異常,可是就是打不開,說什么sim找不到,裝裝卸卸了好幾次,終于火了,下了個X3版本的裝了,結(jié)果一次通過,真是汗顏!之后就馬上去圖書館借了相關(guān)的教程書,其實(shí)關(guān)于MasterCAM的書真的很少,找了好久才找到。跑回寢室打開軟件,翻開書開始熟悉操作界面,操作界面看起來很復(fù)雜,全是按鈕,看著頭疼。MasterCAM和其他建模軟件一樣也可以自己畫2D和3D圖形,不過我沒時間從頭開始學(xué),直接跳到數(shù)控加工編程!第一次不知道直接就把prt文件導(dǎo)進(jìn)去,想要選擇面加工的時候,不像書上那樣可以一個一個面選擇,我一選就是所有的面都選上了,這樣搞來搞去搞了好長時間,軟件卸載又安裝了好多次,結(jié)果還是一樣,一氣之下就不想學(xué)了!后來向同學(xué)抱怨的時候,他告訴我要先用ProE保存副本為igs格式文件,不然直接導(dǎo)進(jìn)去無法使用的,這最重要的一步老師忘了沒和我們說,害我浪費(fèi)了兩天時間真是汗呀!MasterCAM算是入門了,其實(shí)只是銑床加工入門而已,加工時很多參數(shù)需要設(shè)置,其實(shí)沒實(shí)際經(jīng)驗(yàn),只是按書上差不多設(shè)置,根本不知道如何設(shè)置能達(dá)到最合理,最效率的加工效果,不過做的多了總會慢慢熟悉的!在仿真模擬的時候,基本上能用的加工方式都用過,之后對比那種最終效果最好,效率最高,其實(shí)參數(shù)的設(shè)置很重要,對加工效果影響很大,不過這只能靠經(jīng)驗(yàn)了,MasterCAM用得多了自然就會知道了!不得不贊嘆這軟件的強(qiáng)大,不過加工時還是得和實(shí)際結(jié)合起來,畢竟MasterCAM只是理論上的模擬仿真,實(shí)際給的毛坯不可能和程序里設(shè)置的一模一樣,所以編程的時候也要結(jié)合實(shí)際,比如刀具是不是夠長,被夾具夾的地方是否能加工得到,對刀時的誤差等等要考慮的因素很多。中間解決了很多問題,終于可以等著加工了,用的是塑料圓柱,加工起來沒有金屬那么光滑,那加工速度是慢的嘞,跟車床是沒得比的,看守機(jī)床了好長時間,終于看到了最終零件,沒有模擬仿真中的那樣好看,不過也還不錯的了!在本次設(shè)計中,要用到許多基礎(chǔ)理論,由于有些些知識已經(jīng)遺忘,這是我們要重新溫習(xí)知識,因此設(shè)計之前對大學(xué)里面涉及到的有關(guān)該課題的課程認(rèn)真的復(fù)習(xí)了一遍,開始對本課題的設(shè)計任務(wù)有了大致的了解,并也有了設(shè)計的感覺。同時,由于設(shè)計的需要,要查閱并收集大量關(guān)于機(jī)械制造方面的文獻(xiàn),進(jìn)而對這些文獻(xiàn)進(jìn)行分析和總結(jié),這些都提高了我們對于專業(yè)知識的綜合運(yùn)用能力和分析解決實(shí)際問題的能力課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程.”千里之行始于足下”,通過這次課程設(shè)計,我深深體會到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計,學(xué)會腳踏實(shí)地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實(shí)的基礎(chǔ).說實(shí)話,課程設(shè)計真的有點(diǎn)累.然而,當(dāng)我一著手清理自己的設(shè)計成果,漫漫回味這三周的心路歷程,一種少有的成功喜悅即刻使倦意頓消.雖然這是我剛學(xué)會走完的第一步,也是人生的一點(diǎn)小小的勝利,然而它令我感到自己成熟了許多。通過課程設(shè)計,使我深深體會到,干任何事都必須耐心,細(xì)致.短短三周是課程設(shè)計,使我發(fā)現(xiàn)了自己所掌握的知識是真正如此的缺乏,自己綜合應(yīng)用所學(xué)的專業(yè)知識能力是如此的不足,幾年來的學(xué)習(xí)了那么多的課程,今天才知道自己并不會用.最后感謝組員們的大力配合,沒有你們這也是不可能完成的,畢竟人多主意也多,想法也多,選擇也就更多,還有老師和學(xué)長的指導(dǎo),幫助我們這次課程設(shè)計能夠順利的完成!這次的課程設(shè)計主要學(xué)會理論與實(shí)際不可分開,入門了非常強(qiáng)大的MasterCAM軟件,謝謝老師和學(xué)長的指導(dǎo),指導(dǎo)我們完成這次的cadcam的課程設(shè)計!參考文獻(xiàn):孫曉菲王立新溫玲娟等編著MasterCAMX3中文版標(biāo)準(zhǔn)教程清華大學(xué)出版社暴風(fēng)創(chuàng)新科技編著Pro/ENGINEER從入門到精通野火版4.0人民郵電出版社王紹軍主編機(jī)械制造工藝設(shè)計手冊黑龍江:哈爾濱工業(yè)大學(xué)出版社張樹生主編機(jī)械制造工程學(xué)沈陽:東北大學(xué)出版社附錄資料:不需要的可以自行刪除perl函數(shù)應(yīng)用一、進(jìn)程處理函數(shù)
1、進(jìn)程啟動函數(shù)函數(shù)名eval調(diào)用語法eval(string)解說將string看作Perl語句執(zhí)行。
正確執(zhí)行后,系統(tǒng)變量$@為空串,如果有錯誤,$@中為錯誤信息。例子$print="print(\"hello,world\\n\");";
eval($print);結(jié)果輸出hello,world函數(shù)名system調(diào)用語法system(list)解說list中第一個元素為程序名,其余為參數(shù)。
system啟動一個進(jìn)程運(yùn)行程序并等待其結(jié)束,程序結(jié)束后錯誤代碼左移八位成為返回值。例子@proglist=("echo","hello,world!");
system(@proglist);結(jié)果輸出hello,world!函數(shù)名fork調(diào)用語法procid=fork();解說創(chuàng)建程序的兩個拷貝--父進(jìn)程和子進(jìn)程--同時運(yùn)行。子進(jìn)程返回零,父進(jìn)程返回非零值,此值為子程序的進(jìn)程ID號。例子$retval=fork();
if($retval==0){
#thisisthechildprocess
exit;#thisterminatesthechildprocess
}else{
#thisistheparentprocess
}結(jié)果輸出無函數(shù)名pipe調(diào)用語法pipe(infile,outfile);解說與fork合用,給父進(jìn)程和子進(jìn)程提供通信的方式。送到outfile文件變量的信息可以通過infile文件變量讀取。步驟:
1、調(diào)用pipe
2、用fork將程序分成父進(jìn)程和子進(jìn)程
3、一個進(jìn)程關(guān)掉infile,另一個關(guān)掉outfile例子pipe(INPUT,OUTPUT);
$retval=fork();
if($retval!=0){
#thisistheparentprocess
close(INPUT);
print("Enteralineofinput:\n");
$line=<STDIN>;
printOUTPUT($line);
}else{
#thisisthechildprocess
close(OUTPUT);
$line=<INPUT>;
print($line);
exit(0);
}結(jié)果輸出$
program
Enteralineofinput:
Hereisatestline
Hereisatestline
$函數(shù)名exec調(diào)用語法exec(list);解說與system類似,區(qū)別是啟動新進(jìn)程前結(jié)束當(dāng)前程序。常與fork合用,當(dāng)fork分成兩個進(jìn)程后,子進(jìn)程用exec啟動另一個程序。例子
結(jié)果輸出
函數(shù)名syscall調(diào)用語法syscall(list);解說調(diào)用系統(tǒng)函數(shù),list第一個元素是系統(tǒng)調(diào)用名,其余為參數(shù)。
如果參數(shù)是數(shù)字,就轉(zhuǎn)化成C的整型數(shù)(typeint)。否則傳遞字符串的指針。詳見UNIX的幫助或Perl文檔。
使用syscall必須包含文件syscall.pl,即:
require("syscall.ph");例子
結(jié)果輸出
2、進(jìn)程終止函數(shù)函數(shù)名Die調(diào)用語法die(message);解說終止程序并向STDERR輸出錯誤信息。message可以為字符串或列表。如果最后一個參數(shù)不包含換行符,則程序文件名和行號也被輸出。例子die("Cannotopeninputfile");結(jié)果輸出Cannotopeninputfileatmyprogline6.函數(shù)名warn調(diào)用語法warn(message);解說與die類似,區(qū)別是不終止程序。例子warn("Danger!Danger!\n");結(jié)果輸出Danger!Danger!函數(shù)名exit調(diào)用語法exit(retcode);解說終止程序并指定返回值。例子exit(2);結(jié)果輸出無函數(shù)名kill調(diào)用語法kill(signal,proclist);解說給一組進(jìn)程發(fā)送信號。
signal是發(fā)送的數(shù)字信號,9為殺掉進(jìn)程。
proclist是進(jìn)程ID列表。詳見kill的UNIX幫助。例子
結(jié)果輸出
3、進(jìn)程控制函數(shù)函數(shù)名sleep調(diào)用語法sleep(time);解說將程序暫停一段時間。time是停止的秒數(shù)。返回值為實(shí)際停止的秒數(shù)。例子sleep(5);結(jié)果輸出無函數(shù)名wait調(diào)用語法procid=wait();解說暫停程序執(zhí)行,等待子進(jìn)程終止。
不需要參數(shù),返回值為子進(jìn)程ID,如果沒有子進(jìn)程,返回-1。例子
結(jié)果輸出
函數(shù)名waitpid調(diào)用語法waitpid(procid,waitflag);解說暫停程序執(zhí)行,等待特定的子進(jìn)程終止。procid為等待的進(jìn)程ID例子$procid=fork();
if($procid==0){
#thisisthechildprocess
print("thislineisprintedfirst\n");
exit(0);
}else{
#thisistheparentprocess
waitpid($procid,0);
print("thislineisprintedlast\n");
}結(jié)果輸出$program
thislineisprintedfirst
thislineisprintedlast
$4、其它控制函數(shù)函數(shù)名caller調(diào)用語法subinfo=caller();解說返回調(diào)用者的程序名和行號,用于PerlDebugger。
返回值為三元素的列表:
1、調(diào)用處的包名
2、調(diào)用者文件名
3、調(diào)用處的行號例子
結(jié)果輸出
函數(shù)名chroot調(diào)用語法chroot(dir);解說改變程序的根目錄,詳見chroot幫助。例子
結(jié)果輸出
函數(shù)名local調(diào)用語法local($variable);解說在語句塊(由大括號包圍的語句集合)中定義局域變量,僅在此語句塊中起作用,對其的改變不對塊外同名變量造成影響。
千萬不要在循環(huán)中使用,否則每次循環(huán)都定義一個新的局域變量!例子
結(jié)果輸出
函數(shù)名times調(diào)用語法timelist=times解說返回該程序及所有子進(jìn)程消耗的工作時間。
返回值為四個浮點(diǎn)數(shù)的列表:
1、程序耗用的用戶時間
2、程序耗用的系統(tǒng)時間
3、子進(jìn)程耗用的用戶時間
4、子進(jìn)程耗用的系統(tǒng)時間例子
結(jié)果輸出
二、數(shù)學(xué)函數(shù)函數(shù)名sin調(diào)用語法retval=sin(value);解說參數(shù)為弧度值。函數(shù)名cos調(diào)用語法retval=cos(value);解說參數(shù)為弧度值。函數(shù)名atan2調(diào)用語法retval=atan2(value1,value2);解說運(yùn)算并返回value1除以value2結(jié)果的arctan值,單位為弧度,范圍在-PI~PI。應(yīng)用例:
角度轉(zhuǎn)化成弧度子程序。subdegrees_to_radians{
local($degrees)=@_;
local($radians);11:
$radians=atan2(1,1)*$degrees/45;
}函數(shù)名sqrt調(diào)用語法retval=sqrt(value);解說平方根函數(shù)。value為非負(fù)數(shù)。函數(shù)名exp調(diào)用語法retval=exp(value);解說返回e的value次方。函數(shù)名log調(diào)用語法retval=log(value);解說以e為底的自然對數(shù)。函數(shù)名abs調(diào)用語法retval=abs(value);解說絕對值函數(shù)。(Perl4中沒有)函數(shù)名rand調(diào)用語法retval=rand(num);解說隨機(jī)數(shù)函數(shù),返回0和整數(shù)num之間的一個浮點(diǎn)數(shù)。函數(shù)名srand調(diào)用語法srand(value);解說初始化隨機(jī)數(shù)生成器。保證每次調(diào)用rand真正隨機(jī)。三、字符串處理函數(shù)函數(shù)名index調(diào)用語法position=index(string,substring,position);解說返回子串substring在字符串string中的位置,如果不存在則返回-1。參數(shù)position是可選項(xiàng),表示匹配之前跳過的字符數(shù),或者說從該位置開始匹配。函數(shù)名rindex調(diào)用語法position=rindex(string,substring,position);解說與index類似,區(qū)別是從右端匹配。函數(shù)名length調(diào)用語法num=length(string);解說返回字符串長度,或者說含有字符的數(shù)目。函數(shù)名pos調(diào)用語法offset=pos(string);解說返回最后一次模式匹配的位置。函數(shù)名substr調(diào)用語法substr(expr,skipchars,length)解說抽取字符串(或表達(dá)式生成的字符串)expr中的子串,跳過skipchars個字符,或者說從位置skipchars開始抽取子串(第一個字符位置為0),子串長度為length,此參數(shù)可忽略,意味著取剩下的全部字符。
當(dāng)此函數(shù)出現(xiàn)在等式左邊時,expr必須為變量或數(shù)組元素,此時其中部分子串被等式右邊的值替換。函數(shù)名study調(diào)用語法study(scalar);解說用一種內(nèi)部格式提高變量的訪問速度,同一時刻只對一個變量起作用。函數(shù)名lc
uc調(diào)用語法retval=lc(string);
retval=uc(string);解說將字符串全部轉(zhuǎn)換成小/大寫字母。函數(shù)名lcfirst
ucfirst調(diào)用語法retval=lcfirst(string);
retval=ucfirst(string);解說將第一個字母轉(zhuǎn)換成小/大寫。函數(shù)名quotameta調(diào)用語法newstring=quotemeta(oldstring);解說將非單詞的字母前面加上反斜線(\)。
語句:$string=quotemeta($string);
等效于:$string=~s/(\W)/\\$1/g;
常用于模式匹配操作中,確保字符串中沒有字符被看作匹配操作符。函數(shù)名join調(diào)用語法join(joinstr,list);解說把字符串列表(數(shù)組)組合成一個長的字符串,在每兩個列表元素間插入串joinstr。函數(shù)名sprintf調(diào)用語法sprintf(string,fields);解說與printf類似,區(qū)別是結(jié)果不輸出到文件,而作為返回值賦給變量。例子$num=26;
$outstr=sprintf("%d=%xhexadecimalor%ooctal\n",$num,$num,$num);
print($outstr);結(jié)果輸出26=1ahexadecimalor32octal四、標(biāo)量轉(zhuǎn)換函數(shù)函數(shù)名chop調(diào)用語法$lastchar=chop(var);解說var可為變量或數(shù)組,當(dāng)var為變量時,最后一個字符被刪除并賦給$lastchar,當(dāng)var為數(shù)組/列表時,所有元素的最后一個字符被刪除,最后一個元素的最后一個字母賦給$lastchar。函數(shù)名chomp調(diào)用語法result=chomp(var);解說檢查字符串或字符串列表中元素的最后一個字符是否為由系統(tǒng)變量$/定義的行分隔符,如果是就刪除。返回值為實(shí)際刪除的字符個數(shù)。函數(shù)名crypt調(diào)用語法result=crypt(original,salt);解說用DES算法加密字符串,original是將要加密的字符串,salt是兩個字符的字符串,定義如何改變DES算法,以使更難解碼。返回值為加密后的串。函數(shù)名hex調(diào)用語法decnum=hex(hexnum);解說將十六進(jìn)制數(shù)(字符串形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名int調(diào)用語法intnum=int(floatnum);解說將浮點(diǎn)數(shù)舍去小數(shù)部分轉(zhuǎn)化為整型數(shù)。函數(shù)名oct調(diào)用語法decnum=oct(octnum);解說將八進(jìn)制數(shù)(字符串形式)或十六進(jìn)制數(shù)("0x.."形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名ord調(diào)用語法asciival=ord(char);解說返回單個字符的ASCII值,與PASCAL中同名函數(shù)類似。函數(shù)名chr調(diào)用語法$char=chr(asciival);解說返回ASCII值的相應(yīng)字符,與PASCAL中同名函數(shù)類似。函數(shù)名pack調(diào)用語法formatstr=pack(packformat,list);解說把一個列表或數(shù)組以在實(shí)際機(jī)器存貯格式或C等編程語言使用的格式轉(zhuǎn)化(包裝)到一個簡單變量中。參數(shù)packformat包含一個或多個格式字符,列表中每個元素對應(yīng)一個,各格式字符間可用空格或tab隔開,因?yàn)閜ack忽略空格。
除了格式a、A和@外,重復(fù)使用一種格式多次可在其后加個整數(shù),如:
$twoints=pack("i2",103,241);
把同一格式應(yīng)用于所有的元素則加個*號,如:
$manyints=pack("i*",14,26,11,83);
對于a和A而言,其后的整數(shù)表示要創(chuàng)建的字符串長度,重復(fù)方法如下:
$strings=pack("a6"x2,"test1","test2");
格式@的情況比較特殊,其后必須加個整數(shù),該數(shù)表示字符串必須的長度,如果長度不夠,則用空字符(null)補(bǔ)足,如:
$output=pack("a@6a","test","test2");
pack函數(shù)最常見的用途是創(chuàng)建可與C程序交互的數(shù)據(jù),例如C語言中字符串均以空字符(null)結(jié)尾,創(chuàng)建這樣的數(shù)據(jù)可以這樣做:
$Cstring=pack("ax",$mystring);
下表是一些格式字符與C中數(shù)據(jù)類型的等價關(guān)系:字符
等價C數(shù)據(jù)類型CcharddoubleffloatiintIunsignedint(orunsigned)llongLunsignedlongsshortSunsignedshort
完整的格式字符見下表。格式字符
描述a用空字符(null)補(bǔ)足的字符串A用空格補(bǔ)足的字符串b位串,低位在前B位串,高位在前c帶符號字符(通常-128~127)C無符號字符(通常8位)d雙精度浮點(diǎn)數(shù)f單精度浮點(diǎn)數(shù)h十六進(jìn)制數(shù)串,低位在前H十六進(jìn)制數(shù)串,高位在前i帶符號整數(shù)I無符號整數(shù)l帶符號長整數(shù)L無符號長整數(shù)n網(wǎng)絡(luò)序短整數(shù)N網(wǎng)絡(luò)序長整數(shù)p字符串指針s帶符號短整數(shù)S無符號短整數(shù)u轉(zhuǎn)化成uuencode格式vVAX序短整數(shù)VVAX序長整數(shù)x一個空字節(jié)X回退一個字節(jié)@以空字節(jié)(null)填充函數(shù)名unpack調(diào)用語法@list=unpack(packformat,formatstr);解說unpack與pack功能相反,將以機(jī)器格式存貯的值轉(zhuǎn)化成Perl中值的列表。其格式字符與pack基本相同(即上表),不同的有:A格式將機(jī)器格式字符串轉(zhuǎn)化為Perl字符串并去掉尾部所有空格或空字符;x為跳過一個字節(jié);@為跳過一些字節(jié)到指定的位置,如@4為跳過4個字節(jié)。下面看一個@和X合同的例子:
$longrightint=unpack("@*X4L",$packstring);
此語句將最后四個字節(jié)看作無符號長整數(shù)進(jìn)行轉(zhuǎn)化。下面看一個對uuencode文件解碼的例子:1:#!/usr/local/bin/perl
2:
3:open(CODEDFILE,"/u/janedoe/codefile")||
4:die("Can'topeninputfile");
5:open(OUTFILE,">outfile")||
6:die("Can'topenoutputfile");
7:while($line=<CODEDFILE>){
8:$decoded=unpack("u",$line);
9:printOUTFILE($decoded);
10:}
11:close(OUTFILE);
12:close(CODEDFILE);
當(dāng)將pack和unpack用于uuencode時,要記住,雖然它們與UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode對由pack的輸出創(chuàng)建的文件進(jìn)行解碼,必須也把首行和末行輸出(詳見UNIX中uuencode幫助)。函數(shù)名vec調(diào)用語法retval=vec(vector,index,bits);解說顧名思義,vec即矢量(vector)函數(shù),它把簡單變量vector的值看作多塊(維)數(shù)據(jù),每塊含一定數(shù)目的位,合起來即一個矢量數(shù)據(jù)。每次的調(diào)用訪問其中一塊數(shù)據(jù),可以讀取,也可以寫入。參數(shù)index就象數(shù)組下標(biāo)一樣,提出訪問哪一塊,0為第一塊,依次類推,要注意的是訪問次序是從右到左的,即第一塊在最右邊。參數(shù)bits指定每塊中的位數(shù),可以為1,2,4,8,16或32。例子1:#!/usr/local/bin/perl
2:
3:$vector=pack("B*","11010011");
4:$val1=vec($vector,0,4);
5:$val2=vec($vector,1,4);
6:print("high-to-lowordervalues:$val1and$val2\n");
7:$vector=pack("b*","11010011");
8:$val1=vec($vector,0,4);
9:$val2=vec($vector,1,4);
10:print("low-to-highordervalues:$val1and$val2\n");結(jié)果high-to-lowordervalues:3and13
low-to-highordervalues:11and12函數(shù)名defined調(diào)用語法retval=defined(expr);解說判斷一個變量、數(shù)組或數(shù)組的一個元素是否已經(jīng)被賦值。expr為變量名、數(shù)組名或一個數(shù)組元素。
如果已定義,返回真,否則返回假。函數(shù)名undef調(diào)用語法retval=undef(expr);解說取消變量、數(shù)組或數(shù)組元素甚至子程序的定義,回收其空間。返回值始終為未定義值,此值與空串等效。五、數(shù)組和列表函數(shù)函數(shù)名grep調(diào)用語法@foundlist=grep(pattern,@searchlist);解說與同名的UNIX查找工具類似,grep函數(shù)在列表中抽取與指定模式匹配的元素,參數(shù)pattern為欲查找的模式,返回值是匹配元素的列表。例子@list=("This","is","a","test");
@foundlist=grep(/^[tT]/,@list);結(jié)果@foundlist=("This","test");函數(shù)名splice調(diào)用語法@retval=splice(@array,slipelements,length,@newlist);解說
拼接函數(shù)可以向列表(數(shù)組)中間插入元素、刪除子列表或替換子列表。參數(shù)skipelements是拼接前跳過的元素數(shù)目,length是被替換的元素數(shù),newlist是將要拼接進(jìn)來的列表。當(dāng)newlist的長度大于length時,后面的元素自動后移,反之則向前縮進(jìn)。因此,當(dāng)length=0時,就相當(dāng)于向列表中插入元素,而形如語句
splice(@array,-1,0,"Hello");
則向數(shù)組末尾添加元素。而當(dāng)newlist為空時就相當(dāng)于刪除子列表,這時,如果length為空,就從第skipelements個元素后全部刪除,而刪除最后一個元素則為:splice(@array,-1);這種情況下,返回值為被刪去的元素列表。函數(shù)名shift調(diào)用語法element=shift(@arrayvar);解說刪去數(shù)組第一個元素,剩下元素前移,返回被刪去的元素。不加參數(shù)時,缺省地對@ARGV進(jìn)行操
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩節(jié)主題創(chuàng)意活動策劃方案
- 教師培訓(xùn)講座材料
- FIB-4與PLR預(yù)測肝部分切除術(shù)后肝功能衰竭的價值研究
- 二零二五年度建筑施工安全文明施工責(zé)任書3篇
- 二零二五年度建筑材料銷售聘用合同范本3篇
- 二零二五年度民間借貸債務(wù)催收代理合同3篇
- 多水下機(jī)器人編隊(duì)自適應(yīng)行為控制方法研究
- 雙十一吃龍蝦活動策劃案
- 二零二五年度個人藝術(shù)品委托拍賣協(xié)議書3篇
- 酒店管理工作實(shí)操指南
- 國家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書樣本
- 2024年四川省成都市成華區(qū)中考二診物理試題
- 2024年3月計算機(jī)等級考試三級數(shù)據(jù)庫技術(shù)筆試真題及答案
- 公眾號運(yùn)營實(shí)戰(zhàn)手冊
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
- 2024中考地理必考試卷含解析
- GB/T 43803-2024科研機(jī)構(gòu)評估指南
- (高清版)DZT 0282-2015 水文地質(zhì)調(diào)查規(guī)范(1:50000)
- 《紅樓夢》禮儀研究
- 熱帶雨林植被課件
評論
0/150
提交評論