// PDSUnit.h #if !defined(PDSUnit_h) #define PDSUnit_h //有关长度单位及精度的说明:1、在公制的长度输入中,最高输入精度为0.01mm,显示的最高精度为0.01mm // 2、在英制分数的长度输入中,最高输入精度为1/2048英寸,显示的最高精度为1/2048英寸 // 3、在英制小数的长度输入中,最高输入精度为0.001英寸,显示的最高精度为0.001英寸 //长度单位 #define UNIT_INCHFRACTION 0 //英制分数 #define UNIT_INCHDECIMA 1 //英制小数 #define UNIT_CENTIMETER 2 //公制cm #define UNIT_MILLIMETER 3 //公制mm #define UNIT_CHINACUN 4 //市制寸 //精确度 //使用英制分数时的精确度,=1 整数,=2 2分数制,=4 4分数制,=8 8分数制, // =16 16分数制,=32 32分数制,=64 64分数制,=128 128分数制, // =256 256分数制,=512 分数制,=1024 1024分数制,=2048 2048分数制. //使用英制小数或公制(cm,mm)时的精确度,=1 精确到整数位,=10 精确到0.1,=100 精确到0.01, // =1000 精确到0.001,=10000 精确到0.0001 #define PRECISION_INTEGER 1 //整数 #define PRECISION_FRACTION2 2 //2分数制 #define PRECISION_FRACTION4 4 //4分数制 #define PRECISION_FRACTION8 8 //8分数制 #define PRECISION_FRACTION16 16 //16分数制 #define PRECISION_FRACTION32 32 //32分数制 #define PRECISION_FRACTION64 64 //64分数制 #define PRECISION_FRACTION128 128 //128分数制 #define PRECISION_FRACTION256 256 //256分数制 #define PRECISION_FRACTION512 512 //512分数制 #define PRECISION_FRACTION1024 1024 //1024分数制 #define PRECISION_FRACTION2048 2048 //2048分数制 #define PRECISION_DECIMAL10 10 //精确到0.1 #define PRECISION_DECIMAL100 100 //精确到0.01 #define PRECISION_DECIMAL1000 1000 //精确到0.001 #define PRECISION_DECIMAL10000 10000 //精确到0.0001 //使用英制时,以inch表示的坐标的字符串 //输入参数: // iLength 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以inch为单位的坐标的字符串 CString InchString(int iLength,int idpmm,int iUnit,int iPrecision); //以cm表示的坐标的字符串 //输入参数: // iLength 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以cm为单位的坐标的字符串 CString CentimetreString(int iLength,int idpmm,int iPrecision); //以mm表示的坐标的字符串 //输入参数: // iLength 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以mm为单位的坐标的字符串 CString MillimetreString(int iLength,int idpmm,int iPrecision); //以寸表示的坐标的字符串 //输入参数: // iLength 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以寸为单位的坐标的字符串 CString ChinaCunString(int iLength,int ilpmm,int iPrecision); //将以内部单位1/idpmm毫米为单位的长度值转换为以当前使用制式的长度值的字符串 //输入参数: // iLength 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以当前使用制式为单位的坐标的字符串 CString InternalUnitToString(int iLength,int idpmm,int iUnit,int iPrecision); //将以内部单位(1/idpmm)*(1/idpmm)毫米2为单位的面积值转换为 //以当前使用的度量单位的面积字符串 //输入参数: // dArea 以(1/idpmm)*(1/idpmm)毫米2为单位的面积值 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以当前使用的度量单位的面积字符串 CString AreaToString(double dArea,int idpmm,int iUnit,int iPrecision); //将以Inch为单位的数字串转换以内部单位1/idpmm毫米为单位的数字 //输入参数: // strInch 以inch为单位的坐标的字符串 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) // bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以1/idpmm毫米为单位的坐标值 int InchStrToInternalUnit(CString strInch,int idpmm,int iUnit,BOOL bEnableDefaultDenominator,int iPrecision); //将以当前使用制式的长度字符串转换为以1/idpmm毫米为单位的长度值 //输入参数: // string 以当前使用制式为单位的坐标的字符串 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) // bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 以1/idpmm毫米为单位的坐标值 int StringToInternalUnit(CString string,int idpmm,int iUnit,BOOL bEnableDefaultDenominator,int iPrecision); //将英寸分数形式的字符串转化成小数 //输入参数: // string 英寸分数形式的字符串 // bEnableDefaultDenominator =true 则在未包含分母时使用iPrecision指定的分母 // iPrecision 精确度(见"PDSUnit.h"文件关于精确度的宏定义) //返回值: // 英寸的小数值 double InchFractionStringToDecimal(CString string,BOOL bEnableDefaultDenominator,int iPrecision); //将分数字符串转化成小数 //输入参数: // string 分数表示的字符串 //返回值: // 小数值 double FractionStringToDecimal(CString string); //取得当前使用的长度单位名称字符串 //输入参数: // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) //返回值: // In. 当iUnit=UNIT_INCHFRACTION // In. 当iUnit=UNIT_INCHDECIMA // cm 当iUnit=UNIT_CENTIMETER // mm 当iUnit=UNIT_MILLIMETER CString GetUnitStr(int iUnit); //20111130 将以当前使用制式的长度转换为以1/idpmm毫米为单位的长度值 //输入参数: // dValue 以当前使用制式为单位的值 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) //返回值: // 以1/idpmm毫米为单位的值 //说明: // dValue的单位与iUnit一致,即dValue按照iUnit单位计算得到的值 int DoubleToInternalUnit(double dValue, int idpmm, int iUnit); //20111130 将以内部单位1/idpmm毫米为单位的长度值转换为以当前使用制式的长度值的浮点数 //输入参数: // iValue 以1/idpmm毫米为单位的坐标值 // idpmm 每毫米的逻辑单位数 // iUnit 长度单位(见"PDSUnit.h"文件关于长度单位的宏定义) double InternalUnitToDouble(int iValue, int idpmm, int iUnit); #endif