AIS_InteractiveContext
是 Open CASCADE Technology (OCCT) 库中的一个核心类,位于 OCC.Core.AIS
模块中,主要用于管理3D场景中的交互对象和用户交互。它是图形用户界面(GUI)和底层图形渲染之间的一个桥梁,负责处理用户的输入(如鼠标点击、键盘指令)并根据这些输入更新场景状态,比如高亮、选择、移动或修改3D对象。下面详细介绍其作用及主要库与常用方法。
主要作用
-
交互管理:负责处理与3D场景中的对象进行的所有交互操作,如选择、高亮、移动、旋转等。
-
对象显示:控制3D对象的显示方式,包括是否可见、颜色、透明度等,并支持不同显示模式(如线框、着色)。
-
选择机制:提供了多种选择激活方式,允许用户通过不同的交互方式(如左键单击、右键菜单)来选择场景中的对象。
-
高亮处理:支持对象的高亮显示,可以根据需要设置高亮的颜色、线宽等属性,并可以控制高亮优先级。
-
上下文管理:管理与场景交互的上下文,如当前激活的选择模式、视图和光照条件。
主要库及常用方法
-
Display:将一个或多个交互对象(
AIS_InteractiveObject
的实例)添加到场景中并显示出来。可以控制显示模式,如是否使用着色、线框等。
Display用于将图形对象(通常是 AIS_InteractiveObject
的实例)添加到当前的视图中并使其可见。这个方法使得开发者能够展示几何实体、形状、标注等各种图形元素,并且支持这些元素的交互式操作,如选择、高亮、动态修改等。下面是关于 AIS_InteractiveContext.Display
方法的详细介绍:
Display(self: Handle_AIS_InteractiveContext, obj: Handle_AIS_InteractiveObject, mode: int = 0, update: bool = True)
参数说明
- obj:
Handle_AIS_InteractiveObject
类型的指针。这是你要显示的对象,通常是从AIS_Shape
、AIS_Line
或其他AIS_InteractiveObject
子类实例化得到的。 - mode: (可选)整数,定义了显示模式。默认值为0,表示使用默认的显示模式。不同的模式可以改变对象的显示样式,例如线框、着色、阴影等。具体可用的模式可以通过
Graphic3d_DisplayMode
枚举获取。 - update: (可选)布尔值,指示是否立即更新视图。如果为
True
(默认),则调用后会立即重绘视图以显示新对象;如果为False
,则需要手动调用Update
方法来刷新视图。
-
AIS_InteractiveContext::Display(opencascade::handle<AIS_InteractiveObject> const &, Standard_Boolean const)
- 这个版本接受两个参数:一个
AIS_InteractiveObject
的句柄(即你要显示的对象)和一个布尔值,表示是否立即更新视图。
- 这个版本接受两个参数:一个
-
AIS_InteractiveContext::Display(opencascade::handle<AIS_InteractiveObject> const &, Standard_Integer const, Standard_Integer const, Standard_Boolean const, PrsMgr_DisplayStatus const)
- 第二个版本接受五个参数:一个
AIS_InteractiveObject
的句柄,两个整数(可能分别代表显示模式和视图的某种配置),一个布尔值(控制是否更新视图),以及一个PrsMgr_DisplayStatus
枚举值(定义显示状态)。Cpp
- 第二个版本接受五个参数:一个
-
AIS_InteractiveContext::Display(opencascade::handle<AIS_InteractiveObject> const &, Standard_Integer const, Standard_Integer const, Standard_Boolean const, Standard_Boolean const, PrsMgr_DisplayStatus const)
- 类似于第二个版本,但多了一个布尔值参数,其具体意义可能与视图的某些高级配置相关。
-
Remove:从场景中移除指定的交互对象。通常用于删除不再需要显示的对象。
-
Deactivate:禁用特定交互对象的交互能力,使其不能被选择或高亮。
-
Activate:激活交互对象,允许它响应用户的交互操作,同时可以指定自定义的选择激活方式。
-
SetSelectionMode:设置选择模式,决定如何响应用户的点击事件来选择对象,比如选择最前面的对象、全部相交对象等。
-
Select:根据用户输入(通常是鼠标点击的位置)来选择场景中的对象,并返回选中的对象列表。
-
Highlight:高亮显示一个或多个交互对象,可以自定义高亮的颜色和线宽等属性。
-
Update:更新场景,确保所有对场景的改动(如对象的移动、显示属性的改变)被反映到屏幕上。
-
Start/EndSelection:启动和结束选择过程,通常用于批量选择或复杂选择逻辑的实现。
常用方法示例
- AIS_InteractiveContext::Display(AIS_InteractiveObject& anObject):显示一个交互对象到当前上下文中。
- AIS_InteractiveContext::Remove(const Handle(AIS_InteractiveObject)& anObject):从上下文中移除指定的交互对象。
- AIS_InteractiveContext::Activate(AIS_InteractiveObject& anObject, bool updateviewer = true):激活一个交互对象,使其可以被选择和高亮。
- AIS_InteractiveContext::SetSelectionMode(AIS_SelectionMode mode):设置当前的选择模式,如
AIS_Shape::SelectionMode_Shape
或AIS_Shape::SelectionMode_Vertex
。 - AIS_InteractiveContext::Highlight(const Handle(AIS_InteractiveObject)& anObject, const Handle(Prs3d_Drawer)& aStyle):使用自定义样式高亮显示对象。
通过 AIS_InteractiveContext
类,开发者能够构建高度交互式的3D应用,如CAD软件、仿真系统或任何需要复杂3D对象操作的界面。