public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication application = commandData.get_Application(); Document document = application.get_ActiveUIDocument().get_Document(); Selection selection = application.get_ActiveUIDocument().get_Selection(); ICollection <ElementId> elementIds = selection.GetElementIds(); if (elementIds.Count != 0) { List <Element> list = Method.GeometryFilter(document, elementIds); int num = 0; if (list.Count > 1) { Combinations <Element> combinations = new Combinations <Element>(list, 2, GenerateOption.WithoutRepetition); Transaction val = new Transaction(document); val.Start("UnCutElement"); FailureHandlingOptions failureHandlingOptions = val.GetFailureHandlingOptions(); MyFailuresPreProcessor myFailuresPreProcessor = new MyFailuresPreProcessor(); failureHandlingOptions.SetFailuresPreprocessor(myFailuresPreProcessor); val.SetFailureHandlingOptions(failureHandlingOptions); foreach (List <Element> item in combinations) { try { InstanceVoidCutUtils.RemoveInstanceVoidCut(document, item[0], item[1]); num++; } catch (Exception) { } } MessageBox.Show(num.ToString() + " Pairs Elements Successfully UnCut.", "ElementMerger"); val.Commit(); } else if (list.Count == 1) { TaskDialog.Show("ElementMerger", "Only One Element Selected"); } } else { TaskDialog.Show("ElementMerger", "None Element Selected"); } return(0); }
public void UnCut(Document doc, List <FamilyInstance> voids, List <FamilyInstance> listcut) { Transaction tran = new Transaction(doc, "Invention: Cut void by type"); tran.Start(); foreach (var conn in voids) { foreach (var framming in listcut) { try { if (InstanceVoidCutUtils.CanBeCutWithVoid(framming)) { InstanceVoidCutUtils.RemoveInstanceVoidCut(doc, framming, conn); } } catch { } } } tran.Commit(); }
public static void CutUncutHost(FamilyInstance _fi, bool _cut) { if (_fi.Host == null) { return; } bool currCut = HostUtils.CutsHost(_fi); if (_cut == currCut) { return; } var doc = _fi.Document; if (_cut) { InstanceVoidCutUtils.AddInstanceVoidCut(doc, _fi.Host, _fi); } else { InstanceVoidCutUtils.RemoveInstanceVoidCut(doc, _fi.Host, _fi); } }