admin 发表于 2024-3-6 11:45:15

点,角度等转换,整型,浮点型,字符型转换,坐标系转换

AcGePoint3d FymConverUtil::ToPoint3d(const AcGePoint2d& pt, double z)
{
        return AcGePoint3d(pt.x, pt.y, z);
}

AcGePoint2d FymConverUtil::ToPoint2d(const AcGePoint3d& pt)
{
        return AcGePoint2d(pt.x, pt.y);
}

double FymConverUtil::AngleToRadion(double angle)
{
        return angle * FymMathUtil::PI() / 180;
}

double FymConverUtil::RadionToAngle(double radius)
{
        return radius * 180 / FymMathUtil::PI();
}

CString FymConverUtil::ToString(int val)// 整型转字符串(需要支持MFC)
{
        CString str;
        str.Format(采用T("%d"), val);//使用'Format'函数将整数'val'格式化为字符串,并存储在'str'中。'采用T("%d")'是一个宏,用于生成一个包含'%d'的宽字符字符串,其中'%d'会被替换为'val'的值
        return str;
}

//将一个双精度浮点数转换为字符串。precision 参数指定了小数点后的位数,默认2
CString CConvertUtil::ToString(double value, int precision /*= 2*/)
{
        CString strFormat, str;
        strFormat.Format(TEXT("%%.%df"), precision);
        //使用 strFormat.Format() 函数将格式字符串 "%%.%df" 中的 %df 替换为 precision 参数的值
        str.Format(strFormat, value);
        //使用 str.Format() 函数将格式化的字符串和输入的浮点数 value 结合在一起,生成最终的字符串
        return str;
}
//将一个TCHAR类型的字符串转换为双精度浮点数。
double CConvertUtil::ToDouble(const TCHAR* str)
{
        TCHAR* pszStop = NULL;
        return 采用tcstod(str, &pszStop);
}/*采用tcstod 函数将字符串转换为浮点数。
采用tcstod 是C++中用来将TCHAR类型的字符串转换为双精度浮点数的函数。
它需要两个参数:要转换的字符串和用于存储转换结束位置的指针。
在这里,我们没有用到 pszStop,所以它的值被设为 NULL。返回值就是转换后的浮点数。*/


AcGePoint3d FymConverUtil::WcsPointToDcsPoint(const AcGePoint3d& point)
{
        AcGePoint3d pt;
        struct resbuf rbFrom, rbTo;
        rbFrom.restype = RTSHORT;
        rbFrom.resval.rint = 0;
        rbTo.restype = RTSHORT;
        rbTo.resval.rint = 2;//对浮点数进行四舍五入
        // 坐标系转换函数:wcs坐标、wcs标识符(0)、dcs标识符(2)、类型为点(0)、dcs坐标
        acedTrans(asDblArray(point), &rbFrom, &rbTo, 0, asDblArray(pt));
        return pt;
       
}

AcGePoint3d FymConverUtil::UcsPointToWcsPoint(const AcGePoint3d& point)
{
        AcGePoint3d pt;
        struct resbuf rbFrom, rbTo;
        rbFrom.restype = RTSHORT;
        rbFrom.resval.rint = 1;
        rbTo.restype = RTSHORT;
        rbTo.resval.rint = 0;
        // 坐标系转换函数:ucs坐标、ucs标识符(1)、wcs标识符(0)、类型为点(0)、wcs坐标
        acedTrans(asDblArray(point), &rbFrom, &rbTo, 0, asDblArray(pt));
        return pt;
}

AcGePoint3d FymConverUtil::WcsPointToUcsPoint(const AcGePoint3d& point)
{
        AcGePoint3d pt;
        struct resbuf rbFrom, rbTo;
        rbFrom.restype = RTSHORT;
        rbFrom.resval.rint = 0;
        rbTo.restype = RTSHORT;
        rbTo.resval.rint = 1;
        // 坐标系转换函数:wcs坐标、ucs标识符(1)、wcs标识符(0)、类型为点(0)、ucs坐标
        acedTrans(asDblArray(point), &rbFrom, &rbTo, 0, asDblArray(pt));
        return pt;
}
页: [1]
查看完整版本: 点,角度等转换,整型,浮点型,字符型转换,坐标系转换