Hi, I am trying to figure out how I can pull the latest updates to a PCB from KiCAD to FreeCAD.
I have an initial pull of a board but then I made some modifications to components and placement in the PCB editor. Now, I want to update the model in FreeCAD. The only thing that I can find is to pull a new board which creates a whole new file. This would be fine normally but if the PCB is already part of an assembly, I would have to redo the assembly with the new board.
Yes, I manually edit the file to fix the slashes (that was prior to your workaround commit) and it’s been working ever since. It seems that it got messed up on initial insertion of the component but since I haven’t touched it since, the path seems stable at the moment.
I do have one more question related to this: when working with the PCB edge sketch, is there a way to apply constraints on the original sketch that was imported from KiCAD? I was trying to add some wholes to the PCB and the whole outline started shifting, which ends up changeing the locations of the components.
What I would like is to be able to “lock” the position/shape of the original sketch and then start making modifications.
this is more related to FreeCAD … you can lock parts of your sketcher using theSketcher ConstrainBlock tool:
Moreover, it is a good practice to put a Grid origin (or a Drill origin) to your kicad file, then the origin of your FC sketch would be placed as the origin of your KC file.
With all your help, I’ve made some pretty good progress. Yet, there is another issue that I don’t know how to solve related to updates between ECAD and MCAD. This time, I tried finding the answer by myself but failed.
In KiCAD, I added another component to the PCB. Now, I am trying to pull the new version of the PCB that includes the component. However, I can not figure out how.
I’ve tried using the tools and pointers that you listed in this post. However,
“Pull 3D model(s) …” requires me to select an existing model to be updated but I am trying to pull a newly added one.
Pull Layer does not seem to list the layer on which the new component is placed (back of the PCB). I also don’t know if it’s meant to pull components/models.
I’ve tried watching the tutorial videos on the StepUp GitHub but that only shows how to update placement of an existing component/model from MCAD to ECAD, not the other way around.
Using “Load Board” will create a new file with the board but I want to update the existing file/models.
I’ve tried searching the forums for anything that might help but I did not find anything.
Is updating existing MCAD PCBs from latest version in ECAD without creating new files supported?
I see you are doing a very deep ECAD MCAD integration.
This is a less common use case. Normally you can delete the PCB objects and Import the new board inside the FC document.
However, sometimes objects are related to other mechanical part in the document, so deleting those would break some reference.
Then adding 3D models of the modified pcb is manageable, even if it is not so straightforward.
1) a simpler approach:
a) just load the new(updated) board in a new FC document
b) select the 3D model linked to the footprint added
c) copy the model (if it is a ‘linked object’ select only the object without the dependencies)
d) paste the object in the original FC document
e) Drag the object inside the ‘Step models’ ‘Top’ (or Bot’) Part container of original PCB structure
2) a more complex approach:
a) if the 3D model is new to the board, import the 3D model in FC document; if the 3D model is a duplicate of an other model in the same board,’ Make a link’ of the 3D model which is to be duplicated
b) Drag the object inside the ‘Step models’ ‘Top’ (or Bot’) Part container of original PCB structure
c) ‘Sync 3D model Ref’ using the kSU button, and input the ‘REF’ of the added footprint
d) ‘Pull the 3D model placement’ using the kSU button
That will sync MCAD with ECAD even with added footprints and models.
This is exactly my use case. I am designing an enclosure for some electronics which are multiple boards/components that plug in together. As such, I need to position all of them into an assembly and then design the enclosure around them.
So, it would be much easier for me to be able to update my custom PCB in-place rather than having to import it into a new document and then redo the entire assembly.
BTW, the above workflow works great if I am modifying the board edges in FreeCAD. I can modify them in FC, sync with KiCAD, then pull the new PCB back to the original document and the assembly gets automatically updated. It also works great when updating placement of existing components. It’s just the new components that are the issue.
Would it be too much to request this as a new feature?
Normally you don’t change many components when you modify a board… moreover for assembly the main important MCAD constrains are connectors and pcb edges.
So then update placements and pcb edges and add or delete some extra part simply with the method above.
Furthermore, if you have moved many objects in your PCB, you can update their placement in a single operation by simply selecting multiple models inside the Top and Bottom ‘Part’ containers.
Please open an issue as feature request. I am unable to provide an estimated date for the implementation of this option… I believe this is a rather complex change in the kSU workbench.