private static ViewDrafting DuplicateDraftingViews(PreviewMap previewMap) { ViewDrafting viewDrafting = null; try { Document fromDoc = previewMap.SourceModelInfo.Doc; Document toDoc = previewMap.RecipientModelInfo.Doc; ViewDrafting sourceView = previewMap.SourceViewProperties.ViewDraftingObj; ICollection <ElementId> referenceCalloutIds = sourceView.GetReferenceCallouts(); CopyPasteOptions options = new CopyPasteOptions(); options.SetDuplicateTypeNamesHandler(new HideAndAcceptDuplicateTypeNamesHandler()); ICollection <ElementId> copiedIds = null; using (Transaction transaction = new Transaction(toDoc, "Duplicate Draftingviews")) { transaction.Start(); try { List <ElementId> viewIds = new List <ElementId>(); viewIds.Add(sourceView.Id); //view-specific item copiedIds = ElementTransformUtils.CopyElements(fromDoc, viewIds, toDoc, Transform.Identity, options); FailureHandlingOptions failureOptions = transaction.GetFailureHandlingOptions(); failureOptions.SetFailuresPreprocessor(new HidePasteDuplicateTypesPreprocessor()); transaction.Commit(failureOptions); } catch (Exception ex) { string message = ex.Message; transaction.RollBack(); } } if (null != copiedIds) { ElementId viewId = copiedIds.First(); ViewDrafting copiedView = toDoc.GetElement(viewId) as ViewDrafting; if (null != copiedView) { int numOfCopied = DuplicateDetailingAcrossViews(sourceView, copiedView); } if (referenceCalloutIds.Count > 0) { bool placedCallout = DuplicateReferenceCallouts(sourceView, copiedView); } viewDrafting = copiedView; } } catch (Exception ex) { errorMessage.AppendLine(previewMap.SourceViewProperties.ViewName + ": errors in duplicating drafting views.\n" + ex.Message); //MessageBox.Show("Failed to duplicate drafintg views.\n" + ex.Message, "Duplicate DraftingViews", MessageBoxButton.OK, MessageBoxImage.Warning); } return(viewDrafting); }
public void VisualizeOpenBoundary(List <SpatialAnalysis.Geometry.UV> points, double elevation) { //create a deep copy of the list var copy = new List <SpatialAnalysis.Geometry.UV>(); foreach (var item in points) { copy.Add(item.Copy()); } //transform units unitConversion.Transform(copy); //draw in revit using (Transaction t = new Transaction(OSM_FOR_REVIT.RevitDocument, "Draw Boundary")) { t.Start(); FailureHandlingOptions failOpt = t.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(new CurveDrawingWarningSwallower()); t.SetFailureHandlingOptions(failOpt); Plane p = Plane.CreateByNormalAndOrigin(XYZ.BasisZ, new XYZ(0, 0, elevation)); SketchPlane skp = SketchPlane.Create(OSM_FOR_REVIT.RevitDocument, p); for (int i = 0; i < copy.Count - 1; i++) { try { XYZ p1 = new XYZ(copy[i].U, copy[i].V, elevation); XYZ p2 = new XYZ(copy[i + 1].U, copy[i + 1].V, elevation); Line l = Line.CreateBound(p1, p2); OSM_FOR_REVIT.RevitDocument.Create.NewModelCurve(l, skp); } catch (Exception e) { MessageBox.Show(e.Report()); } } t.Commit(); } }
public static void KhepriWarnings(Transaction t) { FailureHandlingOptions failOp = t.GetFailureHandlingOptions(); failOp.SetFailuresPreprocessor(WarningSwallower.forKhepri); t.SetFailureHandlingOptions(failOp); }
public void VisualizeLines(ICollection <UVLine> lines, double elevation) { using (Transaction t = new Transaction(OSM_FOR_REVIT.RevitDocument, "Draw lines")) { t.Start(); FailureHandlingOptions failOpt = t.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(new CurveDrawingWarningSwallower()); t.SetFailureHandlingOptions(failOpt); Plane p = Plane.CreateByNormalAndOrigin(XYZ.BasisZ, new XYZ(0, 0, elevation)); SketchPlane skp = SketchPlane.Create(OSM_FOR_REVIT.RevitDocument, p); foreach (UVLine item in lines) { //unit conversion SpatialAnalysis.Geometry.UV start = item.Start.Copy(); unitConversion.Transform(start); SpatialAnalysis.Geometry.UV end = item.End.Copy(); unitConversion.Transform(end); //revit drawing part try { XYZ p1 = new XYZ(start.U, start.V, elevation); XYZ p2 = new XYZ(end.U, end.V, elevation); Line l = Line.CreateBound(p1, p2); OSM_FOR_REVIT.RevitDocument.Create.NewModelCurve(l, skp); } catch (Exception e) { MessageBox.Show(e.Report()); } } t.Commit(); } }
/// <summary> /// Gets a ReferenceArray representing the polygon /// </summary> /// <param name="document">The document in which the ReferenceArray is going to be generated</param> /// <param name="height">A desired plane that is determined by a Z value</param> /// <returns>Returns a ReferenceArray that might be null especifically the polygon is not closed</returns> public ReferenceArray Get_ReferenceArray(Document document, XYZ translation) { ReferenceArray refAr = null; using (Transaction createReferenceArray = new Transaction(document)) { FailureHandlingOptions failOpt = createReferenceArray.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(new WarningSwallower()); createReferenceArray.SetFailureHandlingOptions(failOpt); createReferenceArray.Start("Create ReferenceArray"); refAr = new ReferenceArray(); Plane p = new Plane(XYZ.BasisZ, new XYZ(this.processedPolygon[0].X, this.processedPolygon[0].Y, 0)); SketchPlane skp = SketchPlane.Create(document, p); try { for (int i = 0; i < this.processedPolygon.Count; i++) { int j = (i == this.processedPolygon.Count - 1) ? 0 : i + 1; XYZ ptA = this.processedPolygon[i] - translation; XYZ PtB = this.processedPolygon[j] - translation; Line l = Line.CreateBound(ptA, PtB); ModelCurve mCrv = document.FamilyCreate.NewModelCurve(l, skp); refAr.Append(mCrv.GeometryCurve.Reference); } } catch (Exception) { createReferenceArray.Commit(); return(null); } createReferenceArray.Commit(); } return(refAr); }
public void VisualizePoint(SpatialAnalysis.Geometry.UV pnt, double size, double elevation) { //unit conversion SpatialAnalysis.Geometry.UV p = pnt.Copy(); unitConversion.Transform(p); //revit drawing XYZ p1 = new XYZ(p.U - size / 2, p.V - size / 2, elevation); XYZ p2 = new XYZ(p.U + size / 2, p.V + size / 2, elevation); XYZ q1 = new XYZ(p.U + size / 2, p.V - size / 2, elevation); XYZ q2 = new XYZ(p.U - size / 2, p.V + size / 2, elevation); using (Transaction t = new Transaction(OSM_FOR_REVIT.RevitDocument, "Show Point")) { t.Start(); FailureHandlingOptions failOpt = t.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(new CurveDrawingWarningSwallower()); t.SetFailureHandlingOptions(failOpt); Plane pln = Plane.CreateByNormalAndOrigin(XYZ.BasisZ, new XYZ(0, 0, elevation)); SketchPlane skp = SketchPlane.Create(OSM_FOR_REVIT.RevitDocument, pln); Line l1 = Line.CreateBound(p1, p2); Line l2 = Line.CreateBound(q1, q2); OSM_FOR_REVIT.RevitDocument.Create.NewModelCurve(l1, skp); OSM_FOR_REVIT.RevitDocument.Create.NewModelCurve(l2, skp); t.Commit(); } p1 = null; p2 = null; q1 = null; q2 = null; }
public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { Document doc = commandData.Application .ActiveUIDocument.Document; FilteredElementCollector collector = new FilteredElementCollector(doc); collector.OfClass(typeof(Level)); Level level = collector.FirstElement() as Level; Transaction t = new Transaction(doc); t.Start("Create unbounded room"); FailureHandlingOptions failOpt = t.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor( new RoomWarningSwallower()); t.SetFailureHandlingOptions(failOpt); doc.Create.NewRoom(level, new UV(0, 0)); t.Commit(); return(Result.Succeeded); }
/// <summary> /// Copies all view-specific elements from a source view to a target view. /// </summary> /// <remarks> /// The source and target views do not have to be in the same document. /// </remarks> /// <param name="fromView">The source view.</param> /// <param name="toView">The target view.</param> /// <returns>The number of new elements created during the copy operation.</returns> private static int DuplicateDetailingAcrossViews(View fromView, View toView) { // Collect view-specific elements in source view FilteredElementCollector collector = new FilteredElementCollector(fromView.Document, fromView.Id); // Skip elements which don't have a category. In testing, this was // the revision table and the extents element, which should not be copied as they will // be automatically created for the copied view. collector.WherePasses(new ElementCategoryFilter(ElementId.InvalidElementId, true)) .WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_Viewers, true)); // Get collection of elements to copy for CopyElements() ICollection <ElementId> toCopy = collector.ToElementIds(); // Collect view-specific elements in source view FilteredElementCollector sectionsCollector = new FilteredElementCollector(fromView.Document, fromView.Id); // Skip elements which don't have a category. In testing, this was // the revision table and the extents element, which should not be copied as they will // be automatically created for the copied view. sectionsCollector.WherePasses(new ElementCategoryFilter(ElementId.InvalidElementId, true)) .WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_Viewers)); // Get collection of elements to copy for CopyElements() ICollection <Element> sectionsToCopy = sectionsCollector.ToElements(); ICollection <ElementId> sectionsToCopyIds = sectionsCollector.ToElementIds(); // Return value int numberOfCopiedElements = 0; if (toCopy.Count > 0) { try { using (Transaction t2 = new Transaction(toView.Document, "Duplicate view detailing")) { t2.Start(); // Set handler to skip the duplicate types dialog CopyPasteOptions options = new CopyPasteOptions(); options.SetDuplicateTypeNamesHandler(new HideAndAcceptDuplicateTypeNamesHandler()); // Copy the elements using no transformation ICollection <ElementId> copiedElements = ElementTransformUtils.CopyElements(fromView, toCopy, toView, Transform.Identity, options); numberOfCopiedElements = copiedElements.Count; // Set failure handler to skip any duplicate types warnings that are posted. FailureHandlingOptions failureOptions = t2.GetFailureHandlingOptions(); failureOptions.SetFailuresPreprocessor(new HidePasteDuplicateTypesPreprocessor()); t2.Commit(failureOptions); } } catch { } } return(numberOfCopiedElements); }
private void CreateFloor(Level targetLevel, List <List <LINE> > NewBeamGroup, FloorType floor_type) { List <CurveArray> floorCurves = new List <CurveArray>(); foreach (List <LINE> Beams in NewBeamGroup) { CurveArray curveArray = new CurveArray(); //floorCurves.Add(curveArray); try { foreach (LINE beam in Beams) { curveArray.Append(Line.CreateBound(beam.GetStartPoint(), beam.GetEndPoint())); } using (Transaction trans = new Transaction(this.revitDoc)) { FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(false); trans.SetFailureHandlingOptions(failureHandlingOptions); trans.Start("Create Floors"); this.revitDoc.Create.NewFloor(curveArray, floor_type, targetLevel, false); trans.Commit(); } } catch (Exception) { } } }
public void CopyText(Document doc, List <ElementId> ids, View source, List <View> Taggets) { ProgressbarWPF progressbarWPF = new ProgressbarWPF(Taggets.Count, "Copy Text"); progressbarWPF.Show(); foreach (var Tagget in Taggets) { if (progressbarWPF.iscontinue == false) { break; } using (Transaction t = new Transaction(doc, "Copy Text")) { t.Start(); FailureHandlingOptions options = t.GetFailureHandlingOptions(); MyPreProcessor ignoreProcess = new MyPreProcessor(); options.SetClearAfterRollback(true); options.SetFailuresPreprocessor(ignoreProcess); t.SetFailureHandlingOptions(options); try { ElementTransformUtils.CopyElements(source, ids, Tagget, Transform.Identity, new CopyPasteOptions()); } catch { } t.Commit(); } } progressbarWPF.Close(); }
private void UpdateRFAinProject(Document doc) { //Load and update the family symbol instances present in the project //make changes to the documnet by modifying the family file //Open transaction using (Transaction updating_transaction = new Transaction(doc)) { //Start the transaction updating_transaction.Start("UPDATE THE PROJECT"); //FailureHandlingOptions will collect those warnings which occurs while importing the family file into the project and deletes those warning FailureHandlingOptions FH_options = updating_transaction.GetFailureHandlingOptions(); FH_options.SetFailuresPreprocessor(new Warning_Swallower()); updating_transaction.SetFailureHandlingOptions(FH_options); //Loads the new familysymbol FamilyLoadOptions FLO = new FamilyLoadOptions(); FamilySymbol new_FS = null; doc.LoadFamilySymbol(RFA_TEMP, "Chair", FLO, out new_FS); //project gets updated after loading the family file //Commit the transaction to save the changes updating_transaction.Commit(); } //save the project file in the same path after updating the project file //If the project file(.rvt) with same name already exists in the project path ,overwrite the already existing project file ModelPath Project_model_path = ModelPathUtils.ConvertUserVisiblePathToModelPath(RVT_OUTPUT); SaveAsOptions SAO = new SaveAsOptions(); SAO.OverwriteExistingFile = true; //Save the project file doc.SaveAs(Project_model_path, SAO); }
private List <AnnotationElement> RetriveAnnotationElementsFromSelection(UIDocument UIDoc, Transaction tx) { ICollection <ElementId> elementIds = UIDoc.Selection.GetElementIds(); List <Element> elementList = new List <Element>(); List <AnnotationElement> annotationElementList = new List <AnnotationElement>(); tx.Start("Prepare tags"); using (IEnumerator <ElementId> enumerator = ((IEnumerable <ElementId>)elementIds).GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { ElementId current = enumerator.Current; Element element = UIDoc.get_Document().GetElement(current); if (((object)element).GetType() == typeof(IndependentTag)) { IndependentTag independentTag = element as IndependentTag; independentTag.set_LeaderEndCondition((LeaderEndCondition)1); if (independentTag.get_HasLeader()) { independentTag.set_LeaderEnd(independentTag.get_TagHeadPosition()); independentTag.set_LeaderElbow(independentTag.get_TagHeadPosition()); } elementList.Add(element); } else if (((object)element).GetType() == typeof(TextNote)) { (element as TextNote).RemoveLeaders(); elementList.Add(element); } else if (((object)element).GetType().IsSubclassOf(typeof(SpatialElementTag))) { SpatialElementTag spatialElementTag = element as SpatialElementTag; if (spatialElementTag.get_HasLeader()) { spatialElementTag.set_LeaderEnd(spatialElementTag.get_TagHeadPosition()); spatialElementTag.set_LeaderElbow(spatialElementTag.get_TagHeadPosition()); } elementList.Add(element); } else { elementList.Add(element); } } } FailureHandlingOptions failureHandlingOptions = tx.GetFailureHandlingOptions(); failureHandlingOptions.SetFailuresPreprocessor((IFailuresPreprocessor) new CommitPreprocessor()); tx.Commit(failureHandlingOptions); using (List <Element> .Enumerator enumerator = elementList.GetEnumerator()) { while (enumerator.MoveNext()) { Element current = enumerator.Current; annotationElementList.Add(new AnnotationElement(current)); } } return(annotationElementList); }
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(); List <Element> list = new List <Element>(); foreach (ElementId item in elementIds) { Element element = document.GetElement(item); list.Add(element); } if (list.Count > 0) { GlobolVar.G_JoinWay = "Miter"; WF_StartEnd wF_StartEnd = new WF_StartEnd(); wF_StartEnd.ShowDialog(); if (GlobolVar.G_JoinStatus == -1) { return(0); } Transaction val = new Transaction(document); val.Start("Miter"); FailureHandlingOptions failureHandlingOptions = val.GetFailureHandlingOptions(); MyFailuresPreProcessor myFailuresPreProcessor = new MyFailuresPreProcessor(); failureHandlingOptions.SetFailuresPreprocessor(myFailuresPreProcessor); val.SetFailureHandlingOptions(failureHandlingOptions); foreach (Element item2 in list) { try { if (GlobolVar.G_JoinStatus == 0) { (item2.get_Location() as LocationCurve).set_JoinType(1, 1); (item2.get_Location() as LocationCurve).set_JoinType(0, 1); } else if (GlobolVar.G_JoinStatus == 1) { (item2.get_Location() as LocationCurve).set_JoinType(0, 1); } else if (GlobolVar.G_JoinStatus == 2) { (item2.get_Location() as LocationCurve).set_JoinType(1, 1); } } catch (Exception) { } } val.Commit(); } else { TaskDialog.Show("Result", "None Element Selected"); } return(0); }
/// <summary> /// Executes on type to instance change /// </summary> /// <param name="uiapp"></param> /// <param name="text"></param> /// <param name="values"></param> private void ExecuteParameterChange(UIApplication uiapp, String text, List <string> values, string type) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; if (!doc.IsFamilyDocument) { Command.global_message = "Please run this command in a family document."; TaskDialog.Show("Message", Command.global_message); } if ((uidoc != null)) { using (TransactionGroup tg = new TransactionGroup(doc, "Parameter Type To Instance")) { tg.Start(); using (Transaction trans = new Transaction(uidoc.Document)) { FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(true); trans.SetFailureHandlingOptions(failureHandlingOptions); // Since we'll modify the document, we need a transaction // It's best if a transaction is scoped by a 'using' block // The name of the transaction was given as an argument if (trans.Start(text) == TransactionStatus.Started) { FamilyManager mgr = doc.FamilyManager; foreach (var value in values) { FamilyParameter fp = mgr.get_Parameter(value); if (fp.IsInstance) { mgr.MakeType(fp); } else { mgr.MakeInstance(fp); }; } } doc.Regenerate(); trans.Commit(); uidoc.RefreshActiveView(); if (failureHandler.ErrorMessage != "") { if (EncounteredError != null) { EncounteredError(this, null); } } } tg.Assimilate(); } } }
public XYZ GetReferenceDirection(Reference ref1, Document doc) // returns the direction perpendicular to reference // returns XYZ.Zero on error; { XYZ res = XYZ.Zero; XYZ workPlaneNormal = doc.ActiveView.SketchPlane.GetPlane().Normal; if (ref1.ElementId == ElementId.InvalidElementId) { return(res); } Element elem = doc.GetElement(ref1.ElementId); if (elem == null) { return(res); } if (ref1.ElementReferenceType == ElementReferenceType.REFERENCE_TYPE_SURFACE || ref1.ElementReferenceType == ElementReferenceType.REFERENCE_TYPE_LINEAR) { // make a dimension to a point for direction XYZ bEnd = new XYZ(10, 10, 10); ReferenceArray refArr = new ReferenceArray(); refArr.Append(ref1); Dimension dim = null; using (Transaction t = new Transaction(doc, "test")) { FailureHandlingOptions failureHandlingOptions = t.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(true); t.SetFailureHandlingOptions(failureHandlingOptions); t.Start(); using (SubTransaction st = new SubTransaction(doc)) { st.Start(); ReferencePlane refPlane = doc.Create.NewReferencePlane(XYZ.Zero, bEnd, bEnd.CrossProduct(XYZ.BasisZ).Normalize(), doc.ActiveView); ModelCurve mc = doc.Create.NewModelCurve(Line.CreateBound(XYZ.Zero, new XYZ(10, 10, 10)), SketchPlane.Create(doc, refPlane.Id)); refArr.Append(mc.GeometryCurve.GetEndPointReference(0)); dim = doc.Create.NewDimension(doc.ActiveView, Line.CreateBound(XYZ.Zero, new XYZ(10, 0, 0)), refArr); ElementTransformUtils.MoveElement(doc, dim.Id, new XYZ(0, 0.1, 0)); st.Commit(); } if (dim != null) { Curve cv = dim.Curve; cv.MakeBound(0, 1); XYZ pt1 = cv.GetEndPoint(0); XYZ pt2 = cv.GetEndPoint(1); res = pt2.Subtract(pt1).Normalize(); } t.RollBack(); } } return(res); }
public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiApp = commandData.Application; Document doc = uiApp.ActiveUIDocument.Document; MessageDescriptionGatheringPreprocessor pp = new MessageDescriptionGatheringPreprocessor(); using (Transaction t = new Transaction(doc)) { FailureHandlingOptions ops = t.GetFailureHandlingOptions(); ops.SetFailuresPreprocessor(pp); t.SetFailureHandlingOptions(ops); t.Start("Marks"); // Generate a 'duplicate mark' warning message: IList <Element> specEqu = new FilteredElementCollector(doc) .OfCategory(BuiltInCategory.OST_SpecialityEquipment) .WhereElementIsNotElementType() .ToElements(); if (specEqu.Count >= 2) { for (int i = 0; i < 2; i++) { specEqu[i].get_Parameter( BuiltInParameter.ALL_MODEL_MARK).Set( "Duplicate Mark"); } } // Generate an 'duplicate wall' warning message: Element level = new FilteredElementCollector(doc) .OfClass(typeof(Level)) .FirstElement(); Line line = Line.CreateBound(XYZ.Zero, 10 * XYZ.BasisX); Wall wall1 = Wall.Create(doc, line, level.Id, false); Wall wall2 = Wall.Create(doc, line, level.Id, false); t.Commit(); } pp.ShowDialogue(); return(Result.Succeeded); }
private static int DuplicateDetailingAcrossViews(View fromView, View toView) { int numberOfCopiedElements = 0; try { List <ElementId> elementIdsToExclude = new List <ElementId>(); ICollection <ElementId> referenceCalloutIds = fromView.GetReferenceCallouts(); elementIdsToExclude.AddRange(referenceCalloutIds); ICollection <ElementId> referenceElevationIds = fromView.GetReferenceElevations(); elementIdsToExclude.AddRange(referenceElevationIds); ICollection <ElementId> referenceSectionIds = fromView.GetReferenceSections(); elementIdsToExclude.AddRange(referenceSectionIds); FilteredElementCollector collector = new FilteredElementCollector(fromView.Document, fromView.Id); if (elementIdsToExclude.Count > 0) { collector.Excluding(elementIdsToExclude); } collector.WherePasses(new ElementCategoryFilter(ElementId.InvalidElementId, true)); ICollection <ElementId> toCopy = collector.ToElementIds(); CopyPasteOptions options = new CopyPasteOptions(); options.SetDuplicateTypeNamesHandler(new HideAndAcceptDuplicateTypeNamesHandler()); if (toCopy.Count > 0) { using (Transaction t2 = new Transaction(toView.Document, "Duplicate view detailing")) { t2.Start(); try { ICollection <ElementId> copiedElements = ElementTransformUtils.CopyElements(fromView, toCopy, toView, Transform.Identity, options); numberOfCopiedElements = copiedElements.Count; FailureHandlingOptions failureOptions = t2.GetFailureHandlingOptions(); failureOptions.SetFailuresPreprocessor(new HidePasteDuplicateTypesPreprocessor()); t2.Commit(failureOptions); } catch (Exception ex) { string message = ex.Message; t2.RollBack(); } } } } catch (Exception ex) { //MessageBox.Show("Failed to duplicate detialing across views.\n"+ex.Message, "Duplicate Detailing Across Views", MessageBoxButton.OK, MessageBoxImage.Warning); errorMessage.AppendLine(toView.Name + ": errors in duplicating detailing across views.\n" + ex.Message); } return(numberOfCopiedElements); }
public static void commitTransaction(this Transaction transaction, WarningSwallower failuresPreprocessor) { FailureHandlingOptions failureOptions = transaction.GetFailureHandlingOptions(); failureOptions.SetFailuresPreprocessor(failuresPreprocessor); failureOptions.SetDelayedMiniWarnings(true); failureOptions.SetClearAfterRollback(true); transaction.SetFailureHandlingOptions(failureOptions); transaction.Commit(); }
//---------------------------------------------------------- public void PurgeUnusedType(Document doc) { var allElementsInView = new FilteredElementCollector(doc, doc.ActiveView.Id).ToElements(); List <string> typesName = new List <string>(); List <string> familysName = new List <string>(); foreach (Element ele in allElementsInView) { typesName.Add(ele.Name); string familyName = ele.get_Parameter(BuiltInParameter.ELEM_FAMILY_PARAM).AsValueString(); familysName.Add(familyName); } List <string> typesName_Unique = typesName.Distinct().ToList(); List <string> familysName_Unique = familysName.Distinct().ToList(); var elementType = new FilteredElementCollector(doc).OfClass(typeof(ElementType)).ToList(); var elementType1 = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).ToList(); List <ElementId> idDelete = new List <ElementId>(); foreach (ElementType type in elementType) { if (DocumentValidation.CanDeleteElement(doc, type.Id) && typesName_Unique.Contains(type.Name) == false && familysName_Unique.Contains(type.FamilyName)) { idDelete.Add(type.Id); } } foreach (FamilySymbol type in elementType1) { if (DocumentValidation.CanDeleteElement(doc, type.Id) && typesName_Unique.Contains(type.Name) == false && familysName_Unique.Contains(type.FamilyName)) { idDelete.Add(type.Id); } } foreach (ElementId type in idDelete) { Transaction transaction = new Transaction(doc); FailureHandlingOptions failure = transaction.GetFailureHandlingOptions(); failure.SetClearAfterRollback(true); failure.SetForcedModalHandling(false); failure.SetFailuresPreprocessor(new RollbackIfErrorOccurs()); transaction.SetFailureHandlingOptions(failure); transaction.Start("PurgeUnusedType"); try { doc.Delete(type); transaction.Commit(); } catch (Exception) { transaction.Dispose(); } } }
public void InitTransaction() { if (_trans == null || _trans.GetStatus() != TransactionStatus.Started) { _trans = new Autodesk.Revit.DB.Transaction(dynRevitSettings.Doc.Document, "Dynamo Script"); _trans.Start(); FailureHandlingOptions failOpt = _trans.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(new DynamoWarningPrinter()); _trans.SetFailureHandlingOptions(failOpt); } }
/// <summary> /// Restore all values /// </summary> /// <param name="uiapp"></param> /// <param name="text"></param> /// <param name="values"></param> public static void ExecuteParameterChange(UIApplication uiapp, String text, List <Tuple <string, string, double> > values) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; if (!doc.IsFamilyDocument) { Command.global_message = "Please run this command in a family document."; TaskDialog.Show("Message", Command.global_message); } if ((uidoc != null)) { using (TransactionGroup tg = new TransactionGroup(doc, "Parameter Change")) { tg.Start(); foreach (var value in values) { using (Transaction trans = new Transaction(uidoc.Document)) { FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(true); trans.SetFailureHandlingOptions(failureHandlingOptions); FamilyManager mgr = doc.FamilyManager; FamilyParameter fp = mgr.get_Parameter(value.Item1); // Since we'll modify the document, we need a transaction // It's best if a transaction is scoped by a 'using' block // The name of the transaction was given as an argument if (trans.Start(text) == TransactionStatus.Started) { mgr.Set(fp, value.Item3); //operation(mgr, fp); doc.Regenerate(); if (!value.Item1.Equals(value.Item2)) { mgr.RenameParameter(fp, value.Item2); } trans.Commit(); uidoc.RefreshActiveView(); } if (failureHandler.ErrorMessage != "") { RequestError.ErrorLog.Add(new Message(fp.Definition.Name, failureHandler.ErrorMessage)); } } } tg.Assimilate(); } } }
/// <summary> /// Delete parameter /// </summary> /// <param name="uiapp"></param> /// <param name="text"></param> /// <param name="values"></param> public static void ExecuteParameterChange(UIApplication uiapp, String text, List <string> values) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; if (!doc.IsFamilyDocument) { Command.global_message = "Please run this command in a family document."; TaskDialog.Show("Message", Command.global_message); } if ((uidoc != null)) { using (TransactionGroup tg = new TransactionGroup(doc, "Parameter Delete")) { tg.Start(); using (Transaction trans = new Transaction(uidoc.Document)) { FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(true); trans.SetFailureHandlingOptions(failureHandlingOptions); // Since we'll modify the document, we need a transaction // It's best if a transaction is scoped by a 'using' block // The name of the transaction was given as an argument if (trans.Start(text) == TransactionStatus.Started) { FamilyManager mgr = doc.FamilyManager; foreach (var value in values) { FamilyParameter fp = mgr.get_Parameter(value); mgr.RemoveParameter(fp); } } doc.Regenerate(); trans.Commit(); uidoc.RefreshActiveView(); if (failureHandler.ErrorMessage != "") { RequestError.ErrorLog.Add(new Message("", failureHandler.ErrorMessage)); } else { RequestError.NotifyLog += $"Successfully purged {values.Count.ToString()} unused parameters."; } } tg.Assimilate(); } } }
private void ProcesarFamiliasEnLaCarpeta(Document documentoActivo, string carpetaEnProceso, string carpetaDestino) { foreach (string pathArchivoFamilia in System.IO.Directory.GetFiles(carpetaEnProceso, "*.rfa")) { string pathArchivoImagen = System.IO.Path.Combine(carpetaDestino, System.IO.Path.GetFileName(System.IO.Path.ChangeExtension(pathArchivoFamilia, ".png"))); if (!(procesarSoloFamiliasSinImagen == true && System.IO.File.Exists(pathArchivoImagen)) || procesarTodasLasFamilias == true) { try { string nombreFamilia = System.IO.Path.GetFileNameWithoutExtension(pathArchivoFamilia); Family familia; using (Transaction trans = new Transaction(documentoActivo, "Load family for UCFamilyProcessor")) { trans.Start(); FailureHandlingOptions enCasoDeFalloOAviso = trans.GetFailureHandlingOptions(); enCasoDeFalloOAviso.SetFailuresPreprocessor(new ProcesadorDeWarnings()); trans.SetFailureHandlingOptions(enCasoDeFalloOAviso); documentoActivo.LoadFamily(pathArchivoFamilia, new OpcionesDeSobreescrituraDeFamiliasAnidadasYaExistentesEnElDocumento(), out familia); trans.Commit(); } ElementId idPrimerSimboloEnLaFamilia = familia.GetFamilySymbolIds().First(); FamilySymbol simbolo = (FamilySymbol)familia.Document.GetElement(idPrimerSimboloEnLaFamilia); System.Drawing.Bitmap thumbnail = simbolo.GetPreviewImage(new System.Drawing.Size(100, 100)); if (thumbnail != null) { thumbnail.Save(filename: pathArchivoImagen, format: System.Drawing.Imaging.ImageFormat.Png); } else { System.IO.File.Create(System.IO.Path.ChangeExtension(pathArchivoImagen, "dummy")); } } catch (Exception) { continue; } } } //Este bucle recursivo es una chapu para incorporar ANNOTATIONS y lo que se tercie... foreach (string subcarpeta in System.IO.Directory.GetDirectories(carpetaEnProceso)) { ProcesarFamiliasEnLaCarpeta(documentoActivo, subcarpeta, pathCarpetaDestino); } }
private void PostWarningAndResolveInFailurePreproccessor() { Transaction transaction = new Transaction(m_doc, "Warning_FailurePreproccessor"); FailureHandlingOptions options = transaction.GetFailureHandlingOptions(); FailurePreproccessor preproccessor = new FailurePreproccessor(); options.SetFailuresPreprocessor(preproccessor); transaction.SetFailureHandlingOptions(options); transaction.Start(); FailureMessage fm = new FailureMessage(m_idWarning); m_doc.PostFailure(fm); transaction.Commit(); }
protected override void TrySolveInstance(IGH_DataAccess dataAccess) { dataAccess.SetData(1, false); bool run = false; if (!dataAccess.GetData(0, ref run) || !run) { return; } Document document = RhinoInside.Revit.Revit.ActiveDBDocument; AnalyticalModel analyticalModel = null; using (Transaction transaction = new Transaction(document, "GetAnalyticalModel")) { FailureHandlingOptions failureHandlingOptions = transaction.GetFailureHandlingOptions(); failureHandlingOptions.SetFailuresPreprocessor(new WarningSwallower()); transaction.SetFailureHandlingOptions(failureHandlingOptions); transaction.Start(); ConvertSettings convertSettings = new ConvertSettings(true, true, true); try { analyticalModel = Analytical.Revit.Convert.ToSAM_AnalyticalModel(document, convertSettings); } catch (Exception exception) { if (exception.Message.Contains("spatial bounding elements")) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Check your setting in Export Category: Rooms/Spaces in Export gbXML settings"); } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, exception.Message); } } transaction.RollBack(); } dataAccess.SetData(0, new GooAnalyticalModel(analyticalModel)); dataAccess.SetData(1, analyticalModel != null); }
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("Merger Element"); FailureHandlingOptions failureHandlingOptions = val.GetFailureHandlingOptions(); MyFailuresPreProcessor myFailuresPreProcessor = new MyFailuresPreProcessor(); failureHandlingOptions.SetFailuresPreprocessor(myFailuresPreProcessor); val.SetFailureHandlingOptions(failureHandlingOptions); foreach (List <Element> item in combinations) { if (!JoinGeometryUtils.AreElementsJoined(document, item[0], item[1])) { try { JoinGeometryUtils.JoinGeometry(document, item[0], item[1]); num++; } catch { } } } MessageBox.Show(num.ToString() + " Pairs Elements Successfully Join.", "ElementMerger"); val.Commit(); } else if (list.Count == 1) { TaskDialog.Show("ElementMerger", "Only One Element Selected"); } } else { TaskDialog.Show("ElementMerger", "None Element Selected"); } return(0); }
/// <summary> /// Starts a RevitAPI Transaction that will be managed by this TransactionManager instance. /// </summary> /// <param name="document">Document (DB) to start a Transaction for.</param> public TransactionHandle StartTransaction(Document document) { if (Transaction == null || Transaction.GetStatus() != TransactionStatus.Started) { TransactionManager.Log("Starting Transaction."); Transaction = new Transaction(document, "Dynamo Script"); Transaction.Start(); FailureHandlingOptions failOpt = Transaction.GetFailureHandlingOptions(); failOpt.SetFailuresPreprocessor(handler); Transaction.SetFailureHandlingOptions(failOpt); RaiseTransactionStarted(); } return(Handle); }
public void Transferviewtemplate(Document source, Document target, List <ElementId> elementIds) { using (Transaction tran = new Transaction(target, "Ivention EXT: Transfer view template")) { tran.Start(); FailureHandlingOptions options = tran.GetFailureHandlingOptions(); IgnoreProcess ignoreProcess = new IgnoreProcess(); options.SetClearAfterRollback(true); options.SetFailuresPreprocessor(ignoreProcess); tran.SetFailureHandlingOptions(options); CopyPasteOptions coptions = new CopyPasteOptions(); coptions.SetDuplicateTypeNamesHandler(new CopyHandler()); ICollection <ElementId> litstrans = ElementTransformUtils.CopyElements(source, elementIds, target, null, coptions); tran.Commit(options); } }
/// <summary> /// Change Parameter /// </summary> /// <param name="uiapp"></param> /// <param name="text"></param> /// <param name="values"></param> public static void ExecuteParameterChange(UIApplication uiapp, String text, Tuple <string, double> value) { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; if (!doc.IsFamilyDocument) { Command.global_message = "Please run this command in a family document."; TaskDialog.Show("Message", Command.global_message); } if ((uidoc != null)) { using (Transaction trans = new Transaction(uidoc.Document, "Change Parameter Value")) { FailureHandlingOptions failureHandlingOptions = trans.GetFailureHandlingOptions(); FailureHandler failureHandler = new FailureHandler(); failureHandlingOptions.SetFailuresPreprocessor(failureHandler); failureHandlingOptions.SetClearAfterRollback(true); trans.SetFailureHandlingOptions(failureHandlingOptions); FamilyManager mgr = doc.FamilyManager; FamilyParameter fp = mgr.get_Parameter(value.Item1); // Since we'll modify the document, we need a transaction // It's best if a transaction is scoped by a 'using' block // The name of the transaction was given as an argument if (trans.Start(text) == TransactionStatus.Started) { if (fp.IsDeterminedByFormula || fp.IsReporting) { trans.RollBack(); //Cannot change parameters driven by formulas, cannot change reporting parameters return; } mgr.Set(fp, value.Item2); doc.Regenerate(); trans.Commit(); uidoc.RefreshActiveView(); if (failureHandler.ErrorMessage != "") { RequestError.ErrorLog.Add(new Message(fp.Definition.Name, failureHandler.ErrorMessage)); } } } } }
private void DismissWarningInFailurePreproccesser(Level level1) { Transaction transaction = new Transaction(m_doc, "Warning_FailurePreproccessor_OverlappedWall"); FailureHandlingOptions options = transaction.GetFailureHandlingOptions(); FailurePreproccessor preproccessor = new FailurePreproccessor(); options.SetFailuresPreprocessor(preproccessor); transaction.SetFailureHandlingOptions(options); transaction.Start(); Line line = Line.CreateBound(new XYZ(-10, 0, 0), new XYZ(-20, 0, 0)); Wall wall1 = Wall.Create(m_doc, line, level1.Id, false); Wall wall2 = Wall.Create(m_doc, line, level1.Id, false); m_doc.Regenerate(); transaction.Commit(); }