Here’s what I’m trying to do with our configurator:
We have an order for an grid. This grid may be made up of 1 module or 2 modules or 7 or 12 or any number. All these modules go together to make one grid and that one grid is one quote line (or order line).
Each of these modules need to be configured individually (length, width, left overhang, right overhang, et al). The information from all these modules needs to roll up into the price for the entire grid.
Is there a way in the configurator to do this dynamically? By dynamically, I mean a way to create variables “on-the-fly” or continuously call a sub-configurator. Can I set up a dynamically defined array? Or do I have to set up the configurator with enough inputs to handle a max amount of individual modules?
While we don’t support Dynamic elements like you describe we can get close to what you want I think.
Create a configurator for a section let’s call it S.
Now create a new part / method for a grid let’s call it G.
Add 20 S materials to the G part.
Create a configurator page for S.
Add a page to prompt for the number of sections you need.
Then create keep when rules that keep the S parts as needed.
As you move through the pages you can configure each section.
Setup global variables to pass any required state.
Other options exist if you write BPMs but the above should give you something workable out of the box, and minimise maintenance overhead.
We are doing something very similar. We use code to call in BOMs from BAQs with a Combo control, create a listing of parts and operations to keep in user input fields, and modify with additional code and BAQs as needed to create a final listing of parts and operations. We then use the keep when rules against a generic BOM (populated with around 30 placeholders) to substitute in the parts gathered from the BAQ and eliminate all of the other placeholders. This results in a generic configurator which can be dynamically processed and have assemblies added to simply by creating additional BOMs.
The biggest challenges we have faced were in the keep when rules because we are SaaS and are limited in where we can add code. It turned out to be easiest to add the keep when rules via a uBAQ. The user input field contains multiple lines which can be parsed formatted like:
Qty||PartNum|||
Qty||PartNum|||
The keep when rule looks like:
string[] lines = System.Text.RegularExpressions.Regex.Split(Inputs.txtBOMResults.Value, @"|{3}");
string[] eachline={};
bool testval=false;
foreach(string line in lines) {
eachline = System.Text.RegularExpressions.Regex.Split(line, @"|{2}");
if(Convert.ToDecimal(eachline[0])==QuoteMtl.MtlSeq)
{
QuoteMtl.QtyPer=Convert.ToDecimal(eachline[1]);
QuoteMtl.PartNum=eachline[2];
QuoteMtl.RelatedOperation = 10;
testval=true;
break;
}
}
return testval;