@ToanDN the idea is to have a reusable family that can easily be loaded into projects. Therefore the roof option isn't ideal.
I ended with something I'm happy with.
Say I have a Conveyor.AngleDesired = 15°, Conveyor.Length = 6232.5mm and Conveyor.ΔHeight (height of slope) = 1670mm:

and I am told that the maximum Angle of Inclination (Conveyor.AngleDesired) allowed is 10° and it must be a length of 7500mm, I can input these values:

From the above I do not know what Conveyor.ΔHeight will be unless I use a calculator, but instead I can refer to Conveyor.ΔHeightRequired and change the value of Conveyor.ΔHeight to be the same.
This will then cause Conveyor.AngleActual and Conveyor.Length to be equal to their greyed out associates.
Yellow = input
Green = output

The same method can be used if you have Height and Angle, or Height and Length. I think this works quite well and is rather straight forward to use.
Edit: @Ilic.Andrej your reply came in after my response. Your solution is elegant and better than mine! Quite bleak that I didn't think of that... I'm going to give the three-variable thing a shot for fun, and may get back to you if I get stuck.
Thank you all and kind regards,
Connor