前言
AIS_Manipulator 是 OpenCASCADE 库中的一个类,用于在3D空间中对其他交互对象或一组对象进行局部变换。该类提供了直观的操控方式,使用户可以通过鼠标进行平移、缩放和旋转等操作。

详细功能
交互对象类,通过鼠标操控另一个交互对象或一组对象的局部变换。
它管理3D空间中的三种操作类型:
- 通过轴进行平移
- 轴内缩放
- 围绕轴旋转
要启用这些模式之一,需要激活选择模式(从1到3)。
操作器的位置信息定义了三个正交变换轴。可以为每个轴或所有轴禁用特定的变换模式。
此外,每个轴可以被隐藏或显示。
以下步骤演示了如何为交互对象附加、配置和使用操作器:
步骤1. 创建操作器对象并调整其外观:
Handle(AIS_Manipulator) aManipulator = new AIS_Manipulator();
aManipulator->SetPart (0, AIS_Manipulator::Scaling, Standard_False);
aManipulator->SetPart (1, AIS_Manipulator::Rotation, Standard_False);
// 将操作器附加到已显示的对象,并管理操作模式
aManipulator->AttachToObject (anAISObject);
aManipulator->EnableMode (AIS_Manipulator::Translation);
aManipulator->EnableMode (AIS_Manipulator::Rotation);
aManipulator->EnableMode (AIS_Manipulator::Scaling);
请注意,你可以只启用一种操作模式,但显示所有的可视部分。
这段代码允许你查看操作器并选择其操作部分。
请注意,操作器在部分选择时激活模式。
如果此模式已激活,则不会对操作器进行选择。
它可以通过高亮显示激活。启用此功能:
aManipulator->SetModeActivationOnDetection (Standard_True);
步骤2. 在事件处理链中使用以下代码对对象进行变换:
// 捕捉鼠标按下事件
if (aManipulator->HasActiveMode())
{
aManipulator->StartTransform (anXPix, anYPix, aV3dView);
}
…
// 或者跟踪鼠标移动事件
if (aManipulator->HasActiveMode())
{
aManipulator->Transform (anXPix, anYPix, aV3dView);
aV3dView->Redraw();
}
…
// 或者捕捉鼠标释放事件(应用)或逃逸事件(取消)
aManipulator->StopTransform(/*Standard_Boolean toApply*/);
步骤3. 要


1037

被折叠的 条评论
为什么被折叠?



