PlotterHMI/datafile/dxf/dxflib/PDSMath/PDSUnit.h
huahaiyan 9f74511e69 20240315
1、增加数据分割功能(完成)
2、更换dxf库(进行中)
2024-03-15 16:49:50 +08:00

165 lines
6.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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