I’m not 100% sure this is what you mean, but I ended up cobbling this together (in an autoload) from various nuggets of information for the purpose of creating multi meshes. See if it helps.
func extract_mesh(n:Node) -> Mesh :
var result
if n is MeshInstance3D:
result = n.mesh
else:
for c in n.get_children():
result = extract_mesh(c)
if result:
break
return result
Instantiate a model, then pass it to this routine, you get back the first mesh it comes across in the hierarchy, which you can then put into the MultiMesh mesh value.
Barrybaz, thanks for that thoughtful post. I am doing exactly that at the moment, but I save the meshes to .tres files instead so that the Multimeshes get a pointer to a resource file. I did this so that I can open my scenes and all the meshes are just there by default.
Your suggestion of a just-in-time in-ram kind of trick will bear some thought. I am making a tool, so the lifecycles of things gets weird.