public void ConstructPolyLines() { try { while (segments.Count != 0) { if (!segments[0].isValid) { segments.RemoveAt(0); continue; } Polyline2D ply = new Polyline2D(); ply.Add(segments[0].p1); Point2D curpt = segments[0].p2; ply.Add(curpt); polys.Add(ply); segments.RemoveAt(0); bool segmentFound = true; while (segmentFound) { int i = 0; segmentFound = false; while (i < segments.Count) { Segment2D seg = segments[i]; if (seg.isValid && Object.ReferenceEquals(seg.p1, curpt)) { curpt = seg.p2; if (Object.ReferenceEquals(curpt, ply.points[0])) { ply.isClosed = true; segments.RemoveAt(i); segmentFound = false; break; } ply.Add(curpt); segments.RemoveAt(i); segmentFound = true; } else if (seg.isValid && Object.ReferenceEquals(seg.p2, ply.points[0])) { ply.points.Insert(0, seg.p1); segments.RemoveAt(i); segmentFound = true; } else { i++; } } } } } catch (Exception ex) { DebugLogger.Instance().LogError(ex); } }
public void ConstructPolyLines() { try { while (segments.Count != 0) { if (!segments[0].isValid) { segments.RemoveAt(0); continue; } Polyline2D ply = new Polyline2D(); ply.Add(segments[0].p1); Point2D curpt = segments[0].p2; ply.Add(curpt); polys.Add(ply); segments.RemoveAt(0); bool segmentFound = true; while (segmentFound) { int i = 0; segmentFound = false; while (i < segments.Count) { Segment2D seg = segments[i]; if (seg.isValid && Object.ReferenceEquals(seg.p1, curpt)) { curpt = seg.p2; if (Object.ReferenceEquals(curpt, ply.points[0])) { ply.isClosed = true; segments.RemoveAt(i); segmentFound = false; break; } ply.Add(curpt); segments.RemoveAt(i); segmentFound = true; } else if (seg.isValid && Object.ReferenceEquals(seg.p2, ply.points[0])) { ply.points.Insert(0, seg.p1); segments.RemoveAt(i); segmentFound = true; } else i++; } } } } catch (Exception ex) { DebugLogger.Instance().LogError(ex); } }