Kicad StepUp: a Seamless ECAD/MCAD PCB Data Integration

KiCAD StepUp has added a Seamless ECAD/MCAD PCB Data Integration :slight_smile:

  • Push/Pull 3D model placement from/to KiCAD board to/from FreeCAD mechanical design
  • Ability to move 3D packages around on the 3D PCB mechanical sw, via both the X and Y axis
  • Tracks will not be touched by the placements done in the MCAD sw. All the routing will remain in KiCAD.

The syncing process can be done even if the board is (fully) routed (i.e. when a new release requires some mechanical reviews).

  1. Pull KiCAD board inside FreeCAD
  2. Move and Align the 3D model to the new placement in the enclosure
  3. Arrange the components nearby the new placement
  4. Move and Align the mounting holes to the enclosure supports
  5. Sync the kicad_pcb board file within the new design
  6. Check the result inside KiCAD and reroute the tracks
    that are affected by the new placement

This ECAD / MCAD process is a bi-directional PCB Data Integration with the ability to propose, accept or reject changes synchronously or asynchronously as seen on most powerful commercial CADs.
Please update StepUp WB through FreeCAD Addons Menu.

Just an addition to some DXF users:
StepUp can be useful also for PCB Edge designing:


please update the StepUp WB.
The latest release now has some improvements for ECAD MCAD collaboration and user experience.
First of all the configuration has migrated to the native FreeCAD preference Page:

Main configuration 3D prefix models paths can be configured simply using the folder browse.
All other config parameters are in the Page, within useful Tooltips.
NB: ‘ksu-config.ini’ has been dropped to the new preference Page approach.

New improved features are the generation of 3D diff for the models positions, and diff for pcb edge sketches.
Now the WB is allowing a sort of versioning for 3D model positions, generating a placement screenshot of a board revision, for an easy automatic comparing feature.
The same for PCB edge sketch, pushing the WB to a good level of mechanical integration.
PushPull Toolbar

For mechanical purposes, but that can be used also for aesthetic needs, StepUp now can load Top and Bottom Tracks and SilkScreen.

And there is a nice goodie feature … exploding the 3D board:


@maui, this is excellent work as always.

A question: Let’s say the MCAD engineer has a place holder PCB model with the major connectors and mounting hole locations already mocked up in a bigger assembly. Is it possible to pull a 3rd party MCAD step of this PCB assembly into FreeCAD/SteupUP, then export the PCB outline, mounting holes and connectors back into KiCAD? Basically, create the initial board outline and major component locations in MCAD then push into KiCAD. I assume I would have to make some step model names line up for this to work.

Wow, nice. Thanks for the tracks and silk!

This should be the reason why I created & improved the WB :wink:

MD = MCAD Designer; ED = ECAD Designer; KC = KiCad; FC = FreeCAD; kSU = KiCAD StepUp
The workflow should be:

  1. MD would create a sketch of the pcb edge and mounting holes… (this could come also from a 3d model of the pcb converted to outline, as it is possible to get from enclosure manufacturers).
  2. From the pcb edge design (that could be a real FC sketch or an imported DXF converted to sketch using kSU WB tools) ED would push the sketch (edge converted) into an empty kicad_pcb file (or just a kicad_pcb file without any edge, with footprints and 3D models assigned).
  3. in kicad, ED would import all/some 3d footprint (i.e. the connectors) from a netlist and place them inside the kicad_pcb file in which the pcd edge has been previously pushed.
  4. in FC ED would pull the kicad_pcb with main connectors (using kSU) and export it to STEP, then export a report of placement to a file using kSU.
  5. MD would import the STEP hierarchy model generated from FC and kSU, aligning connectors to the real assembly needed for production, and the would export back the pcb + connector hierarchy model to STEP .
  6. ED would import the re-elaborated STEP model to FC and check what has changed its position through kSU (or just from a list of what MD had moved).
  7. ED would then select the 3D models moved and push those to the kicad_pcb to align KC design to the mechanical design.
  8. In case of changes in mechanical requirements the process would be repeated, aligning pcb edge/holes or 3D models to the new scenario.
    The process can be done all using FC, or through proprietary mechanical CAD, using FC & STEP format as vehicle (the commercial package need to be able to keep the STEP hierarchy during importing/exporting the mechanical model, but most known packages will do).

This is a push-pull process that is the ‘standardized’ workflow for ECAD/MCAD co-design used by the main commercial packages, available now with all open source packages.


Thanks for the detail @maui. This is what we generally have been doing. MD pushes a DXF outline, ED imports DXF to KC and places parts, and then MD pulls KC/kSU STEP back into MCAD.

Many times the MD is already way ahead of the ED. I was looking for a way to do step 3 in reverse. Map the MD’s already mocked up parts to KC footprints.

As always great work!! :smiley:
Wondering if we can import the eagle arduino boards in kicad to create nice and detailed 3D models using FC and our part library :slight_smile:

Fantastic work! Looking forward to trying this out. Where does your ‘orientation cube’ (showing top, bottom etc) come from in FreeCad?

you can do it…
you have three choices:

  1. just ask MD to send you details of 3D connectors and place those inside KC pcb at any place, and when MD will send you the new STEP model, pull the board from your un-aligned KC pcb file, and align the placement of the KC models to the MD 3D models (there is a button in kSU to copy placement from a part to an other in the same document); after that push those models placement to KC and check if everything is fine.
  2. kSU is assigning KC time stamp to 3D FC models… add the new connectors to KC at any position inside pcb, pull the KC board inside FC and copy the correspondent 3D label (which include the TimeStamp) to the 3D models to push back to KC, and push those to KC board.
  3. add the new connectors to KC at any position inside pcb, use the synchronization button in FC to assign the Time Stamp related to the Reference in KC to the FC 3D model selected, and then push the 3D model position back to KC.

I know I have to improve kSU documentation :wink:

1 Like

Thx! it took me about 6 months to fill your request :wink:
… but now we have a preferences Page also for StepUp in FC :smiley:

please let me know ìf there are issues on OSX… I made some tests, but I don’t use OSX with KC often…

it is available in FC 0.18 (it has to be enable in FC preference page)

1 Like

Thx :smiley:

please consider that tracks and silks will increase the 3D model weight up to 10 times… not too bad if saved in FC format, which zips the size, but very heavy if saved as STEP format…
Tracks can be useful to some mechanical tuning, and can be dropped when saving the model.
But I have to admit that tracks and silks may create a very nice rendering also in mechanical environment :wink:

a nice rendering of a board with castellated pads, tracks and silk screen:


@maui: Superb work!

Do we still have to update the StepUp tool with the add-on manager or will it now update when FC gets updated? The add-on tool manager is not working on FC0.18 daily (version ‘15043 (Git)’) at the moment; it crashes when invoked, with an error message ending in ‘cannot import name app’, but it works fine on the stable FC0.17 version. So, I updated the add-on stuff in FC0.17 and now the StepUP preferences appear as you describe in FC0.18

Thx :smiley:

Yes, StepUp is a FC external WB, so it is not deployed within FC itself.

Are you on Python3 or on Conda Py3Qt5 AppImage?
FC is going to feature freezing shortly, so please post your issue at FC forum, to let the devs known this issue.
FC 0.18 is going to be next stable release, and the first one py3 Qt5 compatible on internal Workbenches.

1 Like

Phenomenal. Would it be possible to leave drill holes closed with copper. I am thinking about thermal simulations, as this would enable to have thermal coupling between copper and THT component. Does this make sense?

If the hole was filled with copper then how would you insert a through hole component? You will have to rely on solder for that. Now, you DO HAVE copper plated through holes as a pretty standard element.

@MitjaN is not asking for the board to be manufactured that way. They are asking for stepup to export THT pads such that it is easy to create a single solid from the component leads and the pad. This would allow a first approximation of the contact areas for heat exchange.

A better approximation would be to really model the solder as a separate entity. (Including the thermal properties of solder and maybe even an approximation of the shape that solder typically takes.) This would however increase both the complexity of stepup and the complexity of the resulting mesh used for the simulation

1 Like

Opps. Not used to being up this early in the morning. :wink: Didn’t follow the thread.

StepUp implementation for Tracks is derived from @realthunder GH fcad_pcb repo, which is the most suited for thermal simulation.
The routines are highly customizable, letting you to create the tracks with or without holes and more.

StepUp implementation is instead optimized to obtain a fast representation of top and bottom tracks and pads, without adding thickness or even drill hole metallization to the imported shape.
The importing is faster and can suite most user case for mechanical integration, but it is not suggested for FEM analysis.
There are few threads here on FEM simulation:

Please report here if you find a way for succeeding in running a full FEM analysis on KiCAD pcb. :smiley:


just an other tip on FEM at FC forum:

1 Like