【Visual Lisp】人機交互與數據處理(表除外)-lisp

;;本專題所講述的內容是人機交互以及常規數據處理技術
;;★★★01.人機交互★★★
;;△△△鍵盤輸入交互△△△
(getint "請輸入整數");;從鍵盤輸入整數,若是不是整數則重複提示輸入整數直到輸入的是整數。相似的函數[輸入整數 getreal][輸入字符串 getstring][控制和輸入關鍵字 initget getkword]正則表達式

;;△△△數據輸出△△△
(princ "The \"allowable\" tolerance is\"" fileDsc);;輸出到文件中爲 The "allowable" tolerance is" 反斜杆\錶轉義,可是返回值仍是有斜杆,只有輸出到文件中時無斜杆,而prin1和print則無論是輸入到文件中仍是返回值斜杆仍是斜杆;對於prompt只能輸出在命令行不能輸入文件,反斜杆\一樣與princ同樣表示轉義
(vl-prin1-to-string "c:\\");;返回 "\"c:\\\\\"" 相似於prin1的輸出
(vl-princ-to-string "c:\\");;返回 "c:\\" 相似於princ的輸出函數

;;△△△屏幕交互△△△
(getpoint);;屏幕取點返回點;相似的有[帶基點出現矩形框取點 getcorner][兩點取長度 getdist][輸入十進制度或鼠標指定返回弧度 getangle getorient]
(polar pt ang dist);;根據點、方位角和距離求點[求兩點距離 distance][兩點連線的角度 angle][求交點 inters 最後一個參數爲nil時交點能夠在延長線上][對象捕捉獲取特殊點 osnap][屏幕點兩點取長度 getdist]
(trans '(1 2 3) 0 1);;將點從一個座標系轉換爲另一個座標系內的點,也就是點的實際位置不變可是在不一樣的座標系內點的座標值不同。atom


;;★★★02.數據處理★★★
(+ 1 2 3);;加法運算,同類的數的運算有[減 - ]、[乘 * ]、[除 / ]、[餘數 rem ]、[最大公約數 gcd ]、[最大值 max ]、[最小值 min ]、[e的N次冪 exp]、[10爲底N的對數 log]、[數的N次方 expt]、[開方 sqrt]、[絕對值 abs]、[是不是負數 minusp]、[數是不是0 zerop]、[是不是數 numberp]、[數轉實數 float]、[數取整 fix]、[正弦 sin]、[餘弦 cos]、[反正切 atan]
(quote a);;禁止求值,返回 a 也能夠用 'a 表示,返回的也是a
(eval b);;對b求值,返回求值結果(setq a 3) (setq b 'a),返回值爲3。
(type data);;返回data的數據類型,數據類型包括有圖元名(ename)、外部objectArx應用程序(exrxsubr)、文件描述符(file)、整數(int)、表(list)、函數分頁表(pagetb)、選擇集(pickset)、浮點數(real)、safearray、字符串(str)、內部AutoLISP函數(subr)、符號(sym)、變體(variant)、從lisp中加載的用戶定義函數(usubr)、Active對象(VLA-object)
(atom 'a);;判斷是不是原子,是則返回T,不然返回nil
(null a);;判斷是否爲空,是空返回T,不然返回nil
(boundp 'a);;判斷是否非空,非空返回T,不然返回nil。例子(setq a 1) (boundp 'a) 返回T。注意格式,a前面有單引號
(equal 表達式1 表達式2 [容許偏差]);;判斷兩個表達式的值是否在容許的偏差範圍內,若是是則返回T,不然返回nilspa

;;△△△轉換△△△
(cvunit 1 "minute" "second");;單位轉換,將1分鐘轉換爲秒爲單位的值60
(ascii "a");;將字符串字符轉換爲對應ascii碼;[數字ascii碼轉對應字符的字符串 chr]
(itoa 123);;整數轉字符串;[字符串轉整數 atoi][字符串轉實數 atof][根據模式和精度將數轉換爲字符串 rtos 互補函數爲distof][弧度轉指定模式角度的字符串 angtos 互補函數 angtof]命令行

;;△△△字符串處理△△△
(strcat "ab" "c");;將幾個字符串按前後順序拼接爲一個字符串"abc"
(substr "abcdef" 1 2);;截取字符串,序號從1開始
(strcase "abcDEF" T);;字符串大小寫轉換,此處是轉換爲小寫,最後一個參數不寫則轉換爲大寫
(strlen "你123");;字符串長度
(wcmatch "A123sdfew" "A*");;字符串正則表達式匹配
(vl-string-elt "123abc" 3);;返回字符串內指定位置字符的ascii碼值 97
(vl-string-left-trim "123456" "12b3456d");;刪除第二個參數左邊的在第一個參數字符串字符出現過的字符.也就是開始遍歷第二個參數的第一個字符,若是在第一個參數字符串中有這個字符就刪除,若是遇到遍歷到的字符在第一個參數字符串中不存在此字符就中止遍歷刪除.就像此例的b,因此返回值是"b3456d"[相似的從右邊來刪除 vl-string-right-trim][兩邊都進行 vl-string-trim 至關於執行了前面兩個函數]
(vl-string-mismatch "vl-abc" "vl-def");;返回字符串從指定位置開始字符相同的長度 3
(vl-string-position (ascii "a") "123abc");;返回指定ascii碼值對應字符在字符串中的位置,從0開始.能夠指定開始搜索的位置和是從左開始仍是從右開始,默認從左從0開始
(vl-string-search "abc" "123abcdef");;搜索指定子串在字符串中出現的位置,能夠指定搜索的開始位置.序號從0開始
(vl-string-subst "789" "abc" "456abc");;子字符串的替換,用"789"替換"456abc"中的"abc"返回"456789"
(vl-string-translate "abcABC" "123123" "A is a, B is b, C is C");;用第一個參數中的字符一一對應第二個參數中的字符替換第三個參數字符串返回"1 is 1, 2 is 2, 3 is 3"
(vl-string->list 字符串);;詳見《表處理專題》對象

------end------ci

相關文章
相關標籤/搜索