As Wonko said above, our fine art printing section (actually all our service sections) - are examples of the sort of thing you can do. The article mentioned is more of a Monkey Magic like epic quest to peace and redemption that an How-To though ;) !
It seems quite complicated but usually if you break it down you will find a lot of the data in forms like that is endlessly repeated stuff - so storing that in channels and bringing it in through relations is Craft bread and butter stuff really. This makes building out your variants much quicker and less error prone as you're keeping the data DRY.
In short, this is how it is done:
- We created a channel full of the various repeated options
- We relate these to variants using entries fields
- In some cases we use multiple entries fields, this will depend on how the services are structured of course
- Combined, this ends up creating a unique variant that is one of the available chose options
- Each variant also has it's own field for things like 'available for sale' 'visibility' 'note' 'show discount' 'standard price' 'rrp' etc.
Then, from those variants, we build the form. We do this by grabbing all the appropriate variant data into an array, then json encode that, and that is then grabbed by a React form builder we wrote, which unpacks that data and builds the actual form.
Each line on the form represents the adding of one lineItem, so each line is actually added to the cart using MultiAdd - all that stuff boils back down to a chosen particular variant id and qty in the end!
Of course each one of these is really a unique thing, so will need a unique approach, but that's one way of doing a more complex form like that. It's certainly possible, and easier than it looks once you get going.
(An alternate approach could be to use MultiAdd to just build a form where all the little addons are added as extra costs to the main product, but that probably has its limits for more complex scenarios like the example you link to).