Stack Overflow 社区!
我正在使用 Revit API,并面临着区分墙壁在特定平面图上的显示方式的挑战。具体来说,我需要区分显示为切割(与视图的切割平面相交)的墙壁和完全显示的墙壁,因为它们完全位于切割平面之上或之下。
这是我的问题的背景:
我尝试与视图的切割水平相比分析墙的顶部和底部偏移,但我不确定这是否是正确的方法,或者是否有更有效的方法可以在 Revit API 中实现此目的。
这是我当前使用 C# 的方法的片段:
ViewPlan viewPlan = ...; // The plan view in question
PlanViewRange viewRange = viewPlan.GetViewRange();
Level cutLevel = ...; // The cut level of the view
foreach (Wall wall in walls) // Assuming we have a list of walls
{
double wallTop = wall.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).AsDouble();
double wallBase = wall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).AsDouble();
if (wallBase < cutLevel.Elevation && wallTop > cutLevel.Elevation)
{
// The wall is displayed as cut
}
else
{
// The wall is displayed in full or not displayed
}
}
是否有更直接或更准确的方法来使用 Revit API 确定平面图中墙壁的显示样式(剪切或完整)?任何指导或建议将不胜感激。
提前谢谢您!
使用
get_BoundingBox()
可能会更好一点,因为这会给你绝对坐标。您获得的参数可能与其主机相关,这可能是其他级别,并给您带来意想不到的结果,您必须通过减去主机高程来纠正。
double wallTop = wall.get_BoundingBox(viewPlan).Min.Z;
double wallBase = wall.get_BoundingBox(viewPlan).Max.Z;
也就是说,如果您愿意处理相对海拔问题,您所拥有的也应该有效。