/*-------------------------------------------------------------------------
* 功能描述:Converter
* 作者:xulisong
* 创建时间: 2019/6/17 12:01:36
* 版本号:v1.0
* -------------------------------------------------------------------------*/
using JBIM;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JBIM.Definition;
using SAGA.RevitUtils.Extends;
namespace RevitToJBim.Common
{
public static class BimConvert
{
public static readonly int CoordinateDecimalDigits = 2;
public static double Round(double coordinateDecimal)
{
return Math.Round(coordinateDecimal, CoordinateDecimalDigits);
}
///
/// 英尺转换成现在阶段使用单位
///
///
///
public static double FtToUse(this double footValue)
{
return Round(footValue.FromApi());
}
///
/// 将点转换成毫米单位形式
///
///
/// 转换是否忽略Z
///
public static XYZ ConvertToXYZ(Autodesk.Revit.DB.XYZ xyz,bool ignoreZ=false)
{
if (xyz == null) return null;
var result = new XYZ()
{
X = FtToUse(xyz.X),
Y = FtToUse(xyz.Y)
};
if (!ignoreZ)
{
result.Z = FtToUse(xyz.Z);
}
return result;
}
///
/// 转换成向量
///
///
///
public static XYZ ConvertToDirection(Autodesk.Revit.DB.XYZ xyz)
{
return new XYZ() { X = xyz.X, Y = xyz.Y, Z = xyz.Z, };
}
///
/// 将点转换成毫米单位形式
///
///
/// 转换是否忽略Z
///
public static List ConvertToXYZs(List xyzs, bool ignoreZ=false)
{
return xyzs.Select(xyz=>ConvertToXYZ(xyz, ignoreZ)).Where(t=>t!=null).ToList();
}
}
}