Пример #1
0
        /// <summary>
        /// This method is the event handler, which will dump the change information to tracking dialog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CtrlApp_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            // get the current document.
            Document doc = e.GetDocument();

            // dump the element information
            ICollection <ElementId> addedElem = e.GetAddedElementIds();

            foreach (ElementId id in addedElem)
            {
                AddChangeInfoRow(id, doc, "Added");
            }

            ICollection <ElementId> deletedElem = e.GetDeletedElementIds();

            foreach (ElementId id in deletedElem)
            {
                AddChangeInfoRow(id, doc, "Deleted");
            }

            ICollection <ElementId> modifiedElem = e.GetModifiedElementIds();

            foreach (ElementId id in modifiedElem)
            {
                AddChangeInfoRow(id, doc, "Modified");
            }
        }
Пример #2
0
        /// <summary>
        /// This method is the event handler, which will dump the change information to tracking dialog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CtrlApp_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            // get the current document.
            Document doc = e.GetDocument();

            List <int> IDs = new List <int>();

            // dump the element information
            ICollection <Autodesk.Revit.DB.ElementId> addedElem = e.GetAddedElementIds();

            foreach (ElementId id in addedElem)
            {
                OpenCOVERPlugin.COVER.Instance.SendElement(doc.GetElement(id));
            }

            ICollection <Autodesk.Revit.DB.ElementId> deletedElem = e.GetDeletedElementIds();

            foreach (ElementId id in deletedElem)
            {
                OpenCOVERPlugin.COVER.Instance.deleteElement(id);
            }

            ICollection <ElementId> modifiedElem = e.GetModifiedElementIds();

            foreach (ElementId id in modifiedElem)
            {
                OpenCOVERPlugin.COVER.Instance.deleteElement(id);
                OpenCOVERPlugin.COVER.Instance.SendElement(doc.GetElement(id));
            }
        }
Пример #3
0
        public override bool NeedsToBeExpired(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            var document = e.GetDocument();

            var added = e.GetAddedElementIds().Where(x => x.IsCategoryId(document));

            if (added.Any())
            {
                return(true);
            }

            var modified = e.GetModifiedElementIds().Where(x => x.IsCategoryId(document));

            if (modified.Any())
            {
                return(true);
            }

            var deleted = e.GetDeletedElementIds();

            if (deleted.Any())
            {
                var empty      = new ElementId[0];
                var deletedSet = new HashSet <ElementId>(deleted);
                foreach (var param in Params.Output.OfType <Parameters.IGH_ElementIdParam>())
                {
                    if (param.NeedsToBeExpired(document, empty, deletedSet, empty))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #4
0
        bool IGH_PersistentElementComponent.NeedsToBeExpired(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            var filter = new Autodesk.Revit.DB.ElementClassFilter(typeof(Level));
            var added  = e.GetAddedElementIds(filter);

            if (added.Count > 0)
            {
                return(true);
            }

            var deleted = e.GetDeletedElementIds();

            if (deleted.Count > 0)
            {
                var document = e.GetDocument();
                var empty    = new ElementId[0];
                foreach (var param in Params.Output.OfType <Parameters.IGH_PersistentElementParam>())
                {
                    if (param.NeedsToBeExpired(document, empty, deleted, empty))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #5
0
        private void ControlledApplication_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            Autodesk.Revit.DB.Document doc = e.GetDocument();
            var app = doc.Application;


            string journalPath = app.RecordingJournalFilename;

            string user = app.Username;

            using (StreamWriter sw = new StreamWriter(Utills.journal))
            {
                sw.WriteLine(journalPath);
                sw.Close();
            }
            using (StreamWriter sw = new StreamWriter(Utills.userPath))
            {
                sw.WriteLine(user);
                sw.Close();
            }
            string   versionBuild = app.VersionBuild;
            DateTime d            = DateTime.Now;

            List <string> transactions = e.GetTransactionNames().ToList();

            var            modified         = e.GetModifiedElementIds();
            List <Element> modifiedElements = new List <Element>();

            if (modified?.Count() > 0)
            {
                modifiedElements.AddRange(modified.Select(x => doc.GetElement(x))?.ToList());
            }

            var            added         = e.GetAddedElementIds();
            List <Element> addedElements = new List <Element>();

            if (added?.Count() > 0)
            {
                addedElements.AddRange(added.Select(x => doc.GetElement(x))?.ToList());
            }

            List <ElementId> DeletedIds = new List <ElementId>();
            var deleted = updater.Deleteds;

            if (deleted?.Count() > 0)
            {
                DeletedIds.AddRange(deleted);
            }

            Utills.GetDataFromEvents(addedElements, modifiedElements, DeletedIds, transactions, user, out DataTable addtbl, out DataTable edittbl, out DataTable deletedtbl, out DataTable transtbl);
            addtbl.ToTXT(Utills.addPath);
            edittbl.ToTXT(Utills.editPath);
            deletedtbl.ToTXT(Utills.deletedPath);
            transtbl.ToTXT(Utills.transPath);
        }
        public override bool NeedsToBeExpired(DB.Events.DocumentChangedEventArgs e)
        {
            var elementFilter = ElementFilter;
            var _Filter_      = Params.IndexOfInputParam("Filter");
            var filters       = _Filter_ < 0 ?
                                Enumerable.Empty <DB.ElementFilter>() :
                                Params.Input[_Filter_].VolatileData.AllData(true).OfType <Types.ElementFilter>().Select(x => new DB.LogicalAndFilter(x.Value, elementFilter));

            foreach (var filter in filters.Any() ? filters : Enumerable.Repeat(elementFilter, 1))
            {
                var added = filter is null?e.GetAddedElementIds() : e.GetAddedElementIds(filter);

                if (added.Count > 0)
                {
                    return(true);
                }

                var modified = filter is null?e.GetModifiedElementIds() : e.GetModifiedElementIds(filter);

                if (modified.Count > 0)
                {
                    return(true);
                }

                var deleted = e.GetDeletedElementIds();
                if (deleted.Count > 0)
                {
                    var document = e.GetDocument();
                    var empty    = new DB.ElementId[0];
                    foreach (var param in Params.Output.OfType <Kernel.IGH_ElementIdParam>())
                    {
                        if (param.NeedsToBeExpired(document, empty, deleted, empty))
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Пример #7
0
        private static void ControlledApplication_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            var document         = e.GetDocument();
            var documentTitle    = document.Title;
            var transactionNames = e.GetTransactionNames();

            if (document.IsWorkshared)
            {
                var path = ModelPathUtils.ConvertModelPathToUserVisiblePath(document.GetWorksharingCentralModelPath());
                documentTitle = Path.GetFileNameWithoutExtension(path);
            }
            var addedIds    = e.GetAddedElementIds().Select(x => x.IntegerValue);
            var modifiedIds = e.GetModifiedElementIds().Select(x => x.IntegerValue);
            var deletedIds  = e.GetDeletedElementIds().Select(x => x.IntegerValue);

            controller.DocumentChangedEvent.DocumentChanged(transactionNames, documentTitle, addedIds, modifiedIds, deletedIds);
        }
Пример #8
0
        /// <summary>
        /// This method is the event handler, which will dump the change information to tracking dialog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CtrlApp_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            if (OpenCOVERPlugin.COVER.Instance.isConnected())
            {
                // get the current document.
                Document doc = e.GetDocument();

                List <int> IDs = new List <int>();

                // dump the element information
                ICollection <Autodesk.Revit.DB.ElementId> addedElem = e.GetAddedElementIds();
                foreach (ElementId id in addedElem)
                {
                    OpenCOVERPlugin.COVER.Instance.SendElement(doc.GetElement(id));
                }

                ICollection <Autodesk.Revit.DB.ElementId> deletedElem = e.GetDeletedElementIds();
                foreach (ElementId id in deletedElem)
                {
                    OpenCOVERPlugin.COVER.Instance.deleteElement(id);
                }

                ICollection <ElementId> modifiedElem = e.GetModifiedElementIds();
                foreach (ElementId id in modifiedElem)
                {
                    Element el = doc.GetElement(id);
                    if (el is Autodesk.Revit.DB.DesignOption)
                    {
                        // design option changed // resend only changes
                        OpenCOVERPlugin.COVER.Instance.designOptionsChanged(doc, (Autodesk.Revit.DB.DesignOption)el);
                    }
                    else
                    {
                        OpenCOVERPlugin.COVER.Instance.deleteElement(id);
                        OpenCOVERPlugin.COVER.Instance.SendElement(el);
                    }
                }
            }
        }