CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2021 开发者帮助

字符串转换

2024-5-18 18:37| 发布者: admin| 查看: 15| 评论: 0|原作者: admin|来自: AutoCAD

字符串转换

AutoCAD 中使用的函数和转换值转换为可用于输出或文本数据的字符串值。该函数转换一个实际值,并转换一个角度。结果字符串的格式由 AutoCAD 系统变量的值控制:单位和精度由 LUNITS 和 LUPREC 指定,用于实际(线性)值,由 AUNITS 和 AUPREC 指定角度值。对于这两个函数,DIMZIN 尺寸标注变量控制如何将前导零和尾随零写入结果字符串。互补函数并将字符串转换回实数(距离)值或角度。如果传递了由 或 和 (分别) 生成的字符串,则保证返回有效值。acdbRToS()acdbAngToS()acdbRToS()acdbAngToS()acdbDisToF()acdbAngToF()acdbRToS()acdbAngToS()acdbDisToF()acdbAngToF()

例如,以下片段显示了对 的调用。(未显示错误检查,但应包含在应用程序中。acdbRToS()

ads_real x = 17.5; 
char fmtval[12]; 
//Precision is the 3rd argument: 4 places in the first 
// call, 2 places in the others.
acdbRToS(x, 1, 4, fmtval); // Mode 1 = scientific 
acutPrintf("Value formatted as %s\n", fmtval); 
acdbRToS(x, 2, 2, fmtval); // Mode 2 = decimal 
acutPrintf("Value formatted as %s\n", fmtval); 
acdbRToS(x, 3, 2, fmtval); // Mode 3 = engineering 
acutPrintf("Value formatted as %s\n", fmtval); 
acdbRToS(x, 4, 2, fmtval); // Mode 4 = architectural 
acutPrintf("Value formatted as %s\n", fmtval); 
acdbRToS(x, 5, 2, fmtval); // Mode 5 = fractional 
acutPrintf("Value formatted as %s\n", fmtval); 

这些调用(假设 DIMZIN 变量等于 0)在 AutoCAD 文本屏幕上显示以下值。

值格式为 1.7500E+01

值格式为 17.50

值格式为 1′-5.50”

值格式为 1′-5 1/2”

值格式为 17 1/2

当 UNITMODE 系统变量设置为 1(指定单位显示为输入时)时,返回的字符串对于工程(模式等于 3)、建筑(模式等于 4)和分数(模式等于 5)单位不同。例如,前面示例输出的前两行是相同的,但最后三行将如下所示:acdbRToS()

值格式为 1′5.50”

值格式为 1′5-1/2”

值格式为 17-1/2

该函数是对 的补充,因此以下调用(使用前面示例中生成的字符串)都设置为相同的值 17.5。(同样,示例不显示错误检查。acdbDisToF()acdbRToS()result

acdbDisToF("1.7500E+01", 1, &result); // 1 = scientific 
acdbDisToF("17.50", 2, &result); // 2 = decimal 
// Note the backslashes. Needed for inches.
acdbDisToF("1'-5.50\"", 3, &result); // 3 = engineering 
acdbDisToF("1'-5 1/2\"", 4, &result); // 4 = architectural 
acdbDisToF("17 1/2", 5, &result); // 5 = fractional 

以下片段显示了对 That 的调用,这些调用与前面的示例类似。acdbAngToS()acdbRToS()

ads_real ang = 3.14159; 
char fmtval[12]; 
// Precision is the 3rd argument: 0 places in the first
// call, 4 places in the next 3, 2 in the last.
acdbAngToS(ang, 0, 0, fmtval); // Mode 0 = degrees 
acutPrintf("Angle formatted as %s\n", fmtval); 
acdbAngToS(ang, 1, 4, fmtval); // Mode 1 = deg/min/sec 
acutPrintf("Angle formatted as %s\n", fmtval); 
acdbAngToS(ang, 2, 4, fmtval); // Mode 2 = grads 
acutPrintf("Angle formatted as %s\n", fmtval); 
acdbAngToS(ang, 3, 4, fmtval); // Mode 3 = radians 
acutPrintf("Angle formatted as %s\n", fmtval); 
acdbAngToS(ang, 4, 2, fmtval); // Mode 4 = surveyor's 
acutPrintf("Angle formatted as %s\n", fmtval); 

这些调用(仍假定 DIMZIN 等于 0)在 AutoCAD 文本屏幕上显示以下值。

角度格式为 180

角度格式为 180d0′0”

角度格式为 200.0000g

角度格式为 3.1416r

角度格式为 W

注意:UNITMODE 系统变量还会影响返回的字符串,当它以测量员的单位返回字符串时(模式等于 4)。如果 UNITMODE 等于 0,则返回的字符串可以包含空格(例如,“N 45d E”);如果 UNITMODE 等于 1,则字符串不包含空格(例如,“N45dE”)。acdbAngToS()

该函数是对 的补充,因此以下调用都将 result 参数设置为相同的值 3.14159。(在使用弧度的示例中,此值四舍五入为 3.1416。acdbAngToF()acdbAngToS()

acdbAngToF("180", 0, &result); // 0 = degrees  
acdbAngToF("180d0'0\"", 1, &result); // 1 = deg/min/sec 
acdbAngToF("200.0000g", 2, &result); // 2 = grads 
acdbAngToF("3.1416r", 3, &result); // 3 = radians 
acdbAngToF("W", 4, &result); // 4 = surveyor's 
注意:如果字符串指定角度(以度、分和秒为单位),则必须使用反斜杠 (\) 来转义秒符号 (“),以便它不会显示为字符串的末尾。前面的第二个示例演示了这一点。acdbAngToF()

父主题:

  1. 转换

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-27 16:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部