Ejemplo n.º 1
0
        public override void Undo(CadObjectDB db)
        {
            CadLayer  layer = db.GetLayer(LayerID);
            CadFigure fig   = db.GetFigure(FigureID);

            layer.InsertFigure(mFigureIndex, fig);
        }
Ejemplo n.º 2
0
        public override void Redo(CadObjectDB db)
        {
            CadLayer  layer = db.GetLayer(LayerID);
            CadFigure fig   = db.GetFigure(FigureID);

            layer.AddFigure(fig);
        }
Ejemplo n.º 3
0
        public override void Redo(CadObjectDB db)
        {
            CadLayer  layer = db.GetLayer(LayerID);
            CadFigure fig   = db.GetFigure(FigureID);

            fig.InsertPointsRange(PointIndex, mPointList);
        }
Ejemplo n.º 4
0
        public override void Undo(CadObjectDB db)
        {
            CadLayer  layer = db.GetLayer(LayerID);
            CadFigure fig   = db.GetFigure(FigureID);

            if (fig == null)
            {
                return;
            }

            int idx = PointIndex;
            int i   = 0;

            if (mPointList == null)
            {
                mPointList = new VertexList();
            }

            mPointList.Clear();

            for (; i < InsertNum; i++)
            {
                mPointList.Add(fig.GetPointAt(idx + i));
            }

            fig.RemovePointsRange(idx, InsertNum);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        public override void Redo(CadObjectDB db)
        {
            CadLayer layer = db.GetLayer(LayerID);

            layer.RemoveFigureByID(db, FigureID);
        }