Tolerance analysis: A new model based on variational solid modelling