字符串转换
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()
父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-28 17:28
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.