An often heard problem during the process of prototyping is the waste of time because of boring routines. Exporting a model into STL, making manual changes, tweaking the mesh and doing in the worst case postprocessing in the 3D-slicing software. These routines are often necessary or need to be done, just because the different software solutions do not allow a better workflow. I already noticed this problem during my mechanical engineering studies during the CAD sessions. Whenever I made a change to the part I designed in the computer lab, I often had to save the part not only as “.CATpart” file (3DS Solidworks’ file format for part modules), but also to the well-known STL format. Since we all are human, I also managed to forget to do the export into STL sometimes and override the last iteration. As a result: I wasted no only material for 3D-printing, but also a lot of time, because I was convinced I am printing the latest version of my model and had to reprint it at the end anyway.
The answer to this problem has already been solved in different ways. One of the solutions is to integrate your slicing software into your CAD application. This is done by Sindoh Co., Ltd., which is providing this functionality by their software, called “3DWOXDesktop for SolidWorks“. However, the downside of this solution is that fine-tuning is rarely possible compared to other software. In comparison to this add-in, Cura allows much more fine-tuning and specific tweaks. Therefore the question is: How do you get your CAD application integrated into Cura?
The solution is quite simple and as I was working for Ultimaker and owning a 3D-printer during my studies, I already know about the plugin-able structure of Cura. After a research about Windows, it’s possibilities in automation and looking for opensource software, which provides the needed technical requirements, the solution was easily found. Since Windows 95, every release of Windows comes with a so-called COM-Interface, also known as “Windows Automation“. CAD software like 3DS Solidworks, 3DS CATIA, Autodesk Inventor and other products come with this technology and provide a server within this automation interface. Often this server allows the execution of the same functions inside the macros, which most people use within the CAD applications itself.
Based on this researching the way was open for a working prove-of-concept. Within Cura internal features, like opening and saving a file, are available by plugins. Therefore there are file readers and writes, which either load files, interpret their content and provide a mesh for a model or save G-code into a file. What we will never know, as long as 3DS as a distributor of CATIA does not document their file formats free on the internet, is what is actually inside their proprietary files. Since the proprietary software is installed on the same computer in most of the cases, the solution together with “Windows Automation” is quite clear: Loading the proprietary file with the CAD software, telling it to export the model into a known format and passing the data into a reader inside Cura, which knows how to handle this data.
During the time this solution has been expanded into a solution for many other applications, like SolidWorks because I had access during my internship at Ultimaker to it, and Autodesk Inventor. All available solutions are currently:
- 3DS Solidworks plugin
- 3DS CATIA plugin (currently unpublished)
- Autodesk Inventor
- Blender (experimental)
- FreeCAD (experimental)
- OpenSCAD (experimental)