/// <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"); } }
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); }
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); }
/// <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)); } }
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); }
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; }
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); }
/// <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); } } }
/// <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); } } } }
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); } }