zoukankan      html  css  js  c++  java
  • *ARX对数据的类型和单位进行转换

    *ARX对数据的类型和单位进行转换
    量钢单位转换函数
    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 ”,fmtval);
    acdbRToS(x,2,2,fmtval);
    acutPrintf(“结果形式为%s ”,fmtval);
    acdbRToS(x,3,2,fmtval);
    acutPrintf(“结果形式为%s ”,fmtval);
    acdbRToS(x,4,2,fmtval);
    acutPrintf(“结果形式为%s ”,fmtval);
    acdbRToS(x,5,2,fmtval);
    acutPrintf(“结果形式为%s ”,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 ”,fmtval);
    acdbAngToS(ang,1,4,fmtval);
    acutPrintf(“角度的形式为%s ”,fmtval);
    acdbAngToS(ang,2,4,fmtval);
    acutPrintf(“角度的形式为%s ”,fmtval);
    acdbAngToS(ang,3,4,fmtval);
    acutPrintf(“角度的形式为%s ”,fmtval);
    acdbAngToS(ang,4,2,fmtval);
    acutPrintf(“角度的形式为%s ”,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);*



  • 相关阅读:
    将Web项目War包部署到Tomcat服务器基本步骤(完整版)
    性能实战分析-环境搭建(一)
    SQL Server Profiler追踪数据库死锁
    性能测试的各种监控工具大全
    python学习
    Linux常见面试题一
    Linux下用于查看系统当前登录用户信息的4种方法
    HDU 1394 Minimum Inversion Number(线段树求逆序对)
    SGU 180 Inversions(离散化 + 线段树求逆序对)
    Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
  • 原文地址:https://www.cnblogs.com/mjgw/p/12655835.html
Copyright © 2011-2022 走看看