ParameterUtil.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*-------------------------------------------------------------------------
  2. * 功能描述:ParameterUtil
  3. * 作者:xulisong
  4. * 创建时间: 2019/3/7 9:36:23
  5. * 版本号:v1.0
  6. * -------------------------------------------------------------------------*/
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using Autodesk.Revit.DB;
  13. using FWindSoft.SystemExtensions;
  14. namespace FWindSoft.Revit
  15. {
  16. public static class ParameterUtil
  17. {
  18. #region 设置选项
  19. //可以写一些,相等判断的可控项
  20. #endregion
  21. #region 描述
  22. /*
  23. * 传入的value值统一成string类型,再去转化;
  24. * 类似于传统控件的前台输入,输入信息都是value;
  25. * 需要调整在调
  26. */
  27. #endregion
  28. /// <summary>
  29. /// 设置参数
  30. /// </summary>
  31. /// <param name="parameter"></param>
  32. /// <param name="value"></param>
  33. public static bool SetValue(Parameter parameter, string value)
  34. {
  35. bool result = false;
  36. if (parameter == null || parameter.IsReadOnly)
  37. return result;
  38. switch (parameter.StorageType)
  39. {
  40. case StorageType.Double:
  41. {
  42. result=parameter.Set(value.ToDouble());
  43. break;
  44. }
  45. case StorageType.String:
  46. {
  47. result = parameter.Set(value);
  48. break;
  49. }
  50. case StorageType.Integer:
  51. {
  52. result = parameter.Set(value.ToInt());
  53. break;
  54. }
  55. case StorageType.ElementId:
  56. {
  57. result = parameter.Set(new ElementId(value.ToInt()));
  58. break;
  59. }
  60. case StorageType.None:
  61. {
  62. result = parameter.SetValueString(value);
  63. break;
  64. }
  65. }
  66. return result;
  67. }
  68. /// <summary>
  69. /// 获取参数
  70. /// </summary>
  71. /// <param name="parameter"></param>
  72. /// <returns></returns>
  73. public static string GetValue(Parameter parameter)
  74. {
  75. string result = null;
  76. if (parameter == null || parameter.IsReadOnly)
  77. return null;
  78. switch (parameter.StorageType)
  79. {
  80. case StorageType.Double:
  81. {
  82. result = parameter.AsDouble().ToString();
  83. break;
  84. }
  85. case StorageType.String:
  86. {
  87. result = parameter.AsString()?.ToString();
  88. break;
  89. }
  90. case StorageType.Integer:
  91. {
  92. result = parameter.AsInteger().ToString();
  93. break;
  94. }
  95. case StorageType.ElementId:
  96. {
  97. result = parameter.AsElementId()?.ToString();
  98. break;
  99. }
  100. case StorageType.None:
  101. {
  102. result = parameter.AsValueString()?.ToString();
  103. break;
  104. }
  105. }
  106. return result;
  107. }
  108. /// <summary>
  109. /// 设置参数
  110. /// </summary>
  111. /// <param name="element"></param>
  112. /// <param name="definition"></param>
  113. /// <param name="value"></param>
  114. public static bool SetParameterValue(Element element, ParameterDefinition definition, string value)
  115. {
  116. var parameter = definition.LookupParameter(element);
  117. return SetValue(parameter, value);
  118. }
  119. /// <summary>
  120. /// 获取参数
  121. /// </summary>
  122. /// <param name="element"></param>
  123. /// <param name="definition"></param>
  124. /// <returns></returns>
  125. public static string GetParameterValue(Element element, ParameterDefinition definition)
  126. {
  127. var parameter = definition.LookupParameter(element);
  128. return GetValue(parameter);
  129. }
  130. /// <summary>
  131. /// 获取参数
  132. /// </summary>
  133. /// <param name="element"></param>
  134. /// <param name="definitionName"></param>
  135. /// <returns></returns>
  136. public static string GetParameterValue(Element element, string definitionName)
  137. {
  138. return GetParameterValue(element,new ParameterDefinition(definitionName));
  139. }
  140. /// <summary>
  141. /// 比较参数是否与给定的值相同
  142. /// </summary>
  143. /// <param name="parameter"></param>
  144. /// <param name="value"></param>
  145. /// <returns></returns>
  146. public static bool EqualValue(Parameter parameter,string value)
  147. {
  148. bool result = true;
  149. if (parameter == null)
  150. return false;
  151. switch (parameter.StorageType)
  152. {
  153. case StorageType.Double:
  154. {
  155. double inputValue = value.ToDouble();
  156. result = parameter.AsDouble().IsEqual(inputValue);
  157. break;
  158. }
  159. case StorageType.String:
  160. {
  161. result = parameter.AsString()?.ToString()== value;
  162. break;
  163. }
  164. case StorageType.Integer:
  165. {
  166. result = parameter.AsInteger()==value.ToInt();
  167. break;
  168. }
  169. case StorageType.ElementId:
  170. {
  171. var oldValue = parameter.AsElementId()?.ToString();
  172. result = oldValue==value;
  173. break;
  174. }
  175. case StorageType.None:
  176. {
  177. result = parameter.AsValueString()?.ToString()==value;
  178. break;
  179. }
  180. }
  181. return result;
  182. }
  183. }
  184. }