您好,我有以下代码:
public static void HandleStairs(Document doc)
List<TransitionPoint> ret = new List<TransitionPoint>();
FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<Element> stairs = collector.OfCategory(BuiltInCategory.OST_Stairs).ToElements();
foreach (var stair in stairs)
{
var st= stair as Stairs;
if(st!=null)
{
%code that is never executed
}
}
return ret;
}
现在的问题是,不管阶梯什么看起来总是空的,我听说另一个程序员也有同样的问题。
楼梯变量确实接收了许多具有楼梯属性的对象(被命名为楼梯,具有立管和平台),但实际上似乎并不接受被转换到楼梯上。任何人都知道如何将其实际转换到楼梯上(或以其他方式获得文档中的所有楼梯吗?)
请注意,楼梯是具有以下属性的元素:
Riser to Tread Connection
Monolithic Material
Apply Nosing Profile
Stringer Material
Text Size
Begin with Riser
Stringer Carriage Height
URL
Open Stringer Offset
Right Stringer
Riser Type
Cost
Left Stringer
Underside of Winder
Stringer Height
Nosing Profile
Manufacturer
Middle Stringers
Keynote
Riser Material
Minimum Tread Depth
Text Font
Monolithic Stairs
Maximum Riser Height
Landing Carriage Height
Break Symbol in Plan
Landing Overlap
Extend Below Base
Nosing Length
Assembly Description
End with Riser
Description
Function
Type Image
Type Comments
Stringer Thickness
Assembly Code
Calculation Rules
Trim Stringers at Top
Model
Tread Thickness
Tread Material
Riser Thickness
我最需要楼梯对象才能将运行与楼梯对象相关联,或者实际上我需要运行遵循的路径。
希望可以用来执行以下操作:
var tesselated = new List<XYZ>();
var stairPath = run.GetStairsPath();
foreach (Curve curve in stairPath)
{
tesselated.AddRange(curve.Tessellate());
}
因为我需要XYZ位置来定位连接到建筑物几何形状的任何楼梯。
最佳答案
首先,您绝对必须找出并告诉我们您正在谈论的是哪种元素。否则,这种讨论是完全没有意义的。确定该问题的一种非常简单的方法是使用RevitLookup探索“类似楼梯”的元素:
https://github.com/jeremytammik/RevitLookup
如果您不知道RevitLookup是什么,则应立即停止使用Revit API进行的其他所有操作,并通过阅读Revit API入门资料重新开始,尤其是安装和开始使用RevitLookup:
http://thebuildingcoder.typepad.com/blog/about-the-author.html#2
您显示的过滤后的元素收集器将检索“楼梯”类别的所有元素。此“阶梯状对象”可以是DirectShape,在这种情况下,可以将其指定为“阶梯”类别。然后,它将由上方的过滤后的元素收集器检索。
这是一个“阶梯状”挤压屋顶的示例,该屋顶将始终保留为屋顶,属于“屋顶”类别,因此您的过滤元素收集器永远无法识别它:
http://thebuildingcoder.typepad.com/blog/2014/09/events-again-and-creating-an-extrusion-roof.html#7
很抱歉得到这个令人困惑的答案,但我必须说您的问题也很令人困惑。从来没有听说过类似的东西。我希望这有帮助。