Skip to main content

Accessing the design model with a product applied

To access the design model with a product applied, use the PlModelAccessMode property of the IContextOption object.

public void SetSpecifiedProductAccess(ICommandContext c, ICommandParams p) 
{
var project = c.App.Workspace.CurrentProject;

var configurationModel = c.App.Workspace.CurrentProject.ProductLineModel.ConfigurationModel;
IProduct product = configurationModel.GetProduct("ACC-0011");

var children = project.GetAllChildren();
c.App.Output.WriteLine("sample", $"Number of models before product application: {children.Count()}");

//Set to enable retrieval and search of only valid design models for the specified product.
c.ContextOption.PlModelAccessMode = PlModelAccessMode.SpecifiedProduct;
c.ContextOption.SpecifiedProduct = product;

children = project.GetAllChildren();
c.App.Output.WriteLine("sample", $"Number of models after product application: {children.Count()}");

//Get the names of valid design models for the specified product
foreach (IModel child in children)
{
c.App.Output.WriteLine("sample", $"Model: {child.Name}");
}
}