using Autodesk.Revit.DB; namespace Szmedi.Toolkit.RvExtensions { public static class ParameterExtensions { /// /// 获取参数值 /// /// /// public static object GetValue(this Parameter parameter) { object result = null; switch (parameter.StorageType) { case StorageType.None: break; case StorageType.Integer: result = parameter.AsInteger(); break; case StorageType.Double: result = parameter.AsDouble(); break; case StorageType.String: //Revit数据库存储的值 var str = parameter.AsString(); if (string.IsNullOrEmpty(str)) { //用户可见的前端显示,如根据单位设置而显示的值 result = parameter.AsValueString(); } else { result = str; } break; case StorageType.ElementId: result = parameter.AsElementId(); break; } return result; } public static bool SetValue(this Parameter parameter, object value) { var result = false; if (parameter == null || value == null) { //throw new ArgumentException(nameof(parameter)); return false; } if (!parameter.IsReadOnly) { switch (parameter.StorageType) { case StorageType.Integer: if (value is int i) { result = parameter.Set(i); } break; case StorageType.Double: if (value is double d) { result = parameter.Set(d); } break; case StorageType.String: if (value is string str) { result = parameter.Set(str); } break; case StorageType.ElementId: if (value is ElementId id) { result = parameter.Set(id); } break; } } return result; } } }