AutoCAD的Diesel語言函數(shù)詳解及示例解讀

著作權歸作者所有,任何形式的轉載都請聯(lián)系作者。

  在AutoCAD中,DIESEL是Direct Interpretively Evaluated String Expression Language(直接解釋求值字符串表達式語言)的縮寫,它是一種宏語言,今天隆重推薦。本人多年以前在研究AutoCAD的菜單文件時,看到菜單中有“$”開頭的字符串,不明所以,也未進一步研究,直到前段時間研究Diesel語言才終于明白就是它。對于大多數(shù)一般AutoCAD使用者而言,Diesel語言相當陌生。實際上,對于能夠在字段、菜單和按鈕等位置靈活運用Diesel表達式的設計人員而言,將帶來很大的便利。

  在Diesel表達式中,'$()'告訴AutoCAD,括號中包含的以下字符串需要由Diesel解釋器進行評估。"$"是CAD中Diesel語言形成的宏的標記,而后面的"()"則是表達式語言的標記,跟AutoLisp一樣,操作符前置。Diesel表達式也可以嵌套。它可以在菜單、按鈕中應用,也可以在“字段”中應用,還可以用來修改狀態(tài)行。

  Diesel 表達式的函數(shù)、錯誤消息以及應用具體介紹如下,也可以參見Autodesk Knowledge Network官網(wǎng)(雖然為中文,但注意是機器翻譯):

  一、DIESEL 函數(shù)參考

  所有的函數(shù)最多只能包含 10 個參數(shù),包括函數(shù)名本身。函數(shù)基本形式為:$(函數(shù)名, 參數(shù)1, 參數(shù)2, …, 參數(shù)9)。參數(shù)若含“[ ]”,說明參數(shù)可選。

  1、四則運算

  四則運算包括+(加)、-(減)、*(乘)、/(除)4種。

  $(+, val1 [, val2, …, val9]) ,返回數(shù)字 val1 、 val2 、…、 val9 的和。

  $(-, val1 [, val2, …, val9]) ,返回數(shù)字 val1 減去? val2 、…、 val9 的結果。

  $(*, val1 [, val2, …, val9]) ,返回數(shù)字 val1 、 val2 、…、 val9 的積。

  $(/, val1 [, val2, …, val9]) ,返回數(shù)字 val1 除以 val2 、…、 val9 的結果。

  2、比較運算

  比較運算符包括 =(等于)、<(小于)、>(大于)、!=(不等于)、<=(小于或等于)、>=(大于或等于)6種。所有比較運算函數(shù)形式均相同,參數(shù)個數(shù)均為2個,結果為真,返回1,否則返回0。如 $(!=, val1, val2) ,如果數(shù)字 val1 和 val2 不相等,則字符串返回 1;否則,返回 0。

  3、邏輯運算

  邏輯運算符包括and(與)、or(或)、xor(異或)3種。所有邏輯運算函數(shù)形式均相同,參數(shù)均為整數(shù),最多可以有9個參數(shù)。如 $(xor, val1 [, val2,…, val9]),返回整數(shù) val1 到 val9 的按位邏輯異或。

  4、函數(shù)

  函數(shù)包括 angtos、edtime、eq、eval、fix、getenv、getvar、if、index、nth、rtos、strlen、substr、upper 等14個。具體說明如下:

  $(angtos,value[,mode,precision]) 按指定的格式和精度返回角度值??蓱靡韵?mode值:0(表示度)、1(表示度/分/秒)、2(表示百分度)、3(表示弧度)、4(表示勘測單位)。

  $(edtime, time, picture) 返回基,于指定圖片的格式化的日期和時間。

  $(eq, val1, val2) 如果字符串 val1 和 val2 相同,則字符串返回 1;否則,返回 0。

  $(eval,str) 將字符串 str 傳給 DIESEL 計算器,并返回計算結果。

  $(fix, value) 通過舍棄小數(shù)部分,將實數(shù)數(shù)字值 截斷為整數(shù)。

  $(getenv, varname) 返回環(huán)境變量 varname 的值。

  $(getvar, varname) 返回具有給定 varname 的系統(tǒng)變量的值。

  $(if,expr, dotrue [, dofalse]) 如果 expr 為非零,則進行計算并返回 dotrue 。否則,進行計算并返回 dofalse 。

  $(index, which, string) 返回以逗號分隔的字符串中的指定成員。which 參數(shù)第一項編號為 0;

  $(nth, which, arg0 [, arg1,…, arg7])? 計算并返回由 which 選定的參數(shù)。如果 which 為 0,則 nth 返回 arg0 ,依此類推。

  $(rtos, value [, mode, precision])? 按指定的格式和精度返回實數(shù)值。

  $(strlen,string) 返回 string 的字符長度。

  $(substr, string, start [, length])? 返回 string 的子串,該子串從字符 start 開始,長度為 length 。字符串中的字符從 1 開始編號。如果省略 length ,則返回所有剩余字符串。

  $(upper, string) 返回 string 按當前地區(qū)的規(guī)則轉換為大寫的結果。

  二、DIESEL 錯誤消息參考

  通常,如果 Diesel 表達式中存在錯誤,AutoCAD會根據(jù)錯誤的性質,DIESEL 在輸出流中嵌入一個錯誤指示。四種錯誤提示如下:

  1、$? :語法錯誤(通常是由于括號不匹配或字符串太長);

  2、 $(func,??) :func 的參數(shù)錯誤;

  3、$(func)?? :未知函數(shù)func;

  4、$(++) :輸出字符串太長 — 計算被截斷;

  三、應用

  1、在菜單或按鈕中使用。要在菜單宏中使用Diesel表達式,需在Diesel表達式前加上“$M=”。該字串后面所有內容都發(fā)送到DIESEL解釋器,結果用作宏。如AutoCAD的 UCS 圖標按鈕,是一個開關按鈕,通過Diesel表達式實現(xiàn)UCSICON圖標的打開與關閉切換,其宏定義為$M=$(if,$(and,$(getvar,ucsicon),1),^C^C_ucsicon _off,^C^C_ucsicon _on)。具體解讀如下:

AutoCAD按鈕自定義用戶界面

  ⑴ $(getvar,ucsicon) 函數(shù)為獲得系統(tǒng)變量UCSICON的值,當UCSICON圖標打開,返回值為1;當UCSICON圖標關閉,返回值為0;

 ?、?$(and, $(getvar,ucsicon),1) 將$(getvar,ucsicon)返回值與1求邏輯與,當返回值為1,該邏輯與結果為真;當返回值為0,該邏輯與結果為假;

 ?、?$(if,$(and,$(getvar,ucsicon),1),^C^C_ucsicon _off,^C^C_ucsicon _on) 該條件判斷函數(shù),當邏輯與為真時,執(zhí)行 “^C^C_ucsicon _off” 將已打開的UCSICON圖標關閉,當邏輯與返回假時,執(zhí)行 “^C^C_ucsicon _on” 將已關閉的UCSICON圖標打開;

 ?、?命令中 ^C 是特殊字符,功能是取消活動的命令或命令選項,相當于按一次 Esc 鍵。兩個^C 是確保終止上一個命令。

  2、在字段中使用。字段中如何插入Diesel表達式詳見“DWG文件名與文件內的圖名、圖號關聯(lián)修改”。

  有編程經(jīng)驗的設計人員,對用好Diesel表達式有優(yōu)勢。當然,Diesel語法簡單,對于一般設計人員而言,也可以深入研究Diesel函數(shù)及其各種用途,讓工作省時省力。歡迎一起探討!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容