This is a filament holder (or roller) that mounts to the top of a printer enclosure. It accommodates a large range of spool widths (45mm-155mm) and diameters (120mm-320mm). The center also stays in the same location through all the adjustments. I designed it because the spool holder that is included with the Ikea LACK Table enclosure from Prusa Research (https://www.thingiverse.com/thing:2864118) is a fixed width and I didn't care for the remixed versions that made it adjustable.
The holder is intended to sit on a flat surface which extends to the ends of the gear arms. The weight of the spool is supported directly under the roller brackets -- not supported by the base.
The roller brackets each have two seats for the roller axles. Place the roller axles in the outer seats to get a wider support base for the spool. Use the inner seats to accommodate spools with a small diameter.
While uploading, I realized that I didn't design a filament guide that goes through the enclosure top. I like this one, https://www.thingiverse.com/thing:2114888, and this one, https://www.thingiverse.com/thing:2740467, so I'm not going to design a new one.
Edit 07/14/2018: A few people have reported that the rotating joint between the link arm and the base is too loose. I have uploaded two alternate STL files for the link arms that have tighter tolerances for the link/base joint and for the link/peg joint. The original link arm has 0.10mm modeled fit gap (radius) for the base joint and 0.18mm modeled fit gap (radius) for the peg joint. The first variant, alt_link_arm_07_10.stl, has a 0.07mm fit for the base joint and 0.10mm fit for the peg joint. The second variant, alt_link_arm_04_07.stl, has a 0.04mm fit for the base joint and 0.07mm fit for the peg joint. I can easily post other variants if required.
Don't forget to enable support material for the link arms. (I also recommend flipping these alternate link arms over from the position in the STL file. See the original link arm STL for the preferred orientation on the print bed.)
If you make this thing, I would appreciate feedback on how well the joints work and if one of the alternate link arms worked better for you.
Support material is required ONLY for the link arms. The resolution and infill are the printers choice. (You can enable support material independently per object in the Prusa version of Slic3r.) You must also enable support material for the link arms if you use the "complete_set" STL file. Check the preview in Slic3r and make sure your support material doesn't overlap.
The many rotating joints on this "thing" required fit tolerances (gaps) to be designed into the model. Getting these joints to fit correctly was the most time consuming aspect of designing this "thing". The joints work very well for my printer as currently designed, but your mileage may vary. (I'd be interested in feedback and design tips to make fit tolerances more universal.) The rotating joints all have designed-in center ridges to help the joint maintain its alignment while rotating. This also means that you should feel the parts "snap" into place if the fit tolerance is correct for your printer.
Edit 5/18/18: Thanks to mboden77 for printing/assembling this holder and providing feedback. His comments reminded me of a few more notes. The fit between the roller axles and the rollers is tight. I had to lightly tap the axles into the rollers with a hammer. They don't snap, but they should "prefer" the centered position. The roller axles just sit loosely in the roller brackets. I designed it this way deliberately so that the rollers (with axles) could be quickly switched from the inner positions to the outer positions. [End Edit]
I had problems printing the pegs because they would come loose during the print and eventually destroy the other printed objects in that run. I could not figure out how to enable brim independently per object in Slic3r, so I modeled a print support around the pegs. Use the "pegs_with_brim" version if you think this will be useful to you. Otherwise, use the "pegs_without_brim" version. The brim (print support) disconnects from the peg easily (at least on my prints). The "complete_set" STL file uses "pegs_with_brim". (Don't forget to enable support material for the link arms.)
Note the X/Y Labeling
The gear arms and roller brackets are not identical. They are labeled on the printed part as X and Y variants. The base also indicates where the X gear arms attach and where the Y gear arms attach.
When attaching the gear arms to the base, it is important (required) that the gear arms all be in the same starting position. For example, the rising peg from the base should be up against the very end of the slot in every gear arm. (See picture for reference.) After the gear arms are assembled with the correct initial relationship, they can be rotated to the desired spool width.
The roller brackets are also identified with an X or Y on the printed part. X brackets mount on the X gear arms (using the pegs) and Y brackets mount on Y gear arms (using the pegs).
The pegs are all identical, but they have "skirts" that match recesses within the bottoms of the roller brackets. I used pegs to attach the roller brackets to the link and gear arms to avoid requiring support material for either the roller brackets or the gear arms.
To get the proper initial gear alignment, use this positioning guide when assembling gear arms to the base. The slot in the gear arm should be all the way toward the peg in the base.
Designed on Fusion360.
You may note that all the rotating joins (other than the roller axles sitting in the roller brackets) have ridges in the center of the connection to help the parts maintain position during rotation.
If anyone wants to improve on this design, I'm happy to share the Fusion360 files.