123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /*-------------------------------------------------------------------------
- * 功能描述:ParameterDefinition
- * 作者:xulisong
- * 创建时间: 2019/3/7 9:34:07
- * 版本号: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
- {
- /// <summary>
- /// 参数定义
- /// </summary>
- public class ParameterDefinition
- {
- private DefinitionType m_DefinitionType;
- #region 内部标志
- private enum DefinitionType
- {
- Name,
- BuiltIn,
- Guid,
- }
- #endregion
- #region 封装输入参数
- /*
- * 将多种参数查询统一形式
- */
- #endregion
- public ParameterDefinition(string parameterName)
- {
- m_DefinitionType = DefinitionType.Name;
- Name = parameterName;
- }
- public ParameterDefinition(BuiltInParameter builtInParameter)
- {
- m_DefinitionType = DefinitionType.BuiltIn;
- BuiltInParameter = builtInParameter;
- }
- public ParameterDefinition(Guid guid)
- {
- m_DefinitionType = DefinitionType.Guid;
- Guid = guid;
- }
- /// <summary>
- /// 参数名称
- /// </summary>
- public string Name { get; private set; }
- /// <summary>
- /// 参数类别
- /// </summary>
- public BuiltInParameter BuiltInParameter
- {
- get; private set;
- }
- /// <summary>
- /// 参数唯一值
- /// </summary>
- public Guid Guid { get; private set; }
- /// <summary>
- /// 修改检测[ture是]
- /// </summary>
- public Func<Element, string, bool> CanUpdate { get; set; }
- /// <summary>
- /// 获取指定元素的参数
- /// </summary>
- /// <param name="element"></param>
- /// <returns></returns>
- public Parameter LookupParameter(Element element)
- {
- Parameter parameter = null;
- switch (m_DefinitionType)
- {
- case DefinitionType.Name:
- {
- parameter= element.LookupParameter(Name);
- break;
- }
- case DefinitionType.Guid:
- {
- parameter = element.get_Parameter(Guid);
- break;
- }
- case DefinitionType.BuiltIn:
- {
- parameter = element.get_Parameter(BuiltInParameter);
- break;
- }
- }
- return parameter;
- }
- /// <summary>
- /// 这顶指定元素的值
- /// </summary>
- /// <param name="element"></param>
- /// <param name="value"></param>
- public bool SetParameter(Element element, string value)
- {
- bool result = false;
- var parameter = LookupParameter(element);
- if (parameter == null)
- return result;
- if (CanUpdate != null && !CanUpdate(element, value))
- return result;
- return ParameterUtil.SetValue(parameter, value);
- }
- /// <summary>
- /// 设置元素值,检查如果新值与就值相同,则不进行更新
- /// </summary>
- /// <param name="element"></param>
- /// <param name="value"></param>
- public bool SetParameterWithCheck(Element element, string value)
- {
- bool result = false;
- var parameter = LookupParameter(element);
- if (parameter == null)
- return result;
- var oldValue = ParameterUtil.GetValue(parameter);
- if (oldValue == value)
- return result;
- if (CanUpdate != null && !CanUpdate(element, value))
- return result;
- return ParameterUtil.SetValue(parameter, value);
- }
- }
- }
|