跳到主要內容

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

錐度值

文章日期:2008-02-01 08:40 做傳統車床的人通常會遇到車錐度時要調複式刀座,而複式刀座所調的角度為工件錐度部位之半錐角,為甚麼要調的是半錐角,而不是全錐角呢?為甚麼工件的錐度值乘以 28.65 就是所要調的是半錐角呢? 如下圖所示,將工件錐度部位的稜線延伸至交接,就可看出工件完整的錐度,將這工件全錐度的一半定為 a ,則可得半錐角,由於複式刀座的前進方向是水平的,所以只要將複式刀座依逆時針方向調動半錐角,就可車削工件的錐度。 工件錐度部位之錐度值的計算公式: T=(D-d)/L D 為錐度部位之大徑, d 為錐度部位之小徑, L 為錐度部位之軸向長度。 工件錐度部位之半錐角計算公式: tan(a) = 0.5*(D-d)/L tan 是指正切函數,意思就是 : "對邊除以鄰邊",三角函數裡所指的三角形一定要用直角三角形,直角三角形最長的邊稱為斜邊,鄰邊與斜邊所包的角度就是三角函數角,如下圖的角 a ,三角函數角 a 對面的那個邊就是對邊,三角形會因擺放的位置不同而顯得有點昏頭轉向,不過只要依照上述的原則,就不會認錯邊名了。 從上述說明來看下圖就可以瞭解半錐角計算公式 tan(a) = 0.5*(D-d)/L ,從下圖放大的三角形中可以看出鄰邊長度是 L ,對邊長度是 0.5*(D-d) ,所以 tan(a) =  對邊 / 鄰邊 =0.5*(D-d)/L ,如果已算出 0.5*(D-d)/L 的值要反推角 a 的角度,就必需要這樣做 a=tan -1 (0.5*(D-d)/L) ,也就是用反三角來得角 a 大的小,反三角的值在三十年前常用查表方式求得,近年來只要按一按計算機就可顯示出,不過這對於在工作現場的人來說太麻煩了,所以就有一個半錐角速算公式  : a=28.65*( 錐度值 )=28.65*(D-d)/L) ,那麼這 28.65 到底是怎麼來的呢 ? 其實只要用計算機按按看就可以得到答案,將計算機輸入 1/tan(1 0 ) ,就可得到 57.2899616307594246... ,但由於我們要求的是半錐角,所以再將此值除以 2 就可得到 28.6449808153797... ,簡以 28.65 代之即可,不過這個半錐角速算公式是近似值,只能用來大概調動複式刀座,真正的校正還得...