#sleeving #mdpc-x #cable-management #3d-printing #tools
# Overview
Sleeving 3D printer harnesses in [[Wire and Cable Sleeves|MDPC-X sleeving]] looks great but the threading step is miserable — the braid grabs every wire end and every crimped terminal, and dragging a dozen conductors through a metre of PET by hand is a fight. This note covers what tools actually exist for the job, which ones are worth buying, and a set of printable threading mandrels I made to cover the sizes nothing off-the-shelf handles.
The short version: ==the fix is mostly technique, not a tool.== Use a rigid carrier tube, compress the sleeve onto it, push the wires through the bore, slide the tube out. MDPC-X doesn't sell anything for this, and neither does MakerWorld.
![[media/mdpcx-mandrel-profiles.png]]
# Design
## The carrier tube method
The braid fights you because it's a woven mesh under tension — every strand crossing is a place for a wire end to catch. A rigid tube removes the contact entirely.
1. Cut a tube with an OD that sits comfortably inside the sleeve's expansion range.
2. Push the tube into the sleeve, then squeeze the sleeve back along it accordion-style. Sleeve compresses roughly 5:1, so a metre packs down to about 200 mm.
3. Feed all the wires through the tube bore at once.
4. Slide the tube off the front and fan the sleeve out along the bundle.
The wires never touch the braid, and you're pushing a few inches instead of pulling a metre.
## Sizing by sleeve
MDPC-X expansion ranges and the carrier that matches each:
| Sleeve | Expansion range | Carrier | Barrel OD | Bore |
|---|---|---|---|---|
| MICRO | 1.5 – 4.0 mm | K&S 1/8" brass | 3.18 mm | 2.46 mm |
| XTC | 2.2 – 5.0 mm | K&S 5/32" brass | 3.97 mm | 3.26 mm |
| SMALL | 2.0 – 7.8 mm | K&S 1/4" brass *or* printed | 6.35 / 6.6 mm | 5.64 / 4.2 mm |
| MEDIUM | 5.0 – 14.5 mm | Printed | 12.0 mm | 9.0 mm |
| BIG | 12.0 – 24.0 mm | Printed | 20.0 mm | 16.6 mm |
MICRO and XTC are below what's worth printing — a 3 mm tube with a 0.3 mm wall isn't a real part. Brass wins there and it isn't close: 0.014" wall costs almost nothing in bore.
SMALL is a toss-up. Brass gives a 5.64 mm bore vs 4.2 mm printed, because a printed barrel needs a 1.2 mm wall to survive handling. Print it only if you want a longer barrel than the 12" brass stock gives you.
MEDIUM and BIG are the two the brass assortment can't reach, and they're exactly where printer harnesses land. Those are the ones worth printing.
## Printed mandrel geometry
One piece, three features:
- **Flared funnel mouth** — sits on the bed, guides wires into the bore
- **Straight barrel** — the sleeve accordions onto this
- **Tapered nose** — 22–34 mm taper ending in a 0.8 mm lip so the braid rides on instead of catching
| Size | Length | Nose | Weight |
|---|---|---|---|
| SMALL | 150 mm | 22 mm | ~4 g |
| MEDIUM | 180 mm | 28 mm | ~11 g |
| BIG | 200 mm | 34 mm | ~24 g |
A 180 mm MEDIUM barrel carries roughly 900 mm of compressed sleeve in one load — more than any single run on a printer.
# Configuration
## Print settings
- **PETG or ABS.** Skip PLA — the barrel is thin and it'll flex and creep.
- 0.16 mm layers, 4 walls, 15% infill
- **Nose up, no supports.** The funnel flare prints on the bed; the inner cone is a 22° overhang and bridges fine.
- All three fit an A1 or P1S standing up.
## Generator script
Parametric — edit `SIZES` at the bottom and rerun. Requires `pip install numpy-stl`.
```python
"""
MDPC-X Sleeve Threading Mandrel generator.
Print nose-up. No supports needed.
"""
import numpy as np
from stl import mesh as stlmesh
NSEG = 160 # angular resolution
def profile(od, bore, length, nose_len=25.0, flare_h=10.0,
flare_out=5.0, flare_in=4.0, tip_wall=0.8):
"""Return (r_outer, r_inner, z) rings from base (z=0) to tip (z=length)."""
ro, ri, z = [], [], []
def add(a, b, c):
ro.append(a); ri.append(b); z.append(c)
add(od / 2 + flare_out, bore / 2 + flare_in, 0.0) # base of funnel
add(od / 2, bore / 2, flare_h) # start of barrel
add(od / 2, bore / 2, length - nose_len) # start of nose
add(bore / 2 + tip_wall, bore / 2, length) # tip
return np.array(ro), np.array(ri), np.array(z)
def revolve(ro, ri, z, nseg=NSEG):
th = np.linspace(0, 2 * np.pi, nseg, endpoint=False)
c, s = np.cos(th), np.sin(th)
tris = []
def ring(r, zz):
return np.stack([r * c, r * s, np.full(nseg, zz)], axis=1)
outer = [ring(ro[i], z[i]) for i in range(len(z))]
inner = [ring(ri[i], z[i]) for i in range(len(z))]
nxt = np.roll(np.arange(nseg), -1)
for i in range(len(z) - 1): # outer wall
A, B = outer[i], outer[i + 1]
for j in range(nseg):
k = nxt[j]
tris.append([A[j], B[j], B[k]])
tris.append([A[j], B[k], A[k]])
for i in range(len(z) - 1): # inner wall
A, B = inner[i], inner[i + 1]
for j in range(nseg):
k = nxt[j]
tris.append([A[j], B[k], B[j]])
tris.append([A[j], A[k], B[k]])
A, B = outer[0], inner[0] # base annulus
for j in range(nseg):
k = nxt[j]
tris.append([A[j], B[k], B[j]])
tris.append([A[j], A[k], B[k]])
A, B = outer[-1], inner[-1] # tip annulus
for j in range(nseg):
k = nxt[j]
tris.append([A[j], B[j], B[k]])
tris.append([A[j], B[k], A[k]])
tris = np.array(tris, dtype=np.float32)[:, ::-1, :] # outward normals
m = stlmesh.Mesh(np.zeros(len(tris), dtype=stlmesh.Mesh.dtype))
m.vectors = tris
return m
# name, sleeve range, barrel OD, bore, length, nose, flare_out, flare_in
SIZES = [
("SMALL", (2.0, 7.8), 6.6, 4.2, 150.0, 22.0, 4.0, 2.6),
("MEDIUM", (5.0, 14.5), 12.0, 9.0, 180.0, 28.0, 5.0, 4.0),
("BIG", (12.0, 24.0), 20.0, 16.6, 200.0, 34.0, 6.0, 5.0),
]
if __name__ == "__main__":
for name, rng, od, bore, L, nose, fo, fi in SIZES:
ro, ri, z = profile(od, bore, L, nose_len=nose, flare_out=fo, flare_in=fi)
revolve(ro, ri, z).save(f"MDPC-X_{name}_threading-mandrel.stl")
print(f"{name:7s} sleeve {rng[0]}-{rng[1]}mm | barrel OD {od}mm | "
f"bore {bore}mm | wall {(od-bore)/2:.2f}mm | len {L:.0f}mm")
```
# Resources
## Commercial tools
| Tool | Price | Best for |
|---|---|---|
| [K&S 3400 telescopic brass assortment](https://www.amazon.com/Precision-Metals-Telescopic-Tubing-Assortment/dp/B0GMRT28FZ) | varies | **The one to buy.** 12 tubes, 1/16" to 13/32" OD, 0.014" wall, 12" long. Covers MICRO, XTC and SMALL in one purchase. |
| [MAINFrame Customs Paracord Threader](https://mainframecustom.com/shop/cable-sleeving/cable-sleeving-tools/paracord-threader/) | $12.99 | Single wires with terminals already crimped — the terminal seats inside the tool so it can't catch. Also [on Amazon](https://www.amazon.com/MAINFrame-Customs-Paracord-Threading-Tool/dp/B07BTT23WH). |
| [Menda 35250 Harnessing Wire Threader](https://menda.descoindustries.com/MendaCatalog/Hand-and-Power-Tools/Wire-and-Harness-Threader/35250/) | ~$7 | Adding a wire to a bundle that's *already* sleeved. |
| [OTC 4462 Wire Loom Threading Kit](https://otctools.com/products/wire-loom-threading-kit) | ask | Spring-steel threaders 5.5"/10"/15" plus grommet tool. Automotive grade. |
| [uxcell 3 mm nylon fish tape, 16 ft](https://www.amazon.com/uxcell-Electrical-Threader-Running-Pulling/dp/B073VGTT67) | varies | If you'd rather pull than push. Most fish tape is far too fat for this. |
| [DEI Easy Loom](https://www.designengineering.com/easy-loom-line-sleeve-tool-small/) | $8.99 | **Split loom only** — does nothing for braided sleeve. Listed so I stop re-finding it. |
## What MakerWorld has
Nothing purpose-built for braided expandable PET. Everything tagged "sleeve tool" targets split loom, corrugated conduit, or spiral wrap:
- [Automotive Wire Loom Tool V3](https://makerworld.com/en/models/2696248-automotive-wire-loom-tool-v3) — best-executed of the bunch, but split loom only
- [Wire Loom Tool / Cable Eater](https://makerworld.com/en/models/76556-wire-loom-tool-cable-eater-tool) — corrugated tube; ships at 100 mm and needs scaling
- [Cable management tool for spiral cable sleeves](https://makerworld.com/en/models/806568-cable-management-tool-for-spiral-cable-sleeves) — spiral wrap
- [Electrical cable sleeving organiser](https://makerworld.com/en/models/478925-electrical-cable-sleeving-organiser) — not a threader, but a decent spool case for MDPC-X stock
# Decisions
- **Decision**: brass for MICRO/XTC/SMALL, printed for MEDIUM/BIG
- **Why**: below ~6 mm OD the printed wall eats too much of the bore to be useful, and a 0.3 mm wall won't survive being pushed against a compressed braid. Above ~10 mm the brass assortment runs out and printing costs nothing.
- **Alternatives**: printing every size (rejected — MICRO is unprintable at any sane wall), buying brass in every size (rejected — nothing sold above 13/32" in thin wall at hobby prices).
- **Decision**: one-piece mandrel rather than segmented/threaded sections
- **Why**: 5:1 sleeve compression means a 180 mm barrel already handles ~900 mm of sleeve, which is longer than any run on a printer. Joints would only add snag points inside the bore.
- **Alternatives**: screw-together 100 mm segments (rejected — solves a length problem that doesn't exist here).
# Troubleshooting
- **Symptom**: braid frays and catches partway down the barrel
- **Cause**: cut end wasn't sealed
- **Fix**: singe the sleeve end with a lighter or hot knife **before** loading it onto the mandrel, not after
- **Symptom**: crimped terminal snags and pulls strands out of the braid
- **Cause**: sleeving after crimping
- **Fix**: sleeve first, crimp second. If the connector is already on, that's exactly the case the MAINFrame paracord threader solves.
- **Symptom**: bundle binds halfway through the bore
- **Cause**: bore too tight, or wires crossing over each other inside
- **Fix**: step up one mandrel size, and tape the wire ends into a tapered bullet with a wrap of Kapton before feeding
- **Symptom**: printed mandrel flexes or kinks under push force
- **Cause**: printed in PLA, or too few walls
- **Fix**: PETG or ABS, 4 walls minimum
# Build Log
## 2026-07-28
- Surveyed commercial threading tools. Confirmed MDPC-X sells **no** threading tool — their tools page is crimpers (CTX-4), pin removers, and a PSU jump starter only.
- Surveyed MakerWorld: nothing for braided PET, only split loom / corrugated / spiral wrap. Gap confirmed.
- Wrote the parametric generator and produced SMALL / MEDIUM / BIG mandrels.
- Verified all three meshes: watertight, zero non-manifold edges, correct outward normals, positive volume.
- ==Not yet test-printed — validate bore clearance and nose lip durability on a real BIG harness before trusting the dimensions.==
# TODO
- ==Test print MEDIUM and BIG in PETG, check the 0.8 mm nose lip survives repeated use==
- ==Confirm 9.0 mm bore clears a full hotend bundle (heater, thermistor, part fan, hotend fan, 4× stepper)==
- ==Consider publishing the mandrels to MakerWorld — nothing there covers braided PET==
- ==Order the K&S 3400 assortment for MICRO/XTC work==
# References
- [[Wire and Cable Sleeves]] — MDPC-X sleeve sizing and hookup wire specs
- [[Connector Crimping]]
- [MDPC-X](https://www.cable-sleeving.com/) — sleeving source
- [MDPC-X tools page](https://www.cable-sleeving.com/cable-sleeving-tools) — crimpers and pin removers, no threader