STEP vs STL is there a difference in print quality?

So I read that there is a difference in resolution, in that saving the design in step format and then importing the design into Bambu Studio instead of in stl file format should yield higher quality prints. Generally , the STEP format is used as an interchange format between CAD programs, while STL file format is used for 3D printing.
Has anyone explored this? Please share your experience.
Best Regards and thanks.

3 Likes

I believe this is the best explanation for why step (stp) is a better option for resolution:

STEP Format | Bambu Lab Wiki.

I’ve been printing with step files directly since reading this article and I can confirm that there is a difference. For my parts, I notice a much smoother surface when printing curved paths using the step file versus the stl.

4 Likes

As with everything in this world, YMMV or in the classical answer “… it depends…”

As far as the slicer is concerned. All files that are migrated into the slicer end up being a mesh. The difference is that a STL file starts out as a mesh whereas a STEP file has more precise measurements overall.

It may help to understand the distinction between a STEP and an STL. An STL is a mesh made of triangles(sometimes imprecisely referred to as polygons in some slicers) that are linked together. A STEP file on the other hand is a series of mathematical equations mapped out on a 3D X,Y,Z coordinate system. STEP files provide much more detail and far more accurate dimensions when describing things like lines, curves and arcs. STL files have to try to “approximate” a curve by cutting down the shape into finer and finer mesh.

If you’ve ever taken let’s say a vector drawing like an SVG or DWG file and scaled it, you know that it will look the same at any size. However, if you’ve ever tried to upscale a bitmap image like a JPG, GIF or BMP file, you’ll see that the pixels become blocky. Same principle applies to a STEP vs STL. A STEP file is vector-based while STL is comparable to Pixel-based.

There are times when having a low poly count has some artistic benefit(see low-poly prints on Printables). However, the fewer the polygon count the smaller the G-code file and therefore the less work the processor in printer has to do. However, this can be at the cost of resolution.

Here’s some examples of what I mean.

These two objects were done in CAD. The the smooth image left is a STEP file and the triangle one on the right is an STL. As far as the printer is concerned, both parts look close enough.
image

If we bring in both files into the slicer, they again look close enough unless you zoom in. Here you can see the STL on the right has slight ridges which you can see in the print if you look real close.

The real magic happens when I try to simplify the model.

Under the STL, I only got 232 polygons but the STEP file I got 816. NOTE: These were the same files exported from Onshape so one might see different results from let’s say an application like Blender or MeshCAD or Fusion360.

On a personal note. If I have a choice, I always use STEP files. But full disclosure, 90% of my 3D printing, I am looking for dimensional accuracy to print parts, not artistic items that have lot’s of organic structures. A STEP file gives me much greater control over exactly what screw hole sizes I print as well as lining up two parts that are going to be joined together. That said, I’m being totally OCD on that topic because there is no reason you can’t get away with only using STLs.

And last, file size. This is all depending on the object. If it’s a really tough part with lots of fillets, chamfers and curves, the STL sometimes is smaller. But in the end, my experience is that the G-Code for simple geometries tends to be similar in size between a STL vs a STEP and that makes sense if you think about it for a moment. Once the printer has the G-Code, it’s all a series of XYZ points anyway and the printer can’t tell the difference, it’s just moving the print head to where the code tells it to go.
image

12 Likes

Very well explained. I couldn’t have done it better. Each file type has its strengths and weaknesses. STEP is generally good for technical things, especially geometric elements (planar objects, cylinders, cones, prisms, spheres — in short, all objects that can be mathematically described easily). STL is usually suitable for artistic models with many organic surfaces and irregular details. Also, technical objects with freeform surfaces are often better suited for STL.

STEP files can always be converted to STL, but STL files cannot be easily converted to STEP. There is expensive software that can perform this conversion, but often manual post-processing is required. It is possible to use less expensive software, but in those cases, the results may not offer any advantages over STEP. In such cases, the files are simply saved as STEP with polygons, which is entirely pointless.

3 Likes

STEP is better, because it uses circles.
As far as I know, STL is exported by segmenting circles into facettes. Often done by 1° steps, which is not very fine resolution for larger circles. The result my be that the segmenting is visible on the surface. So its better to let the slicer this work do knowing the printers resolution best.

1 Like

There must be an echo in here. :kissing_smiling_eyes:

1 Like

There must be an echo in here.

There must be an echo in here…:stuck_out_tongue_winking_eye:

1 Like

and strangely enough, this echo seems to propagate not farther than “level 23”…:grin::wink:

1 Like

I use Fusion 360, with 3MF files directly out of there. Would those be closer to STEP files?

1 Like

3MF is closer to STL. In some programs you can adjust the resolution a setting before saving. Definitely an option in solidworks for both stl and 3mf. This is not a concern with step files though.

when making a round part STEP is a lot better then STL

STEP files contain NURBS wich are none flat polygonal shape (but rounded/curved one), but unfortunately Bambulab does not use it, in other words STEP files are converted to standard mesh when imported in BambuStudio, so there will be no difference between a high quality mesh (STL/OBJ) and a STEP file, you can smooth back to curves using “Arc Fitting” option of Bambusrudio.

I guess that Slicing Nurbs (without previously converting it to mesh faces) would require a complete rebuild of the Slicer.

To give a last information: you can get a higher definition with STL files if you export your model with a higer definition that the one used by Bambulab Studio to convert STEP files to mesh (to STL) faces.

Does anyone have export settings for RhinoCAD for STEP?

That’s not a logical question. Settings for export for STEP surround what version you want. If you look at the feature table below, there are no features that directly affect 3D printing model quality. However, product structure and Assembly Hierarchy has been shown to confuse certain slicer programs. You’ll know it’s a slicer issuer when a complex geometry imports and only one part of the geometry is rendered. In that case you’re stuck with using a mesh like STL. Put simply, use the lowest version of STEP export, AP203 to guarantee maximum compatibility on re-import to your slicer.

Feature STEP AP203 STEP AP214 STEP AP242
Standard Version ISO 10303-203 ISO 10303-214 ISO 10303-242
Geometry Representation Yes Yes Yes
2D Geometry Support Yes Yes Yes
3D Geometry Support Yes Yes Yes
Product Structure Yes Yes Yes
Assembly Hierarchy Yes Yes Yes
Materials and Textures Limited Limited Yes
PMI (Product & Mfg Info) No Yes Yes
Semantic Data (AP242) No No Yes

Now having said that. If what your question actually was about converting a mesh into a STEP file, that is a very advanced topic which I posted earlier in this thread.

That is very interesting ad informative. Thanks.
Happy holidays.

Gotcha. Thanks for the info.

I’ve looked at the GCode for files generated from both STEP and STL files and every line is a simple G1 (linear movement). There are no G2 or G3 movements (Arc/Circle) in any file I’ve looked at. If this is the case, it seems STEP files with truly round objects are of no use anyway. Am I missing something?

What printer are you generating g-code for?

2 Likes

Yes you are missing something. Looking at the G-code file is not where the accuracy will be found. The accuracy occurs well before the slicer parses a 3D object. It happens on import, not export. The best way to see this is to scroll up and look at the line drawings and see how the polygons appeared after parsing was performed on import with the two different file types. STL files often will appear to have random polygons even though they may have been derived from the same perfectly uniform mathematical construct. But the examples above were intended to provide simple examples. Try importing a simple rectangular box with a hex not on top from a CAD program. To eliminate variables use the same program to export to both STL and STEP. Then look at them under this slicer with lines visible checked yes. You’ll see a world of difference.

If you import a step file, then save the project 3mf file. Then open the 3mf file with a zip file app, open the .model files in the 3D folder. These are the models on the plate, those files only contain ‘vertex’ and ‘triangle’ entries. So it looks like it’s also just a mesh. Maybe the mesh size is based on the model size at the time of import, I don’t know. I just wanted to see if there really is a benefit using a step if the same or better could be achieve with an STL of hi enough res.