opencascade AIS_ManipulatorOwner AIS_MediaPlayer源码学习
创始人
2024-12-03 20:33:11
0

在这里插入图片描述

前言

AIS_ManipulatorOwner是OpenCascade中的一个类,主要用于操纵对象的交互控制。AIS_ManipulatorOwner结合AIS_Manipulator类,允许用户通过可视化工具(如旋转、平移、缩放等)来操纵几何对象。

以下是AIS_ManipulatorOwner的基本用法介绍:

1. 包含必要的头文件

首先,确保在代码中包含必要的OpenCascade头文件:

#include  #include  #include  #include  #include  #include  #include  

2. 创建几何对象和上下文

创建一个几何对象,并初始化一个AIS_InteractiveContext

Handle(AIS_InteractiveContext) context = ...; // 已初始化的交互上下文 TopoDS_Shape aShape = BRepPrimAPI_MakeBox(100.0, 100.0, 100.0).Shape(); Handle(AIS_Shape) aShapeAIS = new AIS_Shape(aShape); context->Display(aShapeAIS, Standard_True); 

3. 创建和设置Manipulator

创建一个Manipulator,并将其与几何对象关联:

Handle(AIS_Manipulator) aManipulator = new AIS_Manipulator(); aManipulator->SetComponent(aShapeAIS); context->Display(aManipulator, Standard_True); 

4. 创建ManipulatorOwner

创建一个AIS_ManipulatorOwner,并将其与Manipulator关联:

Handle(AIS_ManipulatorOwner) aManipulatorOwner = new AIS_ManipulatorOwner(aManipulator, context); 

5. 操纵几何对象

通过ManipulatorOwner,可以对几何对象进行旋转、平移和缩放等操作。例如:

gp_Trsf transformation; transformation.SetTranslation(gp_Vec(10.0, 0.0, 0.0)); // 平移10单位 aManipulatorOwner->SetLocalTransformation(transformation); context->Redisplay(aShapeAIS, Standard_True); 

6. 交互操作

用户可以通过鼠标操作与几何对象进行交互。AIS_InteractiveContext提供了许多方法来处理鼠标事件并相应地更新几何对象的位置。

// 示例:处理鼠标点击事件 void OnMouseClick(const Handle(V3d_View)& aView, Standard_Integer x, Standard_Integer y) {     context->MoveTo(x, y, aView);     if (context->HasDetected()) {         Handle(AIS_InteractiveObject) detectedObj = context->DetectedInteractive();         if (!detectedObj.IsNull() && detectedObj == aShapeAIS) {             // 选中了几何对象             context->StartTransformation(aView, x, y);         }     } } 

总结

AIS_ManipulatorOwner是一个强大的工具,可以帮助用户通过图形界面与几何对象进行交互。通过设置适当的变换矩阵,可以实现对对象的各种操作,从而极大地增强了用户的交互体验。

AIS_MediaPlayer

在这里插入图片描述
视频播放演示。

方法

1

空构造函数。
Standard_EXPORT AIS_MediaPlayer();

2

析构函数。
Standard_EXPORT virtual ~AIS_MediaPlayer();

3

设置回调函数,用于在队列进度时调用(例如,当需要显示新帧时)。
void SetCallback (Graphic3d_MediaTextureSet::CallbackOnUpdate_t theCallbackFunction, void* theCallbackUserPtr)
{
myFramePair->SetCallback (theCallbackFunction, theCallbackUserPtr);
}

4

打开指定文件。
Standard_EXPORT void OpenInput (const TCollection_AsciiString& thePath,
Standard_Boolean theToWait);

5

显示新帧。
Standard_EXPORT bool PresentFrame (const Graphic3d_Vec2i& theLeftCorner,
const Graphic3d_Vec2i& theMaxSize);

6

返回播放器上下文。
const Handle(Media_PlayerContext)& PlayerContext() const { return myFramePair->PlayerContext(); }

7

切换播放状态。
Standard_EXPORT void PlayPause();

8

安排关闭播放器。
void SetClosePlayer()
{
myToClosePlayer = true;
myFramePair->Notify();
}

9

返回持续时间。
double Duration() const { return myFramePair->Duration(); }

//! @name AIS_InteractiveObject 接口
protected:

10

仅接受显示模式0。
virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) const Standard_OVERRIDE { return theMode == 0; }

11

计算演示文稿。
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager)& thePrsMgr,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode) Standard_OVERRIDE;

12

计算选择。
Standard_EXPORT virtual void ComputeSelection (const Handle(SelectMgr_Selection)& theSel,
const Standard_Integer theMode) Standard_OVERRIDE;

13

更新帧大小。
Standard_EXPORT bool updateSize (const Graphic3d_Vec2i& theLeftCorner,
const Graphic3d_Vec2i& theMaxSize);

参考

相关内容

热门资讯

透视辅助!德州之星有辅助挂&q... 透视辅助!德州之星有辅助挂"扑克时间软件"果然真的有挂(有挂俱乐部)-百度贴吧;1、游戏颠覆性的策略...
黑科技辅助!wpk透视辅助工具... 黑科技辅助!wpk透视辅助工具"wepoke能赢嘛"的确是有挂的(有挂德州)-头条小薇(透视辅助)致...
透视辅助挂!德州之星插件&qu... 透视辅助挂!德州之星插件"weopke真的"就是真的有挂(有挂漏洞)-知乎1、完成weopke真的透...
黑科技辅助挂!wpk透明挂&q... 黑科技辅助挂!wpk透明挂"微扑克ai机器人"一贯真的有挂(有挂渠道)-小红书1、构建自己的微扑克a...
透视辅助!wpk ai辅助&q... 透视辅助!wpk ai辅助"德州ai辅助app"其实真的有挂(有挂苹果版本)-哔哩哔哩1、让任何用户...
黑科技辅助!wepoke辅助德... 黑科技辅助!wepoke辅助德之星"微扑克软件的规律"的确真的有挂(有挂开挂)-微博热搜;微扑克软件...
透明黑科技!wpk外挂&quo... 透明黑科技!wpk外挂"德州ai机器人免费测试"一贯真的有挂(有挂后台)-抖音1、操作简单,无需注册...
黑科技透视!wpk德州透视辅助... 黑科技透视!wpk德州透视辅助"微扑克有辅助"的确真的有挂(有挂苹果版)-知乎1、下载好wpk德州透...
黑科技透视!德州之星插件&qu... 黑科技透视!德州之星插件"aapoker透明挂多久被封"果真真的有挂(有挂app)-今日头条;1、让...
透视辅助挂!wepoke辅助&... 透视辅助挂!wepoke辅助"wpk透视辅助合作"原来真的有挂(有挂靠谱)-小红书;1、很好的工具软...