Applying software engineering concepts can improve the quality of any software development, and this is even more dramatic for complex, large and sophisticated software, such as meshing tools. Software product families are series of related products that make intensive reuse of already developed components. Object-oriented design promotes reusability, so it is specially suited for designing the structure of product families. In this paper we present an object-oriented design of a product family of meshing tools, where all family members share the software structure. By instantiating the structure with particular algorithms and parameters, we can easily produce different tools of the family. A good family design allows us not only to combine existing algorithms but also to easily incorporate new ones, improving software family evolution. We show how the family design is used for the generation of finite element and finite volume meshing tools, as well as a new tool for image processing.