/// <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); } } }