opencascade AIS_InteractiveContext源码学习6 management of active Selection Modes

news2024/12/25 0:37:38

AIS_InteractiveContext

在这里插入图片描述

前言

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

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

management of active Selection Modes “管理活动选择模式”

1:SetSelectionModeActive

激活或取消指定对象的选择模式。如果选择模式已经处于激活或取消状态,则不会产生任何影响。
参数:
theObj:要激活或取消选择模式的对象
theMode:要激活或取消的选择模式;取消 -1 选择模式将有效地取消所有选择模式;使用 AIS_SelectionModesConcurrency_Single 激活 -1 选择模式将取消所有选择模式,否则不会产生影响
theToActivate:激活或取消的标志
theConcurrency:指定如何处理已经激活的选择模式;默认值(AIS_SelectionModesConcurrency_Multiple)表示保持活动选择模式不变;如果预期只有一个选择模式处于活动状态,可以使用 AIS_SelectionModesConcurrency_Single;如果接受 AIS_InteractiveObject::GlobalSelectionMode() 或任何本地选择模式的任意组合,则可以使用 AIS_SelectionModesConcurrency_GlobalOrLocal;仅当 theToActivate 设置为 TRUE 时考虑此值
theIsForce:设置为 TRUE 时,激活选择模式时将忽略显示状态

2:Activate

重载1:激活给定交互实体 anIobj 的具有给定索引的选择模式 aMode。
重载2:激活所有显示对象的给定选择模式。

3:Deactivate

重载1:取消所有显示对象上已激活的选择模式。
重载2:取消对象上已激活的所有选择模式。
重载3:取消交互对象 anIobj 上已激活的指定选择模式 aMode。
重载4:取消所有显示对象的给定选择模式。

4:ActivatedModes

返回已激活的选择模式列表。

5:EntityOwners

返回一个集合,其中包含在指定选择模式(如果 Mode == -1,则在所有活动模式中)下为交互对象创建的所有实体所有者。

简单示例

OpenCASCADE(Open Source Computer Aided Design Environment)中管理活动选择模式的示例可以涉及如何激活或取消选择模式,以及如何管理对象的选择状态。下面是一个简单的示例,展示如何在OpenCASCADE中操作选择模式:

#include <AIS_InteractiveContext.hxx>
#include <AIS_Selection.hxx>

// Assume AIS_InteractiveContext ctx; is already initialized

// Activate a selection mode
void activateSelectionMode()
{
    ctx.InitSelected();
    ctx.Activate(AIS_SelectionModes::AIS_SelectionModes_Concurrent);
}

// Deactivate all selection modes
void deactivateAllSelectionModes()
{
    ctx.ClearSelected();
}

// Example usage
int main()
{
    // Activate a selection mode
    activateSelectionMode();

    // Deactivate all selection modes
    deactivateAllSelectionModes();

    return 0;
}

在这个示例中:

  • AIS_InteractiveContext 是OpenCASCADE中的交互上下文类,用于管理显示对象和选择状态。
  • activateSelectionMode() 函数演示如何激活选择模式。
  • deactivateAllSelectionModes() 函数演示如何取消所有选择模式。
  • AIS_SelectionModes::AIS_SelectionModes_Concurrent 是一个选择模式的示例,实际应用中可以根据需要选择不同的模式。

这些函数和示例展示了如何在OpenCASCADE中管理和操作选择模式,以及如何处理对象的选择状态。

Selection Filters management “选择过滤器管理”

1:FilterType

上下文选择过滤器类型。

2:Filters

返回在本地上下文中活动的过滤器列表。

3:GlobalFilter

全局上下文选择过滤器。

4:AddFilter

允许您添加过滤器

5:RemoveFilter

从上下文中移除一个过滤器。

6:PickingStrategy

返回拾取策略;默认为 SelectMgr_PickingStrategy_FirstAcceptable。
参见 MoveTo()、Filters()。

7:SetPickingStrategy

设置拾取策略 - 该策略决定拾取线检测到的实体是否被接受,考虑到选择过滤器。默认情况下(SelectMgr_PickingStrategy_FirstAcceptable),选择过滤器会减少实体列表,以便上下文接受剩余列表中的最顶部实体。

这意味着,位于不可选择(由过滤器决定)部分后面的实体可以被用户拾取。如果用户不希望出现这种行为,并且希望不可选择(由过滤器决定)部分保持成为拾取的障碍物,则可以设置 SelectMgr_PickingStrategy_OnlyTopmost。

需要注意的是,由于选择管理器仅处理注册在其中的对象,因此 SelectMgr_PickingStrategy_OnlyTopmost 不会阻止拾取那些由于未在选择管理器中注册(例如已停用)而仍然可见的实体。因此,SelectMgr_PickingStrategy_OnlyTopmost 只有在启用选择过滤器时才会改变行为。

简单示例

在OpenCASCADE中管理选择过滤器可以帮助控制哪些对象可以被选中或显示。以下是一个简单示例,演示如何设置和使用选择过滤器:

#include <AIS_InteractiveContext.hxx>
#include <AIS_Selection.hxx>
#include <AIS_SelectionFilter.hxx>

// Assume AIS_InteractiveContext ctx; is already initialized

// Set up a selection filter
void setupSelectionFilter()
{
    Handle(AIS_SelectionFilter) selectionFilter = new AIS_SelectionFilter;
    selectionFilter->SetPickTypes(Graphic3d_TOC_ANY); // Allow picking any type of object
    ctx.SetSelectionFilter(selectionFilter);
}

// Clear the selection filter
void clearSelectionFilter()
{
    ctx.ClearSelectionFilter();
}

// Example usage
int main()
{
    // Set up a selection filter
    setupSelectionFilter();

    // Perform selections using the filter

    // Clear the selection filter
    clearSelectionFilter();

    return 0;
}

在这个示例中:

  • AIS_InteractiveContext 是OpenCASCADE中的交互上下文类,用于管理显示对象和选择状态。
  • AIS_SelectionFilter 是用于设置选择过滤器的类,它可以帮助限制可以选择的对象类型。
  • setupSelectionFilter() 函数演示了如何设置选择过滤器,使其允许选择任何类型的对象。
  • clearSelectionFilter() 函数演示了如何清除选择过滤器,以恢复到默认的选择行为。

在实际应用中,可以根据具体需求配置选择过滤器,以确保用户只能选择特定类型的对象或根据其他条件限制选择行为。

common properties"常见属性"

1:DefaultDrawer

返回默认属性管理器。其中包含所有颜色和线条属性,这些属性可以被那些没有自己属性的交互对象使用。

2:SetDefaultDrawer

设置默认属性管理器;应该在上下文创建时设置。警告 - 这个设置器不会更新已显示对象的默认绘图器的链接!

3:CurrentViewer

返回当前的查看器。

4:SelectionManager

返回默认属性管理器。该管理器包含所有颜色和线条属性,可供那些没有自己属性的交互对象使用。

5:MainPrsMgr

返回默认属性管理器。其中包含所有颜色和线条属性,可供那些没有自己属性的交互对象使用。

6:MainSelector

返回默认属性管理器。该管理器包含所有颜色和线条属性,可供那些没有自己属性的交互对象使用。

7:UpdateCurrentViewer

更新当前的查看器。

8:DisplayedObjects

方法1:返回特定类型(WhichKind)和签名(WhichSignature)的显示对象列表。默认情况下,WhichSignature 等于 -1,这意味着仅检查类型。
方法2:返回特定类型(WhichKind)和签名(WhichSignature)的显示对象列表。默认情况下, = -1 表示仅检查 。

9:ErasedObjects

方法1:返回列表 theListOfIO,其中包含特定类型(WhichKind)和签名(WhichSignature)的已擦除对象(隐藏对象)。默认情况下,WhichSignature 等于 1,这意味着仅检查类型。
方法2:返回已擦除对象(隐藏对象)的列表,根据默认设置, = -1 表示仅对 进行控制。

10:ObjectsByDisplayStatus

方法1:返回具有指定显示状态的对象列表,根据默认设置, = -1 表示仅对 进行控制。
方法2:返回列表 theListOfIO,其中包含特定类型(WhichKind)和签名(WhichSignature)的具有指定显示状态的对象。默认情况下,WhichSignature 等于 1,这意味着仅检查类型。

11:ObjectsInside

将列表 <aListOfIO> 填充为特定类型和签名的对象,不考虑显示状态。默认情况下,如果 <WhichSignature> = -1,则仅根据 <WhichKind> 进行控制。如果 <WhichKind> = AIS_KindOfInteractive_None 并且 <WhichSignature> = -1,则所有对象都会放入列表中。

12:ObjectIterator

创建一个迭代器,用于遍历上下文中注册的所有对象。

13:RebuildSelectionStructs

强制重新构建 BVH 选择的第一级。

14:Disconnect

断开 theObjToDisconnect 与装配体的连接,并移除相关的选择结构。

15:ObjectsForView

查询由于亲和掩码在指定视图中可见或隐藏的对象。

16:GravityPoint

返回旋转重心点。
来源:网址
继续debug visualization

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker-本地部署-后端

前置条件 后端文件 这边是一个简单项目的后端文件目录 docker服务 镜像文件打包 #命令行 docker build -t author/chatgpt-ai-app:1.0 -f ./Dockerfile .红框是docker所在文件夹 author&#xff1a;docker用户名chatgpt-ai-app&#xff1a;打包的镜像文件名字:1.0 &#…

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标,轮廓系数、戴维森堡丁指数

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标&#xff0c;轮廓系数、戴维森堡丁指数 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#…

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 ZADD2.2 ZCARD2.3 ZSCORE2.4 ZRANGE2.5 ZREVRANGE2.6 ZRANK2.7…

ubuntu22.04 设置双屏

一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题&#xff0c;在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息&#xff0c;我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…

一款专为网页开发者设计的高效工具,它简化了响应式网站的开发流程

大家好&#xff0c;今天给大家分享的是一款专为web开发人员和测试人员设计的工具&#xff0c;它通过改进的web浏览器功能&#xff0c;帮助用户进行响应式web开发和兼容性测试。 主要功能 所有设备上的镜像用户交互&#xff1a;允许开发人员在单一设备上进行操作&#xff0c;实时…

十年磨一剑,华火电燃组合灶重磅问世,引领厨房新时代

十年磨一剑&#xff0c;华火研发团队经过不懈努力&#xff0c;成功将等离子电生明火技术与电陶炉红外线光波炉技术精妙融合&#xff0c;打造出的这款具有划时代是意义的电燃组合灶HH-SZQP60&#xff0c;终于在 2024 年6月震撼登场&#xff0c;该灶以其卓越的创新技术和独特的产…

MTK平台Android13实现三方launcher为默认

一、前言 目前有遇到客户的定制需求,希望使用三方的launcher作为默认的launcher使用,一般情况下直接将三方launcher通过内置到系统并通过overlay机制即可很方便的实现launcher的替换,但是存在一个问题,需要增加ROM的维护成本。本文通过设备在使用前联网通过后台下发三方lau…

花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

我就是从培训机构学的网络安全&#xff0c;线下五六个月&#xff0c;当时学费不到一万&#xff0c;目前已成功入行。所以&#xff0c;只要你下决心要入这一行&#xff0c;过程中能好好学&#xff0c;那这8000就花得值~ 因为只要学得好&#xff0c;工作两个多月就能赚回学费&am…

Spring中的InitializingBean接口

使用方法 Slf4j Component public class MyBean implements InitializingBean {public MyBean() {log.info("> 构造方法");}Overridepublic void afterPropertiesSet() throws Exception {log.info("> afterPropertiesSet方法");} }Spring中的Bean注…

浏览器插件利器-allWebPluginV2.0.0.14-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

免费分享:2021年中国土壤类型空间分布数据(附下载方法)

Lambert等角圆锥投影是J.H&#xff0e;兰勃特于1772年所创&#xff0c;根据其与旋转椭球面的交线个数不同&#xff0c;将其分为兰勃特切圆锥投影和兰勃特割圆锥投影。圆锥面与旋转椭球的交线成为标准纬线。 数据简介 2021年中国土壤类型空间分布数据是基于全国土壤普查办公室1…

Mysql进阶-索引-使用规则-索引失效情况二(or连接的条件、数据分布影响)

文章目录 1、or连接的条件1.1、展示 tb_user 索引1.2、查询 id10 or age231.3、执行计划 id10 or age231.4、给 age 创建 索引1.4、执行计划 phone17799990004 or age23 2、数据分布影响2.1、查询 tb_user2.2、查询 phone >177999900202.3、执行计划 phone >177999900202…

OpenSSL EVP详解

OpenSSL EVP详解 Chapter1 OpenSSL EVP详解一、EVP基本介绍1. EVP 加密和解密2. EVP 签名和验证3. EVP 加解密文件 二、源码结构2.1 全局函数2.2 BIO扩充2.3 摘要算法EVP封装2.4 对称算法EVP封装2.5 非对称算法EVP封装2.6 基于口令的加密 三、开发实例3.1 示例13.2 示例23.3 示…

推动多模态智能模型发展:大型视觉语言模型综合多模态评测基准

随着人工智能技术的飞速发展&#xff0c;大型视觉语言模型&#xff08;LVLMs&#xff09;在多模态应用领域取得了显著进展。然而&#xff0c;现有的多模态评估基准测试在跟踪LVLMs发展方面存在不足。为了填补这一空白&#xff0c;本文介绍了MMT-Bench&#xff0c;这是一个全面的…

批量文本处理神器:一键按区间提取内容,革新您的文本管理方式!

在数字化时代&#xff0c;文本处理是每位职场人士都绕不开的工作内容。然而&#xff0c;面对海量的文本数据&#xff0c;如何高效、准确地提取所需内容&#xff0c;成为了许多人头疼的问题。今天&#xff0c;我们隆重推出一款批量文本处理神器&#xff0c;它凭借一键按区间提取…

《安全历史第3讲——从万里长城防御体系看软件安全体系建设》

长城&#xff0c;是中华民族的一张重要名片&#xff0c;是中华民族坚韧不屈、自强不息的精神象征&#xff0c;被联合国教科文组织列入世界文化遗产名录。那么在古代&#xff0c;长城是如何以其复杂的防御体系&#xff0c;一次次抵御外族入侵&#xff0c;而这些防御体系又能给软…

计算机视觉(CV)技术:优势、挑战与前景

摘要 计算机视觉作为人工智能的关键领域之一&#xff0c;正迅速改变我们的生活和工作方式。本文将探讨CV技术的主要优势、面临的挑战以及未来的发展方向。 关键词 计算机视觉, 人工智能, 数据处理, 自动化, 伦理问题 目录 引言计算机视觉技术的优势计算机视觉技术的挑战实…

经纬恒润推出面向教育行业的仿真测试实验室

随着汽车行业向电动化和智能化的转型&#xff0c;车辆的智能水平和复杂度不断提升&#xff0c;整车的开发周期却越来越短&#xff0c;测试要求越来越高&#xff0c;自动化测试成为必由之路。作为行业技术创新和引领者&#xff0c;高校面临着新能源和智能驾驶等新技术的众多挑战…

数据资产与人工智能的融合之路:探讨如何结合AI技术优化数据资产管理,提升企业智能化水平

目录 一、引言 二、数据资产管理的现状与挑战 1、数据资产管理的重要性 2、数据资产管理的挑战 三、人工智能在数据资产管理中的应用 1、数据采集与整合 2、数据清洗与校验 3、数据安全与隐私保护 4、数据分析与挖掘 四、结合AI技术优化数据资产管理的策略 1、制定数…

安全:Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作

https://doc.youyacao.com/88/2154 安全&#xff1a;Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作 问题背景 优雅草官方的服务器长期被各类牛鬼蛇神来搞事情&#xff0c;之前其中有一台测试服由于属于管理和维护&#xff0c;安全…