BB code in posts seems to be working again!
I haven't turned on every single tag, so please let me know if there are any that are used/needed but not activated.

Main Menu

supress connector jumps due to hidden connectors

Started by hughmcc, October 04, 2010, 07:54:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


I am not sure this is possible. 
Desired outcome: Supress connector line jumps caused by hidden connector lines
Application:  Single line piping diagrams using connectors with multiple piping layers
Desired:  when a piping layer is hidden, that hidden layer should not cause jumps to be activated for the visible lines. In other words, the visible lines should not be shown as jumping invisible lines.
Example: Assume there are several piping "systems" in a plant such as "Natural Gas", "Steam", "Hydrogen", "Water".  Each of these systems service multiple "units".  Each system is on its own layer.  When all systems are displayed, lines for separate systems jump other systems' lines as well as its own system (as they should).  However, i would like to be able to display, say, only the "natural gas" system.  With just the "natural gas" piping system displayed, the line jumps (gaps) should result from the crossing of visible "natural gas" lines and not from a visible "natural gas" line crossing the invisible line from another hidden system.
Is there a way to do that?



I have to do sth. similar, but I don't use layers. My page has custom properties (ShapeData) where I select for each type of pipe if it is visible or not.
All connectors of that type, say all fresh-water-pipes, have a formula in their Geometry1.NoShow cell, that look at that ShapaData-cell and make the connector visible or not. In the ObjType cell in the Miscellaneous section is a formula, too that sets the Objecttype to 2 it the connector is visible and 4 otherwise. That takes care of the line jumps, because only with ObjType2 do connectors participate at layout and routing.

I don't know how and if such a solution can be combined with layers. But maybe their is a way?



Just made a test with layers:

The following formula takes care of the ObjType with looking at the layers:


The [2] is the number of the layer. This has to vary with your different type of connectors. If your drawing is already drawn, it could be awkward, to implement that formulas to all connectors, but a simple VBA macro should be able to add that formula to all desired connectors.



wow!  Thanks for the effort and the reply!  It looks like i am going to have to dig into visio programming a lot!  Is there another way to get to the point that you are at in "programming" visio other than a slow slog through the developer reference that is part of Visio?  It seems very vague or at best assumes one has a lot of VB or VBA background.  Any recommended sites, books, etc.  that take it from the basics?  Lot of things i would like to do with visio.
Thanks again,


I'm from Germany and therefore only can recommend one in German. The other members of this forum can hopefully answer this better. Especially when books for starting programming with Visio are needed.

The only English book I know is quite good: Visio 2003 Developer's Survival Pack from Graham Wideman. But its 2003 and maybe not for beginners and quite rare and therefore expensive.


Visio Guy

In addition to Graham Wideman's excellent book, there is also David Parker's Visualizing Information with Microsoft Visio 2007. It is aimed at Visio 2007 and is a nice blend for power-users and programmers. See also: Book Review: Visualizing Information with Microsoft Office Visio 2007

Jumpy welches Buch empfehlst du für die Deutschsprachigevisioentwickler?
For articles, tips and free content, see the Visio Guy Website at
Get my Visio Book! Using Microsoft Visio 2010


Es gibt soweit ich weiß nur ein Buch zur Visio-Programmierung in Deutsch:
René Martin - Microsoft Visio 2007-Programmierung

Dies ist für Anfänger sehr gut geeignet, d.h. auch die Grundlagen von VBA werden kurz erklärt. Dazu ein dickes Kapitel über das ShapeSheet. Dafür fehlen dem Fortgeschrittenen sicher einige Dinge, die er dann in englischen Büchern (Wideman, Parker) nachschlagen sollte.

Nur über ShapeSheet Formeln und bereits etwas älter gibt es noch:
Senaj Lelic - Visio 2002. Das Entwicklerhandbuch. Programmierung im Shapesheet

Hab es nur überflogen. Bietet einen Einstieg in die ShapeSheet-Programmierung, ist aber etwas zu alt, d.h. so feine Sachen wie die Familie der SETATREF-Funktionen gibt es da noch nicht erklärt, wenn ich mich recht erinnere.


I only know of one book, covering Visio programing in german and that's:
René Martin - Microsoft Visio 2007-Programmierung

It's a good book for beginners, because the basics of VBA are explained a little bit. Then there's a big chapter about the ShapeSheet.
The more advanced Visio programmer may miss a few things, which he then has to look up in the english books  (Wideman, Parker).

Then there's one book, about the ShapeSheet only, that's a little bit older:
Senaj Lelic - Visio 2002. Das Entwicklerhandbuch. Programmierung im Shapesheet

Only scimmed it. It gives a start into ShapeSheet programming, but is a little bit too old nowerdays. Nice things like the familiy of SETATREF-functions is not mentioned,if I remember correctly.


Thanks for the recommendations.  I just ordered the Graham Wideman and David Parker books.  Wideman may do more than i want but the Table of Contents has some good "stuff".  Looking forward to jumping into these. 



I had the same kind of problem. I'm drawing a wiring schematics with multiple layers to show different levels of the total wiring schematics.
It was a good idea to control the jump characteristics by layer visibilty, but as it was written above i understood it as it needed to be hard-coded. I wanted the connector to find out for itself which layer it was assigned to.

It did not work when putting a variable in the "ThisPage!Layers.Visible[LayerMember]". Instead I needed to find a way to make the shapesheet evaluate a string expression that could be updated dynamically.

I created two User defined cells:

User.EvaluateString | SETF(GetRef(User.WireVisible),"ThePage!Layers.Visible["&LayerMember+1&"]")
(The + 1 is because LayerMember is zero indexed, but Layers i 1-indexed...)
User.WireVisible | empty

Then I used User.WireVisible to descide the jump charactaristics of the connector

ConLineJumpCode | IF(User.WireVisible=0,2,0)

NOTE! I have a design rule in my schematics that a connector can only be in one layer at a time.

/Anders Aadin
Anders Aadin

Browser ID: smf (possibly_robot)
Templates: 4: index (default), Display (default), GenericControls (default), GenericControls (default).
Sub templates: 6: init, html_above, body_above, main, body_below, html_below.
Language files: 4: index+Modifications.english (default), Post.english (default), Editor.english (default), Drafts.english (default).
Style sheets: 4: index.css, attachments.css, jquery.sceditor.css, responsive.css.
Hooks called: 314 (show)
Files included: 34 - 1306KB. (show)
Memory used: 1154KB.
Tokens: post-login.
Cache hits: 13: 0.00116s for 26,766 bytes (show)
Cache misses: 2: (show)
Queries used: 16.

[Show Queries]