public void EndOperation(UserOperation operation) { //stop operation var usedObjects = new List <CADObject>(operation.OwnerDocument.ObjectsDictionary.FinishAccessList()); usedObjects.AddRange(operation.TemporaryObjectsDictionary.Values); TextBlock state = new TextBlock(); foreach (var o in usedObjects) { var objBlock = state.AddChild(o.GetType().Name); o.Save(objBlock); bool existInNew = operation.OwnerDocument.ObjectsDictionary.ContainsValue(o); bool existInOld = _oldObjects.Contains(o); if (existInNew && existInOld) { objBlock.SetAttribute("Status", ElemenetLifeStatus.Existed.ToString("G")); } else if (existInNew) { objBlock.SetAttribute("Status", ElemenetLifeStatus.Created.ToString("G")); } else { objBlock.SetAttribute("Status", ElemenetLifeStatus.Deleted.ToString("G")); } } operation.OwnerDocument.History.AddUndo(new HistoryControl.HistoryRecord(state, RecordType.OperationSuccededType)); }
/// <summary> /// Функция создания нового объекта в документе /// </summary> /// <param name="elemType">Тип элемента из перечисления <see cref="ElementTypes"/></param> /// <param name="id">ИД объекта, если загружается ранее созданный объект. Для выделения нового ИД надо ставить значение -1.</param> /// <returns>Возвращает созданный объект или null в случае неудачи</returns> internal CADObject CreateCADObject(ElementTypes elemType, int id, UserOperation operation) { CADObject o = null; switch (elemType) { case ElementTypes.Line: o = new Line(); break; case ElementTypes.Arc: o = new Arc(); break; case ElementTypes.Circle: o = new Circle(); break; //case ElementTypes.Point: // o = new Point(); // break; default: Log.Error("No objects!"); break; } if (o != null) { o.LockOperation = operation; o.ElementType = elemType; if (id == -1) { o.UID = ++_elemIdCounter; } else { o.UID = id; } //else // TemporaryObjectsDictionary[o.UID] = o; o.Parent = this; if (operation != null) { operation.TemporaryObjectsDictionary[o.UID] = o; } else { PostCreateCADObject(o); } } return(o); }
/// <summary> /// Функция создания нового объекта в документе /// </summary> /// <param name="elemType">Тип элемента из перечисления <see cref="ElementTypes"/></param> /// <returns>Возвращает созданный объект или null в случае неудачи</returns> public CADObject CreateCADObject(ElementTypes elemType, UserOperation operation) { return(CreateCADObject(elemType, -1, operation)); }