Hi Juergen,


Changing the OCC STEP geometry importer to SCL would a separate project.    The OCE and SCL communities have discussed this, and agree with you and Yorik that it could be a large move.  


The nested external references capability has been in STEP for some time, and many vendor’s CAD translators support it.   Also, CADVerter based on OCC supports it.   So there are ways to use the existing OCC STEP importer and exporter with assemblies of multiple files.   Multiple files are useful on very large assemblies with many complex parts.   Multiple files are also useful for CAD-PDM integration, because the PDM will version control and associate meta-data and other non-geometric information with the CAD model for a part.  


What I am proposing is having FreeCAD (like CADverter) use the existing OCC STEP geometry translator for each part and use STEP external reference for assembly.    This would be useful in applications like the FreeCAD and openPLM integration.  


There are other reasons for updating the STEP translator for OCC, but that is a separate issue.    For instance, there is a new lightweight tessellated format in STEP AP242 being tested in the private CAX-IF by translating with other tessellated formats (VRML, STL, PRC, JT).    The STEP community’s plan is the that the tessellated and BREP geometry will be able to co-exist in the same file, so one can use whichever is appropriate for the task at hand.   For instance, lightweight visualization may only require tessellated, but precise manufacturing may require BREP.    STEP external references capability is being expanded to include referencing an element within another CAD file ( called external element reference), like a piece of geometry, an annotation, or a geometric representation (tessellated or BREP).   This capability is very early in development for AP242.   Support for both lightweight tessellated and external element reference would be useful in FreeCAD and BRL-CAD, since files will be coming with those capabilities.  


STEP AP242 also has product manufacturing information like Geometric Dimensioning and Tolerancing and other drawing annotations.   If FreeCAD is going to support CAM, it may want to support this product manufacturing information.    And there are other STEP AP’s, like 238 that can support CAD to CAM workflows, and some inspection.  


Finally, as Yorik observed other applications like Architecture need lots of non-geometric information from IFC, which uses STEP files and EXPRESS, so in principle could be supported by SCL.   SCL and IfcOpenShell have discussed this.  


Regards, Charlie


From: Juergen Riegel [mailto:FreeCAD@juergen-riegel.net]
Sent: Sunday, April 22, 2012 8:25 AM
To: Charlie Stirk
Cc: free-cad-development@lists.sourceforge.net
Subject: Re: freecad and step assembly


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




No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.1913 / Virus Database: 2411/4951 - Release Date: 04/21/12