## 7 Discussion and Conclusions  
Focusing on the above configuration problem, the core of the example, the configuration of the four slots mirrors exactly the map coloring problem which has been extended by additional related choices and the obligatory assignment of an option depending on  
Figure 14: Configured sorting box. Figure 13: Activity diagram for CAD model update. selections made by the user. Thus, the example of the sorting box is a placeholder for many configurable assemblies and products. Taking online car configurators, the functionalities of mandatory choices, configuration interdictions and the realization of templates or lines of equipment are similar functions. The search strategy for the solution is kept simple in this example by enforcing local consistency, without further examining the time complexity of the solution algorithm. User input or a modification of a domain leads to adding the corresponding constraints to the queue without further nesting or querying. In this case, there is no need for backtracking. Further constraints could be hierarchical constraints or additional classifying criteria, e.g., if two light colors are chosen, only two dark colors may be added, which correspond widely to the obligatory assignments. Due to the separation of knowledge base, i.e., the spreadsheet, inference engine, i.e., the API code, and the CAD model, a more or less linear control flow is realized. A function which has not been included is math constraints since these can also be expressed directly in the geometric CAD model by, e.g., relating parameters by calculations. In this context, a more complex control flow might integrate reobtaining parameter values from the CAD model, e.g., values of dimensions, and feed them back into the CSP. An open question is if modeling complex assemblies like known from plant engineering, which contain several hundred domains, is adequate with this kind of implementation and the search strategy or if the performance will suffer compared to configurators based on proprietary software packages. A deficiency of the presented example is the fact that VBA does not allow generating variables or code at runtime. Other languages, e.g., python or expert system shells, which include this functionality, will shorten the code and raise efficiency and maintainability. Furthermore, especially code generation and an automatic adaptation of the user interface at runtime could widely automate user interface creation, e.g., to extend the sorting box to five slots even with less effort. In the same way, e.g., python offers a constraint module which includes a backtracking solver, recursive backtracking solver and minimum conflicts solver as well as 10 different constraint types. A module for remote controlling Autodesk Inventor is also available, a comparative study of implementing the above design task is an obvious avenue. The example of the sorting box can easily be extended by, e.g., pricing information that is calculated with respect to the user selections. Therefore, the domains need to be extended by the corresponding part costs, which have to be added by the configuration system. As an example, to include non-geometric features like services, it would be conceivable to choose between a neutral standard package and a package that shows the actual configured sorting box. The described extension to 10 domains involves multiple adjustments to the code. From a theoretical perspective, an extension to 1000 domains seems not adequate. However, taking into account that many combinatorial design tasks in mechanical engineering can be broken down to 10 to 25 core components on an assembly level, a relevant field of application exists, independently from the implementation in VBA or a higher language. Further interesting issues lie in coupling different inference mechanisms to the CSP-based configuration system and decentralizing its knowledge base as the CAD system itself can control, e.g., part or feature occurrences by rules or other scripting.