Cloned shapes connections does not route correctly


https://www.nevron.com/Forum/Topic12684.aspx
Print Topic | Close Window

By Niranjan Singh - 3 Years Ago
Hi Team,

I am adding shapes from one DrawingDocument to another after cloning.

public static NDrawingDocument CopyDigram(NDrawingDocument nProjectDiagram, NDrawingDocument nSystemTemplateDiagram, Dictionary<string, string> oldNewComponentIds)
{
for (int i = 0; i < nSystemTemplateDiagram.ActiveLayer.ChildrenCount(null); i++)
  {
   Hashtable mapUids = new Hashtable();
   INNode node = nSystemTemplateDiagram.ActiveLayer.GetChildAt(i);
if (node is NCompositeShape)
   {
    NShape soruceDiagramShape = (NShape)node;
NShape shape = soruceDiagramShape.CloneWithNewUniqueId(mapUids) as NShape;
shape.UniqueId = Guid.Parse(oldNewComponentIds[soruceDiagramShape.UniqueId.ToString()]); //Replace guid from
    nProjectDiagram.ActiveLayer.AddChild(shape);

}
else if (node is NRoutableConnector)
   {
NRoutableConnector sourceDiagramConnector = (NRoutableConnector)node;
NRoutableConnector connector = templateDiagramConnector.CloneWithNewUniqueId(mapUids) as NRoutableConnector;
    connector.UniqueId = Guid.Parse(oldNewComponentIds[templateDiagramConnector.UniqueId.ToString()]);
    //connector.RerouteAutomatically = RerouteAutomatically.Always;
    //connector.Location = templateDiagramConnector.Location;
    nProjectDiagram.ActiveLayer.AddChild(connector);
}

//Iterate all connectors from source diagram and find corroessponding shape and port to connect in new diagram
connector.StartPlug.Connect(sourceShapePort);
connector.EndPlug.Connect(targetShapePart);
connector.Reroute();// Not working
  }
}


Source Diagram:
https://www.nevron.com/forum/uploads/images/5873770c-5b19-443e-bbf7-d0f3.png
Routing is not correct in copying diagram
https://www.nevron.com/forum/uploads/images/fffe2e5c-ba7e-4d79-b1cd-5c9a.png
Please suggest that how can we correct routing of these dynamically added shapes in the drawing document.
Note: All events are detached from these diagrams.