Autodesk.Revit.DB.DirectContext3D.DirectContext3DDocumentUtils 是为了在 Revit 的 3D 直接上下文环境中处理文档的类。它提供了一些实用方法,例如将 Revit 三维视图转换为 Direct3D 数据,检查 Direct3D 网格是否位于视图边界内等。
GetPanelGeometry() 方法返回将 Revit 三维视图转换为 Direct3D 所需的 PanelGeometry 对象。
public static PanelGeometry GetPanelGeometry(View3D view)
view - 要转换为 Direct3D 的 Revit 三维视图。PanelGeometry - 表示视图的几何形状和材质数据的对象。
IsInDocBounds() 方法检查 Direct3D 网格是否位于视图边界内。
public static bool IsInDocBounds(PanelGeometry panelGeometry, DirectContext3D context, out BoundingBox bbox)
panelGeometry - 从 GetPanelGeometry() 中获取的 PanelGeometry 对象。context - 与视图相关联的 Direct3D 上下文。bbox - 返回的包围盒信息。bool - 如果网格是在视图边界内的,则为 true。
View3D view = doc.ActiveView as View3D;
PanelGeometry panelGeometry = DirectContext3DDocumentUtils.GetPanelGeometry(view);
DirectContext3D context = new DirectContext3D(panelGeometry);
BoundingBox bbox;
bool isInDocBounds = DirectContext3DDocumentUtils.IsInDocBounds(panelGeometry, context, out bbox);