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(); } }