Hi Charly,
your pitch came to the right time!
I'm on the assembly module at the moment and the STEP import is for sure a important thing!

Your absolutely right, OCE Step importer lacks of the most non geometric concepts of Step. Because
there are no corresponding objects in OCE to tranfer to. But it parse/transfers, as far as I know, the whole
object space. So I have to trade the additional objects of  SCL and the already implemented Step <-> OCC geometry in
the the OCC importer.

Multi-model in STEP is interesting, but to be honest, I saw never one in the wild!? As the commercial CADs I will use
for big design my own Project/Product/Part file infrastructure. On export/import I will surly generate one file. I see not
really a point in a multi file export formate!?

I CC this mail to our developer mailing list.


Am 11.04.2012 04:15, schrieb Charlie Stirk:

Hi Juergen,


I use FreeCAD as a fast STEP file viewer, and saw that you are adding some assembly capabilities and desire to stay close to ISO 10303 on product definitions.  




The CAX-IF has some recommended practices released that deal with STEP assemblies that may be relevant.   In particular, you could implement assembly import/export using Nested External References




which basically puts each part CAD model and each indenture of the assembly structure into separate files.   This is useful for things like Late Loading that you mention in the FreeCAD wiki in some potential implementations.  


The above document references the PDM Schema Usage Guide which also has information that may be useful to you




Here is a link to the PDM Schema in EXPRESS (just for reference)




You can find AP203 and AP214 schemas on




The open source STEP Class Library (SCL) project on github can generate C++ class libraries from these EXPRESS schemas, and a part21 (STEP file) reader/writer executable.   Thomas Paviot of OCE and pythonOCC is working on python generation from SCL.   (The open source BRL-CAD uses SCL to generate some of their STEP CAD translator code).




One could use SCL to generate the part21read code to build a FreeCAD STEP assembly importer/exporter that would enable interoperability with PDM and CAD systems regarding assembly structures built with nested external references.    There are sample nested external reference sets of files for AP203 and AP214 from Catia V5, ProE and Theorem Cadverter for UG NX here




My recommendation is to start with an importer first, then you only need to figure out which entities and types in the files need to map to things in FreeCAD.   It will also give you an idea of what information FreeCAD is likely to receive in a file and thus may want to represent, and export in the future.    Exporters are a little harder since you likely will have to generate more complex structures that are not in FreeCAD.   


I am comfortable moving this discussion to an open group like scl-dev on google groups if you (and others) wish.  


Sincerely, Charlie