コード例 #1
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="view"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static PerspectiveView FromExisting(Autodesk.Revit.DB.View3D view, bool isRevitOwned)
 {
     return(new PerspectiveView(view)
     {
         IsRevitOwned = isRevitOwned
     });
 }
コード例 #2
0
        public static Dictionary <string, object> SetSectionBox(global::Revit.Elements.Element view3D, BoundingBox bBox)
        {
            Autodesk.Revit.DB.Document doc          = DocumentManager.Instance.CurrentDBDocument;
            Autodesk.Revit.DB.View3D   internalView = (Autodesk.Revit.DB.View3D)view3D.InternalElement;
            BoundingBoxXYZ             revitBoxXyz  = bBox.ToRevitType();

            List <object> success = new List <object>();
            List <object> fail    = new List <object>();


            TransactionManager.Instance.EnsureInTransaction(doc);
            try
            {
                internalView.SetSectionBox(revitBoxXyz);
                success.Add(view3D);
            }
            catch
            {
                fail.Add(view3D);
            }

            TransactionManager.Instance.TransactionTaskDone();
            var outInfo = new Dictionary <string, object>
            {
                { "success", success },
                { "failed", fail }
            };

            return(outInfo);
        }
コード例 #3
0
 /// <summary>
 /// Create from an existing Revit Element
 /// </summary>
 /// <param name="view"></param>
 /// <param name="isRevitOwned"></param>
 /// <returns></returns>
 internal static AxonometricView FromExisting(Autodesk.Revit.DB.View3D view, bool isRevitOwned)
 {
     return(new AxonometricView(view)
     {
         IsRevitOwned = isRevitOwned
     });
 }
コード例 #4
0
        /// <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();
        }
コード例 #5
0
ファイル: ElementWrapper.cs プロジェクト: mgjean/DynamoRevit
        public static AbstractView3D Wrap(Autodesk.Revit.DB.View3D view, bool isRevitOwned)
        {
            if (view.IsTemplate)
            {
                return(Revit.Elements.Views.View3D.FromExisting(view, isRevitOwned));
            }
            if (view.IsPerspective)
            {
                return(PerspectiveView.FromExisting(view, isRevitOwned));
            }

            return(AxonometricView.FromExisting(view, isRevitOwned));
        }
コード例 #6
0
        /// <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();
            }
        }
コード例 #7
0
        /// <summary>
        /// Hide a specific item in a rebar container
        /// </summary>
        /// <param name="rebarContainer">Rebar Container</param>
        /// <param name="view">Revit View</param>
        /// <param name="itemIndex">Item Index</param>
        /// <param name="hide">Hide setting</param>
        public static void SetItemHiddenStatus(Element rebarContainer, Revit.Elements.Views.View3D view, int itemIndex, bool hide)
        {
            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.SetItemHiddenStatus(viewElement, itemIndex, hide);

                TransactionManager.Instance.TransactionTaskDone();
            }
        }
コード例 #8
0
        /// <summary>
        /// Get a 3D view from active document
        /// </summary>
        public void Get3DView()
        {
            List <Autodesk.Revit.DB.Element> list      = new List <Autodesk.Revit.DB.Element>();
            FilteredElementCollector         collector = new FilteredElementCollector(m_app.ActiveUIDocument.Document);

            list.AddRange(collector.OfClass(typeof(View3D)).ToElements());
            foreach (Autodesk.Revit.DB.View3D v in list)
            {
                // skip view template here because view templates are invisible in project browsers
                if (v != null && !v.IsTemplate && v.Name == "{3D}")
                {
                    m_view = v as Autodesk.Revit.DB.View3D;
                    break;
                }
            }
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="commandData">Revit application</param>
        /// <param name="v">3D View</param>
        public RayTraceBounceForm(ExternalCommandData commandData, Autodesk.Revit.DB.View3D v)
        {
            InitializeComponent();

            string logFile = AssemblyName.Replace(".dll", DateTime.Now.ToString("yyyyMMddhhmmss") + ".log");

            if (File.Exists(logFile))
            {
                File.Delete(logFile);
            }
            m_txtListener = new TextWriterTraceListener(logFile);
            Trace.Listeners.Add(m_txtListener);

            m_app  = commandData.Application;
            m_doc  = commandData.Application.ActiveUIDocument.Document;
            m_view = v;
            UpdateData(true);
            // Delete lines it created
            DeleteLines();
        }
コード例 #11
0
ファイル: View.cs プロジェクト: andradam75/Synthetic
        /// <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);
        }
コード例 #12
0
ファイル: View.cs プロジェクト: andradam75/Synthetic
        /// <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);
        }
コード例 #13
0
        private void Btn_Select_Click(object sender, RoutedEventArgs e)
        {
            var b = Listbox_view.SelectedItems;

            foreach (KeyValuePair <string, List <a.FamilyInstance> > keyValue in b)
            {
                foreach (var i in keyValue.Value)
                {
                    ids.Add(i.Id);
                }
            }
            try
            {
                _view3d = cbb_view3d.SelectedItem as a.View3D;
                _data.Setting.View3d = (cbb_view3d.SelectedItem as a.View3D).Name;
                _data.Setting.SaveSetting();
            }
            catch
            {
                _data.Setting.SaveSetting();
            }
            Close();
        }
コード例 #14
0
ファイル: View3D.cs プロジェクト: vtaran/Dynamo
        /// <summary>
        /// Make a single element appear in a particular view
        /// </summary>
        /// <param name="view"></param>
        /// <param name="element"></param>
        protected static void IsolateInView(Autodesk.Revit.DB.View3D view, Autodesk.Revit.DB.Element element)
        {
            var fec = GetVisibleElementFilter();

            view.CropBoxActive = true;

            var all    = fec.ToElements();
            var toHide =
                fec.ToElements().Where(x => !x.IsHidden(view) && x.CanBeHidden(view) && x.Id != element.Id).Select(x => x.Id).ToList();

            if (toHide.Count > 0)
            {
                view.HideElements(toHide);
            }

            DocumentManager.Regenerate();

            if (view.IsPerspective)
            {
                var farClip = view.get_Parameter("Far Clip Active");
                farClip.Set(0);
            }
            else
            {
                var pts = new List <XYZ>();

                GetPointCloud(element, pts);

                var bounding     = view.CropBox;
                var transInverse = bounding.Transform.Inverse;
                var transPts     = pts.Select(transInverse.OfPoint);

                //ingore the Z coordindates and find
                //the max X ,Y and Min X, Y in 3d view.
                double dMaxX = 0, dMaxY = 0, dMinX = 0, dMinY = 0;

                bool bFirstPt = true;
                foreach (var pt1 in transPts)
                {
                    if (true == bFirstPt)
                    {
                        dMaxX    = pt1.X;
                        dMaxY    = pt1.Y;
                        dMinX    = pt1.X;
                        dMinY    = pt1.Y;
                        bFirstPt = false;
                    }
                    else
                    {
                        if (dMaxX < pt1.X)
                        {
                            dMaxX = pt1.X;
                        }
                        if (dMaxY < pt1.Y)
                        {
                            dMaxY = pt1.Y;
                        }
                        if (dMinX > pt1.X)
                        {
                            dMinX = pt1.X;
                        }
                        if (dMinY > pt1.Y)
                        {
                            dMinY = pt1.Y;
                        }
                    }
                }

                bounding.Max = new XYZ(dMaxX, dMaxY, bounding.Max.Z);
                bounding.Min = new XYZ(dMinX, dMinY, bounding.Min.Z);
                view.CropBox = bounding;
            }

            view.CropBoxVisible = false;
        }
コード例 #15
0
ファイル: View.cs プロジェクト: andradam75/Synthetic
        /// <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));
        }
コード例 #16
0
 /// <summary>
 /// Private constructor
 /// </summary>
 private AxonometricView(Autodesk.Revit.DB.View3D view)
 {
     InternalSetView3D(view);
 }
コード例 #17
0
 /// <summary>
 /// Private constructor
 /// </summary>
 private PerspectiveView(Autodesk.Revit.DB.View3D view)
 {
     SafeInit(() => InitPerspectiveView(view));
 }
コード例 #18
0
 public RevitUI.Result Execute(RevitUI.ExternalCommandData commandData, ref string message, RevitDB.ElementSet elements)
 {
     RevitUI.UIDocument uidoc = commandData.Application.ActiveUIDocument;
     RevitDB.Document   doc   = uidoc.Document;
     if (doc.IsFamilyDocument)//感觉族文档没必要
     {
         RevitUI.TaskDialog.Show("Revit", "该操作仅适用项目文档,不适用族文档!");
         return(RevitUI.Result.Succeeded);
     }
     try
     {
         RevitDB.View view = doc.ActiveView;                                    //当前视图
         ICollection <RevitDB.ElementId> ids = uidoc.Selection.GetElementIds(); //选择对象
         if (0 == ids.Count)                                                    //如果没有选择
         {
             if (view is RevitDB.ViewSection)                                   //当前视图为立面视图且没有选择对象时退出
             {
                 return(RevitUI.Result.Succeeded);
             }
             else if (view is RevitDB.View3D)//当前视图为三维视图且没有选择对象时切换至原楼层平面视图
             {
                 RevitDB.FilteredElementCollector collectL    = new RevitDB.FilteredElementCollector(doc);
                 ICollection <RevitDB.Element>    collectionL = collectL.OfClass(typeof(RevitDB.View)).ToElements();
                 foreach (RevitDB.Element element in collectionL)
                 {
                     RevitDB.View v = element as RevitDB.View;
                     if (view.ViewName == "三维视图_" + v.ViewType.ToString() + "_" + v.ViewName)
                     {
                         if (!v.IsTemplate)
                         {
                             uidoc.ActiveView = v;
                             break;
                         }
                     }
                 }
                 return(RevitUI.Result.Succeeded);
             }//未选择对象时列出当前视图所有可见对象
             RevitDB.FilteredElementCollector collector = new RevitDB.FilteredElementCollector(doc, view.Id).WhereElementIsNotElementType();
             ids = collector.ToElementIds();
         }
         RevitDB.Transaction ts = new RevitDB.Transaction(doc, "Create_View3D");
         ts.Start();
         bool fg = true;
         RevitDB.FilteredElementCollector collect    = new RevitDB.FilteredElementCollector(doc);
         ICollection <RevitDB.Element>    collection = collect.OfClass(typeof(RevitDB.View3D)).ToElements();
         RevitDB.View3D view3d = null;
         foreach (RevitDB.Element element in collection)
         {
             RevitDB.View3D v = element as RevitDB.View3D;
             if (v.ViewName == "三维视图_" + view.ViewType.ToString() + "_" + view.ViewName)
             {
                 if (!v.IsTemplate)
                 {
                     view3d = v;
                     fg     = false;//已生成过当前视图的三维视图
                     break;
                 }
             }
         }
         if (fg)
         {
             RevitDB.ViewFamilyType viewFamilyType = null;
             collect = new RevitDB.FilteredElementCollector(doc);
             var viewFamilyTypes = collect.OfClass(typeof(RevitDB.ViewFamilyType)).ToElements();
             foreach (RevitDB.Element e in viewFamilyTypes)
             {
                 RevitDB.ViewFamilyType v = e as RevitDB.ViewFamilyType;
                 if (v.ViewFamily == RevitDB.ViewFamily.ThreeDimensional)
                 {
                     viewFamilyType = v;
                     break;
                 }
             }
             view3d          = RevitDB.View3D.CreateIsometric(doc, viewFamilyType.Id);
             view3d.ViewName = "三维视图_" + view.ViewType.ToString() + "_" + view.ViewName;
         }
         ts.Commit();
         uidoc.ActiveView = view3d;//设置生成的三维视图为当前视图
         RevitDB.Transaction tss = new RevitDB.Transaction(doc, "View3D_HideElements");
         tss.Start();
         if (fg)
         {
             view    = doc.ActiveView;
             collect = new RevitDB.FilteredElementCollector(doc, view.Id).WhereElementIsNotElementType();
             ICollection <RevitDB.ElementId> idss = collect.ToElementIds();
             ICollection <RevitDB.ElementId> ds   = idss;
             ds = idss.Except(ids).ToList();
             ids.Clear();
             foreach (RevitDB.ElementId id in ds)
             {
                 RevitDB.Element element = doc.GetElement(id);
                 if (element.CanBeHidden(view) == true)
                 {
                     ids.Add(id);
                 }
             }
             view.HideElementsTemporary(ids);//临时隐藏其他图元
         }
         tss.Commit();
     }
     catch (Exception)
     {
         return(RevitUI.Result.Cancelled);
     }
     return(RevitUI.Result.Succeeded);
 }
コード例 #19
0
 /// <summary>
 /// Private constructor
 /// </summary>
 private PerspectiveView(Autodesk.Revit.DB.View3D view)
 {
     InternalSetView3D(view);
 }
コード例 #20
0
ファイル: View3D.cs プロジェクト: vtaran/Dynamo
 /// <summary>
 /// Set the cropping for the current view
 /// </summary>
 /// <param name="view3D"></param>
 /// <param name="bbox"></param>
 private void IsolateInView(Autodesk.Revit.DB.View3D view3D, BoundingBoxXYZ bbox)
 {
     view3D.CropBox = bbox;
 }
コード例 #21
0
 public cView(string sViewName, Autodesk.Revit.DB.View3D vView, BoundingBoxXYZ bXXY) //带参数的构造函数
 {
     this.sViewName = sViewName;
     this.vView     = vView;
     this.bXYZ      = bXYZ;
 }
コード例 #22
0
 /// <summary>
 /// Private constructor
 /// </summary>
 private AxonometricView(Autodesk.Revit.DB.View3D view)
 {
     SafeInit(() => InitAxonometricView(view));
 }
コード例 #23
0
ファイル: RayTraceBounce.cs プロジェクト: AMEE/revit
 /// <summary>
 /// Get a 3D view from active document
 /// </summary>
 public void Get3DView()
 {
     List<Autodesk.Revit.DB.Element> list = new List<Autodesk.Revit.DB.Element>();
      FilteredElementCollector collector = new FilteredElementCollector(m_app.ActiveUIDocument.Document);
      list.AddRange(collector.OfClass(typeof(View3D)).ToElements());
      foreach (Autodesk.Revit.DB.View3D v in list)
      {
      // skip view template here because view templates are invisible in project browsers
      if (v != null && !v.IsTemplate && v.Name == "{3D}")
     {
        m_view = v as Autodesk.Revit.DB.View3D;
        break;
     }
      }
 }
コード例 #24
0
ファイル: RayTraceBounceForm.cs プロジェクト: AMEE/revit
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="commandData">Revit application</param>
        /// <param name="v">3D View</param>
        public RayTraceBounceForm(ExternalCommandData commandData, Autodesk.Revit.DB.View3D v)
        {
            InitializeComponent();

             string logFile = AssemblyName.Replace(".dll", DateTime.Now.ToString("yyyyMMddhhmmss") + ".log");
             if (File.Exists(logFile)) File.Delete(logFile);
             m_txtListener = new TextWriterTraceListener(logFile);
             Trace.Listeners.Add(m_txtListener);

             m_app = commandData.Application;
             m_doc = commandData.Application.ActiveUIDocument.Document;
             m_view = v;
             UpdateData(true);
             // Delete lines it created
             DeleteLines();
        }
コード例 #25
0
ファイル: View3D.cs プロジェクト: vtaran/Dynamo
 /// <summary>
 /// Set the InternalView3D property and the associated element id and unique id
 /// </summary>
 /// <param name="view"></param>
 protected void InternalSetView3D(Autodesk.Revit.DB.View3D view)
 {
     this.InternalView3D    = view;
     this.InternalElementId = view.Id;
     this.InternalUniqueId  = view.UniqueId;
 }
コード例 #26
0
ファイル: COVER.cs プロジェクト: nixz/covise
 public void SendGeometry(Autodesk.Revit.DB.FilteredElementIterator iter, Autodesk.Revit.DB.Document doc)
 {
     MessageBuffer mb = new MessageBuffer();
      mb.add(1);
      sendMessage(mb.buf, MessageTypes.ClearAll);
       // todo use the current or default view
      iter.Reset();
      while (iter.MoveNext())
      {
     if (iter.Current is Autodesk.Revit.DB.View3D)
     {
         View3D = iter.Current as Autodesk.Revit.DB.View3D;
       break;
     }
     // this one handles Group.
      }
       ElementId activeOptId = Autodesk.Revit.DB.DesignOption.GetActiveDesignOptionId(doc);
      iter.Reset();
      while (iter.MoveNext())
      {
      Autodesk.Revit.DB.Element el = iter.Current as Autodesk.Revit.DB.Element;
      if (el.DesignOption == null || el.DesignOption.Id == activeOptId)
      {
          SendElement(el);
      }
     // this one handles Group.
      }
 }
コード例 #27
0
ファイル: COVER.cs プロジェクト: dwickeroth/covise
 public void SendGeometry(Autodesk.Revit.DB.FilteredElementIterator iter, Autodesk.Revit.UI.UIApplication application)
 {
     UIDocument uidoc = application.ActiveUIDocument;
      Application app = application.Application;
      Document doc = uidoc.Document;
      MessageBuffer mb = new MessageBuffer();
      mb.add(1);
      sendMessage(mb.buf, MessageTypes.ClearAll);
      View3D = null;
      if (uidoc.ActiveView is View3D)
      {
      View3D = uidoc.ActiveView as View3D;
      }
      if (View3D == null)
      {
      iter.Reset();
      while (iter.MoveNext())
      {
          if (iter.Current is Autodesk.Revit.DB.View3D)
          {
              View3D = iter.Current as Autodesk.Revit.DB.View3D;
              break;
          }
          // this one handles Group.
      }
      }
       ElementId activeOptId = Autodesk.Revit.DB.DesignOption.GetActiveDesignOptionId(doc);
      iter.Reset();
      while (iter.MoveNext())
      {
      Autodesk.Revit.DB.Element el = iter.Current as Autodesk.Revit.DB.Element;
      if (el.DesignOption == null || el.DesignOption.Id == activeOptId)
      {
          SendElement(el);
      }
     // this one handles Group.
      }
 }
コード例 #28
0
ファイル: View.cs プロジェクト: andradam75/Synthetic
        /// <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());
        }
コード例 #29
0
        void ReconstructView3DByPlane
        (
            DB.Document doc,
            ref DB.View3D view,

            Rhino.Geometry.Plane plane,
            Optional <DB.ElementType> type,
            Optional <string> name,
            Optional <bool> perspective
        )
        {
            SolveOptionalType(ref type, doc, DB.ElementTypeGroup.ViewType3D, nameof(type));

            var orientation = new DB.ViewOrientation3D
                              (
                plane.Origin.ToXYZ(),
                plane.YAxis.ToXYZ(),
                plane.ZAxis.ToXYZ()
                              );

            if (view is null)
            {
                var newView = perspective.IsNullOrMissing ?
                              DB.View3D.CreatePerspective
                              (
                    doc,
                    type.Value.Id
                              ) :
                              DB.View3D.CreateIsometric
                              (
                    doc,
                    type.Value.Id
                              );

                var parametersMask = new DB.BuiltInParameter[]
                {
                    DB.BuiltInParameter.ELEM_FAMILY_AND_TYPE_PARAM,
                    DB.BuiltInParameter.ELEM_FAMILY_PARAM,
                    DB.BuiltInParameter.ELEM_TYPE_PARAM
                };

                newView.SetOrientation(orientation);
                view.get_Parameter(DB.BuiltInParameter.VIEWER_CROP_REGION).Set(0);
                ReplaceElement(ref view, newView, parametersMask);
            }
            else
            {
                view.SetOrientation(orientation);

                if (perspective.HasValue)
                {
                    view.get_Parameter(DB.BuiltInParameter.VIEWER_PERSPECTIVE).Set(perspective.Value ? 1 : 0);
                }

                ChangeElementTypeId(ref view, type.Value.Id);
            }

            if (name.HasValue && view is object)
            {
                try { view.Name = name.Value; }
                catch (Autodesk.Revit.Exceptions.ArgumentException e)
                {
                    AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, $"{e.Message.Replace($".{Environment.NewLine}", ". ")}");
                }
            }
        }
コード例 #30
0
ファイル: COVER.cs プロジェクト: dwickeroth/covise
 public void SendGeometry(Autodesk.Revit.DB.FilteredElementIterator iter, List<int> IDs)
 {
     iter.Reset();
      while (iter.MoveNext())
      {
     if (iter.Current is Autodesk.Revit.DB.View3D)
     {
        View3D = iter.Current as Autodesk.Revit.DB.View3D;
        break;
     }
     // this one handles Group.
      }
      iter.Reset();
      while (iter.MoveNext())
      {
     Autodesk.Revit.DB.Element elem;
     elem = iter.Current as Autodesk.Revit.DB.Element;
     foreach (int ID in IDs)   // get the wall type by the name
     {
         if (ID == elem.Id.IntegerValue)
        {
           MessageBuffer mb = new MessageBuffer();
           mb.add(ID);
           sendMessage(mb.buf, MessageTypes.DeleteObject);
           SendElement(elem);
           break;
        }
     }
     // this one handles Group.
      }
 }