A Knowledge Based Approach to Flexible Part Design