【问题标题】:How can I activate (display) a view (floor plan or Level) using Revit API?如何使用 Revit API 激活(显示)视图(平面图或标高)?
【发布时间】:2021-12-16 05:49:04
【问题描述】:

我正在尝试使用 Revit API 激活视图。我想要做的是显示水平或平面图视图。所以我想激活的视图(我的意思是,我希望这个视图实际显示在屏幕上)已经存在,我可以访问它的 ID。

我看到了有关创建、浏览、过滤视图的线程,但没有激活它...这是一个平面图视图。 (我想要的是通过选择一个级别/平面图,它会在屏幕上显示该级别/平面图(就像从现有的 Revit 模型中打开该平面图以显示在用户屏幕上一样)。

【问题讨论】:

标签: c# revit-api revitpythonshell pyrevit revit-2015


【解决方案1】:

FilteredElementCollector viewCollector = new FilteredElementCollector(doc);

                viewCollector.OfClass(typeof(View));

                foreach (Element viewElement in viewCollector)
                {
                        yourview = (View)viewElement;
                      
                        break;  
                }
            }

            uidoc.ActiveView = yourview;

【讨论】:

    【解决方案2】:

    这是一个如何切换到默认 3d 视图的示例 https://thebuildingcoder.typepad.com/blog/2011/09/activate-a-3d-view.html

    您可以对所有其他可用视图执行相同操作

        UIApplication uiapp = commandData.Application;
        UIDocument uidoc = uiapp.ActiveUIDocument;
      
        uidoc.ActiveView = yourview;
    

    要从您的代码看起来像这样的级别创建视图

    ViewFamilyType viewFamilyType = (from elem in new 
        FilteredElementCollector(doc)
        .OfClass(typeof(ViewFamilyType))
        let type = elem as ViewFamilyType
        where type.ViewFamily == ViewFamily.FloorPlan
        select type).FirstOrDefault();
    
    using (Transaction t = new Transaction(doc))
    {
        t.Start("Create View");
        var floorPlan = ViewPlan.Create(doc, viewFamilyType.Id, yourLevel.Id);
        floorPlan.Name = "NewView";
        t.Commit();
    }
    

    【讨论】:

    • 我试过这个。但我无法将“视图”设置为“uidoc.ActiveView”。
    • 无法将 Autodesk.Revit.DB.Level 投射到 Autodesk.Revit.DB.View
    • 你必须从你的关卡中创建一个视图。使用一种可用的视图类型revitapidocs.com/2017/76bee86d-3c34-7ee1-4349-cd7abcbf3d78.htm,然后使用 .Create(level.Document, viewTypeId, level.Id);
    • 我创建了一个功能区选项卡和一个打开“WPF”的按钮,其中有一个下拉菜单,在这里我收集了楼层/平面图(例如 Level1、Level2 等)来自 Revit 项目。所以在这里我想通过选择特定级别来打开(我添加了一个按钮....单击以“显示”)特定级别/平面图。
    • 我们可以按级别过滤视图吗??
    【解决方案3】:

    超级简单:

    # normally you have the ui set at the start of your script
    ui = __revit__.ActiveUIDocument 
    
    # then just set the ActiveView as your view (not the ViewId)
    ui.ActiveView = yourView
    

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2017-01-14
      • 2020-12-15
      • 2020-09-20
      • 2017-09-23
      • 2019-11-06
      • 2014-09-18
      • 2020-08-21
      • 2012-01-05
      相关资源
      最近更新 更多