Вы вдохновили меня на это, так как мне нужно сделать нечто подобное.
Вот способ, который я нашел, чтобы заставить его работать. Эта подпрограмма берет ссылку на форму соединителя, скрывает автоматически проложенную линию, добавляет новый геометрический участок и вручную корректирует несколько точек в этом разделе (на основе процентной высоты / ширины первоначально видимой линии). Очевидно, что вы можете корректировать количество / местоположение программно.
Sub CustomRoutedConnector(shpConnectorShape As Shape)
With shpConnectorShape
'Hide the automatically routed connector line (still there, just hidden)
.CellsSRC(visSectionFirstComponent, 0, 2).FormulaU = "TRUE"
'Make a custom geometry section
.AddSection visSectionFirstComponent + 1
.AddRow visSectionFirstComponent + 1, visRowComponent, visTagComponent
.AddRow visSectionFirstComponent + 1, visRowVertex, visTagLineTo
.AddRow visSectionFirstComponent + 1, visRowVertex, visTagMoveTo
'Set up the new geometry section rows (11,1 and 11,2 are the start and end rows)
.CellsSRC(11, 0, 0).FormulaForceU = "TRUE"
.CellsSRC(11, 0, 1).FormulaForceU = "FALSE"
.CellsSRC(11, 0, 2).FormulaForceU = "FALSE"
.CellsSRC(11, 0, 3).FormulaForceU = "FALSE"
.CellsSRC(11, 0, 5).FormulaForceU = "FALSE"
.CellsSRC(11, 1, 0).FormulaU = "0"
.CellsSRC(11, 1, 1).FormulaU = "0"
.CellsSRC(11, 2, 0).FormulaU = "0"
.CellsSRC(11, 2, 1).FormulaU = "0"
'Add two additional rows for demonstration (could be programatically
'adjusted to however many points you need)
.AddRow visSectionFirstComponent + 1, 2, visTagLineTo
.CellsSRC(11, 2, 0).FormulaU = "0"
.CellsSRC(11, 2, 1).FormulaU = "0"
.AddRow visSectionFirstComponent + 1, 3, visTagLineTo
.CellsSRC(11, 3, 0).FormulaU = "0"
.CellsSRC(11, 3, 1).FormulaU = "0"
'Adjust the geometry of the rows (the doubles given are percentages of the height/width of the original connector)
'I recommend stepping through this to see how it moves the points:
.CellsSRC(visSectionFirstComponent + 1, 2, 0).FormulaU = ".5"
.CellsSRC(visSectionFirstComponent + 1, 3, 0).FormulaU = ".5"
.CellsSRC(visSectionFirstComponent + 1, 3, 1).FormulaU = ".5"
.CellsSRC(visSectionFirstComponent + 1, 4, 0).FormulaU = "1"
.CellsSRC(visSectionFirstComponent + 1, 4, 1).FormulaU = "1"
End With
End Sub
Конечные точки этого пользовательского маршрута все еще привязаны к начальной и конечной фигурам. Чтобы полностью уничтожить все автоматические маршруты, используйте свойство .LayoutRoutePassive
на странице . (Это может дать вам то, что вы ищете, но это займет некоторое время).