public override void Undo(CadObjectDB db) { CadFigure parent = db.GetFigure(ParentID); CadFigure child = db.GetFigure(ChildID); parent.ChildList.Remove(child); child.Parent = null; }
public override void Undo(CadObjectDB db) { CadFigure parent = db.GetFigure(ParentID); foreach (uint childID in ChildIDList) { CadFigure fig = db.GetFigure(childID); parent.AddChild(fig); } }
public override void Redo(CadObjectDB db) { CadFigure parent = db.GetFigure(ParentID); foreach (uint childID in ChildIDList) { parent.ChildList.RemoveAll(a => a.ID == childID); CadFigure fig = db.GetFigure(childID); fig.Parent = null; } }
public static EditResult Cut(CadObjectDB db, CadFigure fig, int sp) { EditResult result = new EditResult(); if (fig.Type != CadFigure.Types.POLY_LINES) { return(result); } if (fig.IsLoop) { return(result); } int pcnt = fig.PointCount; int headNum = sp + 1; int tailNum = pcnt - sp; CadFigure headFig = null; CadFigure tailFig = null; if (headNum <= 1 || tailNum <= 1) { return(result); } if (headNum >= 2) { headFig = db.NewFigure(CadFigure.Types.POLY_LINES); headFig.AddPoints(fig.PointList, 0, headNum); } if (tailNum >= 2) { tailFig = db.NewFigure(CadFigure.Types.POLY_LINES); tailFig.AddPoints(fig.PointList, sp, tailNum); } if (headFig != null) { result.AddList.Add(new EditResult.Item(fig.LayerID, headFig)); } if (tailFig != null) { result.AddList.Add(new EditResult.Item(fig.LayerID, tailFig)); } result.RemoveList.Add(new EditResult.Item(fig.LayerID, fig)); return(result); }
public void Search(DrawContext dc, CadObjectDB db, CadLayer layer) { if (layer == null) { return; } for (int i = 0; i < layer.FigureList.Count; i++) { CadFigure fig = layer.FigureList[i]; CheckFigure(dc, layer, fig); } }
public void SearchAllLayer(DrawContext dc, CadObjectDB db) { Search(dc, db, db.CurrentLayer); for (int i = 0; i < db.LayerList.Count; i++) { CadLayer layer = db.LayerList[i]; if (layer.ID == db.CurrentLayerID) { continue; } Search(dc, db, layer); } }
public static EditResult CutSegment(CadObjectDB db, MarkSegment seg, Vector3d p) { EditResult result = new EditResult(); if (seg.Figure.Type != CadFigure.Types.POLY_LINES) { return(result); } CrossInfo ci = CadMath.PerpendicularCrossSeg(seg.pA.vector, seg.pB.vector, p); if (!ci.IsCross) { return(result); } CadFigure org = db.GetFigure(seg.FigureID); int a = Math.Min(seg.PtIndexA, seg.PtIndexB); int b = Math.Max(seg.PtIndexA, seg.PtIndexB); CadFigure fa = db.NewFigure(CadFigure.Types.POLY_LINES); CadFigure fb = db.NewFigure(CadFigure.Types.POLY_LINES); fa.AddPoints(org.PointList, 0, a + 1); fa.AddPoint(new CadVertex(ci.CrossPoint)); fb.AddPoint(new CadVertex(ci.CrossPoint)); fb.AddPoints(org.PointList, b); if (org.IsLoop) { fb.AddPoint(fa.GetPointAt(0)); } result.AddList.Add(new EditResult.Item(seg.LayerID, fa)); result.AddList.Add(new EditResult.Item(seg.LayerID, fb)); result.RemoveList.Add(new EditResult.Item(org.LayerID, org)); return(result); }
public void Search(DrawContext dc, CadObjectDB db, CadLayer layer) { if (layer == null) { return; } if (!layer.Visible) { return; } MinDist = CadConst.MaxValue; for (int i = layer.FigureList.Count - 1; i >= 0; i--) { CadFigure fig = layer.FigureList[i]; CheckFig(dc, layer, fig); } }
public override void Undo(CadObjectDB db) { db.InserLayer(Layer, Index); }
public override void Redo(CadObjectDB db) { db.RemoveLayer(Layer.ID); }
public override void Undo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.InvertDir(); }
public override void Redo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.Normal = NewNormal; }
public override void Undo(CadObjectDB db) { MpUtil.Lz4BinRestoreFig(Before, db); }
public override void Redo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.AddPoint(Point); }
public override void Undo(CadObjectDB db) { Layer.FigureList = OldList; }
public override void Dispose(CadObjectDB db) { db.RelaseFigure(FigureID); }
public override void Redo(CadObjectDB db) { CadLayer layer = db.GetLayer(LayerID); layer.RemoveFigureByID(db, FigureID); }
public override void Redo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.IsLoop = Close; }
public virtual void Dispose(CadObjectDB db) { }
public abstract void Redo(CadObjectDB db);
public override void Redo(CadObjectDB db) { MpUtil.Lz4BinRestoreFig(After, db); }
public HistoryManager(CadObjectDB db) { mDB = db; }
public override void Redo(CadObjectDB db) { Layer.FigureList = NewList; }
public override void Undo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.Normal = OldNormal; }
public static EditResult Bond(CadObjectDB db, CadFigure fig) { EditResult result = new EditResult(); if (fig.LayerID == 0) { return(result); } if (fig.IsLoop) { return(result); } CadLayer layer = db.GetLayer(fig.LayerID); CadVertex ps = fig.PointList[0]; CadVertex pe = fig.PointList[fig.PointCount - 1]; int pi = -1; int bpi = -1; CadFigure bfig = null; foreach (CadFigure tfig in layer.FigureList) { if (tfig.ID == fig.ID) { continue; } if (tfig.IsLoop) { continue; } CadVertex tps = tfig.PointList[0]; CadVertex tpe = tfig.PointList[tfig.PointCount - 1]; if (tps.Equals(ps)) { bpi = 0; pi = 0; bfig = tfig; break; } if (tps.Equals(pe)) { bpi = 0; pi = fig.PointCount - 1; bfig = tfig; break; } if (tpe.Equals(ps)) { bpi = tfig.PointCount - 1; pi = 0; bfig = tfig; break; } if (tpe.Equals(pe)) { bpi = tfig.PointCount - 1; pi = fig.PointCount - 1; bfig = tfig; break; } } if (pi < 0) { return(result); } CadFigure newFig = db.NewFigure(CadFigure.Types.POLY_LINES); VertexList plist = new VertexList(fig.PointList); VertexList blist = new VertexList(bfig.PointList); if (pi == 0) { plist.Reverse(); } if (bpi != 0) { blist.Reverse(); } newFig.PointList.AddRange(plist); newFig.PointList.AddRange(blist); result.AddList.Add(new EditResult.Item(layer.ID, newFig)); result.RemoveList.Add(new EditResult.Item(layer.ID, fig)); result.RemoveList.Add(new EditResult.Item(layer.ID, bfig)); return(result); }
public override void Undo(CadObjectDB db) { CadFigure fig = db.GetFigure(FigureID); fig.RemovePointAt(PointIndex); }