DIESEL 函數參考

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。
下列模式值可加以套用:
  • 0,用於度數
  • 1,用於度/分/秒
  • 2,用於百分度
  • 3,用於弳度
  • 4,用於土地測量單位
Edtime

根據給定的 picture 引數,傳回格式化的日期與時間。

$(edtime, time, picture)

編輯由 時間 給定的羅馬曆日期 (例如,根據給定的 圖片 $(getvar,date) 取得)。 picture 由格式詞組構成,每個格式詞組均代表特定的日期和時間。無法解譯成格式詞組的字元,會原封不動地複製成 $(edtime) 的結果。格式詞組的定義如下表所示。

例如,假設日期與時間為 1998 年 9 月 5 日星期六 4:53:17.506,則 edtime 對應的格式詞組和輸出範例應如下所示:
  • D - 5
  • DD - 05
  • DDD - Sat
  • DDDD - 星期六
  • M - 9
  • MO - 09
  • MON - Sep
  • MONTH - 九月
  • YY - 98
  • YYYY - 1998
  • H - 4
  • HH - 04
  • MM - 53
  • SS - 17
  • MSEC - 506
  • AM/PM - 上午
  • am/pm - 上午
  • A/P - A
  • a/p - a

如前面的表格所示,輸入整個 AM/PM 片語;如果單獨使用 AM,則系統將原封不動地讀取 A 並且 M 將傳回目前的月份。

如果 picture 中出現任何 AM/PM 片語,則 HHH 片語會依據 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) 傳回的點座標中萃取 XYZ 座標值。

應用程式可以使用此函數,從系統變數 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])