Message 1 of 5
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Does someone know where is problem...
need cut wall with family void. But only if the results change the volume of the wall.
public void test(Document doc, IEnumerable<Element> w, IEnumerable<Element> e, ProgressBar pr) { double volumebefore; double volumeafter; foreach (Element q in w) { volumebefore = q.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble(); foreach (Element s in e) { try { using (Transaction tx = new Transaction(doc)) { tx.Start("start transaction"); if (InstanceVoidCutUtils.CanBeCutWithVoid(q)) { InstanceVoidCutUtils.AddInstanceVoidCut(doc, q, s); } // ElementIntersectsElementFilter cutintersectsfilter = new ElementIntersectsElementFilter(s, false); // bool FamilyIntersectsWall = cutintersectsfilter.PassesFilter(doc, q.Id); // if (FamilyIntersectsWall) tx.Commit(); using (Transaction t1 = new Transaction(doc)) { t1.Start("start "); volumeafter = q.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble(); if (volumebefore == volumeafter) { InstanceVoidCutUtils.RemoveInstanceVoidCut(doc, q, s); } else { volumebefore = volumeafter; } t1.Commit(); } } } } catch { } pr.Increment(1); } } }
still make error
The iterator cannot proceed due to changes made to the Element table in Revit's database (typically, this can be the result of an Element deletion).
Solved! Go to Solution.