private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { try { if (e.NewItems != null && e.Action == NotifyCollectionChangedAction.Add) { foreach (RevitSheet sheet in e.NewItems) { int index = rvtSheetData.Sheets.IndexOf(sheet); Guid sheetId = Guid.NewGuid(); this.RvtSheetData.Sheets[index].Id = sheetId; bool sheetDBUpdated = SheetDataWriter.ChangeSheetItem(rvtSheetData.Sheets[index], CommandType.INSERT); foreach (SheetParameter sheetParam in rvtSheetData.SheetParameters) { SheetParameterValue paramValue = new SheetParameterValue(); paramValue.ParameterValueId = Guid.NewGuid(); paramValue.Parameter = sheetParam; paramValue.SheetId = sheetId; this.RvtSheetData.Sheets[index].SheetParameters.Add(sheetParam.ParameterId, paramValue); } bool sheetParamDBUpdated = SheetDataWriter.InsertMultipleParameterValue(RvtSheetData.Sheets[index].SheetParameters.Values.ToList()); foreach (RevitRevision revision in rvtSheetData.Revisions) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetId, revision, false); this.RvtSheetData.Sheets[index].SheetRevisions.Add(revision.Id, ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(RvtSheetData.Sheets[index].SheetRevisions.Values.ToList()); } } if (e.OldItems != null && e.Action == NotifyCollectionChangedAction.Remove) { foreach (RevitSheet sheet in e.OldItems) { bool sheetDBUpdated = SheetDataWriter.ChangeSheetItem(sheet, CommandType.DELETE); bool sheetParamDBUpdated = SheetDataWriter.DeleteSheetParameterValue(sheet.Id.ToString()); bool rosDBUpdated = SheetDataWriter.DeleteRevisionOnSheet("RevisionsOnSheet_Sheet_Id", sheet.Id.ToString()); } } } catch (Exception ex) { string message = ex.Message; } }
private bool DeleteSheet(ElementId sheetId) { bool deleted = false; try { if (idMaps.ContainsKey(sheetId)) { string uniqueId = idMaps[sheetId]; LinkedSheet linkedSheet = dataManager.GetLinkedSheet(uniqueId, linkedProjectId); if (null != linkedSheet) { if (linkedSheet.IsSource) { MessageBoxResult msgResult = MessageBox.Show("Would you like to delete the sheet item in the linked database?", "Delete Sheet Source Item", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { RevitSheet rvtSheet = new RevitSheet() { Id = linkedSheet.SheetId }; bool sheetDeleted = SheetDataWriter.ChangeSheetItem(rvtSheet, CommandType.DELETE); bool paramDeleted = SheetDataWriter.DeleteSheetParameterValue(rvtSheet.Id.ToString()); bool revisionDeleted = SheetDataWriter.DeleteRevisionOnSheet("RevisionsOnSheet_Sheet_Id", rvtSheet.Id.ToString()); bool linkDeleted = SheetDataWriter.ChangeLinkedSheet(linkedSheet, CommandType.DELETE); deleted = (sheetDeleted && paramDeleted && revisionDeleted && linkDeleted) ? true : false; } else { deleted = SheetDataWriter.ChangeLinkedSheet(linkedSheet, CommandType.DELETE); } } else { deleted = SheetDataWriter.ChangeLinkedSheet(linkedSheet, CommandType.DELETE); } } } } catch (Exception ex) { string message = ex.Message; } return(deleted); }