public void ConvertDefaults(List <DefaultAssignment> defaults) { ProductModel pm = ModelWorkspace.CreateFromFile(pmxFile).ProductModel; var pmProductModelStructure = pm.ProductModelStructure; foreach (var defaultAssignment in defaults) { //var characteristic = _parseUtils.FindSelectionCriteriaCharacteristic( defaultAssignment.HierarchyElement ); //var precondition = _parseUtils.GeneratePrecondition( characteristic, defaultAssignment.HierarchyElement ); var model = defaultAssignment.Model; var coutry = defaultAssignment.Country; var variant = defaultAssignment.Variant; var defaultModel = new LogicModel(); defaultModel.AddRule("", "", ExprBld.IfThen( (ExprBld.Variables["Model"] == model) .And(ExprBld.Variables["coutry"] == coutry) .And(ExprBld.Variables["variant"] == variant), ExprBld.Variables[defaultAssignment.Assignment.Characteristic]) == defaultAssignment.Assignment.Value); var compiler = new Core.Compile.Compilation.Compiler(defaultModel); var defaultSolveData = compiler.CompileNddSolve(); var scopedDefaultData = new ScopedDefaultData(new[] { "model", "country", "variant" }, defaultSolveData); var packagedModelSerializer = new PackagedModelSerializer(); var packagedModel = packagedModelSerializer.LoadAsync(cameronPackage).Result.CopyAndInclude(scopedDefaultData); packagedModelSerializer.SaveAsync(cameronPackage, new[] { packagedModel }).Wait(); } }
private ProductModel LoadProductModel(string pmxFile) { var pm = ModelWorkspace.CreateFromFile(pmxFile).ProductModel; var variableProperties = pm.PropertyGroup.First(pg => pg.Name == "variables").Properties; var showProperty = variableProperties.FirstOrDefault(p => p.Name.ToLower() == "show"); if (showProperty == null) { variableProperties .Add(new Property("Show", null, ProductModel.BOOL_TYPENAME)); } return(pm); }