public static void AddFamilyParameters(Document familyDoc, List <RevitParameter> dataList, AddFamilyParametersResult results, bool isAddShared, bool checkProject)
        {
            foreach (var item in dataList)
            {
                bool nameIsInUseInFamilyManager = familyDoc.FamilyManager.Parameters.Cast <FamilyParameter>()
                                                  .Any(parameter => parameter.Definition.Name == item.ParamName);

                bool nameIsInProject = false;

                if (checkProject)
                {
                    var iter = revitDocument.ParameterBindings.ForwardIterator();

                    while (iter.MoveNext())
                    {
                        if (iter.Key.Name == item.ParamName)
                        {
                            nameIsInProject = true;
                            break;
                        }
                    }
                }

                bool badCategory = item.Category != (BuiltInCategory)familyDoc.OwnerFamily.FamilyCategory.Id.IntegerValue;

                if (item.Category != (BuiltInCategory)familyDoc.OwnerFamily.FamilyCategory.Id.IntegerValue)
                {
                    throw new ArgumentException("В файле Excel параметру назначена неверная категория семейства. Проверьте корректность файла Excel");
                }

                if (nameIsInUseInFamilyManager || badCategory || nameIsInProject)
                {
                    continue;
                }

                if (isAddShared)
                {
                    if ((familyDoc.Application.OpenSharedParameterFile() == null) || (familyDoc.Application.OpenSharedParameterFile().Filename == string.Empty))
                    {
                        throw new ArgumentException("Выбранный файл общих параметров не существует. Пожалуйста, выберите другой файл или создайте новый");
                    }

                    DefinitionGroup    dg = ParamsHelper.GetOrCreateSharedParamsGroup(familyDoc.Application.OpenSharedParameterFile(), item.GroupName);
                    ExternalDefinition externalDefinition = ParamsHelper.GetOrCreateSharedParamDefinition(dg, item.ParamType, item.ParamName, item.IsVisible);

                    results.AddFamilyParameterNote(familyDoc.FamilyManager.AddParameter(externalDefinition, item.ParamGroup, item.IsInstance));
                }
                else
                {
                    results.AddFamilyParameterNote(familyDoc.FamilyManager.AddParameter(item.ParamName, item.ParamGroup, item.ParamType, item.IsInstance));
                }
            }
        }
        private static void AddDocumentParameters(List <RevitParameter> dataList, DefinitionFile sharedParameterFile, AddFamilyParametersResult results)
        {
            CategorySet categorySet = revitDocument.Application.Create.NewCategorySet();

            foreach (var item in dataList)
            {
                DefinitionGroup    dg = ParamsHelper.GetOrCreateSharedParamsGroup(sharedParameterFile, item.GroupName);
                ExternalDefinition externalDefinition = ParamsHelper.GetOrCreateSharedParamDefinition(dg, item.ParamType, item.ParamName, item.IsVisible);

                Category category = revitDocument.Settings.Categories.get_Item(item.Category);
                categorySet.Insert(category);

                Binding newIb;
                if (item.IsInstance)
                {
                    newIb = revitDocument.Application.Create.NewInstanceBinding(categorySet);
                }
                else
                {
                    newIb = revitDocument.Application.Create.NewTypeBinding(categorySet);
                }

                revitDocument.ParameterBindings.Insert(externalDefinition, newIb, item.ParamGroup);

                if (revitDocument.ParameterBindings.Contains(externalDefinition))
                {
                    revitDocument.ParameterBindings.ReInsert(externalDefinition, newIb);
                }

                results.AddFamilyParameterNote(item);
            }
        }