There are filement boxes already (like nice @Spannerhands' Spool System, thing #2119644), but all of them demands quite a few non 3D printed parts. I have started designing in Fusion 360 from scratch with the old RepRap approach ("we can 3D print almost anything") to change that… And here is a result after several small iterations.
→ YouTube video with Tom's Fully Printable Filament Box V2 with optional Hygrometer
This filament box is fully printable (only the bowden tube is up to your choice for 2.85mm or 1.75mm filaments). Print it from the main material and use TPU (98 or 95 ShoreA) for seals. The first layers of the box should be from transparent material – and you will see the material remaining inside.
Maximum part sizes are 210×210mm so even users with Prusa i3 MK2/3 will be satisfied (I hope). Printers with bigger print volumes (like Ultimaker S5) are plus as there are no artifacts along the tight printing bed limits.
The optional part is a round and cheap hygrometer (I used common $2.60 ones from www.gearbest.com/goods/pp_009230082017.html). But you can print the upper half of the box without hygrometer mounting hole (you can use wider spools then).
You can make a wall mount system for example from old scratched steel rods up to 8mm diamater to hang up the box. (Or use some hanging wire etc.)
For more information about the features see the video, pictures and below tips for various parts.
Please note: Do not expect that the 3D printed boxes are sufficiently waterproof for longer storage of such a delicate materials like PVA, Nylon etc. No. Even the material of the box is absorbent, so expect the inner humidity around 35–40% with the fresh silica gel sachet (or two) while 50+% humidity is out of the box. For example, with the same cheap hygrometer I measured 20–25% humidity inside the watertight closable bag – which is much better option for a long-term storage of materials.
EDIT (25. 7. 2018): Colleagues have reminded me about post-processing techniques to improve moisture resistance of 3D printed parts (spray, bath), so there is a chance to boost it. ;-)
1) Print 1× Dry_Box_Bottom_w_Mount.stl and 1× Dry_Box_Up_w_Mount_Sensor.stl OR Dry_Box_Up_w_Mount.stl. – These are the main parts, both halves of the box. The first 3 layers (0.6mm) should be printed from the transparent material, then switch to another material. Or you can use STLs from the ZIP archive with dual colour models ("dual_color_3D_printing_variants.zip").
2) 1× Screw which can tighten the box with filament spool inside.
3) 1× TPU_Middle_Seal.stl and TPU_Peripheral_Seal_w_Mount.stl from flexible material (TPU 95 or 98 ShoreA is fine for these seals).
4) 1× TPU_Hygrometer_Seal.stl – only if you choose the variant with hygrometer.
5) 1× TPU_Seal_Bowden_2_85mm-ID_6_70mm.stl – this is the seal which should be mounted into bottom half of the box. You can cut the platform with scissors to better fit into the slot. Harder TPU 98 ShoreA is better here as the part is not too flexible during work. Put the bowden tube or anything hard into the part hole to force this printed part along the slot. Bowden tube should go through into the box interior at last.
Please note: Mentioned bowden seal is for quality, thick "Ultimaker style" bowdens. You can choose from several variants of TPU_Seal_Bowden STLs with different inner diamater. Or pick one for 1.75mm bowden tube. Or model your own one according your favourite bowden tube.
Please note: It can be tricky to print small parts from flexible materials on the desktop kit 3D printers. If your small print of TPU_Seal_Bowden fails, try to check, if there is a proper amount of time set in the slicer to let cool down all the layers. (Precise SLA/DLP printers with flex materials are better for these tiny parts, but even on FDM/FFF printer it's feasible.)