public MouseSetup(String FileName) : base(FileName) { data = new MexFile(FileName); foreach (var n in data.MOUSE_NODES.Nodes) { Nodes.Add(n.NodeID, new MUNode(n)); } foreach (var xsec in data.MOUSE_CROSS_SECTIONS.Cross_Sections) { Xsecs.Add(xsec.CRSID, xsec); } foreach (var l in data.MOUSE_LINKS.Links) { MULink newlink = new MULink(l); Links.Add(l.LinkID, newlink); newlink.UpstreamNode = Nodes[newlink.pfslink.FromNode]; newlink.DownstreamNode = Nodes[newlink.pfslink.ToNode]; Nodes[newlink.UpstreamNode.pfsnode.NodeID].Links.Add(newlink); Nodes[newlink.DownstreamNode.pfsnode.NodeID].Links.Add(newlink); Cross_Section xsec; if(Xsecs.TryGetValue(l.CrsID, out xsec)) newlink.Xsec = xsec; } }
public MouseSetup(String FileName) : base(FileName) { data = new MexFile(FileName); foreach (var n in data.MOUSE_NODES.Nodes) { Nodes.Add(n.NodeID, new MUNode(n)); } foreach (var xsec in data.MOUSE_CROSS_SECTIONS.Cross_Sections) { Xsecs.Add(xsec.CRSID, xsec); } foreach (var l in data.MOUSE_LINKS.Links) { MULink newlink = new MULink(l); Links.Add(l.LinkID, newlink); newlink.UpstreamNode = Nodes[newlink.pfslink.FromNode]; newlink.DownstreamNode = Nodes[newlink.pfslink.ToNode]; Nodes[newlink.UpstreamNode.pfsnode.NodeID].Links.Add(newlink); Nodes[newlink.DownstreamNode.pfsnode.NodeID].Links.Add(newlink); Cross_Section xsec; if (Xsecs.TryGetValue(l.CrsID, out xsec)) { newlink.Xsec = xsec; } } }
public double GetChainage(MULink link) { int i = 0; double chainage = 0; while (Links[i] != link) { chainage += Links[i].Length; i++; } return(chainage); }
public double GetChainage(MULink link) { int i=0; double chainage=0; while (Links[i] != link) { chainage += Links[i].Length; i++; } return chainage; }
private void TraverseLink(MULink link) { List <MULink> branch = new List <MULink>(); Branches.Add(new MuBranch() { Links = branch }); MUNode NextNode = link.DownstreamNode; MULink NextLink = link; while (NextNode != null) { RemainingLinks.Remove(NextLink.pfslink.LinkID); branch.Add(NextLink); if (NextNode.Links.Count == 2) { NextLink = NextNode.Links.First(LL => LL != NextLink); if (NextLink.DownstreamNode != NextNode) //To avoid loop when two branches end in the same point { NextNode = NextLink.DownstreamNode; } else { NextNode = null; } } else if (NextNode.Links.Count > 2) { var n = NextNode.Links.Where(L => L != NextLink).FirstOrDefault(L => L.Xsec != null && NextLink.Xsec != null && L.Xsec.CRSID.StartsWith(NextLink.Xsec.CRSID.Substring(0, 4))); if (n != null) { NextLink = n; NextNode = NextLink.DownstreamNode; } else { NextNode = null; } } else { NextNode = null; } } }
private void TraverseLink(MULink link) { List<MULink> branch = new List<MULink>(); Branches.Add(new MuBranch() { Links = branch }); MUNode NextNode = link.DownstreamNode; MULink NextLink = link; while (NextNode != null) { RemainingLinks.Remove(NextLink.pfslink.LinkID); branch.Add(NextLink); if (NextNode.Links.Count == 2) { NextLink = NextNode.Links.First(LL => LL != NextLink); if (NextLink.DownstreamNode != NextNode) //To avoid loop when two branches end in the same point NextNode = NextLink.DownstreamNode; else { NextNode = null; } } else if (NextNode.Links.Count > 2) { var n = NextNode.Links.Where(L => L != NextLink).FirstOrDefault(L => L.Xsec != null && NextLink.Xsec != null && L.Xsec.CRSID.StartsWith(NextLink.Xsec.CRSID.Substring(0, 4))); if (n != null) { NextLink = n; NextNode = NextLink.DownstreamNode; } else NextNode = null; } else { NextNode = null; } } }