private bool UpdateRevision(Revision revision, List <ElementId> paramIds) { bool updated = false; try { LinkedRevision linkedRevision = dataManager.GetLinkedRevision(revision.UniqueId, linkedProjectId); if (null != linkedRevision) { foreach (ElementId paramId in paramIds) { string paramName = revisionParameters[paramId]; Parameter param = revision.LookupParameter(paramName); if (null != param) { string paramValue = ""; switch (paramId.IntegerValue) { case (int)BuiltInParameter.PROJECT_REVISION_SEQUENCE_NUM: paramValue = param.AsInteger().ToString(); updated = SheetDataWriter.ChangeLinkedRevision(linkedRevision.Id, "LinkedRevision_Sequence", paramValue, CommandType.UPDATE); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_NUM: paramValue = param.AsString(); updated = SheetDataWriter.ChangeLinkedRevision(linkedRevision.Id, "LinkedRevision_Number", paramValue, CommandType.UPDATE); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_DESCRIPTION: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_Description", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_DATE: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_Date", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_ISSUED_TO: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_IssuedTo", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_ISSUED_BY: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_IssuedBy", paramValue); break; } } } } } catch (Exception ex) { string message = ex.Message; } return(updated); }
private void buttonAdd_Click(object sender, RoutedEventArgs e) { try { bool added = false; var revisionDescriptions = from revision in rvtSheetData.Revisions select revision.Description; for (int i = 1; i < 100; i++) { string revisionDescription = "New Revision " + i; if (!revisionDescriptions.Contains(revisionDescription)) { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revisionDescription, "", "", ""); this.RvtSheetData.Revisions.Add(rvtRevision); bool sheetDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); //update Revision On Sheet if (rvtSheetData.Sheets.Count > 0) { List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); for (int sheetIndex = 0; sheetIndex < rvtSheetData.Sheets.Count; sheetIndex++) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), rvtSheetData.Sheets[sheetIndex].Id, rvtRevision, false); if (!rvtSheetData.Sheets[sheetIndex].SheetRevisions.ContainsKey(ros.RvtRevision.Id)) { this.RvtSheetData.Sheets[sheetIndex].SheetRevisions.Add(ros.RvtRevision.Id, ros); rosList.Add(ros); } } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); added = rosDBUpdated; } else { added = true; } break; } } if (!added) { MessageBox.Show("Please assign descriptions of revision items before you add more revisions.", "Revision Description", MessageBoxButton.OK, MessageBoxImage.Information); } } catch (Exception ex) { string message = ex.Message; } }
private void buttonDelete_Click(object sender, RoutedEventArgs e) { try { if (null != dataGridRevision.SelectedItems) { StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("Would you like to delete following revision items and related information?\n"); List <RevitRevision> revisions = new List <RevitRevision>(); foreach (object selectedItem in dataGridRevision.SelectedItems) { RevitRevision rvtRevision = selectedItem as RevitRevision; strBuilder.AppendLine("\"" + rvtRevision.Description + "\""); revisions.Add(rvtRevision); } if (revisions.Count > 0) { MessageBoxResult msgResult = MessageBox.Show(strBuilder.ToString(), "Delete Revisions", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { foreach (RevitRevision rvtRevision in revisions) { this.RvtSheetData.Revisions.Remove(rvtRevision); bool revisionDeleted = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.DELETE); bool rosDeleted = SheetDataWriter.DeleteRevisionOnSheet("RevisionsOnSheet_Revision_Id", rvtRevision.Id.ToString()); bool linkedDeleted = SheetDataWriter.ChangeLinkedRevision(rvtRevision.Id, "LinkedRevision_Revision_Id", rvtRevision.Id.ToString(), CommandType.DELETE); } for (int sheetIndex = 0; sheetIndex < rvtSheetData.Sheets.Count; sheetIndex++) { foreach (RevitRevision rvtRevision in revisions) { if (rvtSheetData.Sheets[sheetIndex].SheetRevisions.ContainsKey(rvtRevision.Id)) { this.RvtSheetData.Sheets[sheetIndex].SheetRevisions.Remove(rvtRevision.Id); } } } } } } } catch (Exception ex) { string message = ex.Message; } }
private void dataGridRevision_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { try { DataGridRow row = e.Row; string columnName = e.Column.Header.ToString(); if (null != row && !string.IsNullOrEmpty(columnName)) { RevitRevision oldRevision = row.Item as RevitRevision; if (columnName != "Document") { TextBox textBox = e.EditingElement as TextBox; string propertyValue = textBox.Text; string propertyName = ""; switch (columnName) { case "Description": propertyName = "Revision_Description"; break; case "Issued By": propertyName = "Revision_IssuedBy"; break; case "Issued To": propertyName = "Revision_IssuedTo"; break; case "Date": propertyName = "Revision_Date"; break; } bool databaseUpdated = SheetDataWriter.ChangeRevisionItem(oldRevision.Id.ToString(), propertyName, propertyValue); } } } catch (Exception ex) { string message = ex.Message; } }
private bool DeleteRevision(ElementId revisionId) { bool deleted = false; try { if (idMaps.ContainsKey(revisionId)) { string uniqueId = idMaps[revisionId]; LinkedRevision linkedRevision = dataManager.GetLinkedRevision(uniqueId, linkedProjectId); if (null != linkedRevision) { if (linkedRevision.IsSource) { MessageBoxResult msgResult = MessageBox.Show("Would you like to delete the revision item in the linked database?", "Delete Revision Source Item", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { RevitRevision rvtRevision = new RevitRevision(); rvtRevision.Id = linkedRevision.RevisionId; bool revisionDeleted = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.DELETE); bool rosDeleted = SheetDataWriter.DeleteRevisionOnSheet("RevisionsOnSheet_Revision_Id", rvtRevision.Id.ToString()); bool linkDeleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); deleted = (revisionDeleted && rosDeleted && linkDeleted) ? true : false; } else { deleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } else { deleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } } } catch (Exception ex) { string message = ex.Message; } return(deleted); }
public static bool InsertNewRevision(Revision revision, Guid projectId, ref RevitSheetData sheetData) { bool inserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, projectId, revision.UniqueId, true); rvtRevision.LinkedRevisions.Add(linkedRevision); RevitLinkStatus linkStatus = new RevitLinkStatus(); linkStatus.IsLinked = true; linkStatus.CurrentLinkedId = revision.UniqueId; linkStatus.LinkedElementId = revision.Id.IntegerValue; linkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; rvtRevision.LinkStatus = linkStatus; sheetData.Revisions.Add(rvtRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); for (int sheetIndex = 0; sheetIndex < sheetData.Sheets.Count; sheetIndex++) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetData.Sheets[sheetIndex].Id, rvtRevision, false); sheetData.Sheets[sheetIndex].SheetRevisions.Add(rvtRevision.Id, ros); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); inserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; } catch (Exception ex) { MessageBox.Show("Failed to insert a new revision element.\n" + ex.Message, "Insert New Revision", MessageBoxButton.OK, MessageBoxImage.Warning); } return(inserted); }
private bool InsertRevisionToDB(Revision revision, List <Guid> sheetIds) { bool inserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, linkedProjectId, revision.UniqueId, true); rvtRevision.LinkStatus.IsLinked = true; rvtRevision.LinkStatus.IsSelected = false; rvtRevision.LinkStatus.Modified = false; rvtRevision.LinkStatus.CurrentLinkedId = revision.UniqueId; rvtRevision.LinkStatus.LinkedElementId = revision.Id.IntegerValue; rvtRevision.LinkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; rvtRevision.LinkedRevisions.Add(linkedRevision); rvtSheetData.Revisions.Add(rvtRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); foreach (Guid sheetId in sheetIds) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetId, rvtRevision, false); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); inserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; } catch (Exception ex) { string message = ex.Message; } return(inserted); }
private bool InsertRevision(Revision revision) { bool revisionInserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, linkedProjectId, revision.UniqueId, true); rvtRevision.LinkedRevisions.Add(linkedRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); List <Guid> sheetIds = dataManager.GetSheetIds(); foreach (Guid sheetId in sheetIds) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetId, rvtRevision, false); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); revisionInserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; if (!idMaps.ContainsKey(revision.Id)) { idMaps.Add(revision.Id, revision.UniqueId); } } catch (Exception ex) { string message = ex.Message; } return(revisionInserted); }
private bool UpdateRevision(Revision revision, int revisionIndex) { bool updated = false; try { rvtSheetData.Revisions[revisionIndex].Date = revision.RevisionDate; rvtSheetData.Revisions[revisionIndex].Description = revision.Description; rvtSheetData.Revisions[revisionIndex].IssuedBy = revision.IssuedBy; rvtSheetData.Revisions[revisionIndex].IssuedTo = revision.IssuedTo; rvtSheetData.Revisions[revisionIndex].LinkStatus.IsLinked = true; rvtSheetData.Revisions[revisionIndex].LinkStatus.IsSelected = false; rvtSheetData.Revisions[revisionIndex].LinkStatus.Modified = false; rvtSheetData.Revisions[revisionIndex].LinkStatus.CurrentLinkedId = revision.UniqueId; rvtSheetData.Revisions[revisionIndex].LinkStatus.LinkedElementId = revision.Id.IntegerValue; rvtSheetData.Revisions[revisionIndex].LinkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; updated = SheetDataWriter.ChangeRevisionItem(rvtSheetData.Revisions[revisionIndex], CommandType.UPDATE); var linkFound = from link in rvtSheetData.Revisions[revisionIndex].LinkedRevisions where link.LinkedElementId == revision.UniqueId && link.LinkProject.Id == linkedProjectId select link; if (linkFound.Count() > 0) { int linkIndex = rvtSheetData.Revisions[revisionIndex].LinkedRevisions.IndexOf(linkFound.First()); rvtSheetData.Revisions[revisionIndex].LinkedRevisions[linkIndex].Number = revision.RevisionNumber; rvtSheetData.Revisions[revisionIndex].LinkedRevisions[linkIndex].Sequence = revision.SequenceNumber; updated = SheetDataWriter.ChangeLinkedRevision(rvtSheetData.Revisions[revisionIndex].LinkedRevisions[linkIndex], CommandType.UPDATE); } } catch (Exception ex) { string message = ex.Message; } return(updated); }