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