KicadStepUp Workbench

Introduction
Kicad StepUp Workbench is aimed at helping both KiCad and FreeCAD users in collaborating with electrical (ECAD) and mechanical (MCAD) design.

Background
Kicad (website) is an Open Source Electronics Design Automation Suite. It allows to design an electric circuit and create a single or multilayer circuit board using an extensive library of parts. The great thing is that using FreeCAD and KicadStepUp Workbench is official Kicad way to create 3D parts for electrical components for Kicad. The libraries are hosted here, so everyone can create and check in parts.

KiCADs GUI philosophy is a bit different compared to FreeCAD, expecially when it comes down to create elements and move them around. However, since Kicad is being used in production for years there is an excellent documentation, e.g. a very goog "Getting Started" document. Additionally each tool has its own manual.

If one does not know Kicad yet, its recommended to complete a stand-alone PCB according to the Getting Started Guide to understand the concepts involved. Although some topics like adding new schematics and footprints to a local library seem to be of little interet for the beginner, in practice they are often encountered quickly after starting a serious project. For all these Kicad concepts one can find a feature of some sort in the KicadStepUp workbench. So knowing those makes it a lot easier to understand how to use this workbench.

Features

 * Load kicad board and parts in FreeCAD and export it to STEP (or IGES) for a full ECAD MCAD collaboration
 * Load kicad_mod footprint in FreeCAD to easy and precisely align the mechanical model to kicad footprint
 * Convert the STEP 3D model of parts, board, enclosure to VRML with Materials properties for the best use in kicad
 * Check interference and collisions for enclosure and footprint design
 * Design a new pcb Edge with FreeCAD Sketcher and PUSH it to an existing kicad_pcb Board
 * PULL a pcb Edge from a kicad_pcb Board, edit it in FC Sketcher and PUSH it back to kicad
 * Design a new footprint in FreeCAD to get the power of Sketch in footprints
 * Generate Blender compatible VRML files



Installation
KicadStepUp is part of the external workbenches, and can be automatically installed using the FreeCAD Add-on Manager which comes bundled with FreeCAD 0.17, under the  menu.

General Approach
The basic idea of KicadStepUp is to synchronise data between the two applications. For home use you might have open FreeCAD and Kicad at the same time. Professional use work on the same files (e.g. on a central server) and have specialists on mechanical CAD (MCAD) working in FreeCAD and electronics experts on electrical CAD (ECAD).

KicadStepUp will converts standard FreeCAD files to Kicad files and vise versa. That way each application can work with its native data files. Projects can be used without the other application or KicadStepUp installed. That also the reason, that no plugin on the Kicad side is required.

Undestanding the fine details of the workflow its helpful to note that the differences between the two programs impose some difficulties for a full data exchange. One example is that the Sketcher used in Kicad to define the board outline is much more limited compared to the FreeCAD Sketcher, so in order to synchronise back and forth the model content can not be more complex than the Kicad Sketcher can handle. From a FreeCAD point of view, that means you may loose data. KicadStepUp offers workarounds that might be more difficult to understand if you do not have this background.

Basic Workflow
A a collaboration can be started with a new or an existing project. We consider here a new project to keep things simple:

Try to make another PushPull round trip: adjust you "pcb design" sketch to the changes from Kicad, add some other change and start again. Do that a few times to appreciate how quickly and naturally this procedure becomes in a very short time.
 * 1) Create a new Kicad Project anywhere you like. Lets name it "KsuTest"
 * 2) Open the PCB Editor and create on the layer "Edit.Cuts" a closed outline. Shape does not matter, we will overwrite it anyway.
 * 3) Create a new FreeCAD file for the PCB, the name does not matter. *
 * 4) Create a sketch with an outline of the desired PCB. Lets name it "pcb design" (but could be any other name) and put at least one circle into it for a hole.
 * you may use any FreeCAD features to include holes, cutouts and outer shape to other components you might have. We assume here you would use Sketcher features as Dimensioning, Constraints and Work geometry in your sketch.
 * If you are using PartDesign WB for creating the sketch there is no need to create a PartDesign body, since we are not going to pad this sketch.
 * 1) Switch to the KicadStepUp Workbech
 * 2) Select the "pcb design" sketch
 * 3) Select the Toolbar button "Push Sketch to PCB Edge" or the menu ksu PushPull/ksu Push Sketch to PCB
 * 4) * first a dialog will open with defaults "Edge.Cuts" for layer and "0.16" for line width. Keep those defaults.
 * 5) * next a file dialog will open. Click to your Kicad "KsuTest" project, where you should see a file "KsuTest.kucad_pcb". That is the PCB file with the temporary outline we created before. Select is and confirm to replace the old file. Now a dialog should say "new Edge pushed to kicad board!"
 * if you forgot the 2nd step, you the push operation might fail as a pcb file must exist and it must not be empty.
 * 1) Cloase and re-open the PCB Editor in Kicad. **
 * The shape from the FreeCAD sketch should appear.
 * 1) go over the circle with the mouse and press m on the keyboard to move the circle. Click to place to another position. Press the save toolbar button on the top left.
 * 2) Switch to FreeCAd and select in the KicadStepUp Workbech the tool button "Pull Sketch from PCB" or the menu ksu PushPull/ksu Pull Sketch from PCB
 * 3) * first dialog with default layer "Edge.Cuts" and three choices will open. Select choice "replace PCB and Sketch in current document" ***
 * 4) * next a file dialog should show again the file "KsuTest.kucad_pcb". Select it and press Open
 * You should see your PCB as 3D model. Note that the hole has moved compared to you "pcb design" sketch.
 * In the tree appears a new structure with a yellow Part Container with the Kicad Filename and within another Part Container with "Board_Geoms_e63b" (the part with the number probably different). In the second container there are the following three files. Do not change any names in that structure, because KicadStepUp uses them to find the parts to update.
 * Do not forget to save your file

Now you can use the new 3D PCB file to align 3D components as connectors, buttons, switches, fasteners, etc. or add this to your assembly if you have a larger project.

This only shows the very basic way KicadStepUp works. Your are still missing a lot at this point, e.g. footprints and 3D parts. But from there its a lot easier to start exploring KicadStepUp on your own. Use the documentation PDF file in the menu ksu Tools/Demo

'':Notes:
 * * if you already have a FreeCAD assembly, e.g of some mechanical device, you would add for the PCB a new file that you can add to your assembly like any other mechanical part. There is actually no need to make a new file for the PCB. KicadStepUp will not write to your file, it will add or update the structure in memory only. As long as you do not change the name of the strucure and the names in the structure any additional loop through workflow above will only update this structure and leave all other parts in your file alone.
 * ** Its acutally not required to have Kicad running. It does not even have to be installed on the PC, only the project files must be accessible.
 * *** Choice 1 will put the same structure into a new file. Its just in memory, so you need to change it yourself. The difference between Choices 2 and 3 are a bit more involved. This is relevant when you place your FreeCAD sketch with constraints into the structure that KicadStepUp creates. The tree will be more tidy but you need to decide whether or not you want KicadStepUp to overwrite your sketch or not. Thats the choice those two options offer. If you have neither dimension or geometry constraints nor work geometry or external linked geometry in your sketch its safe to let KicadStepUp overwrite it. Otherwise would want to select "replace PCB and keep Sketch in curr. doc", so KicadStepUp only writes the 3D object but not the sketch.

''


 * Please see the kicad StepUp cheat sheet to learn how to get started.

Side Note about External workbenches
FreeCAD workbenches are easy to program in Python, there are therefore many people developing additional workbenches outside of the FreeCAD main developers.

The external workbenches page has some information and tutorials on some of them, and the FreeCAD Addons project aims at gathering them and making them easily installable from within FreeCAD.

New workbenches are in development, stay tuned!