//Remove existing parameter private string RemoveExistingParameter(ParameterSelectorModel paramToPull) { //If the parameter already exists, return a alert message foreach (FamilyParameter familyParameter in familyManager.Parameters) //Go through each parameter in the push document { if (familyParameter.Definition.Name.Equals(paramToPull.Name)) { return($"Parameter '{paramToPull.Name}' alerady exists in the current Family and will be skipped.{Environment.NewLine}"); } } return(""); }
//Adds a Project or Shared Parameter depending on the original parameter to be pushed private FamilyParameter AddParameter(ParameterSelectorModel parameterToPull) { if (parameterToPull.IsShared) { ExternalDefinition sharedParameter = GetSharedParameter(app, parameterToPull.Name); //Get the ExternalDefinition, in case it's a Shared Parameter return(AddSharedParameter(sharedParameter, parameterToPull)); //Adds a Shared Parameter } else { return(AddProjectParameter(parameterToPull)); //Adds a (normal) Project Parameter } }
//Creates a regular parameter private FamilyParameter AddProjectParameter(ParameterSelectorModel parameterToPull) { FamilyParameter parameter = null; try { using (Transaction ft = new Transaction(doc, "Pull parameter")) { ft.Start(); //Adds a Parameter to the Family parameter = familyManager.AddParameter(parameterToPull.Name, parameterToPull.ParameterGroup, parameterToPull.ParameterType, parameterToPull.IsInstance); ft.Commit(); } } catch (Exception ex) { DialogUtils.Alert("Failed", ex.Message); } return(parameter); }
//Push parameter into selected FamilyInstance private void ExecutePullParamters(ParameterSelectorModel parameterToPull) { var exist = RemoveExistingParameter(parameterToPull); //Check if existing project parameter if (String.IsNullOrEmpty(exist)) { var parameter = AddParameter(parameterToPull); //Add the Parameter to the Nested Family if (parameter != null) { SuccessMessage += $"{parameter.Definition.Name} created sucessfully{Environment.NewLine}"; //Report the good news } } else { AlertMessage += exist; } }
//Adds a parameter as a SharedParemter private FamilyParameter AddSharedParameter(ExternalDefinition sharedParameter, ParameterSelectorModel paramToPull) { FamilyParameter parameter = null; // Add the parameter to the family try { using (Transaction ft = new Transaction(doc, "Pull shared parameter")) { ft.Start(); //Adds a Shared Parameter to the Family parameter = familyManager.AddParameter(sharedParameter, paramToPull.ParameterGroup, paramToPull.IsInstance); ft.Commit(); } } catch (Exception) { } return(parameter); }