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 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 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); }
private static void CheckRevisionLinks(Document doc, Guid projectId, ref RevitSheetData sheetData) { try { for (int i = 0; i < sheetData.Revisions.Count; i++) { RevitRevision rvtRevision = sheetData.Revisions[i]; var linkedRevisionFound = from lrevision in sheetData.Revisions[i].LinkedRevisions where lrevision.LinkProject.Id == projectId select lrevision; if (linkedRevisionFound.Count() > 0) { LinkedRevision linkedRevision = linkedRevisionFound.First(); Revision revision = doc.GetElement(linkedRevision.LinkedElementId) as Revision; if (null != revision) { sheetData.Revisions[i].LinkStatus.IsLinked = true; sheetData.Revisions[i].LinkStatus.CurrentLinkedId = linkedRevision.LinkedElementId; sheetData.Revisions[i].LinkStatus.LinkedElementId = revision.Id.IntegerValue; sheetData.Revisions[i].LinkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; if (revision.Description != rvtRevision.Description || revision.IssuedBy != rvtRevision.IssuedBy || revision.IssuedTo != rvtRevision.IssuedTo || revision.RevisionDate != rvtRevision.Date) { sheetData.Revisions[i].LinkStatus.Modified = true; sheetData.Revisions[i].LinkStatus.ToolTip = "Revision parameter values are different from the linked element."; } } else { //item deleted sheetData.Revisions[i].LinkedRevisions.Remove(linkedRevision); bool revisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } } } catch (Exception ex) { MessageBox.Show("Failed to check link status of revisions.\n" + ex.Message, "Sheet Manager Updater - Check Revision Links", MessageBoxButton.OK, MessageBoxImage.Warning); } }
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); }