If you look at other engines that can draw primitives, actually they do this task in other terms, I mean, you need to load a library wich contain vertex per vertex of a primitive, library that lives in the hard disk, or you have to call a function with sometimes goes to the hard disk an load a binary file to the memory. Something like that happens with bam files:
Bam files (with the extension .bam), on the other hand, are binary files that are closely tied to a particular version of Panda3D. The bam format is designed to be as similar as possible to the actual Panda data structures, so that a bam file is relatively small and can be loaded very quickly.
By the way, you can add this particular feature creating by yourself a library that contain "loaded-bam-files" so you can include and setup more quickly
Hope I help. Good coding.