Check out "Top_Part" and open it into PSE.
In PSE, select "Top_Part" and go to the Uses tab.
Use the "Inclusion Option" and "Quantity Option" columns for each row (child part).
The "Inclusion Option" is a boolean - if true, then the child is included in the variant, if false, then the child is not included in the variant.
The "Quantity Option" is either a constant (e.g. 1, 2, 5, etc.) or a numeric parameter (e.g. int or float).
If the child is included in the variant, its quantity is the value of "Quantity Option".
For your example
1. Create String parameter "option" with constraint list values "option1" and "option2"
2. add a page break
3. Create a boolean parameter "hasPart1" and value specified by "expression" with default expression "option1".equals(option).
4. On the "uses" tab for "part1" set the "inclusion option" to "hasPart1" and set the "quantity option" to 1
Now, when you generate a variant, if "option" is "option1" then the variant will have Part1 with quantity 1.
If "option" is "option2" then Part1 will not be included.
5. Create a boolean parameter "hasPart2" with expression "option2".equals(option).
6. On the "uses" tab for "part2" set the "inclusion option" to "hasPart2" and "quantity option" to 2
Now, when you generate a variant, if "option" is "option2" then the variant will have Part2 with quantity 2.
If "option" is "option1" then Part2 will not be included.
7. Create an integer parameter "qtyPart3" with constraint list values 2 and 5
8. On the uses tab for "part3" set the "quantity option" to "qtyPart3" and set the "unit" to "meters"
9. On the Constraints tab, create a case table "qtyPart3". Select parameters "option" and "qtyPart3" as columns. Add a row with values {"option1", 2} and {"option2", 5}.
Now when you generate a variant, if "option" is "option1", the qtyPart3 is 2 and the variant has Part3 with quantity 2 meters. If "option" is "option2" then qtyPart3 is 5 and the variant has Part3 with quantity 5 meters.
That should do it.