/// <inheritdoc /> public override void OnGripStatusChanged(ObjectId entityId, Status newStatus) { try { // При начале перемещения запоминаем первоначальное положение ручки // Запоминаем начальные значения if (newStatus == Status.GripStart) { _gripTmp = GripPoint; } // При удачном перемещении ручки записываем новые значения в расширенные данные // По этим данным я потом получаю экземпляр класса section if (newStatus == Status.GripEnd) { using (var tr = AcadUtils.Database.TransactionManager.StartOpenCloseTransaction()) { var blkRef = tr.GetObject(Section.BlockId, OpenMode.ForWrite, true, true); using (var resBuf = Section.GetDataForXData()) { blkRef.XData = resBuf; } tr.Commit(); } Section.Dispose(); } // При отмене перемещения возвращаем временные значения if (newStatus == Status.GripAbort) { if (_gripTmp != null) { if (GripIndex == 0) { Section.InsertionPoint = _gripTmp; } else if (GripIndex == Section.MiddlePoints.Count + 1) { Section.EndPoint = _gripTmp; } else { Section.MiddlePoints[GripIndex - 1] = _gripTmp; } } } base.OnGripStatusChanged(entityId, newStatus); } catch (Exception exception) { if (exception.ErrorStatus != ErrorStatus.NotAllowedForThisProxy) { ExceptionBox.Show(exception); } } }
public override void OnGripStatusChanged(ObjectId entityId, Status newStatus) { try { // При удачном перемещении ручки записываем новые значения в расширенные данные // По этим данным я потом получаю экземпляр класса section if (newStatus == Status.GripEnd) { using (var tr = AcadUtils.Database.TransactionManager.StartOpenCloseTransaction()) { var blkRef = tr.GetObject(Section.BlockId, OpenMode.ForWrite, true, true); using (var resBuf = Section.GetDataForXData()) { blkRef.XData = resBuf; } tr.Commit(); } Section.Dispose(); } // При отмене перемещения возвращаем временные значения if (newStatus == Status.GripAbort) { if (Name == TextGripName.TopText) { Section.AlongTopShelfTextOffset = CachedAlongTopShelfTextOffset; Section.AcrossTopShelfTextOffset = CachedAcrossTopShelfTextOffset; } if (Name == TextGripName.BottomText) { Section.AlongBottomShelfTextOffset = CachedAlongBottomShelfTextOffset; Section.AcrossBottomShelfTextOffset = CachedAcrossBottomShelfTextOffset; } } base.OnGripStatusChanged(entityId, newStatus); } catch (Exception exception) { if (exception.ErrorStatus != ErrorStatus.NotAllowedForThisProxy) { ExceptionBox.Show(exception); } } }