DIESEL 函數參考

DIESEL 函數可以執行狀態擷取、計算以及顯示。

所有函數最多只能使用 10 個參數,包括函數名稱本身。

函數 描述/範例
+ (加)

傳回數值 val1val2、…、val9 的總和。

$(+, val1 [, val2, …, val9])

如果目前的 thickness 設為 5,以下的 DIESEL 字串便會傳回 15。

$(+, $(getvar, thickness), 10)
- (減)

傳回從 val1 減去數值 val2val9 的結果。

$(-, val1 [, val2 , …, val9])
* (乘)

傳回數值 val1val2、…、val9 相乘的結果。

$(*, val1 [, val2, …, val9])
/ (除)

傳回數值 val1 除以 val2、…、val9 的結果。

$(/, val1 [, val2, …, val9])
= (等於)

如果數值 val1val2 相等,則字串會傳回 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)
!= (不等於)

如果數值 val1val2 不相等,則字串會傳回 1;否則會傳回 0。

$(!=, val1, val2)
<= (小於或等於)

如果數值 val1 小於或等於 val2,則字串會傳回 1;否則會傳回 0。

$(<=, val1, val2)
>= (大於或等於)

如果數值 val1 大於或等於 val2,則字串會傳回 1;否則會傳回 0。

$(>=, val1, val2)
and

傳回整數 val1val9 的逐位元邏輯 AND 的值。

$(and, val1 [, val2,…, val9])
angtos

以指定的格式與精確度傳回角度值。

$(angtos, value [, mode, precision])

將給定的 value 編輯為以 modeprecision 指定格式的角度,如同類比 AutoLISP 函數定義的一樣。如果省略 modeprecision,則會使用 UNITS 指令選擇的目前值。

註: AutoLISP 不適用於 AutoCAD LT for Mac OS。
可套用下列 mode 值:
  • 0,用於度
  • 1,用於度/分/秒
  • 2,用於百分度
  • 3,用於弳度
  • 4,用於土地測量單位
Edtime

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

$(edtime, time, picture)

編輯由 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

如果字串 val1val2 不相同,則字串會傳回 1;否則會傳回 0。

$(eq, val1, val2)

以下表示式取得目前圖層的名稱;如果該名稱與儲存在系統變數 USERS1 (USERS1-5) 中的字串值相符,則會傳回 1。假定字串 "PART12" 儲存在 USERS1 中,且目前圖層相同。

註: USERS1-5 系統變數無法在 AutoCAD LT for Mac OS 中使用。
$(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

傳回以逗號分隔字串的指定成員。

$(index, which, string)

假設 string 引數含有一或多個以巨集引數分隔符號字元 (逗號) 分隔的值。which 引數可以從這些值中選取一個要擷取的值 (第一個項目編號為 0)。此函數最常用於從 $(getvar) 傳回的點座標擷取 XYZ 座標值。

應用程式可以使用此函數,從 USERS1-5 系統變數中擷取以逗號分隔字串儲存的值。

註: USERS1-5 系統變數無法在 AutoCAD LT for Mac OS 中使用。
nth

演算並傳回 which 選取的引數。

$(nth, which, arg0 [, arg1,…, arg7])

如果 which 為 0,則 nth 傳回 arg0,依此類推。請注意 $(nth)$(index) 之間的差異: $(nth) 會傳回函數一系列引數的其中一個,而 $(index) 會從以單一引數傳遞的逗號分隔字串中擷取值。系統不會演算 which 未選取的引數。

or

傳回整數 val1val9 的逐位元邏輯 OR 的值。

$(or, val1 [, val2,…, val9])
Rtos

以指定的格式與精確度傳回實數值。

$(rtos, value [, mode, precision])

將給定的 value 編輯為以 modeprecision 指定的實數。 如果省略 modeprecision,則會使用 UNITS 指令選取的目前值。

Strlen

以字元數為單位傳回 string 的長度。

$(strlen, string)
Substr

傳回 string 從字元 start 開始算起 length 個字元的子字串。

$(substr, string, start [, length])

字串中的字元從 1 開始編號。如果省略 length,則會傳回剩餘的字串。

Upper

根據目前地區設定規則,傳回轉換為大寫字元的 string

$(upper, string)
xor

傳回整數 val1val9 的逐位元邏輯 XOR 的值。

$(xor, val1 [, val2,…, val9])