//On DocumentChanged
        internal void DocumentChanged(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            List <string> commands = new List <string>()
            {
                "param",
                "Modify element attributes",
                "Family Types",
                "Add Parameter",
                "Delete Selection",
                "Delete Parameter",
                "Parameter Delete",
                "Parameter Change",
                "Change Parameter Name",
                "Project Units"
            };

            if (_presenter != null && _presenter._enabled)
            {
                IList <String> operations = e.GetTransactionNames();
                if (commands.Any(operations.Contains))
                {
                    _presenter.ThisDocumentChanged();
                }
            }
        }
示例#2
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);
        }
示例#3
0
        private void OnDocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            var doc = e.GetDocument();

            this.UpdateContext(doc);
            this.HookUpViewChanged(doc);
        }
示例#4
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));
            }
        }
示例#5
0
        public virtual bool NeedsToBeExpired(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            var persistentInputs = Params.Input.
                                   Where(x => x.DataType == GH_ParamData.local && x.Phase != GH_SolutionPhase.Blank).
                                   OfType <Parameters.IGH_ElementIdParam>();

            if (persistentInputs.Any())
            {
                var filter = ElementFilter;

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

                var deleted = e.GetDeletedElementIds();

                if (modified.Count > 0 || deleted.Count > 0)
                {
                    var document = e.GetDocument();
                    var empty    = new ElementId[0];

                    foreach (var param in persistentInputs)
                    {
                        if (param.NeedsToBeExpired(document, empty, deleted, modified))
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
示例#6
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);
        }
示例#7
0
        private static void documentChanged_PurgeMaterials(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            // do not check when rolling back the transaction group
            if (!checkForPurgeMaterials)
            {
                return;
            }

            List <ElementId> deleted  = e.GetDeletedElementIds().ToList();
            List <ElementId> modified = e.GetModifiedElementIds().ToList();

            // for debugging
            string s = "";

            foreach (ElementId id in modified)
            {
                Element modifiedElement = openDoc.GetElement(id);
                s += modifiedElement.Category.Name + " " + modifiedElement.Name + " (" + id.IntegerValue + ")" + Environment.NewLine;
            }
            //TaskDialog.Show("d", materialName + Environment.NewLine + "Deleted = " + deleted.Count + ", Modified = " + modified.Count + Environment.NewLine + s);

            // how many elements were modified and deleted when this material was deleted?
            // if 1, then the material is unused and should be deleted
            modifiedByDeleteMaterial = deleted.Count + modified.Count;
        }
示例#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)
        {
            // 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");
            }
        }
        private void Application_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            //var streamStates = GetStreamsInFile();
            //var appEvent = new ApplicationEvent()
            //{
            //  Type = ApplicationEvent.EventType.DocumentOpened, DynamicInfo = streamStates
            //};

            //NotifyUi(appEvent);
        }
示例#10
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);
        }
示例#11
0
 /// <summary>
 /// On document change, update Family Parameters
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void c_app_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
     if (_presenter != null)
     {
         if (e.GetDocument().GetWarnings().Count != _currentCount)
         {
             _currentCount = e.GetDocument().GetWarnings().Count;
             _presenter.DocumentChanged();
         }
     }
 }
示例#12
0
        private void Application_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
        {
            purge = false;

            if (!checkElements)
            {
                return;
            }

            ICollection <ElementId> elementIds_Deleted  = e.GetDeletedElementIds();
            ICollection <ElementId> elementIds_Modified = e.GetModifiedElementIds();

            int count = elementIds_Deleted.Count + elementIds_Modified.Count;

            purge = count == 1;
        }
        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);
        }
        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);
        }
示例#15
0
 /// <summary>
 /// Deletes the instance wrapper of point clouds and direct shapes when they were deleted by users in Revit document.
 /// </summary>
 /// <param name="e">The arguments of the event</param>
 public static void OnContentChanged(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
     // when there are deleted objects
     foreach (ElementId eid in e.GetDeletedElementIds())
     {
         // if the deleted object is PointCloud type
         if (OutlierPointCloudEngine.ContainPointCloud(eid))
         {
             PromptOutlierDeletedWarning();
             OutlierPointCloudEngine.RemovePointCloud();
         }
         else if (InlierPointCloudEngine.ContainPointCloud(eid))
         {
             InlierPointCloudEngine.RemovePointCloud(eid);
         }
         else if (DirectShapeEngine.ContainDirectShape(eid))
         {
             DirectShapeEngine.RemoveDirectShape(eid);
         }
     }
 }
示例#16
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);
                    }
                }
            }
        }
示例#17
0
 private void CtrApp_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs args)
 {
     try
     {
         if (null != mainWindow && null != handler)
         {
             var doc = args.GetDocument();
             var modifiedElementIds = args.GetModifiedElementIds().ToList();
             if (modifiedElementIds.Count > 0)
             {
                 //bool updated = UpdateModifiedElements(doc, modifiedElementIds);
             }
             var deletedElementIds = args.GetDeletedElementIds().ToList();
             if (deletedElementIds.Count > 0)
             {
                 var updated = UpdateDeletedElements(doc, deletedElementIds);
             }
         }
     }
     catch (Exception ex)
     {
         Log.AppendLog(LogMessageType.EXCEPTION, ex.Message);
     }
 }
示例#18
0
 public void Application_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
     ExecuteEventHooks(EventType.Application_DocumentChanged, sender, e);
 }
 // this method is triggered when there are changes in the active document
 private void Application_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
 }
示例#20
0
 bool IGH_PersistentElementComponent.NeedsToBeExpired(Autodesk.Revit.DB.Events.DocumentChangedEventArgs e) => true;
示例#21
0
 private void appChange(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
     TaskDialog.Show("已改", "已改动");
 }
示例#22
0
 private void App_DocumentChanged(object sender, Autodesk.Revit.DB.Events.DocumentChangedEventArgs e)
 {
     TaskDialog.Show("BIMBOX", "文档已经被修改");
     _app.DocumentChanged -= App_DocumentChanged;
 }