Kicad StepUp New exporter for 3D MCAD (feedbacks are welcome)


I’ve updated the exporter and the docs
I’ve added a larger ksu config description and .step, .stp extension support
I’ve also added IGES (with colors) support!
now kicad StepUp exporter can generate a 3D mechanical model of board and parts, starting from a library of 3D ‘STEP’ or ‘IGES’ colored models
.step, .stp, .iges, .igs extensions supported
hoping that could be useful for you too :smile:


You are great, Maui! It works for me now.
Some more things:

I am programmer too, and I prefer old Windows type INI with
lines. In your ksu config are the different values identified simply by line order number?
I’m asking because I have project-specific .wrl files in my project folder, so I’d add two paths at ksu-config.cfg:
C:/Program Files/KiCad/share/kicad/modules/packages3d/ plus
Is it possible? Is it needed?
Anyway, I succeded by copying whole stuff (kicad_StepUp.FCMacro, ksu-config.cfg, .wrl’s, .step’s to every and each subdirs:))) I really don’t knwo which has been used:))

I’m gonna check the new mods you have uploaded.
many thanks,


if you can post a .kicad_pcb simple board e.g. with one or two components, I could tell you which path you should configure…
probably the right one it would be:

  • D:/Work/…/MyStuff
    I wouldn’t use two path to 3D mechanical and wrl models, to avoid a mix of configuration…
    Moreover, if you enable the ‘Report View’ in FreeCAD
    (Menu View, Views, Report Views checked)
    you can see a verbose log output that will describe all the import actions…
    :smile: Maui
    P.S. you may consider to give me a skull @


Dropped the skull!! :skull:


Thanks Maurice, that gives users much more choice. :smile: It may be an old format but it’s still there and will be around for a while.

For STEP do you have plans to support a hierarchy so people can use STEP assemblies without first exporting from FreeCAD as a single part?



for the moment I’m not working on that feature, almost all models coming from manufacturers libs are already available as a single part…
moreover I don’t think it would be useful to have a model of an e.g. QFP chip with body, pin_mark and hundred of pins as separated parts, also if they are in a hierarchy…
What I think kicad is still missing is a ready to use library of 3D parametric/mechanical parts in STEP and VRML…
that would be a big enhancement in MCAD point of view for kicad users…


Hi guys,
I have the same problem as lots of others above: when I export my project from KiCAD to use in another MCAD, I get 3d model for only the board…parts missing. (I can see my board + parts in KiCAD 3D viewer, after successfully align of STP/WRL parts with Maurice’s StepUp script as well.)

I’ve tried exporting WRL and IDF formats from KiCAD to both FreeCAD and Creo (Pro/E successor). Plain board is displayed well in all 4 versions, but components are always missing.

I see the “one or more solid bodies” problem. E.g in Creo there are .PRT (part) and .ASM (assembly) types, where ASM can hold lots of PRT’s or even sub-assemblies. Some stock mechanic component (e.g. ball bearing downloaded from manufacturer) may come as PRT or as a ASM of some PRTs.

Is there any hint how to get a full 3d model?



who’s having probs with the exporter???
I have not received any negative feedback till now…

As I already told you, if you could post a .kicad_pcb simple board e.g. with one or two components, I could tell you which path you should configure…
Also a screenshot of your Footprint 3D Settings as the one attached would help

Moreover I would need to have your ksu-config.cfg file and your launch-kicad_StepUp-demo.bat file…
and your FreeCAD version and installation path…


Sorry, Maurice, I meant problems they used to have. There were comments months ago, like

similar to my problem.
You made a perfect youtube tutorial video on getting STEP from component manufacturer, pushing and aligning it to KiCAD 3d viewer.
The opposite direction is not that clear: I see the fine model in KiCAD’s 3d viewer, but can’t export a STEP or WRL to import it to my Creo.
In your comment #27 of this thread, you display a workflow with “your KiCad design is ready to be converted to MCAD in just one click!!” Please point me to a how-to. What I have tried:

  • From pcbnew I open up 3d viewer and see board + 3d part bodies perfectly
  • I export both VRML and IDF
  • When I add these files to my assembly in Creo, I got nothing from VRML (“empty component”), and got the plain board form .EMN file (no component bodies, no holes, no wires).

I upload my whole project folder. It is a very tiny board with a single tactile switch named “SKHHLRA010”. You can also find the 3d body STEP (download from manufacturer). (329.5 KB)


I got the point: from command prompt I run

“C:\Program Files\FreeCAD 0.15\bin\freecad” zeroswitch.emn ksu-config.cfg kicad_StepUp.FCMacro

FreeCad fires up, loads my model, but got an error (I have a single 3d-body-part switch called “SKHHLRA010”. I have SKHHLRA010.step and SKHHLRA010.wrl in my project folder)
The red error message is down at the bottom status line…it was there for short time, hard to catch…


if you enable the ‘Report View’ in FreeCAD
(Menu View, Views, Report Views checked)
you can see a verbose log output that will describe all the import actions…
I’m outside and replying from mobile
I cannot see the prj now
I will get later in the day
… but from the error I got in the pic it seems the config file is missing some paramams


I got some answers:

  1. you have inserted more than a line in your 3D path … this is not handled by the exporter

  2. you have assigned to 3D model

    model TactSwitch-SKHHLRA010.wrl

but in the folder there is only


and the correspondent STEP model

  1. the STEP model is not correctly aligned to footprint
  2. the VRML model is not correctly aligned to footprint

then I did:

  1. adjusted the ksu config file with two configuration:
  • ksu-config.cfg assigned as it should be for your D: configuration,
    pointing 3D models to ‘D:/MUNKA/NBSz/Emelo/ZeroSwitch/KiCAD’

  • ksu-config-local.cfg assigned to work in a self contained project with 3D models in the same dir of the project itself…

2), 3), 4) renamed correctly the model and aligned both STEP and WRL file
5) added ${KIPRJMOD} var to your pcbnew file, so to have a self contained project

and here the result:

I also added a batch file to launch the exporter in just one click!
(I see you are running FreeCAD in “C:\Program Files\FreeCAD 0.15\bin\freecad”)

and here the self containing project with models and pcbnew board corrected as required, with board and parts converted to MCAD :slight_smile: (2.3 MB)

As I told you, the main complex part in kicad StepUp converter is the 3D model library configuration
but when you have done for one board, you have done for all!
some suggestions:

  1. I would not keep all my 3D models in a single dir, but I would put them in subdirs like e.g. smd_resistors, smd_capacitors, th_connectors, etc
  2. after aligning a model, remember to export both VRML and STEP models in the same dir, and use the same name for both


PS there is also a video for the exporting procedure (posted at top)


I’ve added some 3D MCAD models for kicad @ github
you can find details of the new MCAD library here

and in the README.txt file you can find some details for the configuration that may help users


Hi, Maurice,
I think I can use your scripts fine by now: ))
Now I found something seems to be an issue for me.
My hint is the problem comes from a power connector on the back side.
what I do:
0. move connector’s STP (from manufacturer) to a subdir of packages3d, called NTlib (from my initials)

  1. I open connector’s STP in FreeCAD (C:\Program Files\KiCad\share\kicad\modules\packages3d\NTlib\Tyco-1-1734172-2.stp)
  2. start kicad-Tools macro
  3. load kicad Footprint module (footprint is by me based on connectors PDF drawing. path:
    C:\Program Files\KiCad\share\ntlib.pretty\Tyco-1-1734172-2.kicad_mod)
  4. click “create axis”
  5. rotate and translate while alignment seems to be fine
  6. push “scale to kicad VRML”. File is generated in the folder
  7. start up kicad and pcb_new
  8. load my board
  9. I edit the connector - 3d settings - add 3d shape (…packages3d\NTlib\Tyco-1-1734172-2.wrl)
  10. I open up 3d viewer
    I see the connector, but on the component side and the opposite direction.

I attach the whole project to look after. (410.6 KB)
What do I screw up? Or is this an issue of non-component side parts?



  1. in your board / kicad_mod you have retained the previous model association, that will give a wrong data to kicad-StepUp-tool

(model adapter-csati.wrl
(at (xyz 0.17 0.18 0))
(scale (xyz 0.3937 0.3937 0.3937))
(rotate (xyz 180 0 90))
(model NTlib/Tyco-1-1734172-2.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))

  1. when you have aligned the module to the footprint in FreeCDA you need to save bothwrl’ and ‘step’ file
  2. if you want to associate .stp extension, you need to use the latest kicad-StepUp Macro (the one included in the project is working only with .step extension)

I attached the project with the right oriented module (wrl, step) and the board with the right module association (assuming your KISYS3DMOD path to c:/Program Files/KiCad/share/kicad/modules/packages3d/)

PS I normally prefer to work with a folder dir different from the one in kicad share folder, because you can risk to delete them in case of removing the kicad sw and upgrading (1.0 MB)


I thought that when I run kicad-StepUp-tool, I started from the footprint, and STP gave the 3D body. After making alignment WRL would be generated. I assumed that previous WRL assignment (if any) of the kicad_mod was a “don’t care”. Is it a must starting with a kicad_mod where 3d model is un-allocated? If yes, it is a bug: the default position of the part body may be received from kicad_mod’s original assignment, but after manual moves/rotates it MUST NOT count if there was an initial 3d assignment or not.

I had saved it before, but in the attachment I sent to you I reloaded the original (downloaded) STP.

It would be nice to have two (or more) paths to 3d models in ksu config, as I’d have the ordinary parts (SMD resistors/capacitors) in C:\Program Files\KiCad\share\kicad\modules\packages3d,
and the project specific parts in D:\work… If I can have only a single path, I rather put my stuff to
C:\Program Files\KiCad\share\kicad\modules\packages3d\NTlib.
I see it is dangerous: care has to be taken when upgrading KiCAD.

And one more time: I don’t want to be a repining jerk; I appreciate and respect your work very much !!!


it is not a must starting with a 3d model unallocated, but it is a must, as pointed out in the manual, that you have scale to 1:1 and rotation only on z
Moreover, when you have aligned your 3d model to module, it is your responsibility to update the model wrl part and the board that already have this model in.
This is exactly what you have to do with kicad standard way of working with Wings3D even if you don’t use kicad StepUp.
The plus with kicad StepUp is that you can see footprint when you align it… and of course you have the STEP exporting MCAD option
the easy way to align 3d model to footprint is to
open the module in pcbnew and in parallel open the footprint in FreeCAD with kicad-StepUp-tools, align the STEP model to footprint in FC, export wrl and step model and add/reload the model in pcbnew 3d-viewer to check the result

[quote=“novaktamas, post:56, topic:1048”]It would be nice to have two (or more) paths to 3d models in ksu config, as I’d have the ordinary parts (SMD resistors/capacitors) in C:\Program Files\KiCad\share\kicad\modules\packages3d,
and the project specific parts in D:\work…[/quote]
Having more then one search path it is not convenient at the moment;
Kicad doesn’t have more then a search path, instead you add more environment variables. …
Moreover, with more then a search path, if you have e.g. two libs with the same models/names, which will be the module that would have to be correctly loaded?
I prefer stay simplerone search path for 3d models, or just put full path (not relative to folder location)

[quote=“novaktamas, post:56, topic:1048”]If I can have only a single path, I rather put my stuff to
C:\Program Files\KiCad\share\kicad\modules\packages3d\NTlib.
I see it is dangerous: care has to be taken when upgrading KiCAD.[/quote]
You can always copy all kicad std libs to e.g.

KISYSMOD -> D:\cad\modules
KISYS3DMOD -> D:\cad\modules\packages3d

and place there also your 3d new libs
Then in case of update, you can easily decide what you want to overwrite and what to keep
That is what I do in my designs (I prefer to have the control in what is changing … e.g. if I have produced a board with a footprint and I found it is fine, I absolutely don’t want to have it changed without a manual override)
Moreover I started to clone some of basic smd kicad libs changing all wrl models and adding step and wrl StepUp compatible models to the new libs

Then if you just overwrite the std libs with these ones, you’ll get a working StepUp environment :smile:
I asked developers to add a support to FreeCad 3D MCAD and VRML models in parallel to Wing3D models, but it seems they will not adopt it.
So for the moment the MCAD support is only through my external kicad StepUp exporter

Thank you for using my script and for your feedback :smile:


Since I am not able to use FreeCAD (any 3D modelling program except for Sketchup) right now I have no chance to try it out but as I understand this script makes some mandatory things possible, I have some ideas to improve it in the future.

If we combine a realtime communication infrastructure (like ours, aktos-dcs) with FreeCAD and Kicad, we can build a multiplayer game like development environment.

For example, one will start drawing schematic, other(s) will draw the device in FreeCAD at the same time with the mechanical related electronic components (like connectors, LEDs, etc) which are automatically imported via reading the net list. Then, some other or others will start drawing the nets and placing the rest of the components into the pcb where the edge cuts layer is gathered (and updated in realtime) from the 3D drawing.

From the point of view of pcb designer (who is using Kicad) some components (which are placed in 3D drawing) will be placed automatically.

From the point of view of 3D designer, the nets and the rest of the components will be placed in realtime.

If a collision is detected, both users will be notified in realtime. An interactive 3D scene of the collision area will be shown to the Kicad users.

We will start coding as soon as we finished our current works :wink:


Hi to all,
I just updated my kicad StepUp adding a GUI
I’ve moved all the script on the kicad StepUp tools Macro, giving the project 3 flavors:

  1. a script interface (as before)
    freecad kicad-StepUp-tools.FCMacro demo
  2. a Macro GUI
    freecad kicad-StepUp-tools.FCMacro
  3. a FreeCAD WorkBench
    just open a ".kicad_pcb" or ".emn" or ".kicad_mod" file from the File Menu of FreeCAD

The news on the GUI are:

  • ability to load directly the .kicad_pcb board and parts in FreeCAD
  • ability to load directly the .emn board and parts in FreeCAD
  • ability to load directly the .kicad_mod in FreeCAD to align the STEP model
  • ability to export the model aligned directly to VRML and STEP format
  • VRML exporting format much smaller and cleaner compared to the previous one

With this GUI it is possible to do most of 3D MCAD interaction with kicad EDA without a big knowledge in FreeCAD… So anyone can be focused on its own MCAD software :smile:

Please note that the config file has moved to a new config file
in home user path:
linux: ~/ ($HOME)
OSX: ~/ ($HOME)
Windows: %HOMEPATH%
you have to configure your [prefix3D] to
KISYS3DMOD path or 3D model prefix path

and here the new video tutorial


Sounds intriguing, but the complexity of that makes me shiver…