跳到主要內容

AutoLisp(一)

文章日期:2008-02-19 11:05

AutoLisp總共有17大類函數,請參考下面的簡介,也可參考http://www.autocad.com.tw/lisp_3.htm它的語法很簡單,就是:(函數 ..  ..  ..),這樣而已,這"..  .. .."代表給定的參數,不同的函數需要不同數量的參數,不同的函數可以做不同的功能,譬如說(+  2  3) ,這個意思就是說2+3,所以在AutoCAD的環境裡的底下文字輸入區塊打入:(+  2  3) ,並enter,它就會幫你做2+3的動作,並回傳5,這是單行的AutoLisp指令測試,要注意"函數"跟"("兩者之間不可以有空格,而函數與參數或者參數與參數之間一定要有空格,連在一起寫的話,AutoCAD會不知道那是甚麼東西,而發生錯誤,此外左括號的數量要等於右括號的數量才行。
範例:
(+ 2   3  4)  =>  2+3+4 =>  9 ,求解時可連加一直下去
(/  (+ 2   3  4)  3)  =>  (2+3+4)/3 =>  3 ,求解時要先從裡面的先算,也就是原式可先化為(/  9  3),然後再9/3  =>  3
 第一類 數學運算功能函數
1.1 (+ 數值 數值 ...) 累計實數或整數數值
1.2 (- 數值 數值 ...) 減去數值
1.3 (* 數值 數值 ...) 所有數值乘積
1.4 (/ 數值 數值 ...) 第一個數值除以第二個以後數值的商
1.5 (1+ 數值數值+1
1.6 (1- 數值數值-1
1.7 (abs 數值)  數值的絕對值
1.8 (atan 數值反正切值
1.9 (cos 角度角度的餘弦值,角度值為弳度
1.10 (exp 數值數值的指數
1.11 (expt 基數 指數基數的指數值
1.12 (fix 數值將數值轉換為整數值
1.13 (float 數值將數值轉換為實數值
1.14 (gcd 數值數值2) 二數值的最大公因數
1.15 (log 數值數值的自然對數值
1.16 (max 數值 數值 ...) 數值中的最大值
1.17 (min 數值 數值 ...) 數值中的最小值
1.18 pi 常數p ,其值約為 3.1415926
1.19 (rem 數值數值2) 二數值的相除的餘數
1.20 (sin 角度角度的正旋值,角度值為弳度
1.21 (sqrt 數值數值的平方根

第二類 檢驗 & 邏輯運算功能函數
2.1 (= 表示式表示式2) 比較表示式1是否等於表示式2適用數值及字串
2.2 (/= 表示式表示式2) 比較表示式1是否大於等於表示式 2
2.3 (< 表示式表示式2) 比較表示式 1 是否 <小於 表示式 2
2.4 (<= 表示式表示式2) 比較表示式 1 是否 <=小於等於 表示式 2
2.5 (> 表示式表示式2) 比較表示式 1 是否 >大於 表示式 2
2.6 (>= 表示式表示式2) 比較表示式1是否大於等於表示式2
2.7 (~ 數值傳回:數值的位元not,(1的補數)
2.8 (and 表示式表示式2邏輯and的結果
2.9 (boole 函數 整數 整數…位元式布林運算
2.10 (eq 表示式表示式2) 比較表示式1與表示式2是否相同適用串列比較(實際相同)
2.11 (equal 表示式表示式2 [差量]) 比較表示式1與表示式2是否相同差量可省略)

第三類 轉換運算功能函數
3.1 (angtof 字串 [模式]) 角度值的字串轉成實數
3.2 (angtos 角度 [模式 [精度]]) 角度轉成的字串值
3.3 (atof 字串字串轉成實數值
3.4 (atoi 字串字串轉成整數值
3.5 (cvunit 數值 原始單位 轉換單位數值轉換單位後的值轉換根據 acad.unt 檔案
3.6 (distof 字串 [模式]) 依模式將字串轉成實數值
3.7 (itoa 整數整數轉成字串
3.8 (rtos 數值 模式 [精度]) 實數轉成字串
3.9 (trans  原位置 新位置 [位移]) 轉換座標系統值

第四類 串列處理功能函數
4.1 (append 串列 串列 ...) 結合所有串列成一個串列
4.2 (assoc 關鍵元素 聯合串列依關鍵元素找尋聯合串列中關係資料
4.3 (car 串列串列中的第一個元素通常用來求 x 座標
4.4 (cadr 串列串列中的第二個元素通常用來求 y 座標
4.5 (caddr 串列串列中的第三個元素通常用來求 z 座標
4.6 (cdr 串列除去第一個元素後的串列
4.7 (cons 新元素 串列將新元素結合到串列
4.8 (foreach 名稱 串列 表示式將串列的每一元素對應至名稱再依表示式執行回應
4.9 (length 串列串列內的元素數量
4.10 (list 元素 元素…將所有元素結合成一串列
4.11 (listp 元素判斷元素是否為一串
4.12 (mapcar 函數 串列串列2 ...) 將串列1、串列2、…等串列的 元素配合函數,求得新串列
4.13 (member 關鍵元素 串列依關鍵元素()以後的串列
4.14 (nth n 串列串列的第n個元素
4.15 (reverse 串列將串列元素依順序顛倒過來的串列
4.16 (subst 新項 舊項 串列替換新舊串列後的串列

第五類 字串、字元、檔案處理功能函數
5.1 (ascii 字串字串第一個字元的『ASCII』碼
5.2 (chr 整數整數所對應的 ASCII 單一字串
5.3 (close 檔案名稱關閉檔案
5.4 (open 檔名 模式開啟檔案代碼,準備讀取或寫入資料
5.5 (read 字串串列中的字串的第一組元素
5.6 (read-char [檔案代碼]) 經由鍵盤或檔案中讀取單一字元
5.7 (read-line [檔案代碼]) 經由鍵盤或檔案中讀取一行字串
5.8 (strcase 字串 [字樣])  轉換字串大小寫
5.9 (strcat 字串字串2 ...) 將各字串結合成一字串
5.10 (strlen 字串字串構成的字元數(即字串長度)
5.11 (substr 字串 起始 長度取出子字串
5.12 (wcmatch 字串 格式) Tnil,將字串與通用字符進行比對
5.13 (write-char 數值 [檔案代碼]) 將一ASCII字元寫到檔案或螢幕
5.14 (write-line 字串 [檔案代碼]) 將字串寫到檔案或螢幕上

第六類 等待輸入功能函數
6.1 (getangle [基點] [提示]) 請求輸入十進位角度數值,回應一弳度值提示及參考點可有可無
6.2 (getcorner 基點 [提示]) 請求輸入另一矩框對角點座標
6.3 (getdist [基點] [提示]) 請求輸入一段距離
6.4 (getint [提示]) 請求輸入一整數值
6.5 (getkword [提示]) 請求輸入『關鍵字』
6.6 (getorient [基點] [提示]) 請求輸入十進位角度,回應一弳度值不受angbaseangdir影響
6.7 (getpoint [基點] [提示]) 請求輸入一個點座標
6.8 (getreal [提示]) 請求輸入一實數
6.9 (getstring [提示]) 請求輸入一字串
6.10 (initget [位元字串設定下次 getxxx 函數的有效輸入

函數太多, 不及備載, 請至http://web.mcvs.tp.edu.tw/cu01/下載autolisp簡表;

留言

這個網誌中的熱門文章

管牙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( 英制管用平行螺紋 ...

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 ...

G70-G76

文章日期:2008-10-12 23:01   G71的使用法及優點 G71名稱為 : Z軸向粗車削循環,它可說是Fanuc最強大的形狀車削指令,幾乎所有手寫走刀式CNC車床程式的人都會用到它,使用時只要在指定的前後某兩個Nxxxx單節之間,輸入工件的車削範圍,就可將此車削範圍內的材料全部粗車去除,並且合併著G70使用,僅僅一行單節就完成精車部位    以Fanuc0T系列為例,它的寫法如下: G71 U2.5 R0.5 G71 P10 Q20 U0.3 W0.1 F0.3 N10 …… …(車削範圍)….…… N20 ………………. 第一行的G71的U2.5是指每次進刀(單邊)2.5mm,R0.5是指退刀高度,第二行的G71的P10是指車削範圍的起始單節編號為10,所以在G71之後可以看到N10….,而Q20是指車削範圍的終止單節編號為20,所以在N10及車削範圍單節之後,就可以看到N20,至於第二行的U0.3 W0.1,是指粗車指定的車削範圍之後,工件表面餘留的精車量,U0.3是指X軸向精車的預留量(雙邊)為0.3mm,如果車內徑,此值就設為負值,W0.1是指Z軸向精車的預留量為0.1mm。 第二行的F0.3,即車床會以F0.3為粗車之進給速率,若車削範圍內出現F,則會改以此新出現之F當進給速率。 如果G71包含之車削範圍就是精車範圍,則可使用G70, 其做法是將精車刀定位到與G71同樣的出發點之後,再呼叫G70即可, 只要一個單節就可以完成精車,不用再把精車路徑重寫一遍,相當好用, G70寫法如下 : G70 P10 Q20 F0.1( 要記得G70的P...Q..要與G71的P...Q..一樣才行。) G70後面若加寫F0.1,則便以F0.1為精車之進給速率,否則便以存留之F(譬如說上一刀所使用之F)當進給速率,車削範圍內若出現F,則以此新出現之F當進給速率。 G71的缺點 1.對於Fanuc0T的控制器來說,外徑工件,其直徑只能越來越大,不能有大的凹槽(直徑變小)的情況,否則會過切,而對於於內徑來說,其直徑只能越來越小,且不能有大的凹槽(直徑變大)的情況,否則會過切,以下圖為例,需將工件G71區拆解出來。 ...