Somewhat encouraged by the results of the height-map cap atop the plotter’s pen holder, I figured a unified knife adapter and stabilizer cap would work even better. That requires enough accuracy to build a real solid model, rather than just sketch a height map…
Print out the the grid-overlaid image of the pen holder, then doodle coordinates & measurements all over the poor thing:

Now I can toss that piece of paper…
That, plus a bit of digital caliper work, produces a flurry of dimensions & an array of vertices:
//-- Plotter pen holder stabilizer HolderPlateThick = 3.0; // thickness of plate atop holder RimHeight = 5.0; // rim around sides of holder RimThick = 2.0; HolderOrigin = [17.0,12.2,0.0]; // center of pen relative to polygon coordinates HolderZOffset = 30.0; // top of holder in pen-down position HolderTopThick = 1.7; // top of holder to top of pen flange HolderCylinderLength = 17.0; // length of pen support structure HolderKnifeOffset = -2.0; // additional downward adjustment range (not below top surface) LockScrewInset = 3.0; // from right edge of holder plate LockScrewOD = 2.0; // tap for 2.5 mm screw // Beware: update hardcoded subscripts in Stabilizer() when adding / deleting point entries HolderPlate = [ [8.6,18.2],[8.6,23.9], // 0 lower left corner of pen recess [13.9,23.9],[13.9,30.0], // 2 // [15.5,30.0],[15.5,25.0], // 4 omit middle of support beam // [20.4,25.0],[20.4,30.0], // 6 [22.7,30.0],[22.7,27.5], // 4 [35.8,27.5],[35.8,20.7], // 6 spring box corner [43.0,20.7], // 8 [31.5,0.0], // 9 // [24.5,0.0],[24.5,8.0], // 10 omit pocket above pen clamp // [22.5,10.0],[22.5,16.5], // 12 // [20.5,18.2] // 14 [13.6,0.0], // 10 [8.6,5.0] // 11 ]; BeamWidth = HolderPlate[4][0] - HolderPlate[2][0];
The general idea is to extrude the overall shape of the stabilizer cap, carve out chunks to fit it onto the pen holder, then add a cylinder around the knife bearing:

The OpenSCAD source code contains a bunch of magic numbers and indexes that pull values from the vertex array:
module Stabilizer(SeeKnife = false) {
difference() {
union() {
translate(-HolderOrigin) // put center of pen at origin
difference() {
render(convexity=4)
linear_extrude(height=(HolderPlateThick + RimHeight)) // overall flange around edges
offset(r=RimThick)
polygon(points=HolderPlate);
render(convexity=4)
translate([0,0,-Protrusion]) // recess for pen holder plate
linear_extrude(height=(RimHeight + Protrusion))
polygon(points=HolderPlate);
translate([HolderPlate[7][0] - Protrusion,HolderPlate[7][1] - Protrusion,-Protrusion]) // trim spring box from top plate
cube([30,20,(RimHeight + HolderPlateThick + 2*Protrusion)]);
translate([27.0,HolderPlate[6][1] - Protrusion,-Protrusion]) // trim pivot plate clearance
cube([30,20,(RimHeight + HolderPlateThick + 2*Protrusion)]);
translate([HolderPlate[2][0],20,-Protrusion]) // trim left support beam
cube([BeamWidth,20,(RimHeight + Protrusion)]);
translate([HolderPlate[9][0] - LockScrewInset,RimThick,RimHeight - HolderTopThick - LockScrewOD/2]) // lock screw on front edge
rotate([90,0,0])
rotate(180/4)
PolyCyl(LockScrewOD,3*RimThick); // hold-down screw hole
}
translate([0,0,(RimHeight - HolderCylinderLength + Protrusion)])
cylinder(d=BodyOD,h=HolderCylinderLength + Protrusion,$fn=NumSides); // surround knife threads
}
translate([0,0,-HolderZOffset + HolderKnifeOffset])
if (SeeKnife)
# Knife();
else
Knife();
}
}
A bottom view shows all the cutouts:

The little hole in the front fits a screw that will pass under the top plate of the pen holder and prevent the cutting forces from pushing it off.
As with the Sakura pen adapter, the knife point sits at (0,0,0) with the stabilizer cap positioned at the (estimated) top of the pen holder:

After a few print-and-try iterations to align all the fiddly cutouts:

The slope-topped block protruding toward you from the bottom right actuates the carousel’s pen capping mechanism; it doesn’t quite touch the side of an HP pen and is well clear of the knife holder.
Because there’s still no depth control surrounding the knife blade, this won’t work well at all, but it should suffice for better measurements.
The full source code is back at the beginning.