I had the same question and I solved it with a Model Manager custom code.
At save time, the ultimate occasion to setup attributes are to use preApplyListener.
I designed a drawing preApplyListener to detect the save from Annotation situation. The drawing.getPartUsedInSave() method gives access to the releavant masterdata to get attributes values from.
But beware the order of listener: model3d, drawing2d and masterdata.