Two different Views of the same data

Hi,
I have a graph of sorts represented in memory, what I want to do is be able to review it in two different ways, its likely
nodea->nodeb->nodec could be nodea->nodec where nodea becomes nodea and b
if i draw out the first example that says nodea->nodeb->nodec is there anyway I can say… nodeb.visible = false and then have nodea and nodec connected together still?
Thanks,
Phil

The easiest thing would be to make B not Visible and all of the links that connect to B, and then make a link from A to C Visible.
foreach (IGoLink link in B.Links) { link.GoObject.Visible = false; }
Conversely, when you make B and its links Visible, you need to make not Visible the links that connect nodes at the ends of the links that just became Visible.
OK, so here is some completely untested code, generalized for any kind of node, handling all links coming into the node (source links) and all links going out of the node (destination links) and all links that go directly from source ports to destination ports:
public void ShowNode(IGoNode B, bool show) {
B.GoObject.Visible = show;
foreach (IGoLink inlink in B.SourceLinks) {
// change the Visible property for all of B’s input links
inlink.GoObject.Visible = show;
IGoPort src = inlink.FromPort;
foreach (IGoLink outlink in B.DestinationLinks) {
// change the Visible property for all of B’s output links
outlink.GoObject.Visible = show;
// find any links that directly connect source ports to destination ports
IGoPort dst = outlink.ToPort;
foreach (IGoLink direct in src.DestinationLinks) {
if (direct.ToPort == dst) {
// and give them the opposite Visible property value
direct.GoObject.Visible = !show;
}
}
}
}
}
Pardon me if there are any bugs; I hope you get the idea for how to traverse a graph.

thank you very much…
you have just answered one of my questions in advance… well done ;-)
I was wondering if it had any re-linking algorithm…
if a…b…c…d are connected… I want to show a… b… c… d as one node only and maintain the links incoming from a and outgoing from d… is that possible?

Are you trying to achieve something different than what you described in your original post? Or can you get what you want by hiding B, C, and D, using the code I posted earlier, and making sure there are links from A to all of D’s destinations?