pythonocc基础:AIS_InteractiveContext类简介

AIS_InteractiveContext 是 Open CASCADE Technology (OCCT) 库中的一个核心类,位于 OCC.Core.AIS 模块中,主要用于管理3D场景中的交互对象和用户交互。它是图形用户界面(GUI)和底层图形渲染之间的一个桥梁,负责处理用户的输入(如鼠标点击、键盘指令)并根据这些输入更新场景状态,比如高亮、选择、移动或修改3D对象。下面详细介绍其作用及主要库与常用方法。

主要作用

  1. 交互管理:负责处理与3D场景中的对象进行的所有交互操作,如选择、高亮、移动、旋转等。

  2. 对象显示:控制3D对象的显示方式,包括是否可见、颜色、透明度等,并支持不同显示模式(如线框、着色)。

  3. 选择机制:提供了多种选择激活方式,允许用户通过不同的交互方式(如左键单击、右键菜单)来选择场景中的对象。

  4. 高亮处理:支持对象的高亮显示,可以根据需要设置高亮的颜色、线宽等属性,并可以控制高亮优先级。

  5. 上下文管理:管理与场景交互的上下文,如当前激活的选择模式、视图和光照条件。

主要库及常用方法

  • Display:将一个或多个交互对象(AIS_InteractiveObject 的实例)添加到场景中并显示出来。可以控制显示模式,如是否使用着色、线框等。

        Display用于将图形对象(通常是 AIS_InteractiveObject 的实例)添加到当前的视图中并使其可见。这个方法使得开发者能够展示几何实体、形状、标注等各种图形元素,并且支持这些元素的交互式操作,如选择、高亮、动态修改等。下面是关于 AIS_InteractiveContext.Display 方法的详细介绍:

Display(self: Handle_AIS_InteractiveContext, obj: Handle_AIS_InteractiveObject, mode: int = 0, update: bool = True)

参数说明

  • objHandle_AIS_InteractiveObject 类型的指针。这是你要显示的对象,通常是从 AIS_ShapeAIS_Line 或其他 AIS_InteractiveObject 子类实例化得到的。
  • mode: (可选)整数,定义了显示模式。默认值为0,表示使用默认的显示模式。不同的模式可以改变对象的显示样式,例如线框、着色、阴影等。具体可用的模式可以通过 Graphic3d_DisplayMode 枚举获取。
  • update: (可选)布尔值,指示是否立即更新视图。如果为 True(默认),则调用后会立即重绘视图以显示新对象;如果为 False,则需要手动调用 Update 方法来刷新视图。
  1.  
    AIS_InteractiveContext::Display(opencascade::handle<AIS_InteractiveObject> const &, Standard_Boolean const)
    • 这个版本接受两个参数:一个 AIS_InteractiveObject 的句柄(即你要显示的对象)和一个布尔值,表示是否立即更新视图。
  2. 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
  3. 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对象操作的界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_65073612

谢谢大哥大姐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值