Share:

" /> Visio Guy » Text Along a Connector’s Path in Microsoft Visio 2010
Home » Shapes, ShapeSheet, Visio 2010

Text Along a Connector’s Path in Microsoft Visio 2010

Submitted by on February 9, 2010 – 8:46 am | | 80049 views 58 Comments

A feature lacking in Visio, like for-EVER, is the ability to align text along a connector’s path.

Now, Visio 2010’s new ShapeSheet functions and capabilities finally deliver.

Today we’ll show-off the cool new connector that I’ve developed for you, and get a very light technical explanation as to how it works!

In a previous post, I was re-creating (for fun!) a flowchart that I had seen in the Süddeutsche Zeitung.

In that flowchart, I needed to place connector-text along the actual line of the connector. Every time I adjusted the drawing, the angle of the connector changed, and I had to re-orient the text using the Text Block Tool.

You can see here how I am hastening the onset of arthritis with too much mousing:

Getting connector text to do this automatically is something I’ve wanted to implement for a long, long time. But the ShapeSheet couldn’t do it. I always needed to resort to code to get it to happen.

Today, however, I fired up my Visio 2010 beta and put some new features to work. The result is a connector that places text at the very end, rotated to match the angle of the last part of the connector.

No matter how many segments the connector has, what the terminal angle is, or the line-style, the text ends up in a reasonable position, and correctly aligned with the end:

Not bad, eh?

New ShapeSheet Capabilities Make it Possible!

Visio has added two new functions that I’ve used in two custom User-defined cells of the connector’s ShapeSheet. Take a gander:

User.angPathEnd = ANGLEALONGPATH( Geometry1.Path, 1 )
User.pntPathEnd = POINTALONGPATH( Geometry1.Path, 1 )

Not only do we have new functions in Visi0 2010, but we are able to refer to new types of objects. Up until now, we had to refer to ShapeSheet cells, and only ShapeSheet cells. But you can see that “Geometry1.Path” refers to a thing–a geometry section that is a group of cells. That’s new, and it’s pretty useful.

As you use an automatic connector in Visio, extra segments get added or removed from the connector. This has made it impossible to refer to the “last point” and “next-to-last point”, because ShapeSheet cells were being created and destroyed as the connector was reconfigured.

Now I can simply ask the ShapeSheet to tell me the angle along the path of “Geometry1.Path”, at 100% along the path’s lenght (that’s the “1” you see in both functions)

Using similar syntax, I can ask for the end point too. The illustrated POINTALONGPATH function tells returns a Visio point-structure (combination of x- and y-values) for the point which is 100% of the way along Geometry1.Path.

This information was enough for me to relocated the shape’s text at the very end of the connector, offset and rotated correctly.

Bonus Features

Getting the text to be aligned at the end of the connector was fun. But I thought; “Hmm. That control handle that you can use to move text on Visio’s default connectors is also pretty cool!”

So I added a right-click context menu action to allow you to choose.

Notice the new, context Action menus that feature the fly-out, cascading items! You can read about these on John Goldsmith’s Custom Context Menus.

Here’s another look at the variations:

Have fun with this new connector. Note that this file uses new features available only in Visio 2010. while the file will likely open in Visio 2007 or Visio 2003, the shape won’t work as advertised.

If you don’t have Visio 2010, you might investigate getting a copy of the beta: Visio 2010 Beta: Sign Up Now!

Text Along Connector 2010 (51.8 KB) - 6191

58 Comments »

  • Massimo says:

    hello
    I have a question
    you can change the color of a dynamic connector in c# I tried this code:
    //set lable color
    connector.Characters.set_CharProps(
    (short)Microsoft.Office.Interop.Visio.
    VisCellIndices.visCharacterColor,
    (short)Utilities.GetVisioColor(Colors.Olive));

    //set the shape back color
    connector.get_CellsSRC((short)VisSectionIndices.visSectionObject,
    (short)VisRowIndices.visRowFill, (short)VisCellIndices.visFillForegnd).FormulaU = “RGB(0,128,0)”;

    but it does not work change the color but not dell’ettichetta connector
    thanks anyway

  • Joshua Colson says:

    Hi Visio Guy,

    I’m experiencing the same issue that Brian92127 is above. I’m also using Visio 2013 (64-bit). The connectors work, but it seems that the text box location and orientation is not recalculated when the file is opened. Do you have any thoughts as to why that could be?

    Thanks!

  • Visio Guy says:

    Hi Brian92127 and Joshua Colson,

    I’m pretty sure I’ve seen the problems you’ve experienced, but I can’t recall in detail, and I don’t have time to investigate right now. Comment back in a few weeks to remind me to look at it again!

  • Joshua Colson says:

    Hello again Visio Guy,

    Thank you for responding. I’ve been digging and while I haven’t found the problem, I did find some additional information. It would seem there are others having the issue and one person found that saving the document in Visio 2010 format is a workaround to the problem. That is, assuming no 2013 features are required in the diagram.

    See Dynamic Connector’s Text Randomly Moves

  • Bradford says:

    Hi Visio Guy,

    Is there a way to center the text?

  • Joshua Colson says:

    Bradford, this isn’t an elegant solution because of some of the embedded names in the custom fields that Visio Guy created, however…

    Right-click the shape, and select “Show Shapesheet”, then look for the section called “User-defined Cells”, change the formula for User.angPathEnd from:

    “=ANGLEALONGPATH(Geometry1.Path,1)”

    to

    “=ANGLEALONGPATH(Geometry1.Path,0.5)”

    …and change User.pntPathEnd from:

    “=POINTALONGPATH(Geometry1.Path,1)”

    to

    “=POINTALONGPATH(Geometry1.Path,0.5)”

    Also note, unless you edit the ‘Text-at-end dynamic connector’ master shapesheet, the change will only affect your selected shape, and not all of them on the page.

    Good luck!


    Joshua Colson

  • Joshua Colson says:

    Also, if it wasn’t obvious already, you can move the text to wherever you’d like along the path by adjusting that value. It is a percentage along the path, so 1 = 100% and 0.5 = 50%, and so on.

  • Bradford says:

    awesome, thanks for reply.

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" extra="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.

*