123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /*-------------------------------------------------------------------------
- * 功能描述: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
- /// <summary>
- /// 设置参数
- /// </summary>
- /// <param name="parameter"></param>
- /// <param name="value"></param>
- 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;
- }
- /// <summary>
- /// 获取参数
- /// </summary>
- /// <param name="parameter"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 设置参数
- /// </summary>
- /// <param name="element"></param>
- /// <param name="definition"></param>
- /// <param name="value"></param>
- public static bool SetParameterValue(Element element, ParameterDefinition definition, string value)
- {
- var parameter = definition.LookupParameter(element);
- return SetValue(parameter, value);
- }
- /// <summary>
- /// 获取参数
- /// </summary>
- /// <param name="element"></param>
- /// <param name="definition"></param>
- /// <returns></returns>
- public static string GetParameterValue(Element element, ParameterDefinition definition)
- {
- var parameter = definition.LookupParameter(element);
- return GetValue(parameter);
- }
- /// <summary>
- /// 获取参数
- /// </summary>
- /// <param name="element"></param>
- /// <param name="definitionName"></param>
- /// <returns></returns>
- public static string GetParameterValue(Element element, string definitionName)
- {
- return GetParameterValue(element,new ParameterDefinition(definitionName));
- }
- /// <summary>
- /// 比较参数是否与给定的值相同
- /// </summary>
- /// <param name="parameter"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- 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;
- }
- }
- }
|