123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- /*-------------------------------------------------------------------------
- * 功能描述:ParameterExtension
- * 作者:xulisong
- * 创建时间: 2019/3/7 9:08:09
- * 版本号:v1.0
- * -------------------------------------------------------------------------*/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Autodesk.Revit.DB;
- namespace FWindSoft.Revit
- {
- public static class ParameterExtension
- {
- /// <summary>
- /// 获取参数名
- /// </summary>
- /// <param name="p"></param>
- /// <returns></returns>
- public static string GetName(this Parameter p)
- {
- return p.Definition?.Name;
- }
- public static bool ExistParameter(this Element element,string parameterName)
- {
- return element.GetParameter(parameterName) != null;
- }
- /// <summary>
- /// 获取参数值
- /// </summary>
- /// <param name="parameter"></param>
- /// <returns></returns>
- public static object GetValue(this Parameter parameter)
- {
- object result = null;
- if (parameter == null)
- {
- return null;
- }
- switch (parameter.StorageType)
- {
- case StorageType.Double:
- {
- result = parameter.AsDouble();
- break;
- }
- case StorageType.ElementId:
- {
- result = parameter.AsElementId();
- break;
- }
- case StorageType.Integer:
- {
- result = parameter.AsInteger();
- break;
- }
- case StorageType.String:
- {
- result = parameter.AsString();
- break;
- }
- case StorageType.None:
- {
- result = parameter.AsValueString();
- break;
- }
- }
- return result;
- }
- public static bool SetValue(this Parameter parameter, object value)
- {
- bool result = false;
- if (value == null || parameter.IsReadOnly)
- {
- return result;
- }
- switch (parameter.StorageType)
- {
- case StorageType.Double:
- {
- result = parameter.Set(Convert.ToDouble(value));
- break;
- }
- case StorageType.ElementId:
- {
- result = parameter.Set((ElementId) value);
- break;
- }
- case StorageType.Integer:
- {
- result = parameter.Set(Convert.ToInt32(value));
- break;
- }
- case StorageType.None:
- {
- result = parameter.SetValueString(value as string);
- break;
- }
- case StorageType.String:
- {
- result = parameter.Set(value.ToString());
- break;
- }
- }
- return result;
- }
- public static Parameter GetParameter(this Element element, string parameterName)
- {
- return (new ParameterDefinition(parameterName)).LookupParameter(element);
- }
- public static Parameter GetParameter(this Element element, BuiltInParameter builtInParameter)
- {
- return (new ParameterDefinition(builtInParameter)).LookupParameter(element);
- }
- public static Parameter GetParameter(this Element element, Guid guid)
- {
- return (new ParameterDefinition(guid)).LookupParameter(element);
- }
- #region 获取参数相关
- /// <summary>
- /// 类型有要求,必须为ElementID,int,double ,string 四中其中的一个
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="element"></param>
- /// <param name="name"></param>
- /// <returns></returns>
- public static T GetParameterValue<T>(this Element element, string name)
- {
- return (T)element.GetParameter(name).GetValue();
- }
- public static T GetParameterValue<T>(this Element element, BuiltInParameter builtInParameter)
- {
- return (T)element.GetParameter(builtInParameter).GetValue();
- }
- public static T GetParameterValue<T>(this Element element, Guid guid)
- {
- return (T)element.GetParameter(guid).GetValue();
- }
- public static string GetParameterString(this Element element, string name)
- {
- return element.GetParameterValue<string>(name);
- }
- public static int GetParameterInteger(this Element element, string name)
- {
- return element.GetParameterValue<int>(name);
- }
- public static double GetParameterDouble(this Element element, string name)
- {
- return element.GetParameterValue<double>(name);
- }
- public static ElementId GetParameterElementId(this Element element, string name)
- {
- return element.GetParameterValue<ElementId>(name);
- }
- public static string GetParameterString(this Element element, BuiltInParameter builtInParameter)
- {
- return element.GetParameterValue<string>(builtInParameter);
- }
- public static int GetParameterInteger(this Element element, BuiltInParameter builtInParameter)
- {
- return element.GetParameterValue<int>(builtInParameter);
- }
- public static double GetParameterDouble(this Element element, BuiltInParameter builtInParameter)
- {
- return element.GetParameterValue<double>(builtInParameter);
- }
- public static ElementId GetParameterElementId(this Element element, BuiltInParameter builtInParameter)
- {
- return element.GetParameterValue<ElementId>(builtInParameter)?? ElementId.InvalidElementId;
- }
- #endregion
- #region 设置参数值
- public static bool SetParameterValue<T>(this Element element, string name,T value)
- {
- return element.GetParameter(name).SetValue(value);
- }
- public static bool SetParameterValue<T>(this Element element, BuiltInParameter builtInParameter,T value)
- {
- return element.GetParameter(builtInParameter).SetValue(value);
- }
- public static bool SetParameterValue<T>(this Element element, Guid guid, T value)
- {
- return element.GetParameter(guid).SetValue(value);
- }
-
- public static bool SetParameter(this Element element, string name,string value)
- {
- return element.SetParameterValue<string>(name,value);
- }
- public static bool SetParameter(this Element element, string name,int value)
- {
- return element.SetParameterValue<int>(name,value);
- }
- public static bool SetParameter(this Element element, string name,double value)
- {
- return element.SetParameterValue<double>(name,value);
- }
- public static bool SetParameter(this Element element, string name,ElementId value)
- {
- return element.SetParameterValue<ElementId>(name,value);
- }
- public static bool SetParameter(this Element element, BuiltInParameter builtInParameter, string value)
- {
- return element.SetParameterValue<string>(builtInParameter,value);
- }
- public static bool SetParameter(this Element element, BuiltInParameter builtInParameter, int value)
- {
- return element.SetParameterValue<int>(builtInParameter,value);
- }
- public static bool SetParameter(this Element element, BuiltInParameter builtInParameter, double value)
- {
- return element.SetParameterValue<double>(builtInParameter,value);
- }
- public static bool SetParameter(this Element element, BuiltInParameter builtInParameter, ElementId value)
- {
- return element.SetParameterValue<ElementId>(builtInParameter,value);
- }
- #endregion
- }
- }
|