/// <summary>
        /// Create project parameters.
        /// </summary>
        public static void CreateProjectParameter(bool isAddShared)
        {
            DefinitionFile sharedParameterFile;

            try
            {
                sharedParameterFile = revitDocument.Application.OpenSharedParameterFile();
            }
            catch
            {
                throw new ArgumentException("Проблема в файле общих параметров. Пожалуйста, выберите другой файл или создайте новый");
            }

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

            try
            {
                List <RevitParameter> dataList = ParamsHelper.LoadExcel();

                if (dataList == null)
                {
                    return;
                }

                AddFamilyParametersResult familyParametersResult;
                using (var t = new Transaction(revitDocument))
                {
                    t.Start($"Adding Parameters from Excel");

                    if (revitDocument.IsFamilyDocument)
                    {
                        familyParametersResult = new AddFamilyParametersResult(revitDocument.OwnerFamily);
                        AddFamilyParameters.VM.FamilyListViewModel.AddFamilyParameters(revitDocument, dataList, familyParametersResult, isAddShared, false);
                    }
                    else
                    {
                        familyParametersResult = new AddFamilyParametersResult(revitDocument);
                        AddDocumentParameters(dataList, sharedParameterFile, familyParametersResult);
                    }

                    t.Commit();
                }

                AddFamilyParametersResult.ShowResultsDialog(new List <AddFamilyParametersResult> {
                    familyParametersResult
                });
            }
            catch (Exception e)
            {
                TaskDialog.Show("Adding Project Parameters", e.Message);
            }
        }
        /// <summary>
        /// The add family parameters.
        /// </summary>
        /// <param name="families">
        /// The families.
        /// </param>
        /// <param name="isAddShared"></param>
        /// <param name="checkProject"></param>
        /// <exception cref="ArgumentException">Throws when no families are checked
        /// </exception>
        public static void AddFamilyParameters(ObservableCollection <FamilyCategory> families, bool isAddShared, bool checkProject)
        {
            List <Family> fam = (from familyCategory in families
                                 from item in familyCategory.Members
                                 where ItemHelper.GetIsChecked(item) == true
                                 select item.Family).ToList();

            if (fam.Count == 0)
            {
                throw new ArgumentException("Пожалуйста, выберите семейства, в которые вы хотите добавить параметры");
            }

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

            var results = new List <AddFamilyParametersResult>();
            List <RevitParameter> dataList = ParamsHelper.LoadExcel();

            if (dataList != null)
            {
                foreach (Family family in fam)
                {
                    var familyParametersResult = new AddFamilyParametersResult(family);

                    Document familyDoc;

                    if (family.IsEditable)
                    {
                        familyParametersResult.FamilyDocument = familyDoc = revitDocument.EditFamily(family);
                    }
                    else
                    {
                        familyParametersResult.Skipped = true;
                        results.Add(familyParametersResult);
                        continue;
                    }

                    using (var t = new Transaction(familyDoc))
                    {
                        t.Start($"editing {family.Name}");

                        try
                        {
                            AddFamilyParameters(familyDoc, dataList, familyParametersResult, isAddShared, checkProject);
                        }
                        catch (Exception e)
                        {
                            TaskDialog.Show("Add Family Parameters", e.Message);
                            break;
                        }

                        t.Commit();
                    }

                    results.Add(familyParametersResult);
                }

                if (results.Count != 0)
                {
                    var opt = new FamilyLoadingOptions();

                    foreach (var r in results)
                    {
                        if (r.FamilyDocument != null)
                        {
                            r.FamilyDocument.LoadFamily(revitDocument, opt);
                            r.FamilyDocument.Close(false);
                        }
                    }

                    AddFamilyParametersResult.ShowResultsDialog(results);
                }
            }
        }