跳到主要內容

抓點(一)

文章日期:2008-11-27 08:54



經讀者偷天詢問,突然想起以前寫的這個抓螢幕圖點的lsp檔,手寫程式者在使用AutoCAD當畫好圖時,常有需要抓螢幕的點來寫CNC程式,本文旨在以Autolisp來將AutoCAD螢幕上所需的點寫出成一個檔案。

autolisp的語法比MACRO還簡單,就是:(函數 ..  ..  ..),這樣而已,至於AutoLisp提供的函數則有17大類,請參考http://tw.myblog.yahoo.com/cu01joe/article?mid=611&prev=613&l=f&fid=17,一個程式的好壞就靠函數與程式寫作者的交互作用,讀者Autolisp檔時,只要用Windows裡所附的記事本來寫就可,寫好後存:XXX.lsp(XXX是指檔名),並在AutoCAD環境內載入這個lsp檔,如下圖所示,就可使用。
   


lsp檔載入之後,在AutoCAD螢幕底下鍵入"co"enter,就可用滑鼠來點選螢幕上想要抓的點,所有的點抓完後再按enter,就可以結束這個lsp檔,此lsp檔會自動寫出一個文字檔”coor.txt”,讀者可用檔案總管在C磁碟之下便可找到,如下圖所 ,此檔的精度為小數點下三位,和一般的CNC所接受的格式一樣,修改後就可以改寫成CNC程式。
        




lsp檔全文如下


;;;;This file is for writing out milling points.;;;;;;;;;;;;;;;;;
(defun c:co()          ;此lsp定義的指令名稱為"co"
  (setq  i1 1 s1 0 counter 0 p1 nil dalst nil)
  (while (< i1 100)  ;此迴圈用於讀取螢幕上滑鼠所抓的點
    (setq p1 (getpoint "Choose the point : \n"))
    (setq dalst (append dalst (list p1)) )
    (if (= p1 nil)
      (setq i1 150)
      (progn
      (setq counter (+ 1 counter ))
        (setq i1 (+ i1 1)) ))
  )


;底下的程式用來將抓取滑鼠點取的點來寫出成檔案
  (setq file01 (open "c:\\coor.txt" "w"))
  (setq x1 13.1313 y1 13.1313 z1 13.1313)
  (setq x2 0  y2 0  z2 0  i1 0)
  (while (< i1 counter)
     (setq p2 (nth i1 dalst) x2 (car p2) y2 (cadr p2) z2 (caddr p2))
     (pp1)    ;呼叫副程式
     (setq i1 (+ i1 1))
  )

 ;在AutoCAD裡的底下字幕區打出
  (princ "Please open c:\\coor.txt file.\n" ) 
  (close file01)

)


;副程式的宣告與內容如下
(defun pp1()
  (setq pxs(rtos x2 2 3) pys(rtos y2 2 3) pzs(rtos z2 2 3))
  (setq pxl(strlen pxs) pyl(strlen pys) pzl(strlen pzs))
  (setq pxn(- 7 pxl) pyn(- 7 pyl) pzn(- 7 pzl))
  (princ "X" file01)
  (princ pxs file01)
  (if ( or (< (abs (- (fix x2) x2)) 0.001) (< (- 1 (abs (- (fix x2) x2))) 0.001) )
    (princ "." file01) )
  (repeat pxn (princ " " file01))
  (princ " " file01)
  (princ "Y" file01)
  (princ pys file01)
  (if ( or (< (abs (- (fix y2) y2)) 0.001) (< (- 1 (abs (- (fix y2) y2))) 0.001) )
    (princ "." file01) )
  (repeat pyn (princ " " file01))
  (princ " " file01)
  (princ "Z" file01)
  (if ( or (< (abs (- (fix z2) z2)) 0.001) (< (- 1 (abs (- (fix z2) z2))) 0.001) )
    (princ "." file01) )
  (princ pzs file01)
  (princ "\n" file01)
)

留言

這個網誌中的熱門文章

G76車牙

文章日期:2008-10-10 00:02 工具機若使用 Fanuc 控制器,車牙轉速有一個先天上的限制: S × P < 4000 請參考 車牙的 NC 碼計有 G32 、 G92 、 G76 三種 ( 使用方法 這三個指令中,手寫 G92 一般是直進式切削,牙刀的兩刃皆受力,直進式切削 ,每刀吃深不多,以免造成牙面粗糙,反觀 G76 則是斜進式單邊車削 ,可以有較大的進刀深度 , 寫法也簡短方便廣受採用,不論多大的牙, G76 只要兩個單節就可解決了。 由於 G76 有單邊切削的效果,廣受學校或職訓單位的喜愛,如下圖所示。         Fanuc0T系列控制器之G76 格式如下 : 指令說明 (m) : 精車次數。 (r) : 車牙末端 拔刀時留下的不完全牙長度(倍率)。 (a) :牙刀之角度,可選擇 80 °、 60 °、 55 °、 30 °、 29 °、 0 °等角度。 Q( △ dmin) :最小進刀深度。 R(d) :精車預留量。 X(u) :螺紋程式終點的 X 軸方向座標。 Z(w) :螺紋程式終點的 Z 軸方向座標。 R(i) :螺紋部份的半徑差,如果 I=0 可作一般直線螺紋車削。 P(k) :螺紋高度即牙深度, K 為正值在 X 軸方向用半徑值指定。 Q( △ d) :第一次螺紋的切削深度,用半徑值指定。 F(l) :螺紋的導程,與 G32 相同。 以M20X2.5外螺紋為例 , 常見的寫法如下 : G76 P01 00 60 Q40 R0.02 G76 X16.933 Z-10.0  P1533    Q500   F2.5 1. G76第一行的 P01 00 60 ,這01表示最後精車時只車一刀精車, 00 表示車牙最後拔刀時不留倒角 ,此所謂之倒角是 不完全牙之意 ,亦即因拔刀而在工件上留下牙深較淺的牙 ,Fanuc的拔刀精度是0.1倍的導程 , 若是此值改成10,則表示拔刀時在軸向會留下一倍導程長度的不完全牙,這一倍就是指導程2.5的一倍,也就是不完全牙會有2.5mm那麼長, 60 ...

管牙PT

文章日期:2009-07-12 23:08 本文旨在講解 PT錐度管牙 常見的標準的管牙規範計有:  NPT , NPTF ,NPS , PS ,PF , PT.. ,前3者有N開頭的是美國標準的管牙 ,牙角(又稱螺紋角)60度 ,後面這3者則是英國標準的管牙 ,牙角55度 ,這些代號裡面的T意指Taper ,也就是錐度牙 。 不論是PT還是NPT,他們的錐度值都是1/16, 換算成角度值是 2*tan-1(0.5/16)=3.57982度 = 3度34分47.356秒, 3.57982度為什麼等於3度34分47.356分呢? 這是因為角度的單位換算是六十進位,3.5798212度後面的小數點0.5798212"度"要換算成""分"時,0.5798212度 = 0.57982*60分 = 34.789273分 ,而34.789273分後面的小數點0.789273分要換算成秒, 則0.789273*60秒 = 47.356秒。 此外,切記在車削錐牙時得採半錐角,也就是1度47分23.7秒。 NPT (美制管用推拔螺紋) 制定在 ANSI 規格中,稱為美國標準管用推拔螺紋,有外螺紋與內螺紋。 NPT 外螺紋不但對 NPT 內螺紋配合,有時也配合 NPSC ,這點類似 PT 。螺紋峰與根切成同形,又因公差大,餘隙、緊密兩種配合都可用。如用潤滑劑,則變成耐密用,耐密用者另有稱為乾封閉之如 NPTF,NPSF 等付有 F 之一群。 NPTF (美制管用耐密推拔螺紋) NPTF 外螺紋,像 PT.NPT 有時也配合 NPSF.NPSI (都是內螺紋)。因這種螺紋都是峯尖、根淺,峯不是密接於根就是食進,可防止在此部分變成螺旋狀間隙,這是前述耐密性之理由。 PT( 英制管用推拔螺紋 ) 以前是使用面直角的螺紋峯,現在將規格統一為軸直角者。 JIS 定為耐密用而組合外螺紋和內螺紋。 PT 外螺紋除了配合 PT 內螺紋,有時也配合 PS 。 PS ( 英制管用推拔螺紋用平行內螺紋   ─   耐密用 )     屬於 JIS 內 PT 的規格,舊 JIS 裏 PS 牙的外螺紋已被取消,配合的外螺紋現規定要用 PT 。 PF( 英制管用平行螺紋 ...

公制螺紋規格

文章日期:2009-04-05 19:39 由於一大堆的高職用書都把公制螺紋的牙深定為 0.6495*p ,但實則不然, 公制螺紋的算法是這樣   : 如果是牙刀是採用標準牙刀 公牙工件的牙深 h = 0.6134*p (標準外牙刀的牙 尖圓弧半徑 r = 0.144338*p) 母牙工件的牙深 h = 0.577351*p( 標準內牙刀的牙 尖圓弧半徑 r = 0.072169*p) 如果是通用牙刀 (通用 牙刀尖圓弧半徑 r 要看刀盒上的標示 ) 公牙工件的牙深 h = 0.75777*P - r 母牙 工件的 牙深 h = 0.64952*P - r 底下文章講解公制公螺紋規格與切削法 公制螺紋的標註      設公螺紋牙底圓弧半徑為 r ,全牙深 (假想牙深, 將牙的頭部跟底端都假想成 尖頭尖底所得之牙深 ) 為 H ,牙距為 p ,牙深為 h , 則對於公制外羅紋有下列關係式 : 1.   全牙深 H = 0.866*p 2.   牙底圓弧半徑 r = H/6 =  0.144338*p (母牙則為0.072169*p) 3.   牙深 h = 0.6134*p 切削公制公螺紋時,若照標準規定來看, 牙底圓弧半徑 r = 0.144338*p ,但是,除了量產件或是精密件會照這個規定來準備牙刀,一般師傅為了方便,大都會使用通用刀片來車牙,也因此而用了不合規定的牙底半徑之牙刀來車牙,進而便會使得 牙深 h = 0.6134*p 這個關係式發生變化,以 p1-p3 的通用牙刀片來說,它是以 p1 的牙底圓為主,若要車 p3 的牙,則需將牙深加大,如下圖所示, 牙刀已車至牙底,但牙的螺旋面仍未達標準寬度,得將牙深加大才行 因此,很多人會覺得牙深公式用 h = 0.6495*p 也似乎行得通的樣子,老實說,這是瞎打誤撞的   ,這個 h = 0.6495*p 公式是古老的美國螺紋的公式,說到美國螺紋很多人把它想成英制螺紋,其實不然,美國螺紋是NC(粗牙) 、NF(細牙) 、NEF(特細牙), 後來美國跟英國還有加拿大合成為統一螺紋...