首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改API。从主模型元素所在的链接模型中获取一个房间。

修改API。从主模型元素所在的链接模型中获取一个房间。
EN

Stack Overflow用户
提问于 2020-06-22 20:44:30
回答 1查看 985关注 0票数 0

我有一个相当简单的,但同时挑战的问题,与Revit。有一个主要的Revit模型和一个连接的体系结构模型。我想知道我的MEP元素属于哪个房间。为此,我尝试了两种方法:

  1. 使用ElementIntersectsFilter作为链接模型(杰里米博客上有一篇文章)--当链接旋转或移位时,它不起作用。
  2. 导入实体几何和转换实体,然后使用ElementIntersectsSolidFilter -它工作,但花费了大量的时间。例如,我的主要型号有大约35000元素和连接1100个房间。95%的传球时间用于投球ElementIntersectsSolidFilter。一个房间30秒的时间,这意味着9小时内挂在一个系统上!

过滤MainModel中的所有目标元素(~35000 elems)

代码语言:javascript
复制
ICollection<ElementId> fec = new FilteredElementCollector(doc)
.WhereElementIsNotElementType()
.WherePasses(new ElementMulticategoryFilter(bic))
.ToElementIds()
.ToList();

从链接中获取所有房间并回收固体(~1100宝石)

代码语言:javascript
复制
IEnumerable<Room> rooms = new FilteredElementCollector(link.GetLinkDocument())
.WhereElementIsNotElementType()
.OfCategory(BuiltInCategory.OST_Rooms)
.Cast<Room>();

RoomInfo保存有关房间的可靠信息和其他附加信息

rlf -做所有的检索工作

代码语言:javascript
复制
IEnumerable<RoomInfo> ifs = rlf.GetItemInfos(rooms).Cast<RoomInfo>();

一种对目标元素集合进行实心和引用的方法。返回所有元素相交实体,并从目标集合中删除它们(~35000),因此集合在每次迭代时都在上升。

代码语言:javascript
复制
        Public ICollection<ElementId> GetIntersectedElements(Solid solid, ref ICollection<ElementId> eIds)
        {
            if (!eIds.Any())
            {
                log.Info($"Input collection is empty. Task done.");
                return new List<ElementId>();
            }
            var solidFilter = new ElementIntersectsSolidFilter(solid);

            var fec = new FilteredElementCollector(doc, eIds)
           // This filter eat time
                .WherePasses(solidFilter)
                .ToElementIds();

            if (fec.Any())
            {
                eIds = new FilteredElementCollector(doc, eIds)
                    .Excluding(fec)
                    .ToElementIds();
            }
            return fec;
        }

我想知道如何在合理的时间内做到这一点,我将不胜感激,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 21:14:43

您可以更简单、更有效地解决这个问题。您需要了解模型主MEP模型和链接体系结构模型之间的转换。接下来,确定您的家庭实例或MEP元素或其他任何元素的位置P。将P从MEP模型转换为关联的体系结构模型。在建筑模型中,找出哪些房间或空间包含转换点。

Revit讨论论坛中最近的一个线程处理了一个不同的主题,但却说明了几乎所有所需的原则:如何计算房间的柱面面积

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62523202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档