Revit二开--视图中隐藏revit链接

Revit二开–视图中隐藏revit链接

在Revit中隐藏类别 BuiltInCategory.OST_RvtLinks 会出现错误提示,原因是revit不支持隐藏这个类别。解决方法是隐藏RevitLinkInstance或者RevitLinkType。
隐藏RevitLinkInstance相当于在视图显示里面隐藏链接实例
在这里插入图片描述
隐藏RevitLinkType相当于在视图可见性里面隐藏链接类别在这里插入图片描述

隐藏Revit链接类别 代码如下

  /// <summary>
    /// 隐藏revit链接
    /// </summary>
    [Transaction(TransactionMode.Manual)]
    class Cmd_HideRevitInstance:IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uiapp = commandData.Application;
            var uidoc = uiapp.ActiveUIDocument;
            var doc = uidoc.Document;

            var acview = doc.ActiveView;

            var collector = new FilteredElementCollector(doc);
            var revitlinktypes = collector.OfClass(typeof(RevitLinkType)).ToList();


            Transaction ts = new Transaction(doc, "hide revitlink");
            ts.Start();
            acview.HideElements(revitlinktypes.Select(m => m.Id).ToList());
            ts.Commit();
            return Result.Succeeded;
        }
    }
更多Revit二开知识尽在唐僧课堂!QQ群:166072827

唐僧课堂BIM开发

### 如何在Revit发中添加新的三维视图 为了在Autodesk Revit中通过API创建一个新的三维视图发者需要熟悉Revit API所提供的类和方法。具体来说,`View3D` 类是用于表示三维视图的核心组件之一。 下面是一个Python代码片段,展示了如何利用Revit API创建一个新三维视图: ```csharp using Autodesk.Revit.DB; using Autodesk.Revit.UI; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiApp = commandData.Application; UIDocument uidoc = uiApp.ActiveUIDocument; Document doc = uidoc.Document; // 定义相机位置和其他属性 XYZ cameraPosition = new XYZ(0, 0, 15); XYZ targetPosition = new XYZ(0, 0, 0); ViewFamilyType viewFamType = null; foreach (ElementId id in new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType))) { ViewFamilyType vft = doc.GetElement(id) as ViewFamilyType; if(vft.ViewFamily == ViewFamily.ThreeDimensional) { viewFamType = vft; break; } } using(Transaction trans = new Transaction(doc,"Create New 3D View")) { trans.Start(); View3D newView3D = View3D.CreateIsometric(doc,viewFamType.Id); newView3D.Name = "New Isometric 3D View"; newView3D.SetSectionBox(new BoundingBoxXYZ() { Min = new XYZ(-10,-10,0), Max = new XYZ(10,10,20) }); trans.Commit(); } return Result.Succeeded; } ``` 这段代码首先获取当前活动文档实例,并设置摄像机的位置参数。接着遍历查找适合于三维视图的家庭类型(`ViewFamilyType`)。最后,在事务始后调用 `View3D.CreateIsometric()` 方法来创建等轴测三维视图并调整其裁剪框大小[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值