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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学