STEP is the current standard for exchange of CAD data between different software packages. BRL-CAD makes use of the NIST STEP Class Libraries code to support its step-g converter, but this source code was written before many current C++ standard practices and libraries were finalized. As a consequence, it needs both cleanup and performance enhancements.
For this project, a student should examine the existing STEP code in BRL-CAD (src/other/step) and create a list of tasks that need to be done in order to modernize the C++, improve library performance, improve code maintainability, and better document the STEP libraries. BRL-CAD's step-g converter will serve as a test for the functionality of the library.
Specific items to remember:
- The libraries should compile with strict compiler flags, as used in recent BRL-CAD compilations.
- The generated source code files should be usable "out of the box" for step-g (we currently use a hand-tweaked version of the generated files in the step-g converter build)
- Large files need to be handled quickly, so performance is important - this could be as simple as modernizing string handling, but if there are more fundamental issues they will need to be addressed as well.
Improving this library is a good project for students looking for a geometry related project with potential impact beyond BRL-CAD - other open source geometry projects are also likely to be interested in STEP conversion.
- Familiarity with C++ (will need to be able to both understand older C++ and how to express it in more "modern" style)