CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Native Meshers: snappyHexMesh and Others (
-   -   Catia to snappyHexMesh (

bgarrood January 4, 2012 17:36

Catia to snappyHexMesh
I am teaching myself Foam, and want to import geometry from Catia. Catia can export stl files but in doing so loses the naming of surfaces. Names are maintained in stp files but I can't find a way to get stp to stl in a way that preserves surface names-of obvious benefit for defining boundary conditions etc

Can anyone suggest a workaround? I am aware of Salome, netgen, discretised but am trying to avoid over complicating things unless I have to. sHM has advantages of being easily script able etc.

Many thanks in advance. Barney

wyldckat January 4, 2012 17:53

Greetings Barney and welcome to the forum!

If you still have access to Catia, try exporting to OBJ Wavefront instead of STL. In OpenFOAM 2.1.0 you should be able to see that this is the new preferred geometry format, simply because it doesn't need that the geometry to be decomposed in triangles, making it a lot easier to properly process the geometry!

Let us know how it goes! Best regards,

bgarrood January 4, 2012 18:13

Great, thanks for such a quick reply!
I'll have a look at that. Can sHM use obj files instead of stl then?
Many thanks again. Barney

wyldckat January 4, 2012 18:20

Hi Barney,

It slices, it dices and it even cuts! - No, wait, wrong ad... This is what I meant to say:

Originally Posted by wyldckat (Post 337329)

surfaceTransformPoints  constant/triSurface/cube.stl constant/triSurface/cube.obj -translate '(1  0 0)'
You might ask "Why cube.obj?" - this might come in handy because the Obj files (Wavefront format) are in ASCII format (useful for visually debugging the file itself), have a better definition of vertices and how they interconnect... and can also be opened in ParaView.

In other words, you can even convert between formats when using the right OpenFOAM utility! :D

Best regards,

bgarrood January 6, 2012 02:20

Hi Bruno,

So Catia can only export igs and stp files other than stl which loses the surface names (plus 3dxml, cgr, hcg and wrl but I havent heard of these before). Neither of these is supported by surfaceTransform.

Do you have any recommendation for a way forward? I cant imagine that I am the only person trying to get data from Catia to snappyHexMesh (as directly as possible, ideally scriptable).

Best regards, and thanks again for your help!


wyldckat January 6, 2012 09:01

Hi Barney,

Sorry about that. I did a fast search on Google about "catia export wavefront obj" and it looked like on the surface that it was able to handle that format.

AFAIK, there are at least a few other options:
  • Export to STL in binary format using colour coding. This is something that some 3D plotters allow in binary STL files. You'll loose names per-say, but at least you still have some good references.
  • Export the geometry in parts to STL in ASCII format. Might be painful, but perhaps CATIA provides a macro/scripting system that can ease the problem. Then properly name each solid and then finish each solid with "end solid"; then concatenate all STL files into a single one, to make it easier for processing in sHM.
  • There is also pythonOCC: - this is sort-of Salome in purely programming form. Very useful/powerful for those parametric geometries, such as turbomachine blades (example), but it should also allow importing STEP files and export them in the same file formats as Salome... or at least this is what I'm expecting, according to the information available.
Good luck! And let us know how it goes!

bgarrood February 3, 2012 10:55

Problem solved!
Hi Bruno,

I have solved the problem so thought I should post it.
Catia provides a vba based scripting capability, so I used this to export each surface separately and combine them into a single stl file exactly as you suggest. Works like a charm.
If anyone else has the same problem I am happy to post the script - surely it must be something that a lot of people have to do!

Thanks again for all your help.
Best regards,

hayes February 10, 2012 04:55

Hi Barney,

I'm also trying to set up a more complex case that needs a lot more boundary patches for inlet and also refinement levels. I tried to export different parts from CATIA to STL and put those surfaces together in a single STL File. Works quite well but i guess it is no really the best way to do it.

I'm not familiar with vba based scripting in CATIA, so it would be a big help if you could post your script. I'd like to test it with my case.

Thanks in advance and best regards,

bgarrood February 14, 2012 02:36

STL export script
1 Attachment(s)
Hi Chris,

Attached is the script.
It works like this:
-Put all surfaces you want to export into a geometric set called "EXPORT".
-Hide everything, including everything in your EXPORT set.
-Run the macro.

It unhides each surface, exports it to a file, then hides it again. it then takes all of the stl files and combines them into a single file with the same name as your CATPart.

Let me know if you have any trouble.

One quick note: stl export is at same resolution as screen display, so make sure your display is at max resolution in CATIA - tools-options-display-performance, and turn the 3D accuracy sliders all the way to the right. I dont think the other options here do anything, but may be just as well to turn them up to the max.


hayes February 22, 2012 11:28

Hi Barney,

thanks a lot. I finally found some time to try it. First I had some trouble getting the CATIA file to work, but now its all good. The display-accuracy really does have a huge impact on the STL-quality!!

Thanks again and best regards,

Rider April 6, 2012 03:54

Just to complete the answer, CATIA can export geometrie to OpenFOAM.

The exporte format is ".stl". To do this, you can follow this method :
- For a "CATPart" => Save as ".stl"
- For a "CATProduct" => Save as ".igs", then open the ".igs" and save as this in ".stl".

I don't now if it's a good solution but it correctly works.

All times are GMT -4. The time now is 06:49.