我正在开发一个需要了解其他房间边界的应用程序。在这种情况下,了解房间边界是墙还是房间分隔符很重要。
public FindsRoomSeperators(){
SpatialElementBoundaryOptions options = new SpatialElementBoundaryOptions();
options.SpatialElementBoundaryLocation = SpatialElementBoundaryLocation.Finish;
foreach (IList<Autodesk.Revit.DB.BoundarySegment> boundSegList in room.GetBoundarySegments(options))
{
foreach (Autodesk.Revit.DB.BoundarySegment boundSeg in boundSegList)
if ((BuiltInCategory)el.Category.Id.IntegerValue == BuiltInCategory.OST_RoomSeparationLines)
//proccess el
}
}
但是,从revit 2017开始,此代码现在抛出未找到的方法:'Autodesk.Revit.DB.Element Autodesk.Revit.DB.BoundarySegment.get_Element()'。表示此方法已被删除的异常。
var geometry = (Solid)room.get_Geometry(new Options()).First();
var faces = geometry.Faces;
尽管这确实使我能够判断像地板倾斜与否之类的东西,但它并不能告诉我哪些边缘来自墙壁,哪些来自房间分隔符。
理想情况下,我将能够拍摄我们拥有的面孔,并检查面孔的任何边缘是否为房间分隔符。如果有帮助,我已经有了所有墙壁的清单。
那么如何在Revit 2017中做到这一点呢?最好保持与2015年的兼容性。
最佳答案
这是预期的并记录在Revit Platform API更改和添加文件(see SDK)中,此方法在2016年被标记为已弃用,并在2017年被删除。
相反,您应该使用ElementId或LinkElementId(请参阅文档)。
foreach (Autodesk.Revit.DB.BoundarySegment boundSeg in boundSegList)
{
Element el = doc.GetElement(boundSeg.ElementId); // or doc.GetElement(boundSeg.LinkElementId);
if ((BuiltInCategory)el.Category.Id.IntegerValue == BuiltInCategory.OST_RoomSeparationLines)
{
}
}
关于c# - 如何在Revit 2017中获得房间分隔符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38245018/