Don't attempt to reassign $fa inside trapezoidal_thread()
Don't override $fn in metric_fastners
Use sweep to generate screw threads