[Revit二次开发]如何预览BoundingBox

1 篇文章 0 订阅

在这里插入图片描述
在项目中创建的实体图元均包含 BoundingBox 属性

在Revit软件中使用的是

轴对齐包围盒(AABB,Axis Aligned Bounding Box)

顾名思义就是无论对象如何旋转

它的包围盒永远都是平行于XYZ轴

图片

Element 包含属性 BoundingBox

我们获取它并在项目中创建展示

图片

示例

首先在项目中随意创建了一些图元

获取他们的包围盒

然后创建展示出来

using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using RevitAPI.Toolkit.Attributes;
using RevitAPI.Toolkit.Extensions;
using RevitAPI.Toolkit.Utils;
using System.Collections.Generic;
using System.Linq;

namespace Hybh.CmdElementBox
{
    [Xml("范围框", "Element范围框")]
    [Transaction(TransactionMode.Manual)]
    public class Cmd : XmlRevitCommand
    {
        protected override void Execute(ref string message, ElementSet elements)
        {
            var doc = uidoc.Document;
            if (
                XmlSelection.PickObjectsOutReferences(
                    uidoc,
                    ObjectType.Element,
                    out var references,
                    doc.FilterElement(o => o.get_BoundingBox(null) != null)
                )
            )
            {
                var els = references.ToElements<Element>(doc);
                var shapes = new List<GeometryObject>();
                foreach (var el in els)
                {
                    var lines = el.get_BoundingBox(doc.ActiveView).GetBoxLines();
                    shapes.AddRange(lines);
                }
                if (shapes.Any())
                {
                    doc.Transaction(
                        t =>
                        {
                            var ds = DirectShape.CreateElement(
                                doc,
                                new ElementId(BuiltInCategory.OST_GenericModel)
                            );
                            ds.SetName("Revit二次开发教程");
                            ds.SetShape(shapes);
                        },
                        "范围框"
                    );
                }
            }
        }
    }
}

可以看到这些包围盒都与视图方向是对齐的

图片1
图片2

我们有了这些包围盒就可以做碰撞核查

而且是非常快速的!

Revit中可用的边界框过滤器:

BoundingBoxIntersectsFilter

此过滤器可用于查找其边界框与指定轴对齐的矩形棱柱体相交的元素

BoundingBoxIsInsideFilter

此过滤器可用于查找其边界框完全包含在指定轴对齐的矩形棱柱体内的元素

BoundingBoxContainsPointFilter

此过滤器可用于查找其边界框包含指定点的元素

推荐

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值