Example #1
0
        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);
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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);
        }
Example #7
0
        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);
        }