コード例 #1
0
        public void SetSelectedSegLen(double len)
        {
            if (Controller.LastSelSegment == null)
            {
                return;
            }

            MarkSegment seg = Controller.LastSelSegment.Value;

            if (seg.FigureID == 0)
            {
                return;
            }

            CadFigure fig = Controller.DB.GetFigure(seg.FigureID);

            CadVertex pa = fig.GetPointAt(seg.PtIndexA);
            CadVertex pb = fig.GetPointAt(seg.PtIndexB);

            Vector3d v;

            v = pa.vector - Controller.LastDownPoint;
            double da = v.Norm();

            v = pb.vector - Controller.LastDownPoint;
            double db = v.Norm();


            if (da < db)
            {
                Vector3d np = CadMath.LinePoint(pb.vector, pa.vector, len);
                Controller.StartEdit();

                pa.vector = np;

                fig.SetPointAt(seg.PtIndexA, pa);

                Controller.EndEdit();
            }
            else
            {
                Vector3d np = CadMath.LinePoint(pa.vector, pb.vector, len);
                Controller.StartEdit();

                pb.vector = np;

                fig.SetPointAt(seg.PtIndexB, pb);

                Controller.EndEdit();
            }
        }