using Autodesk.Revit.DB;
namespace Szmedi.Toolkit.RvExtensions
{
public static class ParameterExtensions
{
///
/// 获取参数值
///
///
///
public static object GetValue(this Parameter parameter)
{
object result = null;
switch (parameter.StorageType)
{
case StorageType.None:
break;
case StorageType.Integer:
result = parameter.AsInteger();
break;
case StorageType.Double:
result = parameter.AsDouble();
break;
case StorageType.String:
//Revit数据库存储的值
var str = parameter.AsString();
if (string.IsNullOrEmpty(str))
{
//用户可见的前端显示,如根据单位设置而显示的值
result = parameter.AsValueString();
}
else
{
result = str;
}
break;
case StorageType.ElementId:
result = parameter.AsElementId();
break;
}
return result;
}
public static bool SetValue(this Parameter parameter, object value)
{
var result = false;
if (parameter == null || value == null)
{
//throw new ArgumentException(nameof(parameter));
return false;
}
if (!parameter.IsReadOnly)
{
switch (parameter.StorageType)
{
case StorageType.Integer:
if (value is int i)
{
result = parameter.Set(i);
}
break;
case StorageType.Double:
if (value is double d)
{
result = parameter.Set(d);
}
break;
case StorageType.String:
if (value is string str)
{
result = parameter.Set(str);
}
break;
case StorageType.ElementId:
if (value is ElementId id)
{
result = parameter.Set(id);
}
break;
}
}
return result;
}
}
}