You can find a preview version implementing shape control points here:
https://mindfusion.eu/_beta/fcnet61_shape_cpoints.zipFor each point, you can specify the name you want to use in the script, its default, min and max coordinates, and whether to treat the values as percents or fixed offset:
string arrow60deg = @"
x1 = p1.X;
y1 = p1.Y;
x2 = IIf(Width>=2*Height,0.5*Height*Tan(PI/6), 0.15*Width);
x3 = IIf(Width>=2*Height, Height/4, 0.15*Width);
MoveTo(0, Height * 0.5);
LineTo(x1 , Height);
LineTo(x1, Height - y1);
LineTo(Width -x3 -x2 -x2, Height - y1);
LineTo(Width -x3 -x2, Height);
LineTo(Width, Height);
LineTo(Width * p2.X / 100, Height * p2.Y / 100);
LineTo(Width, 0);
LineTo(Width - x3 -x2, 0);
LineTo(Width -x3 -x2 -x2, y1);
LineTo(x1, y1);
LineTo(x1, 0);
LineTo(0, Height * 0.5);
";
diagram.DefaultShape = new Shape(arrow60deg, "", new List<ShapeControlPoint>
{
new ShapeControlPoint("p1",
20, 0, 100, AnchorUnitType.Fixed,
20, 0, 100, AnchorUnitType.Fixed),
new ShapeControlPoint("p2",
80, 60, 100, AnchorUnitType.Percentage,
50, 50, 50, AnchorUnitType.Percentage)
},
"arrow60deg");
With that code, you will be able to move the point where the arrowhead meets the shaft, and the quill end point. The vertical position of the latter is constrained to the middle of the node's height:

I hope that helps,
Stoyan