|
| 1 | +## Summary of Activities - Research Variant Parts - February 2025 |
| 2 | + |
| 3 | +- Computing Shapes for Variants |
| 4 | +- Improving the view provider |
| 5 | +- Reporting |
| 6 | + |
| 7 | +### Computing Shapes |
| 8 | + |
| 9 | +This was the core of the project and has been completed in a satisfying way by |
| 10 | +means of intercepting property access. This makes sure that computing a shape |
| 11 | +of a document object does not affect the document object itself by means of |
| 12 | +setting up a stack of "contexts" as an alternative memory for computing shapes. |
| 13 | + |
| 14 | +### Improving the view provider |
| 15 | + |
| 16 | +This was mainly to have GUI support to be able to show the functionality in a |
| 17 | +satisfying way. |
| 18 | + |
| 19 | +### Reporting |
| 20 | + |
| 21 | +The project has been reported in various ways: |
| 22 | +- A forum topic in [Open Discussion](https://forum.freecad.org/viewtopic.php?t=91325) |
| 23 | +- A forum topic in the [Developers corner](https://forum.freecad.org/viewtopic.php?t=91537) |
| 24 | +- A [discord channel](https://discord.com/channels/870877411049357352/1298197289357021204) |
| 25 | + |
| 26 | +Many videos have been created with explanation in general and in this month I |
| 27 | +created [a video of a |
| 28 | +propotype](https://forum.freecad.org/viewtopic.php?p=812021#p812021) and [one |
| 29 | +with more advanced |
| 30 | +configurations](https://forum.freecad.org/viewtopic.php?p=813545#p813545). |
| 31 | + |
| 32 | +Finally, I created a presentation for the Sunday 2 March Developer meeting that |
| 33 | +I report on in [this |
| 34 | +post](https://forum.freecad.org/viewtopic.php?p=814501#p814501). |
| 35 | + |
| 36 | +The prototype code has been submitted in three (stacked) PRs: |
| 37 | + |
| 38 | +- [#18412 Core: Allow exposing properties](https://github.com/FreeCAD/FreeCAD/pull/18412) |
| 39 | +- [#19733 Core: Compute shapes for variants](https://github.com/FreeCAD/FreeCAD/pull/19733) |
| 40 | +- [#19735 Gui: Add Part variant logic](https://github.com/FreeCAD/FreeCAD/pull/19735) |
| 41 | + |
| 42 | +Please note that although the proposal stated that I would submit multiple |
| 43 | +alternatives for each phase, the alternatives were vastly less viable than |
| 44 | +expected. Hence, only one option was implemented for each phase, essentially |
| 45 | +the only viable one. The PRs are all draft and are only meant to show the |
| 46 | +prototype. If we ever want to build on these ideas, I would propose to build |
| 47 | +on them and implement all corner cases as well. In that case, the structure of |
| 48 | +the PR will probably change, most likely splitting up the PRs into smaller |
| 49 | +incremental steps. |
| 50 | + |
| 51 | +### Concluding remarks |
| 52 | + |
| 53 | +I consider this project now finished and all the reporting on this project has |
| 54 | +been indexed in [this |
| 55 | +post](https://forum.freecad.org/viewtopic.php?p=814501#p814501). A next step |
| 56 | +is to investigate to define a FreeCAD Enhancement Proposal for this work. |
0 commit comments