Files
MsAddIns/Mstn.Toolkit/Helpers/UnitHelper.cs
2026-02-28 21:01:57 +08:00

81 lines
3.4 KiB
C#
Raw Permalink 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.
using Bentley.MstnPlatformNET;
namespace Mstn.Toolkit.Helpers
{
/// <summary>
/// 获取到的内部存储的分辨率值除以对应的UnitHelper中的比值获取到单位下的数值
/// 新建元素时,需要乘以对应的比值,得到内部存储的分辨率值
/// </summary>
/// <remarks>
/// <para><![CDATA[获取的内部存储的分辨率值是10000如果主单位是米则除以UorPerMas主单位比值获得10000/UorPerMas主单位10000/UorPerMas米]]></para>
/// <para><![CDATA[获取的内部存储的分辨率值是10000如果子单位是毫米则除以UorPerSub子单位比值获得10000/UorPerSub子单位10000/UorPerSub毫米]]></para>
/// <para><![CDATA[获取的内部存储的分辨率值是10000则除以UorPerMeter米的比值获得10000/UorPerMeter]]></para>
/// </remarks>
public static class UnitHelper
{
/// <summary>
/// 分辨率单位与主单位的比值,最常用的值
/// </summary>
public static double UorPerMas { get; } = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMaster;
/// <summary>
/// 分辨率单位与子单位的值
/// </summary>
public static double UorPerSub { get; } = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerSub;
/// <summary>
/// 分辨率单位与米的比值,不随主、子单位设置而改变
/// </summary>
public static double UorMeter { get; } = Session.Instance.GetActiveDgnModel().GetModelInfo().UorPerMeter;
/// <summary>
/// 转为分辨率单位
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static double ToInternal(this double value)
{
return value * UorPerMas;
}
/// <summary>
/// 内部分辨率转为主单位值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static double ToMasterUnit(this double value)
{
return value / UorPerMas;
}
/// <summary>
/// 内部分辨率转为子单位值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static double ToSubUnit(this double value)
{
return value / UorPerSub;
}
/// <summary>
/// 内部分辨率转为米
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static double ToMeter(this double value)
{
return value / UorMeter;
}
//public static void CreateByKeyin(string unparsed)//Case:CreateByKeyin
//{
// Session.Instance.Keyin("PLACE SPHERE ICON;" +
// "Point absolute 4.656,-0.087,0.000;" +
// "Point absolute 5.523,0.864,0.341"
// ); //模拟输入Key-in
// Session.Instance.Keyin("PLACE SLAB ICON");
// Session.Instance.Keyin("Point absolute 5.351,2.928,0.000");
// Session.Instance.Keyin("Point absolute 6.778,2.818,-0.936");
// Session.Instance.Keyin("Point absolute 6.205,4.712,1.093");
// Session.Instance.Keyin("Point absolute 0.895,9.718,-7.598");
//}
}
}