打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Auto CAD Lisp 之 数据类型转换函数详情 | 老伙计
userphoto

2022.08.26 广东

关注
刚刚接触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。则:
语法范例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,然后将结果作为函数或计算中的缩放比例因子,从而提高效率。这种方法对除温度外的所有预定义单位都有效,因为温度单位的转换要涉及到一个偏移量而没有固定的比例
例子:
(cvunit 1 "minute" "second") 返回 60.0
(cvunit 1 "gallon" "furlong") 返回 nil
(cvunit 1.0 "inch" "cm") 返回 2.54
(cvunit 1.0 "acre" "sq yard") 返回 4840
(cvunit '(1.0 2.5) "ft" "in") 返回 (12.0 30.0)
(cvunit '(1 2 3) "ft" "in") 返回 (12.0 24.0 36.0)
10、任意数值转换字符串 (vl-princ-to-string 任意值)
说明:此函数可以将任意的数值转换成字符串,(alert "")这个弹窗只支持字符串。我们想要看到编程运行的结果,就可以使用这个函数加弹窗,弹窗来结果是什么,无论是表,还是字符串,还是数组,都会转为字符串。
例子
(alert (vl-princ-to-string 任意值))
11、(read string)
说明:
此函数将返回 string 的第一个表或原子。但 string 不可以包含空格, 除非是在表或字符串中 。read 会返回它的参数转换的相对应数据类型。
Lisp 四舍五入(没有直接的函数,可以自定义一个)
例子
(read (rtos 1.251 2 1));(read (rtos 小数 模式 保留位数)) 四舍五入
(read "97 3.2")  返回  97
(read "3.2300")  返回  3.23
(read "hello there") 返回  HELLO
(read "(a b c)") 返回  (A B C)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB 学习
第三章:vbscript教案
统计软件SAS使用教程
VBA字符串处理 (1)
sql常用命令
C语言中系统函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服