/*------------------------------------------------------------------------- * 功能描述: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; } } }