Filament-based 3D printer