That’s a great idea which I have been thinking about as well. But requires a canvas implementation for interactively displaying a pcb board. Maybe KiCad’s canvas implementation can be used. I don’t like this idea though. Instead of learning inner workings of kicad, creating one from scratch sounds easier to me (not easy!).
If we had arbitrary layers we could pretty easily python up a tool that has all things in both files in the original layers and then all differences in new layers with “Top Copper - Old” kind of names. Merging layers isn’t too hard with the current file format.
Now that I think of it, it would be even better if KiCad could export STEP, and also two bitmaps, to be used as texture maps for PCB top and bottom. That way you could create totally realistic-looking assemblies in your CAD. (Just a wish).
that would let me add those images to 3D model of board…
I know I could also create the layers in FreeCAD directly, but that would increase a lot the 3D model itself…
What you want is a texture. I think you will have to do some post processing for this. You can use imagemagic for the job. Actually my pcb2blender project does this for png images exported from eagle. You can find the relevant piece of code here. Note that these commands operate on black&white PNG images.
What I mean by arbitrary layers is that you could have the common elements on their actual layer and changes on pair of “old” and “new” layers for each effected actual layer such that you could merely select them and do “change layer” all in Kicad in order to merge changes.