STEP import

Hi. I’m a product designer eager to make the transition from Keyshot to Blender, however importing from Solidworks is not nearly as smooth a process.

In Solidworks, it is very common to have a single part file that contains multiple bodies. This is distinct from an assembly file that has multiple part files within. This plugin does not seem to separate multi bodies if they are within a single part file. This is abnormal behavior, as most any other program that imports step will keep individual bodies separate, rather than merging them.

Would it be possible to change this behavior or provide an option to do so? At the moment the plugin will not work for our workflow due to all the bodies being merged into one mesh. Thanks!

Wouldn’t P > By Loose Parts do the job in this case?

Seemingly not. Separating by loose parts produces many individual meshes defined by surface boundaries of the bodies, not the whole original bodies themselves.

Would be nice to have that option on the STEPper plugin, but meanwhile what you can do in Solidworks is use the “Save Bodies” command (Insert>Features>Save bodies) so that it saves each body as a separate part and automatically creates the assembly with all those individual parts.

You will keep your original multi body part and it will make you possible to import in Blender as you want.

Thanks, yes, this is true. Depending on your part and modeling approach though, it can be tedious and time consuming to do. Considering that no other step-importing program merges multi-bodies within parts, I think it is logical for STEPper not to do so either - or at least offer that option.

For industrial/product designers and those who model parametrically, Keyshot is the standard go-to program. It’s simplistic in a lot of ways. This is the reason for its success, but also its shortcomings are frustrating and make Blender all the more attractive. The few things it has over Blender are importing, clean environment setup, and clown pass. I believe that if these were as easy in Blender, adoption would go up for this profession.

At the moment my best option for getting geometry into Blender is FBX, created from a Solidworks file in either Rhino or, ironically, Keyshot. I’d really like STEPper to do that job instead, as it can do it better, in theory.

As an industrial designer, this add-on was the missing link that let me wean myself off Keyshot and switch to Blender. It’s not a perfect jump, but for a few bucks vs thousands AND access to a far superior compositing and rendering environment I think a few extra steps are worth the hassle.

The hassle of saving bodies separately is going to be the least of your extra workload when comparing to Keyshot - there’s going to be a whole bunch of stuff that you can (and therefore must) tweak that Keyshot does automatically. Your workflow using Blender will take longer, there’s no escaping that.

Also: don’t forget that the heavy lifting of the plugin (the mesh generation etc) is done by a library well outside the influence or scope of ambi’s plugin and so he’s limited in what he can do with the actual geometry conversion process.

I was doing that migration through Rhino too, before I found this plugin, and found STEPper to be much much smoother and quicker.

Don’t forget, too: you can always create a SW macro to STEPify all your bodies out in one fell swoop :wink:

Again, ambi, thanks for this brilliant bit of work.

1 Like

Also an industrial designer working with that software (Solidworks, Keyshot, 3DS MAX, which imports those parametric models the cleanest way I’ve seen) and would love to get as clean results as those much more expensive options, but this is what we have right now.

At the moment this plugin is the best way I’ve found to get Solidworks models in a quick and very decent way into Blender. I think it offers immense value, and it’s being developed so hopefully that option may be implemented at some point. Have used other several methods with other software converting between formats, mostly to .FXB, but it’s more cumbersome and not as straightforward.

Anyways, hope the suggestion works for you for the time being.

I had to change the project to a different location. Is there a way to update the step file path?
Looks like the path is saved in python as Object.STEP_file, but I don’t have a clue how to update that via script. I can change the path on one object. Then reload the step file so it’s loaded in cache so I can rebuilt that part, but then I have to chage the location for every other instance?

Just curious if there is a fairly easy way to update the paths all at once. I’m looking into making a script for it now, but I am Not talented at that so not super high hopes of that panning out.

Ha, well, it worked out better than expected. But someone that Halfway knows what they are doing should probably see if this is actually working, or if it just Seems like it worked ok but has actually broken my file completely.

import bpy
from rna_prop_ui import rna_idprop_ui_prop_get

for o in bpy.context.scene.objects:
    o["STEP_file"] = "C:\\Directory\\AnotherDirectory\\5L.stp"

It would be kind of nice if the custom property of each object for the STEP_file property was driven by one custom property on the parent empty that is created so that if you need to change the path, you can just do it to one object. But I’m sure there are some downsides to that?

1 Like

I can’t really know if someone wants to break different parts of the loaded STEP, duplicate them, or import stuff from other STEP files. So the current plan is to implement the STEP reloading at object level. Once the STEP file is loaded into memory, it just reads all the data from the cache until you restart Blender, or the running Python instance.

Yeah, I was thinking that as well. Although unlikely, it’s still a possibility that someone may end up wanting to do something like use an older version of a step file just for a couple parts after the fact. But couldn’t you sort of do both?
If all of the objects pointed to one path from the parent object, they could still be overridden at the object level. I’m not sure if there are other ways to have one custom property point to another custom property, but it Could be done with drivers right?

Anyway, it would be nice if you could add a script (but a much better written one) like the one I created so that a user could change the path to all objects, or all selected objects if needed, at once.

Hi, i just got this plugin to use with some of my Solidworks files. I had two questions. Should the materials be imported into the file? I thought that was a feature of STEP files.

Also my assemblies are being imported as one Mesh. Even though i have seperate bodies within the files its merging them all into one.


For all industrial designers (like me) I discovered a plugin that does export blender subdivision to IGES! :grinning: Digital Sculptors - Export IGES (
Now you can finally model something in blender and use this model as underlayment in CAD.
Great addition to the step import plugin in my opinion.

1 Like