public override void DeleteVertex(SplineLinePoint lcp) { if (lcp is SplineSegmentLinePoint) { SplineSegmentLinePoint lcpNew = lcp as SplineSegmentLinePoint; RemoveFromAllCollections(lcpNew.inSeg); RemoveFromAllCollections(lcpNew.outSeg); if ((lcp.prev != null) & (lcp.next != null)) { SegmentSpline seg = new SegmentSpline(); seg.startPoint = lcp.prev as ISegmentPoint; seg.endPoint = lcp.next as ISegmentPoint; seg.spline = lcp.spline; _segment.Add(seg); AddTube(seg); lcp.prev.next = lcp.next; } lcpNew.spline = null; _point.Remove(lcpNew); } }
public override void AddVertex(SplineLinePoint lcp, LinePointAdditionMethod method) { if (lcp == null) { return; } if (!ConfirmCollection()) { return; } if (lcp is SplineSegmentLinePoint) { SplineSegmentLinePoint lcpNew = lcp as SplineSegmentLinePoint; AddPointComponent component = new AddPointComponent(); component.lcp = lcpNew; component.collection = new LinePointCollection <SplineSegmentLinePoint>(_point); switch (method) { case LinePointAdditionMethod.last: { component.strategy = new AddPointStrategyLast(); break; } case LinePointAdditionMethod.first: { component.strategy = new AddPointStrategyFirst(); break; } case LinePointAdditionMethod.intoSpline: { component.strategy = new AddPointStrategyIntoSpline(); break; } default: { break; } } component.Build(); if ((!component.Complite()) & (_point.Count > 1)) { return; } _point.Add(lcpNew); AddSegment(lcpNew); } }