DIESEL(Direct Interpretively Evaluated String Expression Language)是指“直接解释求值的字符串表达式语言”。使用的DIESEL可以控制AutoCAD系统变量MODEMACRO的值,也可用来编写菜单宏,但只能用来处理字符串。
DIESEL的宏表达式格式如下:
$(字符串函数名,函数参数1,函数参数2…)
其中,根据函数的不同,函数参数的个数可以为零或者多个,但最多为9个。在宏表达式的不同元素之间,不可以有任何空格。所有的宏表达式都必须以“$”符号开头。
可以在DIESEL中使用的函数如表35-1所示。
表35-1 DIESEL函数一览表
|
函数名
|
格式
|
说明
|
|
+
|
$(+,val1,val2,…)
|
返回字符串为全部数字之和
|
|
-
|
$(-,val1,val2,…)
|
返回字符串为val1减去其他所有数字之差
|
|
*
|
$(*,val1,val2,…)
|
返回字符串为全部数字之积
|
|
/
|
$(/,val1,val2,…)
|
返回字符串为val1除以其他所有数字之商
|
|
=
|
$(=,val1,val2)
|
如果两个数字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小于等于数字val2,则返回字符串为1,否则为0
|
|
>=
|
$(>=,val1,val2)
|
如果数字val1大于等于数字val2,则返回字符串为1,否则为0
|
|
and
|
$(and,val1[,val2,..., val9])
|
返回整数val1~val9的按位逻辑与
|
|
angtos
|
$(angtos,value[,mode,precision])
|
按指定的格式和精度返回角度值(注1)
|
表35-1 DIESEL函数一览表
|
edtime
|
$(edtime,time,picture)
|
返回基于指定图片的格式化的日期和时间(注2)
|
|
eq
|
$(eq,str1,str2)
|
如果两个字符串str1和str2相同,则字符串返回1;否则返回0
|
|
eval
|
$(eval,str)
|
将一个字符串传给DIESEL计算器,并返回计算结果
|
|
fix
|
$(fix,value)
|
返回一个实数数字的整数部分
|
|
getenv
|
$(getenv,varname)
|
返回环境变量varname的当前值;对于未定义的环境变量,则返回空字符串
|
|
getvar
|
$(getvar,varname)
|
返回系统变量varname的值
|
|
if
|
$(if,expr,dotrue[,dofalse])
|
如果expr非零,则计算并返回dotrue的值;否则,计算并返回dofalse的值
|
|
index
|
$(index,which,string)
|
返回由which选定的、以逗号分隔的字符串中指定的成员,其中第一项编号为0
|
|
linelen
|
$(linelen)
|
返回用户所能见到的最长状态栏的字符长度。
|
|
nth
|
$(nth,which,arg0[,arg1,...,arg7])
|
计算并返回由which选定的参数的值,其中第一项编号为0
|
|
or
|
$(or,val1[,val2,...,val9])
|
返回整数val1~val9的按位逻辑或
|
|
rtos
|
$(rtos,value [,mode,precision])
|
按指定的格式和精度返回实数值
|
|
strlen
|
|
返回字符串的字符长度
|
|
substr
|
$(substr,string, tart[,length])
|
返回字符串string的子串,该子串从字符start开始,长度为length。
字符串中的字符从1开始编号;如果length被省略,则返回从字符start开始、到string末尾为止的子串
|
|
upper
|
$(upper,string)
|
返回字符串string的大写
|
|
xor
|
$(xor,val1[,val2,...,val9])
|
返回整数val1~val9的按位逻辑异或
|
注1 该函数根据参数“mode”和“precision”指定的格式,给定的参数“value”作为角度值进行编辑,如果参数“mode”和“precision”被省略,则使用由“unites”命令指定的当前值。参数“mode”的取值及其含义见表35-2。
表35-2 “mode”的取值及其含义
|
Mode值
|
字符串格式
|
|
0
|
度
|
|
1
|
度/分/秒
|
|
2
|
百分度
|
|
3
|
弧度
|
|
4
|
勘测单位
|
注2 该函数返回基于指定图片的格式化的日期和时间。
其中,“time”参数为给定的AutoCAD日期,通常使用函数“$(getvar,date)”来获取;
“picture”参数由日期和时间的特定表示法替代的格式短语组成。格式短语的定义如表35-3所示。所有不能解释为格式短语的字符将被完整地复制到函数返回结果中。
表35-3 “edtime”函数格式短语定义
|
格式
|
输出示例
|
格式
|
输出示例
|
|
D
|
9
|
H
|
5
|
|
DD
|
09
|
HH
|
05
|
|
DDD
|
Tue
|
MM
|
47
|
|
DDDD
|
Tuesday
|
SS
|
17
|
|
^M
|
6
|
MSEC
|
506
|
|
MO
|
06
|
AM/PM
|
AM
|
|
MON
|
Jun
|
am/pm
|
pm
|
|
MONTH
|
June
|
A/P
|
P
|
|
YY
|
01
|
a/p
|
p
|
|
YYYY
|
2001
|
|
|
例如以如下格式使用该函数:下例使用上表中的日期和时间。
$(edtime,$(getvar,date),DDD"," DD MON YYYY - H:MMam/pm)
它可能的返回结果为:
Tue, 9 Jun 2001 - 5:47pm
注意 “picture”参数中逗号必须放在引号中,否则它将被当作参数分隔符。 |