KiCAD PCBnew export/save to SolidWorks import

Hello,

My experience with KiCAD has mainly been for hobby purposes. I have successfully designed and then fabricated ~20 PCBs. The software has been superb in my experience!

I recently had an opportunity to use this software professionally. While the schematic entry and PCB design has worked well, the mechanical design process has included several hurdles. Specifically, the mechanical software used by my colleague is SolidWorks. We currently do not have a path forward using KiCAD software with mechanical input required.

Specifically, my colleague is unable to select individual components on the board which has prevented specific checks from being completed on mechanical side. The import process has also not been as straightforward as hoped.

For testing… All of the KiCAD export file options were generated for a PCB file. The file extensions supported in SolidWorks were then imported […or opened]. The results for each tested path are listed below.

  • .emn export
    • Imported through CircuitWorks.
    • Only the board outline is shown, no components, traces, pads, vias, silkscreen etc. No layers present either.
  • .xml export
    • Imported through CircuitWorks
    • Despite saying it can be opened, I got an error saying “Cannot be processed by CircuitWorks.”
  • .emn export
    • Imported through SolidWorks
    • Only the board outline is shown. Looks the same as when importing through CircuitWorks.
  • .ply export
    • Imported through SolidWorks
    • Opens as a graphics body in color. Parts are floating. Unable to edit components or measure.
  • step export
    • Imported through SolidWorks
    • Opens as an assembly in color. Parts are floating. Unable to open individual components.
  • .stl export
    • Imported through SolidWorks
    • Opens as a graphics body, no color. Parts are floating. Worse than the .ply version.
  • .wrl export
    • Imported through SolidWorks
    • Only the board opens, no parts, but pads and traces are present. Silkscreen is floating. In color. Is a graphics body, therefore, hard to work with.

Regarding use of SolidWorks… Is there a preferred import process? In the past PADs layout has been used for PCB design. A .asc file is exported from the design. This .asc file has been imported into CircuitWorks which is then used with SolidWorks.

My question - What process should be used for SolidWorks import? Does anyone use SolidWorks with KiCAD outputs?

I’ve used FreeCAD StepUp plugin in the past but only for 3D printing purposes.

All help is appreciated on the matter. Thanks

We use STEP files . . . I’m pretty sure you will find that’s the universal answer.

1 Like

Step export and import to solid works should work fine, I’ve done it many times.

Do you have a screenshot of a problem case?

Also how severe is this “floating”? It’s normal for parts to be some tiny fraction off the board because the board because the export doesn’t include all stackup layers. But actual PCB fab error on a board thickness is also ±0.2mm usually.

Using KiCad 9.0.2 on Debian 12 and SolidWorks 2022 SP5.0 on Windows 11.
STEP file opens with floating (not constrained), imported, parts.

In SolidWorks:

  • Window select the entire assembly in SW, right click on any of the selected components in the feature tree and select “Fix” to solve the floating issue.
  • Right clicking on any “part” in the graphics window allows me to open that part.
  • I usually save the PCB assembly as a .sldprt file to use in whatever product design it is used in.

Here are my settings for STEP export from KiCad.

I do mechanical co-design with people using Solidworks all the time, no-one has ever complained to me about the STEP files kicad produces.

A while ago I exported one of my PCB’s directly from KiCad, and just now I imported that exported PCB into FreeCAD. The STEP model has a nice tree in it, win which the 3D models of each footprint are individual entries in the tree. In the screenshot below, I grabbed an optocoupler and moved it a bit.

I don’t have a screenshot at the moment.

The floating was present in the KiCAD import but not via PADs layout .asc import. The observed floating was enough to prevent accurate mechanical height estimates at the time.

Another issue encountered in SolidWorks was the inability to select individual components on the board. It’s not clear if there’s a flaw in our export/import process. Hoping to find more clarity on this.

Could you provide steps for export and import process? I’m concerned there’s a flaw in our process causing the mentioned issues. Ideally I’d like to be able to use KiCAD for some designs, but at the moment there is no path forward mechanically because of the mentioned issues.

In my experience there are no issues exporting a PCB assembly in STEP format from KiCad and subsequently importing that STEP file into SolidWorks with the versions of software that I use.

Can you share what version of KiCad and SolidWorks you are using?
What method is the SolidWorks user using to measure “mechanical heights”? How is it inaccurate?

The “floating” is a result of the STEP file being exported as an assembly. The individual components are not constrained on import. I see this in every STEP assembly I’ve ever imported into SolidWorks.

As I stated previously in this thread, one method of “fixing” the floating parts is to window select the entire board in SolidWorks and “fix” the components.

What settings do you use for the STEP file open in Solidworks ?

We are on Solidworks 2021 and use the following without any of the issues you have described:

Here is a close view on a standard KiCAD part in the 3D viewer:

Note that the part is floating above the pad and appears in contact with the paste graphic.

Next, the part is exported as a step file using the following settings:

Viewing this step file in FreeCAD reveals floating (i.e. hovering over board) parts:

Exporting the same board with the options shared above (i.e. no copper) results in parts hovering by a greater distance:

Finally, using the KiCAD StepUp plugin for FreeCAD results in the following:

Parts appear to touch the board.

My guess is that KiCAD uses the assumed value of the paste thickness to set where the part’s Z axis origin is. That said, according the source code the default paste thickness is zero, and so is the default 3D model offset (See footprint.h, exporter_step.cpp, and board_stackup.h).

Also note, if you need very precise tolerances, the KiCAD StepUp plugin will make the board thickness the finished thickness as specified in the stackup table, this is slightly larger than the true copper-copper thickness.

KicadStepUp is using the finished thickness as in the stackup table, so to have a watertight board with components (SMD) … this is allowing the option to make a single compound of the board and components to make the mechanical process easier.
Moreover there are containers for pcb, top parts, bottom parts and virtual mechanical components, for an easier 3d inspection.
P.S. in tolerance you need to count not only the pcb process, but also component dimensions.

1 Like

Can you share what version of KiCad and SolidWorks you are using?

  • KiCAD version 9.0
  • SolidWorks version 2025

By “floating”, I meant that the parts are sitting offset from the board when imported into SolidWorks. This issue occurs for the case that the STEP file is exported from KiCAD and imported directly into SolidWorks. An example of the issue is shown in @owen post [see “hovering over board” image].

If the STEP file is first imported into FreeCAD and then re-exported…When importing the file exported from FreeCAD we no longer see the “hovering over board” parts in SolidWorks. Specifically, parts appear to touch the board. This is an improvement!

With the FreeCAD step included in the process…We are able to select individual components in SolidWorks but they are all “fixed”. When an individual part is selected an option to “unfix” […unlock] is not shown. We would like to be able to nudge components around in SolidWorks but are unable to do so currently. We are able to move the individual components around in FreeCAD, but do not have ability to do so in SolidWorks.

Thanks for the help so far to all.

FWIW, in the real world their will be a solder layer of some thickness between the parts and the PCB. Hence, the “floating” representation may be more representative of the actual component postion in space for a physical assembled PCB.

John

It seems a bit silly to worry about 84um. That’s less then the tolerance of normal PCB manufacturing, how do you guarantee that all step models are that accurate (including production tolerances of the real parts) and a bunch of other factors. Just about a week ago, there was a similar question for step export:

In SolidWorks jargon the terms would be “Fix” and “Float”. Those options should be in the context menu that appears when one right clicks on a part in a SolidWorks assembly. If they aren’t there then select “Edit context menu” at the bottom of the menu.

Be aware that once you “float” a part it can be moved in all axes.