opencascade AIS_GlobalStatus管理交互式对象显示信息 源码学习

前言

存储有关图形上下文中对象的信息:

方法

AIS_GlobalStatus类的翻译

构造函数
AIS_GlobalStatus()

AIS_GlobalStatus::AIS_GlobalStatus ( )

默认构造函数。

成员函数文档
AddSelectionMode()

Standard_Boolean AIS_GlobalStatus::AddSelectionMode (const Standard_Integer theMode) inline

添加选择模式。

ClearSelectionModes()

void AIS_GlobalStatus::ClearSelectionModes ( ) inline

删除所有选择模式。

DisplayMode()

Standard_Integer AIS_GlobalStatus::DisplayMode ( ) const inline

返回显示模式。

HilightStyle()

const Handle<Prs3d_Drawer>& AIS_GlobalStatus::HilightStyle ( ) const inline

返回特定对象应用的高亮样式。

IsHilighted()

Standard_Boolean AIS_GlobalStatus::IsHilighted ( ) const inline

如果对象被高亮,则返回TRUE。

IsSModeIn()

Standard_Boolean AIS_GlobalStatus::IsSModeIn (Standard_Integer theMode) const inline

如果选择模式已注册,则返回TRUE。

IsSubIntensityOn()

Standard_Boolean AIS_GlobalStatus::IsSubIntensityOn ( ) const inline

返回子强度状态是否开启。

RemoveSelectionMode()

Standard_Boolean AIS_GlobalStatus::RemoveSelectionMode (const Standard_Integer theMode) inline

删除选择模式。

SelectionModes()

const TColStd_ListOfInteger& AIS_GlobalStatus::SelectionModes ( ) const inline

返回对象的活动选择模式。

SetDisplayMode()

void AIS_GlobalStatus::SetDisplayMode (const Standard_Integer theMode) inline

设置显示模式。

SetHilightStatus()

void AIS_GlobalStatus::SetHilightStatus (const Standard_Boolean theStatus) inline

设置高亮状态。

SetHilightStyle()

void AIS_GlobalStatus::SetHilightStyle (const Handle<Prs3d_Drawer>& theStyle) inline

更改特定对象应用的高亮样式。

SetSubIntensity()

void AIS_GlobalStatus::SetSubIntensity (Standard_Boolean theIsOn)

设置子强度状态。

示例

以下是一个关于如何使用 AIS_GlobalStatus 类的示例。此示例展示了如何创建 AIS_GlobalStatus 对象,并设置和获取各种属性,例如选择模式、显示模式和高亮状态。

cpp 复制代码
#include <AIS_GlobalStatus.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <Prs3d_Drawer.hxx>
#include <Handle.hxx>

int main()
{
    // 创建AIS_GlobalStatus对象
    AIS_GlobalStatus globalStatus;

    // 添加选择模式
    globalStatus.AddSelectionMode(1);
    globalStatus.AddSelectionMode(2);

    // 设置显示模式
    globalStatus.SetDisplayMode(3);

    // 设置高亮样式
    Handle(Prs3d_Drawer) hilightStyle = new Prs3d_Drawer();
    globalStatus.SetHilightStyle(hilightStyle);

    // 设置高亮状态
    globalStatus.SetHilightStatus(Standard_True);

    // 打印当前高亮状态
    if (globalStatus.IsHilighted())
    {
        std::cout << "The object is highlighted." << std::endl;
    }
    else
    {
        std::cout << "The object is not highlighted." << std::endl;
    }

    // 检查选择模式是否已注册
    if (globalStatus.IsSModeIn(1))
    {
        std::cout << "Selection mode 1 is registered." << std::endl;
    }
    else
    {
        std::cout << "Selection mode 1 is not registered." << std::endl;
    }

    // 获取当前显示模式
    Standard_Integer displayMode = globalStatus.DisplayMode();
    std::cout << "Current display mode: " << displayMode << std::endl;

    // 获取所有选择模式
    const TColStd_ListOfInteger& selectionModes = globalStatus.SelectionModes();
    std::cout << "Active selection modes: ";
    for (TColStd_ListOfInteger::Iterator it(selectionModes); it.More(); it.Next())
    {
        std::cout << it.Value() << " ";
    }
    std::cout << std::endl;

    // 清除所有选择模式
    globalStatus.ClearSelectionModes();

    // 确认选择模式已被清除
    if (!globalStatus.IsSModeIn(1))
    {
        std::cout << "Selection modes have been cleared." << std::endl;
    }

    return 0;
}

代码解释

  1. 创建 AIS_GlobalStatus 对象 : AIS_GlobalStatus globalStatus;
  2. 添加选择模式 : 使用 AddSelectionMode 方法添加选择模式,例如模式 1 和模式 2。
  3. 设置显示模式 : 使用 SetDisplayMode 方法设置显示模式,例如模式 3。
  4. 设置高亮样式 : 创建 Prs3d_Drawer 对象并使用 SetHilightStyle 方法设置高亮样式。
  5. 设置高亮状态 : 使用 SetHilightStatus 方法将高亮状态设置为 Standard_True
  6. 打印当前高亮状态 : 使用 IsHilighted 方法检查对象是否被高亮,并输出结果。
  7. 检查选择模式是否已注册 : 使用 IsSModeIn 方法检查选择模式 1 是否已注册,并输出结果。
  8. 获取当前显示模式 : 使用 DisplayMode 方法获取当前显示模式,并输出结果。
  9. 获取所有选择模式 : 使用 SelectionModes 方法获取活动的选择模式,并输出结果。
  10. 清除所有选择模式 : 使用 ClearSelectionModes 方法清除所有选择模式。
  11. 确认选择模式已被清除 : 使用 IsSModeIn 方法确认选择模式已被清除,并输出结果。

通过这个示例,您可以了解如何使用 AIS_GlobalStatus 类的各种功能来管理和操作对象的显示和选择模式。

相关推荐
我叫唧唧波几秒前
【Java】Java 基础系统学习笔记
java·笔记·学习
Dobby_0532 分钟前
【CICD】Jenkins Pipeline 快速学习入门
运维·学习·jenkins
神秘的MT40 分钟前
C# WinForm Socket 类 常用方法 (C# .NET,TCP 场景)
服务器·网络·学习·tcp/ip·c#·winform
艾莉丝努力练剑2 小时前
【MYSQL】MYSQL学习的一大重点:事务(上)- 原子性与持久性
android·数据库·学习·mysql·面试
丶玉面小蛟龙2 小时前
DGCNN网络学习
学习·点云·dgcnn
晓梦林9 小时前
BUUCTF findKey-学习笔记
笔记·学习
0566469 小时前
agent学习Day15——SQLAlchemy 查询过滤、分页与历史列表接口
python·学习·fastapi
炎武丶航11 小时前
汽车功能测试学习(1):FCW前方碰撞预警
功能测试·学习·汽车
qq_1851986917 小时前
SpingBoot3入门学习一
学习
噗噗夹的TA之旅17 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染