Full build and testing

Here is the final build and testing video for the print in place pump.


Part 1: Design and Impeller Selection

The foundation of any successful pump is the impeller. I ran extensive tests on various designs to determine the most efficient pumping characteristics. For those who want the full breakdown, check out the previous video below for the testing process.

Ultimately, the best performer was a red 10-vane axial and radial design, which made it into the final print-in-place version.

The Print-in-Place Interface Trick

The key to a successful print-in-place (PiP) part is separating the moving components with a specific, tolerance gap.


  1. Define the Separation: Add the parts (casing and impeller) you want to print together into your design software. The gap between the moving parts must be an exact multiple of your print layer height. For a 0.4 mm nozzle, I used an interface separation of two times the layer height, which is typically 0.4 mm.
  2. Create the Interface Body: Create a new component in your design called "Interface." This component is a solid body that exactly fills the space you want to maintain between the moving parts. This will be the space filled with the dissolvable support material.
  3. Export the Models:
    • Export all components excluding the Interface component (this is your main part).
    • Invert your selection and export only the Interface component (this is your soluble support part).

Part 2: Slicer Setup for Soluble Supports (on a Budget)

If you have a AMS or multi-head printer, this is straightforward. If you're like me, with a budget, single-head printer, we need to trick the slicer into performing manual filament changes for the soluble support material. These steps work for PrusaSlicer, and other PrusaSlicer-based slicers.

Slicer Configuration

  1. Enable Multiple Extruders: Go to the Print Settings tab and increase the number of extruders from 1 to two.
  2. Configure Retraction: Click on each extruder and set the retraction length to a conservative 1 mm.
  3. Tool Change G-Code: In the Custom G-code tab, modify the Tool change G-code block. Add either or both of the following commands to force a manual filament change at the start of each tool change cycle:
    • M0 (Pauses the print until the user hits a button)
    • M600 (The extended G-code command for an assisted filament change)
  4. Wipe Tower and Shell: Under Print Settings -> Multiple Extruders, tick both the Wipe tower enable box and the Interface shell check box. The interface shell is crucial, as it ensures a solid, closed boundary is generated between the adjacent materials, resulting in a smooth, sealed surface when the support is removed.

Loading and Slicing the Parts

  1. Import Models: Import both your main parts-to-print-in-place design and the interface object into the slicer.
  2. Assign Extruders:
    • Assign Extruder 1 (your main material, e.g., PLA) to the parts-to-print-in-place model.
    • Assign Extruder 2 (your soluble material, e.g., BVOH, PVA) to the interface model.
  3. Slice and Observe: After slicing, you'll see a small number of filament changes planned. Because the slicer prints both interface layers back-to-back (after the solid PLA layer and before the next solid PLA layer), you get four changes for the two interface levels in this design.

Part 3: Dissolving the Support and Final Assembly

For the soluble support, I used BVOH, which is compatible with PLA.

BVOH Dissolution Test

To get a baseline, I printed a small test area and submerged it in warm water.

The impeller was perfectly free to spin.

Full Print and Post-Processing

During the print installed the components—bearings, in-situ grease, and an O-ring. 

This was then followed by the four filament changes (two for the lower interface, two for the upper). 

This was then submerged for the full 3 days in warm water to dissolve the BVOH.

(Pro Tip: To drastically speed up this process, an ultrasonic bath cleaner would dissolve the BVOH in a fraction of the time.)

Crucially, to ensure watertightness, I coated the entire pump in epoxy resin. I've found clear lacquers to be unreliable for sealing FDM prints, but the epoxy provides a solid, impermeable barrier.

Part 4: Does it Pump? Test Results

After the epoxy cured, it was time for the moment of truth.

It worked! The print-in-place pump was successfully moving water. But how well did it perform against its two-part counterparts?

Performance Benchmarks

TestMeasurementResult
0 m Head Pumping Rate (Inlet/Outlet at same height)Time to pump 1 L16.9 seconds
1 m Head Pumping Rate (1m height difference)Time to pump 1 L21 seconds (2.9 L/min)
Maximum Pumping HeightMaximum vertical height until flow stops1.5 m

As a submerged pump, the print-in-place version was slightly slower than the two-part, equivalent-impeller pump, likely due to a minor loss of internal surface smoothness.

The Real Success: Suction Head

The ultimate goal was to see if the pump was airtight enough to work as a ground pump (not submerged). This requires generating a suction head—lifting water into the pump from below.

I measured the maximum distance the pump could be lifted above the water source while still running:

This is fantastic! A 41 cm suction head is quite usable for a 3D-printed device and confirms the epoxy coating was effective in creating an airtight seal.

The experiment was a success. With careful design, a slicer hack for dissolvable supports, and an epoxy coat, a fully functional, watertight, print-in-place water pump is absolutely possible on a budget 3D printer.

What other typically "impossible" 3D prints would you like to see printed in place?