opencascade AIS_InteractiveContext源码学习3 highlighting management 对象高亮管理

本文主要是介绍opencascade AIS_InteractiveContext源码学习3 highlighting management 对象高亮管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AIS_InteractiveContext

在这里插入图片描述

前言

交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。

每个可选择的对象必须指定负责整体选择对象的选择模式(全局选择模式)。交互上下文本身支持使用选择过滤器进行分解对象的选择。默认情况下,全局选择模式等于0,但如果需要,可以重新定义。

highlighting management

24:Update
HighlightStyle() [1/4]
inline const Handle< Prs3d_Drawer >& AIS_InteractiveContext::HighlightStyle() const

返回当前动态突出显示样式设置,对应于 Prs3d_TypeOfHighlight_Dynamic。这只是一个指向 HighlightStyle(Prs3d_TypeOfHighlight_Dynamic) 的快捷方式。

HighlightStyle() [2/4]
Standard_Boolean AIS_InteractiveContext::HighlightStyle(const Handle< AIS_InteractiveObject >& theObj, Handle< Prs3d_Drawer >& theStyle) const

如果对象标记为通过全局状态进行突出显示,则返回对象的突出显示样式。
参数

  • theObj [in] 要检查的对象
HighlightStyle() [3/4]
Standard_Boolean AIS_InteractiveContext::HighlightStyle(const Handle< SelectMgr_EntityOwner >& theOwner, Handle< Prs3d_Drawer >& theStyle) const

如果选择了所有者,则返回所有者的突出显示样式。
参数

  • theOwner [in] 要检查的所有者
HighlightStyle() [4/4]
inline const Handle< Prs3d_Drawer >& AIS_InteractiveContext::HighlightStyle(const Prs3d_TypeOfHighlight theStyleType) const

返回默认的突出显示样式设置(可以被 PrsMgr_PresentableObject 覆盖)。

提示:尽管突出显示样式由 Prs3d_Drawer 定义,但在大多数情况下,实际上只会使用从其基类 Graphic3d_PresentationAttributes 派生的一小组属性。

所有类型的默认突出显示样式为 Aspect_TOHM_COLOR。其他默认值:

  • Prs3d_TypeOfHighlight_Dynamic
    • 颜色:Quantity_NOC_CYAN1;
    • 图层:Graphic3d_ZLayerId_Top,对象突出显示绘制在立即层内的主场景顶部,因此 V3d_View::RedrawImmediate() 将足以看到更新;
  • Prs3d_TypeOfHighlight_LocalDynamic
    • 颜色:Quantity_NOC_CYAN1;
    • 图层:Graphic3d_ZLayerId_Topmost,对象部分突出显示绘制在立即层内的主场景顶部,并清除深度(即使重叠的几何体也将被显示);
  • Prs3d_TypeOfHighlight_Selected
    • 颜色:Quantity_NOC_GRAY80;
    • 图层:Graphic3d_ZLayerId_UNKNOWN,对象突出显示绘制在与对象本身相同的层内(例如,默认情况下为 Graphic3d_ZLayerId_Default)并增加了优先级。

参数

  • [in] theStyleType 要修改的突出显示样式
    返回
    与指定突出显示类型相关联的绘图器

另请参阅

  • 使用 Prs3d_TypeOfHighlight_Dynamic 和 Prs3d_TypeOfHighlight_LocalDynamic 类型的 MoveTo()
  • 使用 Prs3d_TypeOfHighlight_Selected 和 Prs3d_TypeOfHighlight_LocalSelected 类型的 SelectDetected()
  • PrsMgr_PresentableObject::DynamicHilightAttributes() 在对象级别上覆盖 Prs3d_TypeOfHighlight_Dynamic 和 Prs3d_TypeOfHighlight_LocalDynamic 的默认值
  • PrsMgr_PresentableObject::HilightAttributes() 在对象级别上覆盖 Prs3d_TypeOfHighlight_Selected 和 Prs3d_TypeOfHighlight_LocalSelected 的默认值
25:SetHighlightStyle() [1/2]

设置与 Prs3d_TypeOfHighlight_Selected 对应的动态突出显示样式。这只是一个指向 SetHighlightStyle(Prs3d_TypeOfHighlight_Dynamic, theStyle) 的快捷方式。

SetHighlightStyle() [2/2]

设置突出显示样式设置。提示:最好修改由方法 HighlightStyle() 返回的现有样式,而不是创建新的 Prs3d_Drawer,以避免由于错误配置而导致意外结果。

如果创建了新的突出显示样式,请务必检查其演示 Z 层,否则突出显示可能无法按预期工作。

26:SelectionStyle

返回当前选择样式设置,对应于 Prs3d_TypeOfHighlight_Selected。这只是一个指向 HighlightStyle(Prs3d_TypeOfHighlight_Selected) 的快捷方式。

27:SetSelectionStyle

设置选择突出显示的样式。这只是一个指向 SetHighlightStyle(Prs3d_TypeOfHighlight_Selected, theStyle) 的快捷方式。

28:HilightWithColor

更改视图中对象的所有线条的颜色。

29:Unhilight

从对象中移除突出显示。

30:DisplayPriority

返回对象的显示优先级。

31:SetDisplayPriority

重载1:设置对象可见部分呈现的显示优先级。
重载2:(“从 OCCT7.7 开始已弃用,应该传递 Graphic3d_DisplayPriority 而不是整数到 SetDisplayPriority() 函数”)

32:GetZLayer

获取设置为显示的交互对象的 Z 层 ID。

33:SetZLayer

为交互对象设置 Z 层 ID。Z 层可以用于在场景中的其他对象前临时显示某个对象的呈现。Z 层的 ID 由 V3d_Viewer 生成。

34:SetViewAffinity

设置在指定视图中的对象可见性。如果对象在此上下文中未显示,则没有效果。

Display Mode management

35:DisplayMode

返回默认使用的显示模式设置。

36:SetDisplayMode

重载1:设置可见交互对象的显示模式。theMode 提供实体 theIObj 的显示模式索引。
重载2:设置可见交互对象(没有重写显示模式的对象)的显示模式。

37:UnsetDisplayMode

取消设置可见交互对象的显示模式。

用法用例

在OpenCASCADE中,AIS_InteractiveContext 提供了丰富的高亮管理功能,允许用户控制和管理3D场景中对象的高亮显示。以下是关于 AIS_InteractiveContext 中高亮管理的常见用法和用例:

1. 高亮显示对象
  • 使用默认颜色高亮显示对象:

    myContext->HilightWithColor(anObject, Quantity_NOC_YELLOW);
    

    使用 HilightWithColor() 方法为对象 anObject 设置默认颜色(如黄色)的高亮显示。

  • 使用自定义颜色高亮显示对象:

    Quantity_Color customColor(Quantity_NOC_GREEN);
    myContext->HilightWithColor(anObject, customColor);
    

    使用 HilightWithColor() 方法为对象 anObject 设置自定义颜色(如绿色)的高亮显示。

2. 取消高亮显示
  • 取消对象的高亮显示:

    myContext->Unhilight(anObject, Standard_True);
    

    使用 Unhilight() 方法取消对象 anObject 的高亮显示。第二个参数指定是否更新显示状态。

3. 自动高亮显示控制
  • 启用自动高亮显示:

    myContext->AutomaticHilight(Standard_True);
    

    使用 AutomaticHilight(Standard_True) 方法启用自动高亮显示功能。默认情况下,该功能是启用的。

  • 禁用自动高亮显示:

    myContext->AutomaticHilight(Standard_False);
    

    使用 AutomaticHilight(Standard_False) 方法禁用自动高亮显示功能,允许用户手动控制高亮显示效果。

4. 自定义高亮显示效果
  • 自定义高亮显示属性:

    Handle(Prs3d_Drawer) drawer = myContext->HighlightStyle();
    drawer->SetLineAspect(...);  // 设置线型属性
    drawer->SetTransparency(...);  // 设置透明度
    myContext->SetHighlightStyle(drawer);
    

    使用 HighlightStyle() 方法获取当前的高亮显示样式,然后使用 SetLineAspect()SetTransparency() 等方法进行自定义设置,最后使用 SetHighlightStyle() 方法应用自定义的高亮显示样式。

5. 高亮显示与选择集成
  • 高亮显示当前选定对象:

    myContext->HighlightCurrentObject(Standard_True);
    

    使用 HighlightCurrentObject(Standard_True) 方法高亮显示当前选定对象。可以通过将参数设置为 Standard_False 来取消该效果。

6. 自定义高亮显示事件处理
  • 高亮显示事件处理器:

    void MyHighlightEventHandler::OnHighlight(const AIS_InteractiveObject& object, const Standard_Boolean isHighlighted) {// 处理高亮显示事件
    }
    myContext->AddHighlightEventHandler(myHighlightHandler);
    

    使用事件处理器(如 MyHighlightEventHandler 类)处理高亮显示事件,根据需要执行自定义操作。

相关类和方法:

  • AIS_InteractiveContext: 主要类,用于管理交互式对象、选择和操作。
  • Quantity_ColorQuantity_NameOfColor: 用于设置颜色的类和枚举。
  • Prs3d_Drawer: 用于设置图形属性的类。

通过这些用例,可以看到如何利用 AIS_InteractiveContext 的高亮管理功能来实现灵活、精确的对象高亮显示,以增强OpenCASCADE应用程序的交互性和视觉效果。

这篇关于opencascade AIS_InteractiveContext源码学习3 highlighting management 对象高亮管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080769

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈