DIESEL 函數可以執行狀態擷取、計算以及顯示。
所有的函數最多都只能使用 10 個參數,包括函數名本身。
函數 | 描述/範例 |
---|---|
+ (加) |
傳回數值 val1 、 val2 、…、 val9 的總和。 $(+, val1 [, val2, …, val9]) 如果目前的 thickness 設為 5,以下的 DIESEL 字串便會傳回 15。 $(+, $(getvar, thickness), 10) |
- (減) |
傳回從 val1 中減去數值 val2 到 val9 的結果。 $(-, val1 [, val2 , …, val9]) |
* (乘) |
傳回數值 val1 、 val2 、…、 val9 相乘的結果。 $(*, val1 [, val2, …, val9]) |
/ (除) |
傳回數值 val1 除以 val2 、…、 val9 的結果。 $(/, val1 [, val2, …, val9]) |
= (等於) |
如果數值 val1 和 val2 相等,則字串將傳回 1;否則它會傳回 0。 $(=, val1, val2) |
< (小於) |
如果數值 val1 小於 val2 ,則字串將傳回 1;否則將傳回 0。 $(<, val1, val2) 以下表示式取得 HPANG 的目前值;如果該值小於儲存在系統變數 USERR1 中的值,則其會傳回 1。如果儲存在 USERR1 中的值為 10.0,而 HPANG 的目前設定為 15.5,則以下字串會傳回 0。 $(<, $(getvar, hpang), $(getvar, userr1)) |
> (大於) |
如果數值 val1 大於 val2 ,則字串將傳回 1;否則它會傳回 0。 $(>, val1, val2) |
!= (不等於) |
如果數值 val1 和 val2 不相等,則字串將傳回 1;否則它會傳回 0。 $(!=, val1, val2) |
<= (小於或等於) |
如果數值 val1 小於或等於 val2 ,字串會傳回 1;否則它會傳回 0。 $(<=, val1, val2) |
>= (大於或等於) |
如果數值 val1 大於或等於 val2 ,則字串將傳回 1;否則它會傳回 0。 $(>=, val1, val2) |
與 |
傳回從整數 val1 到 val9 的逐位元邏輯 AND 的值。 $(and, val1 [, val2,…, val9]) |
angtos |
以指定的格式與精確度傳回角度值。 $(angtos, value [, mode, precision]) 將給定的 值 編輯成以 模式 和 精確度 所指定格式的角度,如同類比 AutoLISP 函數所定義一般。如果省略 模式 和 精確度 ,則其便會使用 UNITS 指令選擇的目前值。 註: AutoLISP 不適用於 AutoCAD LT。
下列模式值可加以套用:
|
Edtime |
根據給定的 picture 引數,傳回格式化的日期與時間。 $(edtime, time, picture) 編輯由 時間 給定的羅馬曆日期 (例如,根據給定的 圖片 從 $(getvar,date) 取得)。 picture 由格式詞組構成,每個格式詞組均代表特定的日期和時間。無法解譯成格式詞組的字元,會原封不動地複製成 $(edtime) 的結果。格式詞組的定義如下表所示。 例如,假設日期與時間為 1998 年 9 月 5 日星期六 4:53:17.506,則 edtime 對應的格式詞組和輸出範例應如下所示:
如前面的表格所示,輸入整個 AM/PM 片語;如果單獨使用 AM,則系統將原封不動地讀取 A 並且 M 將傳回目前的月份。 如果 picture 中出現任何 AM/PM 片語,則 H 與 HH 片語會依據 12 小時制 (12:00-12:59 1:00-11:59),而不是 24 小時制 (00:00–23:59) 來編輯時間。 以下的範例使用上表中的日期與時間。請注意事項:逗號必須含括在引號中,否則它會被當做引數分隔符號。 $(edtime, $(getvar,date), DDD"," DD MON YYYY - H:MMam/pm) 傳回的結果如下: Sat, 5 Sep 1998 - 4:53am 如果 time 是 0,則使用最外層巨集執行時的日期與時間。這樣可避免冗長耗時地重複呼叫 $(getvar,date),並且可以保證由多重 $(edtime) 巨集所組成的字串都能使用相同的時間。 |
eq |
如果字串 val1 和 val2 相等,則字串將傳回 1;否則它會傳回 0。 $(eq, val1, val2) 以下表示式取得目前圖層的名稱;如果該名稱與儲存在系統變數 USERS1 (USERS1-5) 中的字串值相符,則其會傳回 1。假定字串 "PART12" 儲存在 USERS1 中,並且目前圖層相同。 註: USERS1-5 系統變數無法在 AutoCAD LT 中使用。
$(eq, $(getvar, users1), $(getvar, clayer)) 傳回的結果如下: 1 |
Eval |
將字串 str 傳送到 DIESEL 演算器,並將演算結果傳回。 $(eval, str) |
fix |
捨棄實數值 value 的小數部份,使其截短成整數值。 $(fix, value) |
Getenv |
傳回環境變數 varname 的值。 $(getenv, varname) 如果該變數沒有定義,它會傳回空字串。 |
Getvar |
傳回系統變數 varname 的值。 $(getvar, varname) |
if |
條件式演算表示式。 $(if, expr, dotrue [, dofalse]) 如果 expr 為非零值,則它會演算並傳回 dotrue ;否則,它會演算並傳回 dofalse 。注意, expr 未選擇的分支不會演算。 |
索引 |
從以逗號分隔的字串中傳回指定成員。 $(index, which, string) 假設 string 引數含有一或多個以巨集引數分隔符號字元 (逗號) 分隔的值。 which 引數可以從這些值中選取一個要萃取的值 (第一個項目編號為 0)。此函數最常用於從 $(getvar) 傳回的點座標中萃取 X、Y 或 Z 座標值。 應用程式可以使用此函數,從系統變數 USERS1-5 中擷取儲存為以逗號分隔的字串的值。 註: USERS1-5 系統變數無法在 AutoCAD LT 中使用。
|
nth |
演算並傳回 which 選取的引數。 $(nth, which, arg0 [, arg1,…, arg7]) 如果 which 為 0,則 nth 傳回 arg0 ,依此類推。請注意 $(nth) 與 $(index) 之間的差異: $(nth) 可傳回函數一系列引數的其中一個,而 $(index) 可從做為單一引數傳遞且以逗號分隔的字串中萃取值。系統不會演算未由 which 選取的引數。 |
或 |
傳回從整數 val1 到 val9 的逐位元邏輯 OR 的值。 $(or, val1 [, val2,…, val9]) |
Rtos |
以指定的格式與精確度傳回實數值。 $(rtos, value [, mode, precision]) 將給定的 value 編輯成以 mode 和 precision 所指定格式的實數。 如果省略 mode 和 precision ,則其會使用透過 UNITS 指令選取的目前值。 |
Strlen |
以字元數為單位傳回 string 的長度。 $(strlen, string) |
Substr |
傳回 string 的子字串,從字元 start 開始並延伸 length 個字元。 $(substr, string, start [, length]) 字串中的字元是從 1 開始編號的。如果省略 length ,則會傳回剩餘的字串。 |
上方 |
傳回已根據目前語言環境規則轉換為大寫字元的 string 。 $(upper, string) |
xor |
傳回從整數 val1 到 val9 的逐位元邏輯 XOR 的值。 $(xor, val1 [, val2,…, val9]) |