/// <summary> /// Sets the near clipping plane distance of the view. This is done by modifying the cropbox. Please note that modifying the far clip distance will reset any near clip modifications. /// </summary> /// <param name="View">A Dynamo wrapped view</param> /// <param name="NearClipping">The Near Clipping Offset distance as a number from the camera</param> /// <returns name="View">Returns the modified view</returns> public static dynaView SetNearClippingDistance(dynaView3D View, double NearClipping) { string transactionName = "Set Near Clipping Distance"; revitView rView = (revitView)View.InternalElement; revitBBxyz CropBox = rView.CropBox; revitXYZ oldMax = CropBox.Max; revitXYZ newMax = new revitXYZ(oldMax.X, oldMax.Y, -Math.Abs(NearClipping)); revitBBxyz NewCropBox = new revitBBxyz(); NewCropBox.Max = newMax; NewCropBox.Min = CropBox.Min; revitDoc document = rView.Document; if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); rView.CropBox = NewCropBox; TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start(transactionName); rView.CropBox = NewCropBox; trans.Commit(); } } return(View); }
/// <summary> /// Set Solid In View /// </summary> /// <param name="rebar">Single Rebar</param> /// <param name="view">3D View</param> /// <param name="solid">Solid</param> public static void SetSolidInView(Rebar rebar, Revit.Elements.Views.View3D view, bool solid) { Autodesk.Revit.DB.Document document = DocumentManager.Instance.CurrentDBDocument; TransactionManager.Instance.EnsureInTransaction(document); Autodesk.Revit.DB.Structure.Rebar rebarElement = (Autodesk.Revit.DB.Structure.Rebar)rebar.InternalElement; Autodesk.Revit.DB.View3D viewElement = (Autodesk.Revit.DB.View3D)view.InternalElement; rebarElement.SetSolidInView(viewElement, solid); TransactionManager.Instance.TransactionTaskDone(); }
/// <summary> /// Set Solid In View /// </summary> /// <param name="rebarContainer">Rebar Container</param> /// <param name="view">3D View</param> /// <param name="solid">Solid</param> public static void SetSolidInView(Element rebarContainer, Revit.Elements.Views.View3D view, bool solid) { Autodesk.Revit.DB.Structure.RebarContainer bar = rebarContainer.InternalElement as Autodesk.Revit.DB.Structure.RebarContainer; if (bar != null) { Autodesk.Revit.DB.Document document = DocumentManager.Instance.CurrentDBDocument; TransactionManager.Instance.EnsureInTransaction(document); Autodesk.Revit.DB.View3D viewElement = (Autodesk.Revit.DB.View3D)view.InternalElement; bar.SetSolidInView(viewElement, solid); TransactionManager.Instance.TransactionTaskDone(); } }
/// <summary> /// Matches View3D's orientation and cropbox to an orthagonal view. Also sets the View3D to isometric. /// </summary> /// <param name="View3D">The 3D view to change orientation and crop</param> /// <param name="SourceView">The source orthogonal view to acquire orientation and cropbox</param> /// <param name="Offset">Offset of the camera from the view direction of the source view</param> /// <returns name="View3D"></returns> public static DynaView3D View3dOrientToggleIsometric(DynaView3D View3D, DynaView SourceView, double Offset) { string transactionName = "View3dOrientToggleIsometric"; RevitView3D rView = (RevitView3D)View3D.InternalElement; RevitView rSourceView = (RevitView)SourceView.InternalElement; RevitDoc document = rView.Document; // Cropbox RevitBB cropbox = rSourceView.CropBox; RevitXYZ origin = cropbox.Transform.Origin; // View Orientation RevitXYZ rEyePosition = origin.Add(rSourceView.ViewDirection.Normalize().Multiply(Offset)); RevitXYZ rUpDirection = rSourceView.UpDirection; RevitXYZ rForwardDirection = rSourceView.ViewDirection.Negate(); RevitViewOrientation viewOrient = new RevitViewOrientation(rEyePosition, rUpDirection, rForwardDirection); Action <RevitView3D, RevitViewOrientation, RevitBB> orientView = (view, orient, cropbb) => { view.ToggleToIsometric(); view.SetOrientation(orient); view.CropBox = cropbb; }; if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); orientView(rView, viewOrient, cropbox); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start(transactionName); orientView(rView, viewOrient, cropbox); trans.Commit(); } } return(View3D); }
/// <summary> /// Changes a view from Isometric to Perspective. /// </summary> /// <param name="View3D">A Dynamo wrapped View3D</param> /// <returns name="View3D">A Dynamo wrapped View3D</returns> public static dynaView3D ToggleToPerspective(dynaView3D View3D) { revitView3D rView = (revitView3D)View3D.InternalElement; revitDoc document = rView.Document; if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); rView.ToggleToPerspective(); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start("Toggle " + rView.Name + " To Perspective"); rView.ToggleToPerspective(); trans.Commit(); } } return(View3D); }
/// <summary> /// Sets the 3D view's orientation. /// </summary> /// <param name="View3D">A Dynamo wrapped View3D</param> /// <param name="ViewOrient">A Revit ViewOrientation3D element</param> /// <returns name="View3D">A Dynamo wrapped View3D</returns> public static dynaView3D SetViewOrientation(dynaView3D View3D, revitViewOrientation ViewOrient) { revitView3D rView = (revitView3D)View3D.InternalElement; revitDoc document = rView.Document; if (document.IsModifiable) { TransactionManager.Instance.EnsureInTransaction(document); rView.SetOrientation(ViewOrient); TransactionManager.Instance.TransactionTaskDone(); } else { using (Autodesk.Revit.DB.Transaction trans = new Autodesk.Revit.DB.Transaction(document)) { trans.Start("Set view orientation"); rView.SetOrientation(ViewOrient); trans.Commit(); } } return(View3D); }
/// <summary> /// Gets a View's distance to the Near Clipping Plane. /// </summary> /// <param name="View3D">A Dynamo wrapped View3D</param> /// <returns name="Distance">Distance to the Near Clipping Plane as a Double.</returns> public static double GetNearClippingDistance(dynaView3D View3D) { revitView3D rView = (revitView3D)View3D.InternalElement; return(Math.Abs(rView.CropBox.Max.Z)); }
/// <summary> /// Gets the 3D view's orientation. /// </summary> /// <param name="View3D">A Dynamo wrapped View3D</param> /// <returns name="ViewOrient">A Revit ViewOrientation3D element</returns> public static revitViewOrientation GetViewOrientation(dynaView3D View3D) { revitView3D rView = (revitView3D)View3D.InternalElement; return(rView.GetOrientation()); }