明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1898|回复: 0

[分享]ARX对数据的类型和单位进行转换

[复制链接]
发表于 2003-12-1 12:59:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-12-1 14:38:55 编辑

量钢单位转换函数
AutoCAD软件包的文件acad.unt中,定义了一些常用的量钢单位转换关系,例如英里与公里,华氏与摄氏等等。函数acutCvUnit()用来将一种单位的数值转换成另一种单位的数值。单位用字符串的形式表示,使用的字符串必须与文件acad.unt中定义的一致。如果当前绘图单位是工程单位或建筑单位(英尺或英寸),下面的程序能把指定的距离转换成米为单位的值:
ads_real eng_len,metric_len;
char *prmpt=”请输入距离:”;
if(acedGetDist(NULL,prmpt,&eng_len)!=RTNORM) return BAD;
acutCvUnit(eng_len,”inches”,”meters”,&metric_len);
[I]注意:不能用函数acutCvUnit()转换不相配的单位,例如不能把英寸转换成年[/I]。

字符串转换函数
函数acdbRToS()用来将一个实数转换成字符串值;
函数acdbAngToS()用来将一个角度值转换成字符串值;
函数acdbDisToF()用来将一个字符串值转换成实数值;
函数acdbAngToF()用来将一个字符串值转换成角度值。
[I]注意:字符串格式由AutoCAD的系统变量来控制,对于实数值,单位和精度由系统变量LUNITS和IUPREC指定;对于角度值,单位和精度由系统变量AUNITS和AUPERC指定。不论实数还是角度值,标注变量DIMZIN控制着是否在生成字符串的前后补0[/I]。

下面的程序是调用函授acdbRToS()的方法:
ads_real x=17.5;
char fmtval[12];
//精度是第三个参数
acdbRToS(x,1,4,fmtval);
acutPrintf(“结果形式为%s\n”,fmtval);
acdbRToS(x,2,2,fmtval);
acutPrintf(“结果形式为%s\n”,fmtval);
acdbRToS(x,3,2,fmtval);
acutPrintf(“结果形式为%s\n”,fmtval);
acdbRToS(x,4,2,fmtval);
acutPrintf(“结果形式为%s\n”,fmtval);
acdbRToS(x,5,2,fmtval);
acutPrintf(“结果形式为%s\n”,fmtval);
假定系统变量DIMZIN为0,在AutoCAD文本屏幕上显示为:
结果形式为1.7500E+01
结果形式为17.50
结果形式为1′-5.50″
结果形式为1′-5 1/2″
结果形式为17 1/2
当系统变量UNITMODE等于1时,输出串的单位由输入字符串的单位决定,因此,函数acdbRToS()在下列模式下返回的值在形式上是不同的:工程单位制(模式3)、建筑单位制(模式4)和分数形式(模式5)。当UNITMODE=1时,在上面的例子中,前两行的输出形式不变,后三行将变为:
结果形式为1′5.50″
结果形式为1′5 -1/2″
结果形式为17 -1/2

函数acdbDisToF()和acdbRToS()功能相反。下例就是引用上面程序转换后生成的字符串值,再进行反变换得来的,因此,参数restuil的值是17.5。
acdbDisToF(“1.7500E+01”,1,&resuil);
acdbDisToF(“17.50”,2,&resuil);
acdbDisToF(“1′-5.50\″”,3,&resuil);
acdbDisToF(“1′-5 1/2\″”,4,&resuil);
acdbDisToF(“17 1/2”,5,&resuil);

下面的程序代码调用函数acdbAngToS()的方法。与acdbRToS()的调用类似:
ads_real ang=3.14159;
char fmtval[12];
acdbAngToS(ang,0,0,fmtval);
acutPrintf(“角度的形式为%s\n”,fmtval);
acdbAngToS(ang,1,4,fmtval);
acutPrintf(“角度的形式为%s\n”,fmtval);
acdbAngToS(ang,2,4,fmtval);
acutPrintf(“角度的形式为%s\n”,fmtval);
acdbAngToS(ang,3,4,fmtval);
acutPrintf(“角度的形式为%s\n”,fmtval);
acdbAngToS(ang,4,2,fmtval);
acutPrintf(“角度的形式为%s\n”,fmtval);
假定系统变量DIMZIN为0,在AutoCAD文本屏幕上显示为:
角度的形式为180
角度的形式为180d0′0″
角度的形式为200.0000g
角度的形式为3.1416r
角度的形式为w

函数acdbAngToF()与acdbAngToS()功能相反。下例就是引用上面程序转换后生成的字符串值,再进行反变换得来的,因此,参数restuil的值是3.14159。
acdbAngToF(“180”,0,&resuil);
acdbAngToF(“180d0′0\″”,1,&resuil);
acdbAngToF(“200.0000g″”,2,&resuil);
acdbAngToF(“3.1416r”,3,&resuil);
acdbAngToF(“w”,4,&resuil);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:55 , Processed in 0.160038 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表