diff --git a/src/dosymep.Revit/ParamExtensions.cs b/src/dosymep.Revit/ParamExtensions.cs index b02d002..21c37c4 100644 --- a/src/dosymep.Revit/ParamExtensions.cs +++ b/src/dosymep.Revit/ParamExtensions.cs @@ -4,6 +4,7 @@ using System.Text; using System.Threading.Tasks; +using Autodesk.Revit.Creation; using Autodesk.Revit.DB; namespace dosymep.Revit { @@ -181,5 +182,54 @@ public static BuiltInParameter GetBuiltInParameter(this Definition definition) { return BuiltInParameter.INVALID; } + +#if REVIT2020 || REVIT2021 + /// + /// Заново объявляет общий параметр в проекте, меняя его группу + /// + /// Определение параметра + /// Документ проекта + /// Группа параметра + public static void ReInsertToGroup(this Definition definition, Autodesk.Revit.DB.Document document, BuiltInParameterGroup group) { + if (definition.ParameterGroup != group) { + Binding binding = document.ParameterBindings.get_Item(definition); + if (binding is ElementBinding elementBinding) { + CategorySet categories = elementBinding.Categories; + + document.ParameterBindings.Remove(definition); + + if (binding is InstanceBinding) { + document.ParameterBindings.Insert(definition, new InstanceBinding(categories), group); + } else if (binding is TypeBinding) { + document.ParameterBindings.Insert(definition, new TypeBinding(categories), group); + } + } + } + } + } +} +#else + /// + /// Заново объявляет общий параметр в проекте, меняя его группу + /// + /// Определение параметра + /// Документ проекта + /// ID группы параметра + public static void ReInsertToGroup(this InternalDefinition definition, Autodesk.Revit.DB.Document document, ForgeTypeId groupId) { + if(definition.GetGroupTypeId() != groupId) { + Binding binding = document.ParameterBindings.get_Item(definition); + + if(binding is ElementBinding elementBinding) { + CategorySet categories = elementBinding.Categories; + + if(binding is InstanceBinding) { + document.ParameterBindings.ReInsert(definition, new InstanceBinding(categories), groupId); + } else if(binding is TypeBinding) { + document.ParameterBindings.ReInsert(definition, new TypeBinding(categories), groupId); + } + } + } + } } } +#endif