Sub Test() Dim sp As SubPath Dim t As Double For Each sp In ActiveShape.Curve.Subpaths For t = 0 To 0.9 Step 0.1 MarkPoint sp, t Next t Next spEnd SubPrivate Sub MarkPoint(sp As SubPath, t As Double) Dim x As Double, y As Double Dim dx As Double, dy As Double Dim a1 As Double, a2 As Double sp.GetPointPositionAt x, y, t, cdrRelativeSegmentOffset a1 = sp.GetTangentAt(t, cdrRelativeSegmentOffset) * 3.1415926 / 180 a2 = sp.GetPerpendicularAt(t, cdrRelativeSegmentOffset) * 3.1415926 / 180 dx = 0.5 * Cos(a1) dy = 0.5 * Sin(a1) With ActiveLayer.CreateLineSegment(x, y, x + dx, y + dy) .Outline.EndArrow = ArrowHeads(1) End With dx = 0.5 * Cos(a2) dy = 0.5 * Sin(a2) With ActiveLayer.CreateLineSegment(x, y, x + dx, y + dy) .Outline.EndArrow = ArrowHeads(1) End WithEnd Sub