亚洲日产乱码在线,醃吉吉导航,狼好色日本欧美色图亚洲色图,国内精品福利在线视频,夜鲁鲁鲁夜夜综合视频欧美,日本黄色网站大全

推廣 熱搜: 電解鋁  鋁合金  陽極氧化  氧化  熱處理  工藝  鋁及鋁合金  技術(shù)  鋁土礦  鋁材加工 
 

Think3的GPL語言開發(fā)擠壓模??拙€割自動化程序設(shè)計(jì)與應(yīng)用

   日期:2013-12-03     來源:鋁博士    瀏覽:907    評論:0    
 摘 要:簡述通過Think3的GPL語言,利用曲線偏移的功能產(chǎn)生鋁型材擠壓模??拙€割刀路及對應(yīng)G代碼的過程,并對??走M(jìn)行自動相切檢查。
關(guān)鍵詞:擠壓模線切割; G代碼; 偏移; 暫停點(diǎn)

作者來自亞洲鋁廠
 
  在擠壓模制作過程中,線切割加工是非常重要的一個環(huán)節(jié)。??妆砻尜|(zhì)量將直接影響擠出鋁型材的表面質(zhì)量。 我司對該環(huán)節(jié)一向非常重視,率先引進(jìn)高精度慢走絲對??走M(jìn)行加工,極大的提高了模具表面質(zhì)量。隨著公司業(yè)務(wù)的擴(kuò)大及對制造精度的不懈追求,對線割編程的要求也越來越高。
  由于現(xiàn)有線割編程軟件參數(shù)設(shè)置繁瑣, 產(chǎn)生的NC代碼與機(jī)床性能不完全匹配,需再次檢查及更改,不同機(jī)床須分別處理。而在擠壓模線割編程編程中,加工參數(shù)相對固定,為減輕線割編程員勞動強(qiáng)度,降低新人培訓(xùn)周期,遂提出通過CAD軟件Think3的GPL語言,利用曲線偏移的功能產(chǎn)生擠壓模??拙€割刀路及對應(yīng)G代碼的過程,并對??走M(jìn)行自動相切檢查的設(shè)想。
  具體流程如下:
  1.輸入待割型材選擇集,要保證集合首尾順序相接。若所選起始點(diǎn)或方向不合適可通過起始點(diǎn)前移/后移及反相進(jìn)行變更。
                                          
2.對待割鋁型材選擇集進(jìn)行自動檢查,以保證過渡圓滑。
對待割鋁型材選擇集進(jìn)行自動檢查設(shè)置界面示截圖
  具體方法為:由程序?qū)ο噜弮蓤D素進(jìn)行檢查:
  (1)若為直線和圓弧,通過求直線兩端點(diǎn)與圓弧起點(diǎn)和終點(diǎn)距離取得交點(diǎn),再判斷交點(diǎn)與圓心所成直線與直線夾角,若非90度則判定直線和圓弧非相切關(guān)系,在交點(diǎn)處按指定圖層及顏色繪點(diǎn)提醒此處需更正;
  (2)若為圓弧和圓弧,判斷圓心距離是否等于半徑和或差,若不等判定圓弧和圓弧非相切關(guān)系,在交點(diǎn)處按指定圖層及顏色繪點(diǎn)提醒此處需更正;
  (3)若為直線和直線,直接在交點(diǎn)處按指定圖層及顏色繪點(diǎn)提醒編程員檢查。
3.定義加工參數(shù),入絲點(diǎn):
  主要輸入切割厚度,入絲點(diǎn),精加工次數(shù)。
     
4.用偏移功能產(chǎn)生加工軌跡線:
  依加工參數(shù)確定偏移距離,利用CAD軟件的偏移功能產(chǎn)生偏移線(將偏移線第一刀放到999層,即粗割軌跡線;其余依次放到998、997...層),對輸入待割型材的總長與新產(chǎn)生軌跡線總長比對,軌跡線總長大于待割型材的總長則將其刪除,變更偏移方向,重新產(chǎn)生軌跡線。具體GPL程序代碼如下:
  #procedure  SelsOfst(IDS,offsetDist,InOut)  !No005將給定圖素偏移指定距離 若相等則失敗不產(chǎn)生偏移圖素[自ek_confw.prbs]W::->WrTp::
  *保留原始環(huán)境WrTp::SelsOfst(ek_prese(1),0.2,1)  //SelsOfst(ek_prese(1),0.2,1)
  currCol:=$PG(EP_COL)   ekpar EP_COL 60 !EP_COL
  currLTYPE:=$PG(EP_LTYPE) ekpar EP_LEV 999 !EP_LTYPE
  currWIDTH:=$PG(EP_WIDTH) ekpar EP_WIDTH 2 !EP_WIDTH
  currLEV:=$PG(EP_LEV)   ekpar EP_LEV 999 !EP_LEV 
TmpTPth_IDS
  TmpTPth_IDS::=0#0
  ekpar EP_CVOF_DIST 1 !DIST/point
    
Sids::=IDS !保留待處理集合
    
exitflag::=0
    
m(IDS,"IDS")
    
Sperim::=WrTp::GetLensBySels(IDS)
    
lastEnt::=$lastent
    
m($lastent,"$lastent Prv")
      WrTp::SelsHIGHZYYSXS(Sids,20,1) 
    
AAG_2011::SelByIds(Sids)
      ekpar EP_CVOF_DIST 1 !DIST/point
    
ekpar EP_OFFSET_N offsetDist !0.2/-0.2 offsetDist
    
ekpar EP_OFF_OPTMC 0 !copy 0/Move 1 -》ekpar EP_OFF_OPTMC 1
  *    ekpar EP_CVOF_NUMOF ek_num_edit
    
ekpar EP_CVOF_NUMOF 1 !層數(shù) UNDO
    
ekpar EP_CVOF_TRFL 1 !Extended0/1Fillet是否倒圓
      user::ek_offset_onpln  !執(zhí)行 產(chǎn)生偏移線
    
eos
    
Halt
    
if($lastent.eq.lastEnt) ek_w_m('最后建立的[$lastent為空 請查證!'//m(IDS))  goto('e0') ! exit
      m($lastent,"$lastent Nxt")
    
OfstIds::=(lastEnt+1):$lastent !首次 產(chǎn)生的偏移線
    
Dperim::=WrTp::GetLensBySels(WrTp::OfstIds)

*
    
if((WrTp::Dperim.lt.WrTp::Sperim).and.(InOut.eq.1)) then !目標(biāo)周長小于源+InOut=1 ->exitflag::=1
       
m('SelsOfst ok in',IDS,offsetDist,InOut,OfstIds)
       
TmpTPth_IDS::=OfstIds
       
exitflag::=1
    
elseif(WrTp::Dperim.eq.WrTp::Sperim) then
       
OfstIds::=0
       
m('SelsOfst ==',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=2
    elseif((WrTp::Dperim.gt.WrTp::Sperim).and.(InOut.ne.1)) then !目標(biāo)周長小于源+InOut<>1 ->exitflag::=1
       
m('SelsOfst ok Out',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=1
    
else
     
ekpar EP_OFFSET_N -offsetDist
    
endif
  *
    
if(WrTp::exitflag.eq.1) m("WrTp::exitflag.eq.1") eos goto('e0') ! exit
    
if(WrTp::exitflag.eq.2)  m("WrTp::exitflag.eq.2") eos undo eos  goto('e0') ! !目標(biāo)周長等于源 exit
      m("SelsOfst -offsetDist",-offsetDist,now)
    
undo
*重新設(shè)置選擇集
       
WrTp::SelsHIGHZYYSXS(Sids,2,1) 
     
AAG_2011::SelByIds(Sids)
     
lastEnt::=$lastent
     
user::ek_offset_onpln  eos m("SelsOfst -offsetDist Do")   !執(zhí)行 產(chǎn)生偏移線
       
Halt
 
if($lastent.eq.lastEnt) ek_w_m('最后建立的[$lastent為空 請查證!02'//m(IDS))  goto('e0') ! exit
     
OfstIds::=(lastEnt+1):$lastent !undo后 產(chǎn)生的偏移線
     Dperim::=WrTp::GetLensBySels(WrTp::OfstIds)
      if((WrTp::Dperim.lt.WrTp::Sperim).and.(InOut.eq.1)) then
  * exit
       
m('SelsOfst ok2 in',IDS,offsetDist,InOut,OfstIds)
       
TmpTPth_IDS::=OfstIds
       
exitflag::=1
    
elseif((WrTp::Dperim.gt.WrTp::Sperim).and.(InOut.ne.1)) then ! ??應(yīng)無機(jī)會執(zhí)行到
       
m('SelsOfst ?ok? Out2 >>ERR!',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=1
    
endif
      if(exitflag.eq.1)  goto('e0') ! exit
      m('SelsOfst err ',now)
  *
  end:
  *    exit(values)  !
    
exit
  e0: m("SelsOfst->e0 ")    !TTError("PLSort",WERROR,TTMsg('_TTGEN'\\15,''))
  *恢復(fù)原始環(huán)境
    
ekpar EP_COL currCol !EP_COL 
    
ekpar EP_LTYPE currLTYPE !EP_LTYPE 
    
ekpar EP_WIDTH currWIDTH !EP_WIDTH 
    
ekpar EP_LEV currLEV !EP_LEV 
    
goto('end')
  #end
5.按給定支撐距離計(jì)算,取得支撐位打斷點(diǎn),并將粗割刀路打斷,對打斷點(diǎn)進(jìn)行判斷:
  a.所需剩余長度計(jì)算:

  依支撐所需長度,判斷最后的圖素長度是否足夠,若不足則將“所需長度-最后圖素長度”得出“所需剩余長度;同理依次對前一圖素長度作判斷,直至前一圖素長度大于所需剩余長度。
  b.建立支撐位打斷點(diǎn):
  當(dāng)前一圖素長度大于所需剩余長度時,計(jì)算所需剩余長度占前一圖素長度的比例數(shù)(以下簡稱為比例數(shù)),利用在曲線指定比例處畫點(diǎn)功能建立支撐位打斷點(diǎn)(此時需注意曲線起始點(diǎn)是否與切割方向吻合,當(dāng)方向相反時所用比例值 =(1-比例數(shù))。以便使點(diǎn)位與切割方向相符。
  c.在點(diǎn)位處打斷,重排刀路:

接著利用曲線分割函數(shù)在剛剛建立的點(diǎn)位處打斷曲線,將打斷建立的新圖素依其位置對刀路圖素選擇集重排,使打斷產(chǎn)生的新圖素在刀路正確的序列中。
      
 6.在易斷絲處設(shè)置暫停點(diǎn)
  即在給定位置點(diǎn)將刀路打斷,并在該位置建立點(diǎn)。(具體方法同5)
  7.對刀路進(jìn)行模擬,以確認(rèn)刀路序列正確。
  8.產(chǎn)生Nc程序
  按刀路進(jìn)行模擬時圖素顯示順序產(chǎn)生加工點(diǎn)位坐標(biāo)序列,再在適當(dāng)位置插入必要的輔助控制碼及G代碼。因刀路依次排列的圖素不是嚴(yán)格按首尾相接(可能有頭接尾的情況), 產(chǎn)生加工點(diǎn)位坐標(biāo)序列時必須對此進(jìn)行判別,以保證坐標(biāo)序列正確。
  通過以上過程,實(shí)現(xiàn)程序所見即所得。加工參數(shù)可直接由輸入的模厚自動生成,最終程序格式可根據(jù)實(shí)際機(jī)床靈活調(diào)整,避免對不同類型機(jī)床需多次編程的弊端;程序設(shè)置更加便捷.
 
打賞
 
更多>同類技術(shù)
0相關(guān)評論

推薦圖文
推薦技術(shù)
點(diǎn)擊排行
?
網(wǎng)站首頁  |  鋁材QQ群大全  |  大瀝著名鋁企  |  鋁錠手機(jī)短信  |  關(guān)于我們  |  聯(lián)系方式  |  使用協(xié)議  |  版權(quán)隱私  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務(wù)  |  RSS訂閱  |  違規(guī)舉報  |  粵ICP備18150991號  |