## 7 Discussion and Conclusions
Additionally, case-based reasoning would be an interesting approach to include a dynamic generation of template configurations depending on, e.g., configuration history, user ratings or overall most favorite configurations. Including data about the user, this could be further developed to a recommendation system. Concluding, the application of CSP-based configuration using just the functionalities of a standard CAD system has the potential of automating combinatorial designs and integrate knowledge-based CAD assemblies with high efficiency. The approach is compatible with existing and usually familiar tools, thus easy in its application and extendible. In such a way, managing the combinatorial complexity of a design solution space is possible. **Funding:** This research received no external funding. **Institutional Review Board Statement:** Not applicable. **Informed Consent Statement:** Not applicable. **Data Availability Statement:** The code for the example, the Autodesk Inventor assembly file and the excel repository is publicly available via [[https://doi.org/10.25835/ewdftdp03](https://doi.org/10.25835/ewdftdp03)]([https://doi.org/10.25835/ewdftdp03](https://doi.org/10.25835/ewdftdp03)) (last accessed on 4 September 2022). **Conflicts of Interest:** The author declares no conflict of interest. \begin{table}
\begin{tabular}{l l} \hline \hline
**Row** & **Code** \\ \hline
42 & UserForm1.lbx\_Slots3.Clear \\
43 & UserForm1.lbx\_Slots4.Clear \\
44 & UserForm1.lbx\_Bricks1.Clear \\
45 & UserForm1.lbx\_Bricks2.Clear \\
46 & UserForm1.lbx\_Bricks3.Clear \\
47 & UserForm1.lbx\_Bricks4.Clear \\
48 & UserForm1.lbl\_Slots1.Caption = \"\" \\
49 & UserForm1.lbl\_Slots2.Caption = \"\" \\
50 & UserForm1.lbl\_Slots3.Caption = \"\" \\
51 & UserForm1.lbl\_Slots4.Caption = \"\" \\
52 & UserForm1.lbl\_Bricks1.Caption = \"\" \\
53 & UserForm1.lbl\_Bricks2.Caption = \"\" \\
54 & UserForm1.lbl\_Bricks3.Caption = \"\" \\
55 & UserForm1.lbl\_Bricks4.Caption = \"\" \\
56 & \\
57 & ‘Reset Global Counter \\
58 & count\_Slots = 0 \\
59 & End Sub \\
60 & \\
61 & \\
62 & Sub read\_inventory() \\
63 & Dim ExcWB As Excel.Workbook \\
64 & \textasci{{}^{\prime}} \\
65 & ‘ADJUST PATH TO LOCAL PATH OF THE REPOSITORY FILE BELOW! \\
66 & \textasci{{}^{\prime}} \\
67 & Set ExcWB = Workbooks.Open(”... \textasci{{}^{\prime}}nventory\_List.xlsx”) \\
68 & \\
69 & ‘Call creating subs \\
70 & generate\_domains ExcWB.Worksheets(”Slots”) \\
71 & generate\_Bricks s ExcWB.Worksheets(”Bricks”) \\
72 & get\_constraints ExcWB.Worksheets(”\_CONSTRAINTS\_”) \\
73 & \\
74 & ‘Close Workbook \\
75 & ExcWB.Close \\
76 & End Sub \\
77 & \\
78 & \\
79 & Sub generate\_domains(ByVal ExcWS As Excel.WorkSheet) \\
80 & Dim iRow As Integer \\
81 & Dim key As Variant \\
82 & \\
83 & ‘Set Start for reading in second row \\
84 & iRow = 2 \\
85 & ‘Get Slot Domain Master \\
86 & Do Until ExcWS.Cells(Row, 1).Value = \"\" \\
87 & ArticleID = ExcWS.Cells(iRow, 1).Value \\
88 & Set oPart1 = New iComponent\_Slots \\
89 & oPart1.Slots\_Colour = ExcWS.Cells(iRow, 2).Value \\
90 & oPart1.Slots\_Shape = ExcWS.Cells(iRow, 3).Value \\
91 & dict\_SlotsORALAdd ArticleID, oPart1 \\
92 & iRow = iRow + 1 \\
93 & Loop \\
94 & \\
95 & ‘Distribute Master to all 4 Slot Domains \\
96 & For Each key In dict\_SlotsORI \\
97 & dict\_Slots1.Add (key), dict\_SlotsORI(key) \\
98 & Next \\
99 & For Each key In dict\_SlotsORI \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Cont.