CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

字符串转换

2023-1-1 01:03| 发布者: admin| 查看: 271| 评论: 0|来自: AutoCAD

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

函数是补充的,因此以下调用都将结果参数设置为相同的值 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()

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 15:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部