STEP import

@RobertLe: Sounds like you’re having the same bug that already got fixed previously.

Current newest released version is 1.0.0

1 Like

Yeap, that it was, downloaded yesterday. So new build up now. See the options.
The default size is 0.01, so in my case I had to set it to 0.0001. Which didn’t display anymore.
Maybe it would be better to set it to scene scale to the measure system. So, 0.01 would be decimeters. In general, nearly 99% of all CAD files from Engineering I get is Millimeter. It seems very common. Only the airplane industry uses feed by default. Also Y axis is a default any most apps, but because of Blender it would be Z ?
Anyway, would be cool if we could set the import option in the future just once and not each time again.

So it looks like all similar object get into a sub collection. No instancing.
When I import that into another software, I get hierarchies like that: Main Group Null, sub groups for each layer, in that sub groups of the parts and sub parts. No ordering by name, etc. And the instances work. So its more type of tree, which is very useful to find the individual elements.
Another down point is that the scaling of the parts its taken from the input. So my objects just displayed scale: 0.000 (Blender hides the rest).

1 Like

Great you made it working so far! But proper hierarchies on scene level would be really needed. When I import STEP as an FBX from other converters, they produce an empty as a parent object in 0/0/0 world space and that is fine. When you start to rig and clean up a CAD file, the position of a parent empty does not really matter. But for keeping everything tidy and clean, empties as parent objects would be reayll needed. Maybe you can add this as an import option: create parenting collcetions, create parenting empties or something.
Thanks for your efforts!!

4 Likes

I thought I’d report back my speed tests. I tried three different import pipelines, trying to get similar visual quality from each. Visual quality was judged based on the curve resolution of small details like screws.

Pipeline 1 - CadAssistant -> Blender

  1. Import Step to Cad Assistant - 01:22.27
  2. Export Obj from Cad Assistant - 00:06.58
    Resulting Obj File Size: 211.9MB, Triangles: 2,064,449
  3. Import Obj to Blender - 00:44.82
    Total Time: 02:13.67

The imported object had disconnected faces for every surface, but all of the surfaces were merged to a single object. Materials were retained from the original Inventor file.

Pipeline 2 - 3dsMax -> Blender

  1. Import Step to 3dsMax - 00:46.26
  2. Export Obj from 3dsMax - 01:22.98
    Resulting Obj File Size: 127.0MB, Triangles: 1,278,102
  3. Import Obj to Blender - 01:34.27
    Total Time: 03:43.51

Surfaces were welded and all parts were seperate objects in Blender. There were many empties: one for each part and subassembly. Even though this was a smaller file with less tris, import took longer. I’m guessing this is because of the hundreds of individual objects as apposed to the one object coming from Cad Assistant. Materials were retained from the original Inventor file.

Pipeline 3 - Direct Import Into Blender

  1. Import Step to Blender - 02:44.82
    Triangles: 511,274

This was by far the cleanest file with the objects organized nicely in collections. The visual quality was almost identical to the much larger file exported from Cad Assistant, but this was acheived with 75% less tris. The surfaces were merged in each part. The materials were NOT retained from the original cad file.

This, to me is the biggest issue right now with STEPper. While it would be great to have the animation heirarchy created automatically, that takes a lot less time (considering the heirarchy is laid out in the outliner already, and it’s easy to select the objects in a collection) than having to go and select every individual screw and assign a meterial to it.

So, my big request at this point is having the materials in the step file retained and merged. I say merged, because the other two import methods have the same materials on different objects named with suffixes (ie screw.001, screw.002, etc.). I have an addon that merges materials based on the basename if you’d like to look at it.

2 Likes

Yes- if materials were respected it would create a better workaround to split up polygons in the same mesh.

Whoa! This has evolved quite a bit! The STEP file at work can now import - thank you for that! Agreed on the wish of the materials carried over - another benefit from this would be the option to select meshes based on material and then UV unwrap these meshes on the same UV map. Would be a great addition! Plus - assigning materials manually really is time consuming! But all in all a seriously great add-on

I purchased this addon yesterday and it’s already saved me two days work remodelling a part! Thanks so much for creating this add-on and making it available @ambi The shape I have now has geometry that’s great for rendering but for downstream modelling changes it’s a little funky when it comes to the topology. I can fix most of this by dissolving vertices and edges, sliding vertices etc. but it’s quite a tedious process and not everything is straightforward. Any other ideas or suggestions on how I might clean this up - or create better topology on import?

You can try setting the linear deflection to something like 0.05 (or lower) for these types of parts from the panel (3D View -> N-panel -> Import -> STEPper) after you import.

Thanks @ambi, it doesn’t seem to make much difference though.

I tried experimenting with all three parameters using a range of values and nothing really improved things much. It is as if the 360 degree sweep of the surfaces doesn’t get sampled by an integer fraction so that the sidewalls and adjacent surfaces meet nicely. I’m also seeing a lot of seams where I wouldn’t expect them.

Is this something to do with the underlying (original) geometry in the STEP file or part of the process of conversion to the polygonal boundary model?

The OpenCASCADE default mesher certainly isn’t perfect. It seems strange that if you decrease the linear deflection, the mesh doesn’t actually increase in polycount. That really shouldn’t be happening. Here’s a short demo on a similar mesh:

1 Like

Sorry, I should have mentioned that the poly count did increase. In my first post this was simply by changing the original parameters when selecting the import file. The second was using the side panel after import but using the default import parameters when selecting the file.

This is probably the extent of what the GPL CAD libraries can do. OpenCASCADE does actually sell improved meshers but that is quite likely way out of my league and not GPL compatible. Using higher resolution, lower deflection values and Blenders own remeshing capabilities (decimation, tris to quads, etc.) seems to be the best way I can think of to try and work it out.

1 Like

OK, thanks.

Hi Ambi - expressing an interest in Linux version if you decide to go that route.

Thanks!

Noticed one problem: the scale of the imported objects is not applied in Blender. Ie: they end up with a Blender scale of for example 0,001. This should be applied to be = 1 (otherwise texturing problems, etc.)

Hi Ambi. Great add-on!
I am the next Linux user expressing high interest in Linux version.

That’s a big problem on most imports. The same does C4D on FBX import and cause a lot problems. Theoretical you would have to select all imported objects and set back there scale. So, this isn’t really working well in hierarchies. I know some tricks to rescale scenes in other software, but I haven’t had a chance to find out in Blender.

Why not just importing the model, checking the dimensions and set them to the needed value? Then scaling the model by using the resulting dimensions factor. Very easy and works here, always.

But this way needs the knowledge of the real object size.

Press ALT+ENTER when assigning the scale value to multiple objects.
Alternative is to parent all objects to an empty and scale the empty and assign the new size later.
Or use the Cursor as a tempora
ry object origin. There are several ways to scale multiple objects.

That is fine and good if you sometimes import one model. If you import many files, all the time, it is a lot of unnecessary work. The fastest workflow is if the importer already scales the objects (which Stepper already does), and also applies the scale (which it doesn’t yet do).