/*-------------------------------------------------------------------------
* 功能描述:ParameterUtil
* 作者:xulisong
* 创建时间: 2019/3/7 9:36:23
* 版本号:v1.0
* -------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB;
using FWindSoft.SystemExtensions;
namespace FWindSoft.Revit
{
public static class ParameterUtil
{
#region 设置选项
//可以写一些,相等判断的可控项
#endregion
#region 描述
/*
* 传入的value值统一成string类型,再去转化;
* 类似于传统控件的前台输入,输入信息都是value;
* 需要调整在调
*/
#endregion
///
/// 设置参数
///
///
///
public static bool SetValue(Parameter parameter, string value)
{
bool result = false;
if (parameter == null || parameter.IsReadOnly)
return result;
switch (parameter.StorageType)
{
case StorageType.Double:
{
result=parameter.Set(value.ToDouble());
break;
}
case StorageType.String:
{
result = parameter.Set(value);
break;
}
case StorageType.Integer:
{
result = parameter.Set(value.ToInt());
break;
}
case StorageType.ElementId:
{
result = parameter.Set(new ElementId(value.ToInt()));
break;
}
case StorageType.None:
{
result = parameter.SetValueString(value);
break;
}
}
return result;
}
///
/// 获取参数
///
///
///
public static string GetValue(Parameter parameter)
{
string result = null;
if (parameter == null || parameter.IsReadOnly)
return null;
switch (parameter.StorageType)
{
case StorageType.Double:
{
result = parameter.AsDouble().ToString();
break;
}
case StorageType.String:
{
result = parameter.AsString()?.ToString();
break;
}
case StorageType.Integer:
{
result = parameter.AsInteger().ToString();
break;
}
case StorageType.ElementId:
{
result = parameter.AsElementId()?.ToString();
break;
}
case StorageType.None:
{
result = parameter.AsValueString()?.ToString();
break;
}
}
return result;
}
///
/// 设置参数
///
///
///
///
public static bool SetParameterValue(Element element, ParameterDefinition definition, string value)
{
var parameter = definition.LookupParameter(element);
return SetValue(parameter, value);
}
///
/// 获取参数
///
///
///
///
public static string GetParameterValue(Element element, ParameterDefinition definition)
{
var parameter = definition.LookupParameter(element);
return GetValue(parameter);
}
///
/// 获取参数
///
///
///
///
public static string GetParameterValue(Element element, string definitionName)
{
return GetParameterValue(element,new ParameterDefinition(definitionName));
}
///
/// 比较参数是否与给定的值相同
///
///
///
///
public static bool EqualValue(Parameter parameter,string value)
{
bool result = true;
if (parameter == null)
return false;
switch (parameter.StorageType)
{
case StorageType.Double:
{
double inputValue = value.ToDouble();
result = parameter.AsDouble().IsEqual(inputValue);
break;
}
case StorageType.String:
{
result = parameter.AsString()?.ToString()== value;
break;
}
case StorageType.Integer:
{
result = parameter.AsInteger()==value.ToInt();
break;
}
case StorageType.ElementId:
{
var oldValue = parameter.AsElementId()?.ToString();
result = oldValue==value;
break;
}
case StorageType.None:
{
result = parameter.AsValueString()?.ToString()==value;
break;
}
}
return result;
}
}
}