确定在平面图视图上的 Revit API 中墙是否显示为剪切或完整

问题描述 投票:0回答:1

Stack Overflow 社区!

我正在使用 Revit API,并面临着区分墙壁在特定平面图上的显示方式的挑战。具体来说,我需要区分显示为切割(与视图的切割平面相交)的墙壁和完全显示的墙壁,因为它们完全位于切割平面之上或之下。

这是我的问题的背景:

  • 我在 Revit 中有一个平面图 (ViewPlan)。
  • 有多个墙壁,其中一些与视图的剖切面相交,而另一些则完全位于该平面之上或之下。
  • 我需要以编程方式确定哪些墙显示为剪切,哪些墙在此视图中完整显示。

我尝试与视图的切割水平相比分析墙的顶部和底部偏移,但我不确定这是否是正确的方法,或者是否有更有效的方法可以在 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 确定平面图中墙壁的显示样式(剪切或完整)?任何指导或建议将不胜感激。

提前谢谢您!

revit-api
1个回答
0
投票

使用

get_BoundingBox()
可能会更好一点,因为这会给你绝对坐标。您获得的参数可能与其主机相关,这可能是其他级别,并给您带来意想不到的结果,您必须通过减去主机高程来纠正。

double wallTop = wall.get_BoundingBox(viewPlan).Min.Z;
double wallBase = wall.get_BoundingBox(viewPlan).Max.Z;

也就是说,如果您愿意处理相对海拔问题,您所拥有的也应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.