//--------------------------------------------------------------------------------------------------------- /// <summary> /// Окончание захвата от управления курсора /// </summary> /// <param name="point">Точка в координатах канвы</param> //--------------------------------------------------------------------------------------------------------- public override void EndCapturePosition(ref Vector2Df point) { // Если была включена привязка if (XCadManager.CanvasViewer.SnapIsExsisting) { // Смещение курсора мыши в координатах канвы от текущей точки привязки Vector2Df snap_offset = XCadManager.CanvasViewer.SnapMouseOffsetCanvas; snap_offset -= XCadManager.Editor.CapturePointOffset; if (this == XCadManager.Editor.CaptureElement) { // Корректируем на величину смещения от опорной точки элемента Vector2Df snap_point = XCadManager.CanvasViewer.SnapPoint - XCadManager.Editor.CapturePointOffset; UpdateCapturePosition(ref snap_point, ref snap_offset); } else { // Графический элемент в составе множества - только перемещение // Перемещаем графический элемент mStartPoint += snap_offset; mEndPoint += snap_offset; } SetHandleRects(); } // Если было включено копирование if (XCadManager.Editor.ModifyIsCopy) { // 1) Создаем новый объект CCadShapeLine line = Duplicate() as CCadShapeLine; //mBaseDocument.AddExistingElement(line); line.UpdateBoundsRect(); // 2) Восстанавливаем старые координаты mStartPoint = mCachedStartPoint; mEndPoint = mCachedEndPoint; // 3) Добавляем новый в объекты копирования //XCadManager.Editor.CopyElements.Add(line); } UpdateBoundsRect(); NotifyPropertyChanged(PropertyArgsStartPoint); NotifyPropertyChanged(PropertyArgsEndPoint); NotifyPropertyChanged(PropertyArgsLocation); mHandleIndex = -1; SetHandleCursor(); // Обновляем канву //XCadManager.Canvas.Update(); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Окончание захвата от управления курсора /// </summary> /// <param name="point">Точка в координатах канвы</param> //--------------------------------------------------------------------------------------------------------- public override void EndCapturePosition(ref Vector2Df point) { // Если была включена привязка if (XCadManager.CanvasViewer.SnapIsExsisting) { if (this == XCadManager.Editor.CaptureElement) { //Vector2Df snap_point = //XCadManager.CanvasViewer.SnapPoint; //Vector2Df snap_offset = //XCadManager.CanvasViewer.SnapMouseOffsetCanvasOfCapture; //UpdateCapturePosition(ref snap_point, ref snap_offset); } else { // Графический элемент в составе множества - только перемещение // Перемещаем графический элемент //Vector2Df delta = XCadManager.CanvasViewer.SnapMouseOffsetCanvasOfCapture; //mStartPoint += delta; //mEndPoint += delta; } SetHandleRects(); } // Если было включено копирование if (XCadManager.Editor.ModifyIsCopy) { // 1) Создаем новый объект CCadShapeLine line = Duplicate() as CCadShapeLine; //mBaseDocument.AddExistingElement(line); line.UpdateBoundsRect(); // 2) Восстанавливаем старые координаты //mStartPoint = mCachedStartPoint; //mEndPoint = mCachedEndPoint; // 3) Добавляем новый в объекты копирования //XCadManager.Editor.CopyElements.Add(line); } //UpdateBoundsRect(); NotifyPropertyChanged(PropertyArgsStartPoint); NotifyPropertyChanged(PropertyArgsEndPoint); mHandleIndex = -1; SetHandleCursor(); }