opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习
opencascade AIS_TypeFilter
前言

通过它们的类型选择交互对象。该过滤器会对本地上下文中的每个交互对象提出问题,
以确定它是否具有非空的所有者,并且如果是,则检查它是否是所需类型。
如果对象在每种情况下都返回 true,则保留该对象。否则,将其拒绝。
默认情况下,交互对象的类型为 None,签名为 0。类型过滤器指定了一
个类型的选择范围,可以在任何级别上枚举类型或种类。这个选择可以是
交互对象的种类、维度、单位,或者轴、平面或属性的类型。
如果要为您的交互对象指定特定的类型和签名,必须重新定义两个虚拟方法:
Type 和 Signature。
此过滤器在中立点和开放的本地上下文中均可使用。
在收集器视图中,只能在打开本地上下文时对位置过滤器积极响应的交互
对象进行定位。
当关闭本地上下文时,所有临时交互对象都将被删除,与上下文相关的所有
选择模式都将取消,并且所有内容过滤器都将被清空。
方法
1
初始化类型过滤器,使用给定的种类aGivenKind。
AIS_TypeFilter(const AIS_KindOfInteractive aGivenKind);
2
如果临时对象不是交互对象,或者交互对象的类型与过滤器中存储的类型不同,
则返回False。
virtual Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& anobj);
用法示例
在OpenCASCADE中,AIS_TypeFilter是用于过滤特定类型交互对象的类。这个类通常用于与视图选择管理器(SelectMgr)一起工作,以便在3D场景中选择和操作特定类型的对象。以下是一个简单的示例,展示了如何使用AIS_TypeFilter类来初始化和应用过滤器:
#include <AIS_TypeFilter.hxx>
#include <AIS_KindOfInteractive.hxx>
#include <SelectMgr_EntityOwner.hxx>// 示例函数,演示如何使用AIS_TypeFiltervoid exampleUsage()
{// 假设已有一个特定的交互对象种类定义AIS_KindOfInteractive givenKind = AIS_KOI_Dimension;// 初始化一个类型过滤器,使用给定的种类AIS_TypeFilter typeFilter(givenKind);// 假设有一个 SelectMgr_EntityOwner 对象 anEntityOwnerHandle(SelectMgr_EntityOwner) anEntityOwner = ...; // 获取实际的 EntityOwner 对象// 检查该 EntityOwner 是否符合过滤器条件Standard_Boolean isOk = typeFilter.IsOk(anEntityOwner);if (isOk){// 如果符合过滤器条件,执行相应的操作// 例如,选择该交互对象进行特定的操作// 在实际应用中,通常会将符合过滤器条件的对象添加到选择集中或进行其他操作// 例如:// mySelection->Add(anEntityOwner);// 或者// Handle(AIS_InteractiveObject) interactiveObject = anEntityOwner->Selectable();// 进行交互对象的其他操作}else{// 如果不符合过滤器条件,可以进行相应的处理// 例如,忽略或者进行其他处理}
}
在这个示例中:
- 首先,我们定义了一个
AIS_KindOfInteractive类型的变量givenKind,它表示我们希望过滤的交互对象的种类。 - 然后,我们通过
AIS_TypeFilter typeFilter(givenKind);初始化了一个类型过滤器,这样它就会过滤出具有特定种类的交互对象。 - 接着,我们假设有一个
SelectMgr_EntityOwner类型的对象anEntityOwner,通过调用typeFilter.IsOk(anEntityOwner);来检查该对象是否符合过滤条件。 - 最后,根据
IsOk的返回结果,我们可以对符合过滤条件的交互对象执行相应的操作。
在实际应用中,你可以根据具体需求定制不同的 AIS_KindOfInteractive 类型和相应的操作,以实现对交互对象的选择和处理。
参考
opencascade AIS_XRTrackedDevice
前言

“被跟踪的XR设备的辅助纹理网格呈现”
方法
1
主构造函数。
AIS_XRTrackedDevice(const Handle(Graphic3d_ArrayOfTriangles)& theTris,
const Handle(Image_Texture)& theTexture);
2
空构造函数。
AIS_XRTrackedDevice();
3
返回设备角色。
Aspect_XRTrackedDeviceRole Role() const { return myRole; }
4
设置设备角色。
void SetRole(Aspect_XRTrackedDeviceRole theRole) { myRole = theRole; }
5
返回激光颜色。
const Quantity_Color& LaserColor() const { return myLaserColor; }
6
设置激光颜色。
Standard_EXPORT void SetLaserColor(const Quantity_Color& theColor);
7
返回激光长度。
Standard_ShortReal LaserLength() const { return myLaserLength; }
8
设置激光长度。
Standard_EXPORT void SetLaserLength(Standard_ShortReal theLength);
9
返回单位比例因子。
Standard_ShortReal UnitFactor() const { return myUnitFactor; }
10
设置单位比例因子。
void SetUnitFactor(Standard_ShortReal theFactor) { myUnitFactor = theFactor; }
用法示例
OpenCASCADE中的 AIS_TypeFilter 和 AIS_XRTrackedDevice 是用于管理和显示3D图形对象的类。AIS_TypeFilter 用于过滤特定类型的交互对象,而 AIS_XRTrackedDevice 则可能用于表示和管理被跟踪的XR设备的可视化。以下是一个简单的示例,展示如何结合使用这两个类来管理和显示XR设备的虚拟表示:
示例代码
#include <AIS_TypeFilter.hxx>
#include <AIS_XRTrackedDevice.hxx>
#include <Graphic3d_ArrayOfTriangles.hxx>
#include <Image_Texture.hxx>// 示例函数,演示如何使用AIS_TypeFilter和AIS_XRTrackedDevicevoid exampleUsage()
{// 假设已经创建了一个用于管理交互对象的类型过滤器,例如筛选特定种类的交互对象AIS_TypeFilter typeFilter(/* 指定所需的种类参数 */);// 假设有一个用于被跟踪XR设备的三角形网格数组和纹理Handle(Graphic3d_ArrayOfTriangles) tris = ...; // 创建三角形网格数组Handle(Image_Texture) texture = ...; // 创建纹理对象// 创建一个AIS_XRTrackedDevice对象来表示被跟踪的XR设备AIS_XRTrackedDevice trackedDevice(tris, texture);// 设置XR设备的角色trackedDevice.SetRole(/* 指定角色参数 */);// 设置XR设备的激光颜色和长度Quantity_Color laserColor(/* 设置激光颜色参数 */);trackedDevice.SetLaserColor(laserColor);trackedDevice.SetLaserLength(/* 设置激光长度参数 */);// 假设需要将XR设备对象添加到场景中,并且仅在满足类型过滤器条件时才添加if (typeFilter.IsOk(/* 指定要添加的交互对象 */)){// 将XR设备对象添加到场景中的适当位置// 例如:// myAISContext->Display(trackedDevice, Standard_True);}
}
解释说明
-
AIS_TypeFilter 使用:
AIS_TypeFilter类用于定义和应用类型过滤器,确保只有符合特定类型条件的交互对象才能被操作或显示。
-
AIS_XRTrackedDevice 使用:
AIS_XRTrackedDevice类用于创建和管理被跟踪的XR设备的可视化表示。它可以接受三角形网格和纹理对象作为参数,用来构建设备的外观。- 可以使用其设置方法,如
SetRole、SetLaserColor和SetLaserLength,来定义和调整设备的角色、激光颜色和长度等属性。
-
场景管理:
- 示例中展示了如何结合使用
AIS_TypeFilter和AIS_XRTrackedDevice,确保只有符合特定类型条件的XR设备可被添加到场景中进行显示或操作。
- 示例中展示了如何结合使用
在实际应用中,你可以根据具体需求调整和扩展这些示例代码,以实现更复杂的XR设备管理和可视化功能。
参考
相关文章:
opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习
opencascade AIS_TypeFilter 前言 通过它们的类型选择交互对象。该过滤器会对本地上下文中的每个交互对象提出问题, 以确定它是否具有非空的所有者,并且如果是,则检查它是否是所需类型。 如果对象在每种情况下都返回 true,则保留…...
使用Spring AOP监控指定方法执行时间
文章目录 一、加入pom依赖二、切面类和注解三、执行方法 一、加入pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>二、切面类和注解 import java.lang.…...
最新CSS3纵向菜单的实现
纵向菜单 通过下面例子,你会知道把列表转换成菜单的关键技术 a中的#是URL的占位符可以点击,真正用途中写实际URL <nav class"list1"><ul><li><a href"#">Alternative</a></li><li><…...
GooLeNet模型搭建
一、model import torch from torch import nn from torchsummary import summaryclass Inception(nn.Module):def __init__(self, in_channels, c1, c2 , c3 , c4):super(Inception, self).__init__()self.ReLU nn.ReLU()#路线1:1x1卷积self.p1_1 nn.Conv2d(in_channels i…...
使用ThreadLocal来存取单线程内的数据
一.什么是ThreadLocal? ThreadLocal,即线程本地变量。如果你创建了一个 ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是在操作自己本地内存里面的变量&…...
elasticsearch教程
1. 单点部署(rpm): #提前关闭firewalld,否则无法组建集群 #1. 下载ES rpm包 ]# https://www.elastic.co/cn/downloads #2. 安装es ]# rpm -ivh elasticsearch-7.17.5-x86_64.rpm #3. 调整内核参数(太低的话es会启动报错) echo "vm.max_map_count655360 fs.file-max 655…...
Arrays、Lambda表达式、Collection集合
1. Arrays 1.1 操作数组的工具类 方法名说明public static String toString(数组)把数组拼接成一个字符串public static int binarySearch(数组,查找的元素)二分查找法查找元素public static int[] copyOf(原数组,新数组长度)拷贝数组public static int[] copyOfRange(原数组…...
2024年前端趋势:全栈或许是不容错过的选择!
近年来,前端开发的技术不断推陈出新,2024年也不例外。在这个变化迅速的领域,全栈开发逐渐成为一股不容忽视的趋势。无论你是经验丰富的开发者,还是刚刚入门的新手,掌握全栈技术都能让你在竞争中脱颖而出。而在这个过程…...
MySQL 实战 45 讲(01-05)
本文为笔者学习林晓斌老师《MySQL 实战 45 讲》课程的学习笔记,并进行了一定的知识扩充。 sql 查询语句的执行流程 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器和执行器。 连接器负责接收客…...
仓颉编程语言入门 -- Array数组详解
仓颉编程语言入门 – Array数组详解 一. 如何创建Array数组 我们可以使用 Array 类型来构造单一元素类型,有序序列的数据。 1.仓颉使用 Array 来表示 Array 类型。T 表示 Array 的元素类型,T 可以是任意类型 , 类似于泛型的概念 var arr:Array<St…...
C#初级——简单单例模式使用
单例模式 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例,通过单例模式防止私有成员被多次引用,防止数据被随意纂改。本文使用的是线程不安全的懒汉式单例。 创建单例模式 首…...
2024.07.29 校招 实习 内推 面经
地/球🌍 : neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 美/团// 快驴、小象、优/选/事/业/部2024年校/园/招聘(内推) 校招 | 美团快驴、小象、优选事业部2024年校园招聘(内推ÿ…...
速盾:爬虫攻击和cc攻击的区别是什么?
爬虫攻击和CC(Distributed Denial of Service)攻击是网络安全领域两种不同类型的攻击方式。尽管它们都涉及对目标网站或服务器的非法访问,但它们的目的、方法和影响各不相同。在接下来的文章中,我们将详细介绍这两种攻击方式的区别…...
Tomcat与Nginx的区别详解
目录 引言Tomcat概述 Tomcat的历史Tomcat的架构Tomcat的功能Nginx概述 Nginx的历史Nginx的架构Nginx的功能Tomcat与Nginx的区别 架构上的区别...
【大模型从入门到精通5】openAI API高级内容审核-1
这里写目录标题 高级内容审核利用 OpenAI 内容审核 API 的高级内容审核技术整合与实施使用自定义规则增强审核综合示例防止提示注入的策略使用分隔符隔离命令理解分隔符使用分隔符实现命令隔离 高级内容审核 利用 OpenAI 内容审核 API 的高级内容审核技术 OpenAI 内容审核 AP…...
JVM系列 | 对象的消亡3——垃圾收集器的对比与实现细节
垃圾收集器 文章目录 各收集器简单对比收集器启动参数各收集器详细说明JDK 1.3 之前JDK 1.3 | SerialJDK 1.4 | ParNewJDK 1.4 | Parallel ScavengeJDK 5 | CMS 收集器JDK 7 | G1 各收集器简单对比 收集器名称出现时间淘汰时间目标采用技术线程数STW分代备注无名JDK 1.3之前JD…...
C# Unity 面向对象补全计划 七大原则 之 开闭原则(OCP) 难度:☆ 总结:已经写好的就别动它了,多用继承
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.开闭原则(OC…...
微信防封指南请收好
一、新号与老号的添加限制 建议新注册的微信号主动添加好友的数量不宜过多,推荐每日添加不超过5个好友;对于老号,建议每日添加不超过20个好友。保持适度的添加速度,避免被系统判定为异常操作。 二、避免使用营销性词汇 在发送消…...
选择排序算法改进思路和算法实现
选择排序 在未排序的数组中,用第一个数去和后面的数比较,找出最小的数,和第一个数交换。第一个数已为已排序的数。 相当于0~7 从0~7中找到最小的数放在0 从1~7中找到最小的数放在1 从2~7中找到最小的数放在2 ...以此类推 从6~7中找到最…...
【文件解析漏洞复现】
一.IIS解析漏洞复现 1.IIS6.X 方式一:目录解析 搭建IIS环境 在网站下建立文件夹的名字为.asp/.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 访问成功被解析 方式一:目录解析 在IIS 6处理文件解…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
