/// <summary> /// Set parameter data in the provided variant. /// </summary> /// <param name="VarList">Parameter data.</param> /// <param name="VarName">Name of variant to modify.</param> /// <param name="Force">Force alternate variants to fitted.</param> void SetVariant(Var_Type VarList, string VarName, bool Force) { try { IProject project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject; IProjectVariant Variant; IComponentVariation CompVariant; IParameterVariation ParamVariant; if (project == null) { return; } project.DM_BeginUpdate(); string RefDes; for (int i = 0; i < project.DM_ProjectVariantCount(); i++) { Variant = project.DM_ProjectVariants(i); //Find variant that matches the one provided. if (project.DM_ProjectVariants(i).DM_Description().ToUpper() == VarName) { Progress.Maximum = (Variant.DM_VariationCount() + VarList.Components.Count); Progress.Value = 0; UpdateLabel("Updating " + VarName + " Variants"); for (int j = 0; j < Variant.DM_VariationCount(); j++) { //Remove alternate variants if Force is true. if (Variant.DM_Variations(j).DM_VariationKind() == TVariationKind.eVariation_Alternate && Force) { Variant.DM_RemoveComponentVariation(j); j--; } else { CompVariant = Variant.DM_Variations(j); RefDes = CompVariant.DM_PhysicalDesignator(); //Make sure there is parameter data for this component variant. if (VarList.Components.ContainsKey(CompVariant.DM_PhysicalDesignator())) { for (int k = 0; k < CompVariant.DM_VariationCount(); k++) { if (CompVariant.DM_VariationKind() != TVariationKind.eVariation_NotFitted) { ParamVariant = CompVariant.DM_Variations(k); //Update parameter data. if ("PE_ENG" == ParamVariant.DM_ParameterName().ToUpper() || ParamVariant.DM_ParameterName().ToUpper() == "PE_FLT") { if (VarList.Components[CompVariant.DM_PhysicalDesignator()].ContainsKey(ParamVariant.DM_ParameterName().ToUpper())) { if (VarList.Components[CompVariant.DM_PhysicalDesignator()][ParamVariant.DM_ParameterName().ToUpper()] != CompVariant.DM_PhysicalDesignator()) { if (OverwriteValue(ParamVariant.DM_VariedValue(), VarList.Components[CompVariant.DM_PhysicalDesignator()][ParamVariant.DM_ParameterName().ToUpper()], CompVariant.DM_PhysicalDesignator(), ParamVariant.DM_ParameterName().ToUpper())) { ParamVariant.DM_SetVariedValue(VarList.Components[CompVariant.DM_PhysicalDesignator()][ParamVariant.DM_ParameterName().ToUpper()] + "_$"); VarList.Components[CompVariant.DM_PhysicalDesignator()].Saved = true; } } } } //else //{ // ParamVariant.DM_SetVariedValue(VarList.Components[CompVariant.DM_PhysicalDesignator()][ParamVariant.DM_ParameterName().ToUpper()] + "_$"); // VarList.Components[CompVariant.DM_PhysicalDesignator()].Saved = true; //} } } if (!VarList.Components[CompVariant.DM_PhysicalDesignator()].Saved) { CreateCompVar(ref CompVariant, VarList.Components[CompVariant.DM_PhysicalDesignator()]); VarList.Components[CompVariant.DM_PhysicalDesignator()].Saved = true; } } } Progress.Value += 1; } IComponentVariation tmpCompVar; foreach (string CompRef in VarList.Components.Keys) { //Add component variants that havent already been modified. if (!VarList.Components[CompRef].Saved) { tmpCompVar = null; tmpCompVar = project.DM_ProjectVariants(i).DM_AddComponentVariation(); tmpCompVar.DM_SetVariationKind(TVariationKind.eVariation_None); CreateCompVar(ref tmpCompVar, VarList.Components[CompRef], CompRef); VarList.Components[CompRef].Saved = true; } Progress.Value += 1; UpdateLabel("Updating " + VarName + " Variants"); } } } project.DM_EndUpdate(); } catch (Exception ex) { ErrorMail.LogError("Error in " + System.Reflection.MethodBase.GetCurrentMethod().Name + ".", ex); return; } }