A trio of Cutter Cutting Plotter Blade Holders arrived:

Despite the name, they’re not well-suited for drag knife blades, because they’re collets gripping a 2 mm shaft. The blade doesn’t rotate unless the plotter / cutter rotates the entire holder, which is actually a thing.
I got ’em because the snout of a common ball-point pen refill measures about 2 mm:

The glob around the tip comes from plotting too fast for conditions; about 1500 mm/min works better for continuous lines and 250 mm/min improves text.
The stock MPCNC adapter has a single recess suited for Genuine Plotter Pens, but the knurled lock ring on these cheapies sticks out far enough to make them wobbly. This being an inconvenience up with which I need not put, a few lines of OpenSCAD tweak the stock STL:

The original STL is ivory, new cuts are cyan, and additions are reddish.
The two support beams are now 1.6 mm = four thread widths, for improved slicing with a 0.35 mm nozzle and a higher spring constant.
It’s by-and-large indistinguishable from the old adapter:

Which I was using upside-down, because the flange fit better.
The MPCNC works reasonably well as a pen plotter with a genuine ballpoint pen:

The OpenSCAD source code as a GitHub Gist:
// Adding clearance for eBay collet pen holder | |
MPCNC_OD = 12.0; // pen holder OD (matches STL curvature) | |
MPCNC_Z = 8.9; // Z offset of pen axis | |
Pen_OD = 11.5; // actual pen body OD | |
ID = 0; | |
OD = 1; | |
LENGTH = 2; | |
Flange = [11.5,15.7,2.2]; // actual pen body flange | |
Locknut = [16.0,16.0,2.8]; // knurled locknut | |
Locknut_Offset = 4.5; // flange center to locknut | |
Wall = [41.0,4 * 0.4,9.0]; // thicker walls for more spring and better fill | |
$fn = 32; // default cylinder sides | |
difference() { | |
translate([-(101.3 + MPCNC_OD/2),-111.9,0]) // put pen axis above Y axis, flange centered on X axis | |
import("/mnt/bulkdata/Project Files/Mostly Printed CNC/Accessories/Tool Holders/MPCNC_525_Drag_Knife-1860310.STL", | |
convexity=5); | |
if (true) // improve holder-to-mount fit if needed | |
translate([0,60/2,8.90]) | |
rotate([90,0,0]) | |
cylinder(d=MPCNC_OD,h=60); | |
translate([0,0,MPCNC_Z]) // improve flange slot clearance | |
rotate([90,0,0]) | |
cylinder(d=Flange[OD] + 1.0,h=Flange[LENGTH] + 0.5,center=true); | |
translate([0,Locknut_Offset - 0.5,MPCNC_Z]) // add locknut clearance | |
rotate([-90,0,0]) | |
cylinder(d=Locknut[OD] + 1.5,h=Locknut[LENGTH] + 1.5,center=false); | |
} | |
# translate([-(27.0 + Wall.x/2),0,0]) { // embiggen walls for higher spring constant | |
translate([0,-24.4,0]) | |
cube(Wall); | |
translate([0,20.6 - Wall.y,0]) | |
cube(Wall); | |
} |