////////////////////////////////////////////////////////////////////////////// //文件 Unit.h //主要功能: // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #include "Point2D.h" class AFX_EXT_CLASS CUnit { public: CUnit(); virtual ~CUnit(); enum EType { UNIT_KM = 0, //公里 kilometres UNIT_M = 1, //米 metre UNIT_DM = 2, //分米 decimeter UNIT_CM = 3, //厘米 centimeter UNIT_MM = 4, //毫米 millimetres UNIT_SECOND = 5, //秒 second(60分之一分) UNIT_MS = 6, //毫秒 millisecond UNIT_FOOT = 7, //英尺 foot = 304.8mm UNIT_INCH = 8, //英寸 inch = 25.4mm UNIT_MILE = 9, //英里 mile = 1.609*1e6mm UNIT_YARD = 10, //码 yard = 914.4mm UNIT_SEA_MILE = 11, //海里 nautical mile = 1852000mm UNIT_RUSSIAN_MILE = 12, //俄里 Russian mile = 1.0668*1e6mm UNIT_RUSSIAN_UNIT_OF_LENGTH = 13, //俄丈 Russian unit of length = 2133.6mm UNIT_JAPANESE_MILE = 14, //日里 Japanese mile = 3.9273*1e6mm UNIT_JAPANESE_FOOT = 15, //日尺 Japanese foot = 303mm; //经纬度单位定义 UNIT_DEGREE = 16, //度(360度) UNIT_DMS = 17, //度分秒,即±DDDMMSS.SSSS格式 UNIT_MINUTE = 18, //分(60分之一度) UNIT_RADIAN = 19, //弧度 UNIT_GRAD = 20 //梯度 1梯度=0.015707963267949弧度 }; double Millimetres(double data, EType unit); //转换为毫米 double Millimetres(EType unit); double Millimetres(int unit); double Meter(double data, EType unit); //转换为米 double Meter(EType unit); double GetMillisecondPerCM() { return msPerCM; } double msPerCM; //(毫秒/厘米) }; //////////////////////////////////////////////////////////////////// //单位选择模式有两种: // 0:为实际坐标模式,输出单位与图件实际坐标单位相同 // 1:为打印单位模式,固定单位为毫米 class AFX_EXT_CLASS CUnitTransform : public CUnit { public: CUnitTransform(); double toPrintUnit(double dRealVal); //将实际单位转换为打印单位(毫米) double toRealUnit(double dPrintVal); //将打印单位转换为实际单位 CSize8 toPrintUnit(CSize8 sz); //将实际单位转换为打印单位(毫米) CSize8 toRealUnit(CSize8 sz); //将打印单位转换为实际单位 void SetTransform(double scale, int nUnit); void SetTransform(double scale, EType eUnit); int GetUnit() { return (int)m_unit; } //获得当前显示单位 double GetScale() { return m_dScaleFactor; } int GetShowUnit(); //获得当前显示单位 public: double m_dScaleFactor; //比例: 1:m_dScaleFactor EType m_unit; //当前单位 int m_nMode; //单位选择模式 };