opencascade AIS_InteractiveContext源码学习1 object display management 对象显示管理

AIS_InteractiveContext

在这里插入图片描述

前言

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

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

方法:object display management 对象显示管理

1:AIS_InteractiveContext()

AIS_InteractiveContext::AIS_InteractiveContext (const Handle< V3d_Viewer > & MainViewer)

构造由主视图器 MainViewer 定义的交互上下文对象。

###:2:~AIS_InteractiveContext()

virtual AIS_InteractiveContext::~AIS_InteractiveContext ()

虚析构函数。

3:DisplayStatus()

PrsMgr_DisplayStatus AIS_InteractiveContext::DisplayStatus (const Handle< AIS_InteractiveObject > & anIobj) const

返回实体 anIobj 的显示状态。显示状态可以是以下几种之一:

  • AIS_DS_Displayed:在主视图器中显示。
  • AIS_DS_Erased:在主视图器中隐藏。
  • AIS_DS_Temporary:临时显示。
  • AIS_DS_None:未显示在任何地方。

4:Status()

void AIS_InteractiveContext::Status (const Handle< AIS_InteractiveObject > & anObj, TCollection_ExtendedString & astatus) const

返回交互对象 anObj 在交互上下文中的视图状态。

这意味着该方法将获取指定交互对象在当前上下文中的状态,并将状态信息存储在 astatus 参数中。

5:IsDisplayed() [1/2]

Standard_Boolean AIS_InteractiveContext::IsDisplayed (const Handle< AIS_InteractiveObject > & anIobj) const

如果对象在交互上下文中显示,返回 true

6:IsDisplayed() [2/2]

Standard_Boolean AIS_InteractiveContext::IsDisplayed (const Handle< AIS_InteractiveObject > & anIobj, const Standard_Integer aMode) const

如果对象在交互上下文中以特定模式显示,返回 true

7:SetAutoActivateSelection()

void AIS_InteractiveContext::SetAutoActivateSelection (const Standard_Boolean theIsAuto) inline

启用或禁用在显示对象时自动激活默认选择模式。

8:GetAutoActivateSelection()

Standard_Boolean AIS_InteractiveContext::GetAutoActivateSelection () const inline

管理是否在显示新对象时自动激活默认选择模式;默认值为 TRUE。

9:Display() 方法翻译
9.1:Display() [1/3]

void AIS_InteractiveContext::Display (const Handle<AIS_InteractiveObject>& theIObj, const Standard_Boolean theToUpdateViewer)

使用默认显示模式在此上下文中显示对象。这将是对象的默认显示模式(如果有的话)。否则,将使用上下文模式。如果 GetAutoActivateSelection() 为 TRUE,则激活交互对象的默认选择模式。通常情况下,这是 0。

9.2:Display() [2/3]

void AIS_InteractiveContext::Display (const Handle<AIS_InteractiveObject>& theIObj, const Standard_Integer theDispMode, const Standard_Integer theSelectionMode, const Standard_Boolean theToUpdateViewer, const PrsMgr_DisplayStatus theDispStatus = PrsMgr_DisplayStatus_None)

设置指定对象的状态、显示模式和选择模式。如果 theSelectionMode 等于 -1,theIObj 将不会被激活:它将被显示,但不会是可选择的。

9.3:Display() [3/3]

void AIS_InteractiveContext::Display (const Handle<AIS_InteractiveObject>& theIObj, const Standard_Integer theDispMode, const Standard_Integer theSelectionMode, const Standard_Boolean theToUpdateViewer, const Standard_Boolean theToAllowDecomposition, const PrsMgr_DisplayStatus theDispStatus = PrsMgr_DisplayStatus_None)

inline
已弃用:
使用过时参数 theToAllowDecompositionDisplay() 方法已弃用。

10:Load() 方法翻译
10.1:Load() [1/2]

void AIS_InteractiveContext::Load (const Handle<AIS_InteractiveObject>& theObj, const Standard_Integer theSelectionMode = -1)

允许使用给定的选择模式和/或所需的分解选项加载交互对象,无论对象是否可视化。加载的对象将是可选择的,但仅在被选择器检测到时才以高亮显示。

10.2:Load() [2/2]

void AIS_InteractiveContext::Load (const Handle<AIS_InteractiveObject>& theObj, Standard_Integer theSelectionMode, Standard_Boolean)

inline
已弃用:
使用过时参数 theToAllowDecompositionLoad() 方法已弃用。

11:Erase()
  • 功能: 隐藏对象。
  • 参数:
    • theIObj:要隐藏的对象。
    • theToUpdateViewer:是否更新视图以反映更改。
  • 描述: 对象的表示仅标记为不可见,因此将被排除在重绘之外。要显示隐藏的对象,请使用 Display() 方法。
12:EraseAll()
  • 功能: 隐藏所有对象。
  • 参数:
    • theToUpdateViewer:是否更新视图以反映更改。
  • 描述: 对象的表示仅标记为不可见,因此将被排除在重绘之外。要显示所有隐藏的对象,请使用 DisplayAll() 方法。
13:DisplayAll()
  • 功能: 显示所有隐藏的对象。
  • 参数:
    • theToUpdateViewer:是否更新视图以反映更改。
  • 描述: 该方法用于显示所有之前隐藏的对象,使它们再次可见。
14:EraseSelected()
  • 功能: 隐藏选定的对象。
  • 参数:
    • theToUpdateViewer:是否更新视图以反映更改。
  • 描述: 该方法用于隐藏选定的对象,使其不再可见。对象的显示状态将被标记为隐藏,因此在重绘时将被排除。要显示隐藏的对象,请使用 Display() 方法。
15:DisplaySelected()
  • 功能: 显示当前选定的对象。
  • 参数: theToUpdateViewer:是否更新视图以反映更改。
  • 描述: 该方法用于显示当前选定的对象,使其可见。如果对象已被隐藏,则会显示出来。
16:ClearPrs

清空由 theMode 索引的模式的图形呈现。注意!会移除 theIObj。如果 theIObj 之前被激活,它仍然是激活状态。

17:Remove

从每个视图中移除对象。

18:RemoveAll

从上下文中移除所有对象

19:Redisplay

重载1: 重新计算给定类型和给定签名的已显示对象的 Prs/选择。如果签名 = -1,则不考虑签名标准。

20:Redisplay

重载2: 重新计算对象的可见部分的呈现。如果 theAllModes 为 true,即使是不可见的,所有呈现也都存在于对象中。

21:RecomputePrsOnly

重新计算已显示的呈现,并标记其他呈现。但不更新这些呈现。

22: RecomputeSelectionOnly

重新计算活动选择,并标记其他选择。但不更新这些呈现。

23:Update

通过检查和重新计算标记为“需要重新计算”的呈现和选择结构来更新显示的交互对象。此方法不会强制任何重新计算。该方法即使在特定选择器中加载而未激活,也会重新计算选择。

用法用例

当使用OpenCASCADE中的 AIS_InteractiveContext 进行对象显示管理时,以下是更多的用法和用例示例:

1. 显示控制
  • 显示特定类型的对象:

    myContext->DisplayOnly(ShapeType_COMPOUND);
    

    使用 DisplayOnly() 方法显示指定类型的对象。这里的 ShapeType_COMPOUND 是OpenCASCADE中定义的一种对象类型。

  • 显示或隐藏所有辅助图形:

    myContext->Display(AIS_KOI_DatumAxes, Standard_True);
    

    使用 Display() 方法显示或隐藏特定类型的辅助图形,如坐标轴。

2. 颜色和材质设置
  • 设置对象的颜色:

    Quantity_Color color(Quantity_NOC_BLUE);
    myContext->SetColor(anObject, color, Standard_True);
    

    使用 SetColor() 方法设置对象 anObject 的颜色,并指定是否更新显示。

  • 设置对象的材质:

    Graphic3d_MaterialAspect material(Graphic3d_NOM_PLASTIC);
    myContext->SetMaterial(anObject, material, Standard_True);
    

    使用 SetMaterial() 方法设置对象 anObject 的材质属性,并指定是否更新显示。

3. 显示模式和属性
  • 设置对象的显示模式:

    myContext->SetDisplayMode(anObject, 1, Standard_True);
    

    使用 SetDisplayMode() 方法设置对象 anObject 的显示模式。这里的 1 表示一种特定的显示模式。

  • 设置对象的线宽:

    myContext->SetWidth(anObject, 2.0);
    

    使用 SetWidth() 方法设置对象 anObject 的线宽。

4. 交互和高亮显示
  • 高亮显示对象:

    myContext->HilightWithColor(anObject, Quantity_NOC_YELLOW);
    

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

  • 取消高亮显示:

    myContext->Unhilight(anObject, Standard_True);
    

    使用 Unhilight() 方法取消对象 anObject 的高亮显示。

5. 控制和状态管理
  • 隐藏所有对象:

    myContext->EraseAll(Standard_False);
    

    使用 EraseAll() 方法隐藏所有对象,并指定是否完全擦除。

  • 显示所有对象:

    myContext->DisplayAll(Standard_False);
    

    使用 DisplayAll() 方法显示所有对象,并指定是否更新显示状态。

6. 自定义图形属性
  • 添加图形属性:

    Handle(Prs3d_Drawer) drawer = myContext->DefaultDrawer();
    drawer->SetLineAspect(...);
    myContext->SetDisplayStyle(anObject, drawer);
    

    使用 SetDisplayStyle() 方法为对象 anObject 设置自定义的图形属性,如线型、线宽等。

7 光照和阴影效果

启用/禁用光照效果:

myContext->SetDisplayMode(anObject, 0, Standard_True);
使用 SetDisplayMode() 方法来切换对象 anObject 的光照效果。第一个参数是光照模式。

启用/禁用阴影效果:

myContext->SetDisplayMode(anObject, 2, Standard_True);
使用 SetDisplayMode() 方法来切换对象 anObject 的阴影效果。第一个参数是阴影模式。

相关类和方法:

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

通过这些用例,可以看到如何利用 AIS_InteractiveContext 的丰富功能来控制和管理OpenCASCADE中3D场景中对象的显示效果,从而实现各种复杂的可视化需求和用户交互操作。

Selection management

续看篇章2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/735515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240623 每日AI必读资讯

&#x1f916;原生鸿蒙AI浓度要爆表了&#xff01; - 一年一度华为开发者大会上&#xff0c;余承东首次揭秘“鸿蒙原生智能”Harmony Intelligence&#xff01; - 华为小艺进化成系统级智能体。 - 一句话实现跨多个应用的规划和任务执行&#xff1b;在第三方APP上随意处理文…

NSIS 入门教程 (三)

引言 在教程的第二部分中&#xff0c;我们为安装程序增加了一个卸载程序&#xff0c;并查看了一些其他的向导页面以及安装部分的选择。第三部分的目标是使安装程序的外观更加现代化。 更现代的外观 为了给安装程序一个更现代的外观&#xff0c;我们要启用现代用户界面。要提…

java基于ssm+jsp 社区疫情防控管理信息系统

1前台首页功能模块 社区疫情防控管理信息系统&#xff0c;在社区疫情防控管理信息系统可以查看首页、物品信息、论坛信息、新闻资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1系统首页界面图 用户登录、用户注册&#xff0c;通过注册填写账号、密码、姓名、身份证、…

supOS浅度集成

一、浅度集成介绍 浅度集成是根据项目或者演示要求而做的集成工作&#xff0c;通过接入supOS的单点登录&#xff0c;UI调整&#xff0c;菜单栏的集成&#xff0c;从而达到客户使用supOS平台来使用各个应用的能力。 二、浅度集成的作用 通过较少的研发投入使APP应用浅度融入到…

密码学-密码协议之零知识证明

一、前言 零知识证明实际上一种密码协议&#xff0c;该协议的一方称为证明者(Prover)&#xff0c;通常用P表示&#xff0c;协议的另一方是验证者(Verifier)&#xff0c;一般用V表示。零知识证明是指P试图使V相信某个论断是正确的&#xff0c;但却不向V提供任何有用的信息&…

随记:内卷是什么意思?

内卷&#xff0c;网络流行语&#xff0c;原指一类文化模式达到了某种最终的形态以后&#xff0c;既没有办法稳定下来&#xff0c;也没有办法转变为新的形态&#xff0c;而只能不断地在内部变得更加复杂的现象。经网络流传&#xff0c;很多高等学校学生用其来指代非理性的内部竞…

UsersGUI.java用户界面

完成效果图&#xff1a; 点击阅读按钮&#xff1a; 点击删除按钮&#xff1a; 点击新建按钮&#xff1a; Code /* This GUI application allows users to manage their diaries: ​ Read: Users can read existing diaries. Create: Users can create new diaries. Delete: Us…

2024 年值得推荐的 10 款 iPhone 数据恢复软件

iPhone 从来都不是一个简单的打电话电话。它就像一台微型电脑&#xff0c;让我们互相联系、拍照、拍视频、发邮件、看文档、看书。然而&#xff0c;随着它成为日常生活的必需品&#xff0c;我们总是容易因各种原因丢失数据&#xff0c;如删除、恢复出厂设置、iOS 错误、文件同步…

基于Vue3.0 Node.js 的 大文件切片上传、秒传、断点续传实现方案梳理

✨&#x1f4bb; 在处理大文件上传时&#xff0c;切片上传是提高效率与用户体验的关键技术之一。下面将详细介绍如何在前端利用Vue框架与Node.js后端配合&#xff0c;实现这一功能。 &#x1f446;&#x1f3fb;大体流程 &#x1f446;&#x1f3fb;一、文件切片上传 通过文件…

HTML静态网页成品作业(HTML+CSS)——故宫介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

ubuntu 22.04下利用webmin 搭建一个Wordpress 网站(2)

上次我们讲到第二部分&#xff0c;今天我们继续这一个话题 第三部分&#xff1a;利用webmin创建一个wordpress网站 1、在 Webmin 内安裝Apache 未使用的模块> Apache Webserver > 现在安装 会出现如下图所示的有关软件 刷新模快后 检查开机时要自动启动Apache 测…

TI毫米波雷达可以用串口调试助理来获取原始数据吗?

摘要&#xff1a;本文介绍一下如何使用普通的串口调试助理来读取到AWR1843毫米波雷达的数据的。 使用的硬件如下图所示。 软件就是普通的串口助理&#xff0c;我用的是SSCOM&#xff0c;其他串口助理也是可以的&#xff0c;核心作用其实就是发送一行行的指令而已。 操作方法&am…

HTML(18)——浮动

标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个 浮动 作用&#xff1a;让块级元素水平排列 属性名&#xff1a;float 属性值 left&#xff1a;左对齐right&#…

Google trend搜索关键词

Google trend地址&#xff1a;https://trends.google.com/trends/?geoUS&hlzh-CN 1、具体的操作步骤如下&#xff1a; 2、Google trend搜索页面如下&#xff1a;

https://curl.trillworks.com不能用的解决方法

gitee源码:https://gitee.com/Project0ne/curlconverter 首先打开上面的链接 然后下载文件 下载文件到本地 然后安装node.js(Node.js official website.)不会的自行百度,这里不做过多赘述。 在curlconverter文件夹下面打开终端(在文件夹下面右键-在终端打开) 输入 npm…

昇思25天学习打卡营第1天|快速入门

一、简介&#xff1a; 本节通过MindSpore已经封装好的API&#xff0c;快速实现一个深度学习模型的数据集准备、训练评估&#xff0c;模型参数保存和加载&#xff0c;对新手朋友十分友好。这里非常感谢华为昇思团队在算力和代码方面的指导。 二、环境准备&#xff1a; 在开始…

C# 唯一性进程的方法封装(Winform/WPF通用)

C#唯一进程封装 C# 唯一性进程的方法封装 public class UniqueProcess{/// <summary>/// 焦点切换指定的窗口&#xff0c;并将其带到前台/// </summary>/// <param name"hWnd"></param>/// <param name"fAltTab"></para…

搜狐视频全自动工具

项目介绍&#xff1a; 首先我们要用自己的一个号&#xff0c;作为主号&#xff0c;主号上发作品&#xff0c;利用不实名的小号通过脚本自动去浏览视频 小号看视频的同时会出现搜狐官方强行插入的广告&#xff0c;从而获得收益 收益介绍&#xff1a; 小号看一个视频会出现3-…

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言&#xff1a;第一部分详细讲解DDS核心框图&#xff0c;还请读者深入阅读第一部分&#xff0c;以便理解DDS核心思想 三刷小梅哥视频总结&#xff01; 小梅哥https://www.corecourse.com/lander 一、DDS简介 DDS&#xff08;Direct Digital Synthesizer&#xff09;即数字…