My question is about a practical issue.
Until now whenever I need to add a new 3D model (for an existing component) I have to do the following:
copy the symbol to my own library
copy the footprint to my own library
edit the symbol so its footprint points to my own library
edit the footprint so its 3D model points to my own library
update the symbol in the schematic
update the footprint in the layout
It works, of course, but it requires a lot of work when the only thing that is missing is the 3D model.
Is this the only way to do it? Or, at least, is this the recommended one?
A part of the complicated workflow is because the default libraries are read-only on your file system. That is for good reasons too.
In KiCad many things can be done in different ways. and you can use the workflow that suits you best.
When you design a PCB in KiCad, then a copy of all Footprints are saved in the PCB file itself. So a “shorter” workflow is to design the PCB with standard footprints, and then add missing 3D info directly to the copy that is in Pcbnew.
That may be “good enough” for one-offs, but if you intend to use a certain footprint + 3D model more often, then the best way is indeed to put them in your personal library. You do not have to start this way though. You can export Footprints directly from Pcbnew into a library, or use the Footprint Editor as an intermediate step.
If you want “fully specified” componenst, in which both the schematic symbol, Footprint and 2D model are linked then indeed the only option is to put both the schematic symbol, Footprint and 3D symbol in a personal library.
As a dirty hack you can often just put your 3D model into the (read only) default library position. Most (or all?) Footprints (should) have links to a 3D model already in the footprint, to make it easier to add 3D models later. But be aware that the default libraries can (and will) be overwritten when you update KiCad. So in this case make sure you have backups of the 3D models you add.
Yet another (also very hackish) way is to move all of KiCad’s libraries to a custom location and make them writable. Then you can modify as you please, but you loose the option of updates to the default libraries.
As the KiCad-files are human readable, you could try to automate the process. A set of SED-commands that replaces (KiCad library path) with (your library path) or so.