We print silkscreen for components, as much as possible, at every board release. During development, it's common for us to remove the ref des when things are too tight. Then later there may be more room due to the design evolving. In those cases, we want to restore the silk ref des on the affected parts.
I found https://community.cadence.com/cadence_technology_forums/f/pcb-design/34467/find-missing-silkscreen-refdes-on-board-design which help to identify missing silk. I wrote a SKILL program that searches through the DB, identifies those missing assembly or silk ref des text, and then adds it.
Why didn't I want to use Place > Update Symbols or axlRefreshSymbol()? Because those operate on all instance of a footprint at once. So they can restore missing silk text, which is good, but silk text locations are reset as well which is not good.
I thought about updating my utility to try and get around this. The steps I think are involved are:
- Save the state of all fixed footprints.
- Fix all footprints except the ones that need to be updated.
- Refresh just those footprints.
- Restore the original fixed state of all footprints
That seemed painful to the point that I felt there must be a better way.
In addition, silk was added to footprints which have a ref des but didn't need it in silk. Think of manufacturing components like fiducials.
Lastly, I can't be sure there are multiple instances of the same footprint on the board or that their silk text size is the default one. So I have to make a guess about the library's text size, or query the library (which I don't know how to do now). Another annoyance.
Is there a way to refresh a single footprint? (I assume I can extend this to a subset of all footprints relatively easily.) Are the steps above I listed the best (or only) way to do this right now? Or is there a better way?