Splitting your own connectors


Visio 2010 has a new feature that allows you to insert and delete shapes in a diagram, automatically handling split and heal operations for connectors along the way.

For a detailed overview of this new functionality see this blog post by the product team:
Inserting and Deleting Shapes in Visio 2010

Dragging a shape to insert

Shape inserted on specified connector

I want to point out that you can update your shapes to participate in this new behavior with a few simple changes in the Shape’s ShapeSheet.

ShapeSheet Requirements

To get this to work for your shapes you have to make sure that the three participating objects are all configured properly, ie. the Page, the Shape that triggers the split, and the Connector that will split or heal.

Page

Open the PageSheet for the Page and set the PageShapeSplit cell in the Page Layout section to visPLOSplitAllow or 1.

PageShapeSplit = 1

clip_image001

This cell controls the connector splitting behavior for all shapes on the page.  If this cell is set to 0 then the split behavior will be disabled for all shapes on the page.

FYI - This cell can also be set from the Layout and Routing tab on the Page Setup dialog for the page:

clip_image002

Connector

Open the ShapeSheet for the Connector and set the ShapeSplittable cell in the Shape Layout section to visSLOSplittableAllow or 1.

ShapeSplit = 0

ShapeSplittable = 1

clip_image003

These are set from the Behavior tab on the Shape Behavior dialog which is accessible from the Developer tab on the Ribbon.

clip_image004

Notice the UI disables the ‘Shape can split connectors’ option as this is a 1-D shape and meant to be the connector shape.

You also need to set the ObjType cell (in the Miscellaneous section) to visLOFlagsRoutable or 2.  If this is not set to routable then other shapes will not move to make room for the shape that is inserted.

clip_image005

FYI - This cell is only accessible via the ShapeSheet.

Shape that cause the connector to split

The shape that will trigger the splitting also needs to have its ShapeSplit cell (in the Shape Layout section) set to visSLOSplitAllow or 1.

ShapeSplit = 1

ShapeSplittable = 0

This can also be set from the Behavior tab on the Shape Behavior dialog:

clip_image006