Mr. Dude:
Thanks for taking the time to play around with the inarticulate articulated line.
I think it's not too difficult to make the arrowhead control points stay on the lines.
LOL! That is
precisely the issue I’ve been grappling with!
Some brief background: I’ve been using the simple, single-segment version of that line for years, adjusting the arrowheads as artistically necessary. There are times where I need to connect multiple single-segment lines into one longer, articulated line—I’ve found they are much better behaved than Visio’s native self-routing lines—but connecting multiple lines has its own foibles (accidentally disconnecting, losing right angles, issues with innie/outtie connection points, etc.), so laziness dictated that I try to build a better-behaved, multi-segment version of my classic single-segment arrowed line. Which brings us to the issue at hand.
As I mentioned, supporting multiple segments is no big deal; the issue is keeping those pesky arrowheads on top of their line on the additional segments. Obviously it has to begin with a row in the Controls section so that you can move the arrowheads to suit, but how do you limit things to keeping their endpoints on the host line segment? I tried several approaches, but it seems a true solution would be contradictory. You can’t GUARD the X and Y on the Controls; that defeats the purpose of the control. Nor can you use GUARD on the GEOMETRY section because the control points will still be free to go where they may. BOUND was handy to keep the arrowheads from exceeding the X-endpoints of the host line segment, but it’s constraining the control point itself that’s stumping me.
Having the arrowheads constrained to the line is important to me, because if it does not behave itself automatically, then I have to go in there and manually align things. That’s a cure worse than the disease.
One option I expected to hear was to use a group, but that has even more problems. You can hide the group-ness easily enough, but if you move the wrong line segment, the connection is broken. GUARDing the connection does not stop that if you move the unGUARDed side.
So I’m stumped. And I do not want a VBA solution. That’d be cheating. ;- )
- Ken