Revit开发之获取房间边界


获取房间的边界可以用Room里的

public IList<IList<BoundarySegment>> GetBoundarySegments(
	SpatialElementBoundaryOptions options
)
这个方法返回了所有Room的边界信息。

BoundarySegment 这里面包含了没一个边界的信息,它主要包括:


Methods:

GetCurve  返回对应的Curve

Properties:

Curve  Obsolete.

Get the curve that is formed by the element that defines the edge of this area.
Document   Obsolete.
Provides the document in which the element that created this segment resides.
Element   Obsolete.
Retrieve the element that is responsible for producing this boundary segment.
ElementId
Retrieve the id of the element that produces this boundary segment. If the segment is created from an element in a link, this is the id of the RevitLinkInstance.
LinkElementId
Retrieve the element id of the element in a link instance that forms this boundary. 


这里面从Revit2016开始 CurveDocumentElement,就都废弃了,不能用了,

而Curve 可以通过GetCurve获取,Element通过ElementId获取

如果边界在链接模型里可以LinkElementId 获取


关键代码如下:

            SpatialElementBoundaryOptions opts = new SpatialElementBoundaryOptions();
            IList<IList<BoundarySegment>> blist = room.GetBoundarySegments(opts);
            List<Curve> allCurves = new List<Curve>();
            IList<BoundarySegment> flist = blist.First();
            string info = null;
            foreach (BoundarySegment bs in flist)
            {
                allCurves.Add(bs.GetCurve());
                Element telm = doc.GetElement(bs.ElementId);
                info += telm.Name + "\n";
            }
            TaskDialog.Show("info", info);


博主会经常更新一些技术文章,请大家多多关注,

源码下载请加qq群480950299



Revit二次开发中,可以使用API来进行净高分析。以下是一些常见的净高分析方法: 1.通过获取每个房间的高度和底部高程,计算出每个房间的净高。 2.通过获取每个房间的高度和天花板高程,计算出每个房间的净高。 3.通过获取每个房间的高度和楼板高程,计算出每个房间的净高。 4.通过获取每个房间的高度和地面高程,计算出每个房间的净高。 在实现这些方法之前,需要先使用API获取建筑模型中的房间信息、墙体信息、楼板信息等,并进行相关的计算和分析。可以使用Revit API中的SpatialElementBoundaryOptions类来获取房间边界信息,使用Level类来获取楼层的高度和高程信息,使用Wall类和Floor类来获取墙体和楼板的高度信息。 以下是一个计算房间净高的示例代码: ```csharp public double GetRoomClearHeight(Room room) { double bottomElevation = room.get_Parameter(BuiltInParameter.ROOM_LOWER_OFFSET).AsDouble(); double topElevation = room.get_Parameter(BuiltInParameter.ROOM_UPPER_OFFSET).AsDouble(); double roomHeight = topElevation - bottomElevation; foreach (ElementId boundaryId in room.GetBoundarySegmentIds(new SpatialElementBoundaryOptions())) { Curve boundaryCurve = (doc.GetElement(boundaryId) as Wall).LocationLine(); bottomElevation = Math.Max(bottomElevation, boundaryCurve.GetEndPoint(0).Z); } double clearHeight = roomHeight - (room.Height - bottomElevation); return clearHeight; } ``` 这段代码将计算指定房间的净高,并返回净高值。它使用了Room对象的底部和顶部高程参数来计算房间总高度,然后使用GetBoundarySegmentIds方法获取房间边界信息,并计算出最低点的高程。最后,通过减去天花板高度和最低点高程,计算出房间的净高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值