Revamping the STEP converter - Part 1

How we improved our STEP API. Step-by-step guide.

Roman Lygin
Roman Lygin
3 min read

This has been a long overdue post but better late than never ;-).

If you have been tracking evolution of CAD Exchanger (e.g. via reading the CHANGES log or our release announcements) you should have certainly noticed that a lot of emphasis in 2016-2017 releases has been put on STEP.

STEP is by far the #1 format which our users use in their scenarios. Well, this is expected as STEP remains the most popular ‘common denominator’ in CAD data exchange workflows.

CAD Exchanger has been providing STEP support since the first public release in 2009. However as the core product architecture (which enables excellent performance by using scalable parallelism, and leverages our patented methods) evolved, STEP remained on side steps of that progress and did not take advantage of that. However as we grew up as a team, filled key gaps in our product offering and started to successfully compete with entrenched players in other formats (JT, ACIS-SAT, Parasolid-XT, etc) we stepped back to bring STEP to the core architecture (which itself went through a few major redesigns in the meantime).

Import and Export Workflows

As a reminder, all heavy-weight formats in CAD Exchanger are implemented using the following components:


The import workflow starts with scanning a physical file on a disk (or from an arbitrary stream) by a Parser, which converts data into an object graph in memory (called a file model). The second phase involves a Converter which maps this format-specific file model into a CAD Exchanger data model in memory, common for all formats. Likewise, the exporter workflow goes in the opposite direction and involves a Converter and a Formatter.

Eating the Elephant

Full revamped support of the STEP format would involve all four of these. Given the huge size and complexity of STEP it approximately takes 1-2 qualified person-years to do the job well. To give you a sense of complexity, the ISO1303 standard which governs the STEP format includes hundreds of dedicated parts each focused on specific subject of the format: from EXPRESS language used to simply describe the entity definitions; physical file layouts; geometry and topology; PMI and annotations; validation properties; up to Application Protocols – higher level conventions on which entities are allowed in each particular industry domain, such as automotive or plant design or shipbuilding. Add here a vendor-/user- forum (CAxIF) that tries to derive some feasible recommended practices (conventions) in order to help CAD vendors speak this complex language and produces dozens of documents, each of dozens pages. Don’t even bother to count the number of entity types (they exceed thousands!) or analyze their hierarchical relationship.

STEP model

So eating this elephant could only be possible using a simple approach – bit by bit. And during last 20+ months we gradually cover(ed) in sequence:

  1. Importer converter (using the old file model)
  2. Exporter converter (using the old file model)
  3. New file model, the parser and the import converter using the new file model
  4. (In progress), the formatter and the export converter using the new file model

No stone left untouched during this massive effort. Alexander, our lead engineer, spent dozens of hours investigating available technologies for efficient parsing and formatting, C++ class architecture design, file model classes generation and what not. For those readers who are familiar with object-oriented design - STEP prescribes multi-inheritance hierarchy, free combination of types into complex types, different entity types depending on application protocols (AP203, AP214, AP242) and what not. Whatever nightmare can you imagine for a software architecture you will certainly find it in STEP ;-).

Truth to be told, our efforts have been largely backed by our paying customers (both licensees and custom development) and in particular by one of our largest customers. Guys, if you are reading this, please accept my endless gratitude for your trust and confidence in our team. This wouldn’t fly without your support!

Anyway, these efforts, sweat and tears have been paid off and we started rolling out engineering builds and product releases with gradual introduction of exciting enhancements…

Next part:

Revamping STEP Converter. Part 2

Roman Lygin
Roman Lygin
Founder & CEO
Roman is a CAD industry veteran since 1997. After working at Open CASCADE and Intel companies, he founded CADEX in 2014. CAD Exchanger now empowers millions of end-user seats and helps professionals in 110+ countries to communicate in the multi-CAD world. Although Roman's time is now mainly spent on business and operations, he is still actively involved into product development and customer support.

Get the CAD Exchanger Newsletter

From us to your inbox weekly.