AutoCADLisp之数据类型转换函数详情老伙计
刚刚接触Lisp编程的小哥哥小们不知道如何把变量里面的数字变为字串符,或者把字串符转换成数字,或者数字四舍五入。下面贴出各个函数的使用和功能。
1、整型转换为字符串的函数  (itoa int)
例子 : (itoa -2021)    返回    “-2021”
说明:把整型常数、变量或表达式的值转换为字符串,注意参数必须是整数,函数返回值中不带"+"号。
2、字符串转换为整数的函数 (atoi 字符串)
例子 :(atof "55.9") 返回 55  ,(atof "1997") 返回 1997
说明:把字符串常数、变量或表达式转换为整数。该函数从头扫描字符串,把前面的整数取出作为函数值返回。如果字符串不是以数字打头,函数返回值为0
3、字符串转换为实数的函数  (atof 字符串)
例子 :(atof "197.1") 返回 197.1 ,(atof "6") 返回 6.0
说明:把字符串常数、变量或表达式转换为实数。 该函数从头扫描字符串,把前面的数取出作为函数值返回。如果字符串不是以数字打头,函数返回值为0.0。
4、整型转换为实型的函数 (float n)
例子 :
(float 6) 返回 6.0
(float 6.75) 返回 6.75
说明:把整型数据转换为实型。参数可以为整数或实数,函数返回值为实数。
5、实型转换为整型的函数 (fix n)
例子 :
(fix 6) 返回 6
(fix 6.7) 返回 6
说明:把常数、变量、表达式的值取整。
(1)参数可以为整数或实数,函数返回值为整数。
(2)取整是截断小数部分,而不是四舍五入。
6、整数和实数格式化函数 (rtos number [mode] [precision])
解释说明:
此函数将依据所给定的 mode、precision、AutoCAD 的UNITMODE 系统变量及DIMZIN尺寸变量来返回一字符串以表示 number。mode 与precision是整型数, 表示所选择的线性单位模式和精确度。AutoCAD 中所提供的mode 值如下:
RTOS 模式(number)            编辑格式
1                                          科学记数 (Scientific)
2                                          十进制 (Decimal)
3                                            工程 (尺和十进位寸) (Engineering)
4                                          建筑 (尺和分数寸) (Architectural)
5                                            任意的分数单位 (Fractional)
把整数或实数按照指定的显示方式"mode"和精度"presicion"四舍五入转换为字符串。
(1)参数"number"可以为整型或实型常数、变量或表达式。
(2)参数"mode"为线性单位的格式编码,与AutoCAD的Units命令设定的线性格式相对应。如果该变量没有指定,则采用系统变量"lunits"指定的当前线性单位格式。
(3)参数"precision"用来指定数值的显示精度。对于前三种格式,本参数用来指定小数点后的小数位数。对于后两种格式,用来设定最小分数的分母。如果该变量没有指定,则采用系统变量Luprec设定的当前精度值。
例子:
例如, 我们设定 DIMZIN=0。则:   
excel数字转字符串函数
语法范例
UNITMODE=0的返回值
UNITMODE=1的返回值
(rtos 17.5 1 4)
"1.7500E+01"
"1.7500E+01"
(rtos 17.5 2 2)
"17.50"
"17.50"
(rtos 17.5 3 2)
"1'-5.50""
"1'5.50""
(rtos 17.5 4 2)
"1'-5 1/2""
"1'5-1/2""
(rtos 17.5 5 2)
"17 1/2"
"17-1/2"
6、距离格式化函数 (distof string [mode])
说明:
此函数会以angle 根据 mode 所指定的显示格式将string转换成实型数值。mode 参数所指定的单位必须是现存的格式。它的值必须是与 AutoCAD 的系统变量 LUNITS 所允许的值一致, 如下表所示。如果 mode 被省略, 则angtof 将使用 LUNITS 目前使用的值。
模式值
字串格式
1
科学记数格式
2
十进位格式
3
工程格式(英尺与十进位英寸)
4
建筑格式(英尺与分数英寸)
5
分数格式
string 必须是一个 distof 可以依据指定 mode 来正确分析的字符串。它可以是一个与rtos返回值相同的格式, 或许是 AutoCAD 允许键盘键入的格式。如果传送 distof经过 rtos 所建立的字符串, 那么distof将保证返回一有效值。如果distof成功执行, 那么它将返回一实型数值。否则, 它将返回 nil。
把距离串按照指定的格式"mode"转换为实数。
(1)参数"string"必须是根据"mode"参数指定的距离测量格式能正确解释的字符串。
(2)参数"mode"为距离测量格式,与AutoCAD的Units命令设定的线性格式相对应(表6-4)。如果该变量没有指定,则采用系统变量"lunits"指定的当前单位设置。
7、角度格式化函数(弧度转为角度)  (angtos angle [mode] [precision])
说明:把以弧度为单位的角度按照指定的角度格式"mode"和精度"presicion"转换为字符串,角度值在[0,2π]之间。 (1)参数"angle"可以为整型或实型常数、变量或表达式。
(2)参数"mode"为角度格式编码,与AutoCAD的Units命令设定的角度格式相对应。如果该变量没有指定,则采用系统变量"aunits"指定的当前角度格式。
(3)参数"precision"用来指定转换后小数点之后的小数位数。如果该变量没有指定,则采用系统变量"auprec"设定的当前精度值。
例子:
(angtos 0.785398 0 4) 返回 "45.0000”
(angtos -0.785398 0 4) 返回 "315.0000"
8、角度格式化为弧度函数(角度转为弧度) (angtof string [units])
说明:把格式化角度字符串转换为以弧度为单位的实数。
(1)参数"string"必须是能够由Angtof函数根据指定的"units"参数进行正确分析的一个字符串。它既可以与Angtos函数返回结果的格式相同,也可以是AutoCAD允许从键盘输入的角度格式。
(2)参数"units"用于指定角度字符串格式单位,与AutoCAD的Units命令设定的角度格式相对应。如果该变量没有指定,则采用系统变量"aunits"指定的当前角度格式。
模式      编辑格式
0          十进位度
1          度/分/秒
2          百分级数
3            弧度
4          测量单位
例子:
(angtof "45.0000") 返回 0.785398
(angtof "45.0000" 3) 返回 1.0177
9、单位换算函数  (cvunit value from-unit to-unit)
说明:
把数值由一种单位格式转换为另一种单位格式。 (1)参数"value"为要换算的数值或点表(二维或三维点),必须是整型或实型,不得为空。
(2)参数"from-unit"为"value" 原来使用的单位。"to-unit"为"value"将要使用的单位,这两个单位必须在 ACAD.unt 文件中已经定义。
(3)转换的两种单位必须为同一类型,否则函数值为nil。
(4)如果要把一批数值从一个单位转换为另一个单位,可以先转换数值 1.0,然后将结果作为函数或计算中的缩放比例因子,从而提高效率。这种方法对除温度外的所有预定义单位都有效,因为温度单位的转换要涉及到一个偏移量而没有固定的比例

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。