Everyone loves 3D printing because you can make almost any arbitrary shape that you want with very little effort. This is mostly true, but when you want to make functional parts sometimes the answer is to not make it fully 3D printed. This has been my experience trying to make 3D printed timing belt pulleys. My original design was fully 3D printed which sort of worked but had a fatally annoying issue of loosening up every few days, usually at the most inconvenient time possible.
It's a neat design because it actually uses captive hex nuts for the set screws which is substantially better than trying to thread the plastic. This is a really great construction technique for 3D printed parts that not enough people use.
This design sort of works but the main issue is that it is difficult to get the set screws tight enough so that they don't back out without damaging the part. Furthermore, even if tightened enough the high stress created by the screw can cause the material to creep (i.e. change shape) which can make the screw loose. This is the behavior I saw when testing. What I would normally do in this situation would be just to buy the right pulley. When I saw that they were $25 each and wouldn't come for at least two weeks I decided to just make a better one because I really wanted a pulley right now and I wanted it cheap.
The composite design uses a very simple aluminum hub made on a lathe and the teeth printed on a printer. This is a great way to make it that plays to the strengths of each process. The aluminum hub is strong and I can really torque the set screws down, meanwhile the teeth which would be a monumental pain to machine were printed in about an hour and have the right geometry, good enough strength, and acceptable wear properties for my application.
The parts are simply epoxied then pressed together and you have an excellent pulley.