opencascade AIS_InteractiveContext源码学习相关枚举 AIS_SelectionScheme AIS_StatusOfPick

news2025/2/26 14:14:34

AIS_SelectionScheme

在这里插入图片描述

枚举 AIS_SelectionScheme

设置交互上下文中的选择方案。

枚举值:

AIS_SelectionScheme_UNKNOWN
未定义的方案

AIS_SelectionScheme_Replace
清除当前选择并选择检测到的对象

AIS_SelectionScheme_Add
将检测到的对象添加到当前选择

AIS_SelectionScheme_Remove
从当前选择中移除检测到的对象

AIS_SelectionScheme_XOR
对检测到的对象执行异或操作,其他已选择的对象不受影响

AIS_SelectionScheme_Clear
清除当前选择

AIS_SelectionScheme_ReplaceExtra
替换一个区别是:如果替换的结果为空,并且当前选择包含检测到的元素,则选择该元素

这些是用于交互上下文中设置选择方案的枚举值及其描述。
在OpenCASCADE中,AIS_SelectionScheme 是一个枚举类型,用于定义交互式上下文中选择对象的不同方案。这些方案确定了当用户进行选择操作时,如何处理当前选择集合以及新选择的对象。

以下是一些 AIS_SelectionScheme 的常见用法和用例:

示例用法:

  1. 替换选择(AIS_SelectionScheme_Replace):

    myContext->ClearSelected(); // 清除当前选择
    myContext->Select(...);    // 选择新的对象
    

    在这个例子中,首先使用 ClearSelected() 方法清除当前选择集合,然后使用 Select() 方法选择新的对象。这种方式适合在每次选择操作之前清除当前选择并选择新对象。

  2. 添加到当前选择(AIS_SelectionScheme_Add):

    myContext->ShiftSelect(...); // 将新的对象添加到当前选择
    

    使用 ShiftSelect() 方法可以将新的对象添加到当前已选择的对象集合中。这样做可以在不清除当前选择的情况下添加新的对象。

  3. 从当前选择中移除(AIS_SelectionScheme_Remove):

    myContext->ShiftSelect(...); // 将新的对象添加到当前选择
    myContext->ShiftSelect(...); // 再次选择相同对象以移除它
    

    在这个示例中,使用两次 ShiftSelect() 方法。第一次将对象添加到当前选择中,第二次再次选择相同对象,这会导致从当前选择中移除该对象。

  4. 异或选择(AIS_SelectionScheme_XOR):

    myContext->CtrlSelect(...); // 对新对象执行 XOR 操作
    

    使用 CtrlSelect() 方法可以执行异或操作。这意味着如果新选择的对象已经在当前选择中,则从当前选择中移除它;如果不在当前选择中,则添加它进去。

  5. 清除当前选择(AIS_SelectionScheme_Clear):

    myContext->ClearSelected(); // 清除当前选择
    

    使用 ClearSelected() 方法可以清除当前选择集合中的所有对象,即使没有新的选择操作。

  6. 替换选择(带额外条件)(AIS_SelectionScheme_ReplaceExtra):

    myContext->ShiftSelect(...); // 将新的对象添加到当前选择
    

    这种情况类似于 AIS_SelectionScheme_Add,但有一个区别:如果新的选择操作结果为空,并且当前选择集合中包含了被检测到的元素,则该元素会被选中。

相关方法和类:

  • AIS_InteractiveContext: OpenCASCADE中用于管理交互式对象和选择操作的主要类。
  • 选择操作方法:如 Select()ShiftSelect()CtrlSelect()ClearSelected() 等方法,用于执行不同的选择方案。
  • AIS_SelectionScheme 枚举:定义了不同的选择方案,每种方案都有不同的行为和效果,适合不同的用户交互需求。

在使用 AIS_SelectionScheme 时,根据用户的操作行为和应用程序的需求选择适当的选择方案。这些方案可以帮助控制和管理用户在3D场景中的选择行为,以提供更好的用户体验和交互性。

AIS_StatusOfPick

在这里插入图片描述

枚举 AIS_StatusOfPick

枚举值:

AIS_SOP_Error
错误状态

AIS_SOP_NothingSelected
未选择任何内容

AIS_SOP_Removed
已移除选择

AIS_SOP_OneSelected
已选择一个对象

AIS_SOP_SeveralSelected
已选择多个对象

这些是用于表示拾取操作状态的枚举值及其描述。

示例用法:

在OpenCASCADE中,AIS_StatusOfPick 是一个枚举类型,用于表示拾取操作的状态。它通常用于交互式上下文(Interactive Context)中,以确定用户在3D场景中选择对象时的情况。

以下是一些 AIS_StatusOfPick 的常见用法和示例:

  1. 获取拾取状态:

    AIS_StatusOfPick status = context->Pick(...); // 使用上下文进行拾取操作
    if (status == AIS_SOP_OneSelected) {
        // 当选择了一个对象时执行某些操作
    } else if (status == AIS_SOP_SeveralSelected) {
        // 当选择了多个对象时执行某些操作
    } else if (status == AIS_SOP_NothingSelected) {
        // 当未选择任何对象时执行某些操作
    } else if (status == AIS_SOP_Error) {
        // 处理拾取过程中的错误情况
    }
    

    在此示例中,contextAIS_InteractiveContext 对象,通过它进行拾取操作,并根据返回的 AIS_StatusOfPick 状态执行不同的操作。

  2. 处理拾取事件:

    void MyView::OnMouseDown(int x, int y) {
        AIS_StatusOfPick status = myContext->Select(x, y);
        switch (status) {
            case AIS_SOP_OneSelected:
                // 处理选择了一个对象的事件
                break;
            case AIS_SOP_SeveralSelected:
                // 处理选择了多个对象的事件
                break;
            case AIS_SOP_NothingSelected:
                // 处理未选择对象的事件
                break;
            case AIS_SOP_Error:
                // 处理拾取过程中的错误情况
                break;
            default:
                break;
        }
    }
    

    这个例子展示了如何在用户鼠标按下事件中使用 AIS_StatusOfPick 处理不同的拾取状态,以便根据用户的操作做出响应。

相关方法和类:

  • AIS_InteractiveContext: OpenCASCADE中负责管理交互式对象和拾取操作的主要类。
  • SelectPick 方法: 用于执行拾取操作并返回 AIS_StatusOfPick 状态。
  • AIS_StatusOfPick 枚举: 定义了不同的拾取状态,如已选择一个对象、已选择多个对象、未选择任何对象和拾取过程中的错误状态。

在使用 AIS_StatusOfPick 时,根据不同的返回状态来决定应用程序的行为,例如更新界面、执行操作或显示消息等。

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

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

相关文章

【Kubernetes项目部署】k8s集群+高可用、负载均衡+防火墙

项目架构图 (1)部署 kubernetes 集群 详见:http://t.csdnimg.cn/RLveS (2) 在 Kubernetes 环境中,通过yaml文件的方式,创建2个Nginx Pod分别放置在两个不同的节点上; Pod使用hostP…

智慧学习实践系统的设计

管理员账户功能包括:系统首页,个人中心,企业管理,任务管理,公告管理,菜单管理,用户管理,基础数据管理 企业账户功能包括:系统首页,个人中心,任务…

电商API接口详述:涵盖订单、库存等多功能接口介绍

电商商家自研管理系统,线下ERP系统或WMS系统想要接入电商平台订单打单发货,通过点三电商API可以一键对接多个电商平台,帮助商家、ERP/WMS服务商快速开发电商模块,实现电商业务管理功能,那么点三电商API接口有哪些可用接…

省市区下拉选择:3个el-select(附完整代码+json)

目录 直接上做出的效果: 页面代码: 使用click.native: data及引入: 初始化: methods: JSON: 示例结构: 1.code.json 2.pca-code.json 回显: 视频效果: 直接上做出…

盘点下常见 HDFS JournalNode 异常的问题原因和修复方法

盘点下常见 HDFS JournalNode 异常的问题原因和修复方法 最近在多个客户现场以及公司内部环境,都遇到了因为 JournalNode 异常导致 HDFS 服务不可用的问题,在此总结下相关知识。 1 HDFS HA 高可用和 JournalNode 概述 HDFS namenode 有 SPOF 单点故障…

MS3121地隔离放大器

MS3121 是一款应用于车载音频系统的地隔离放大 器。芯片可以很好地解决汽车音频系统中的绕线电阻问 题,以及由车载电子设备带来的噪声问题。另外,芯片 所需要的外围电容小,便于系统的集成。注意,芯片的 地电位需要和后级音频功…

Mac数据如何恢复?3 款最佳 Mac 恢复软件

如果您认为 Mac 上已删除的文件永远丢失了,那您就大错特错了!实际上,即使您清空了 Mac 上的垃圾箱,也有许多解决方案可以帮助您恢复已删除的文件。最好的解决方案之一是 Mac 恢复删除软件。最好的Mac 恢复删除应用程序可以轻松准确…

docker部署ClamAV集成java和python实现文件病毒扫描

介绍 官方文档:https://docs.clamav.net/manual/Signatures/DatabaseInfo.html ClamAV 是一个开源的反病毒引擎,它由多个模块组成,负责不同的任务处理。以下是 ClamAV 的主要模块和它们的功能: clamd:clamd 是 Clam…

Cookie、Session、Token的关系和区别

关系 Session与Cookie:Session通常依赖于Cookie来工作。当服务器为客户端创建一个Session时,它会在服务器上存储与客户端相关的信息,并将一个唯一的SessionID通过Cookie发送给客户端。客户端在后续的请求中会携带这个Cookie(包含…

视频监控管理平台的日志功能的重要性

日志功能的重要性 视频监控平台在日常工作生活中越来越重要,具有完备的平台日志,不仅可以增强视频监控系统的自身安全性,还能在更大程度上保障社会的安全与稳定。 (一)安全保障 视频监控平台作为安全防护…

流媒体学习之路(WebRTC)——音频NackTracker优化思路(8)

流媒体学习之路(WebRTC)——音频NackTracker优化思路(8) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实…

C51学习归纳13 --- AD/DA转换

AD/DA转换实现了计算机和模拟信号的连接,扩展了计算机的应用场景,为模拟信号数字化提供了底层支持。 AD转换通常是多个输入通道,使用多路选择器连接到AD开关,实现AD多路复用的目的,提高利用率。 AD/DA转换可以使用串口…

电脑怎么卸载软件?多个方法合集(2024年新版)

在电脑的日常使用中,我们经常需要安装各种软件来满足不同的需求,但随着时间的推移,可能会出现一些软件不再需要或需要更换的情况。此时,及时从电脑上卸载这些不必要的软件是非常重要的。它不仅可以释放硬盘空间,还可以…

Stable Diffusion 设计 Logo 成品惊艳,比起人类手工设计的有什么不足之处?

Stable Diffusion不仅可以创作出精美的绘画作品,还能通过简单的prompt生成logo图案,并进一步衍生出更多的视觉海报和banner。 checkpoint ReV Animated ReV Animated - v1.2.2-EOL | Stable Diffusion Checkpoint | Civitai 这是我个人最喜欢的 2.5/3…

最小公倍数的求法

什么是最小公倍数? 最小公倍数是指两个或多个整数共有的最小正整数倍数。 如何求一组数据的最小公倍数(Least Common Multiple,简称LCM)? LCM 这组数据的公倍数 这组数据的最大公约数 (Greatest Common Divis…

redis-基础篇(1)

黑马redis-基础篇笔记 1. 初识redis REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的…

利用Systemverilog+UVM搭建SOC及ASIC的RTL验证环境

在集成电路设计的复杂世界中,验证环节是确保设计满足预期功能和性能要求的关键步骤。随着系统级芯片(SOC)和特定应用集成电路(ASIC)的规模和复杂性不断增加,传统的验证方法已经难以满足高效、准确的验证需求…

秋招突击——6/19——新作{括号生成、合并K个排序链表}

文章目录 引言新作括号生成个人实现实现时遇到的问题实现代码 参考思路实现代码 合并K个有序链表个人实现实现代码 参考实现实现代码 总结 引言 今天把第二篇论文投了,后续有审稿意见再说,然后在进行修改的。后续的生活要步入正轨了,每天刷题…

21.0docker企业级镜像仓库harbor(vmware 中国团队)

docker企业级镜像仓库harbor(vmware 中国团队) 网站下载harbor软件包 https://github.com/goharbor/harbor 查看软件安装harbor版本需求限制 本地环境需求已满足 点击下载harbor安装包 点击releases根据版本信息下载 下面的在线安装就是docker pull。离线就是下载之后…

上海中腾食品科学餐饮管理铸就企业食堂新模式

在当今企业运营中,食堂不仅是员工用餐的场所,更是企业文化和管理水平的体现。随着餐饮行业的不断发展,科学合理的餐饮管理模式成为了企业食堂成功的关键。上海中腾食品科技有限公司以其独特的餐饮管理模式,成功打造了企业食堂的新…