当前位置: 首页 > news >正文

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_TypeFilterAIS_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);}
}

解释说明

  1. AIS_TypeFilter 使用:

    • AIS_TypeFilter 类用于定义和应用类型过滤器,确保只有符合特定类型条件的交互对象才能被操作或显示。
  2. AIS_XRTrackedDevice 使用:

    • AIS_XRTrackedDevice 类用于创建和管理被跟踪的XR设备的可视化表示。它可以接受三角形网格和纹理对象作为参数,用来构建设备的外观。
    • 可以使用其设置方法,如 SetRoleSetLaserColorSetLaserLength,来定义和调整设备的角色、激光颜色和长度等属性。
  3. 场景管理:

    • 示例中展示了如何结合使用 AIS_TypeFilterAIS_XRTrackedDevice,确保只有符合特定类型条件的XR设备可被添加到场景中进行显示或操作。

在实际应用中,你可以根据具体需求调整和扩展这些示例代码,以实现更复杂的XR设备管理和可视化功能。

参考

相关文章:

opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习

opencascade AIS_TypeFilter 前言 通过它们的类型选择交互对象。该过滤器会对本地上下文中的每个交互对象提出问题&#xff0c; 以确定它是否具有非空的所有者&#xff0c;并且如果是&#xff0c;则检查它是否是所需类型。 如果对象在每种情况下都返回 true&#xff0c;则保留…...

使用Spring AOP监控指定方法执行时间

文章目录 一、加入pom依赖二、切面类和注解三、执行方法 一、加入pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>二、切面类和注解 import java.lang.…...

最新CSS3纵向菜单的实现

纵向菜单 通过下面例子&#xff0c;你会知道把列表转换成菜单的关键技术 a中的#是URL的占位符可以点击&#xff0c;真正用途中写实际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&#xff1f; ThreadLocal&#xff0c;即线程本地变量。如果你创建了一个 ThreadLocal变量&#xff0c;那么访问这个变量的每个线程都会有这个变量的一个本地拷贝&#xff0c;多个线程操作这个变量的时候&#xff0c;实际是在操作自己本地内存里面的变量&…...

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年前端趋势:全栈或许是不容错过的选择!

近年来&#xff0c;前端开发的技术不断推陈出新&#xff0c;2024年也不例外。在这个变化迅速的领域&#xff0c;全栈开发逐渐成为一股不容忽视的趋势。无论你是经验丰富的开发者&#xff0c;还是刚刚入门的新手&#xff0c;掌握全栈技术都能让你在竞争中脱颖而出。而在这个过程…...

MySQL 实战 45 讲(01-05)

本文为笔者学习林晓斌老师《MySQL 实战 45 讲》课程的学习笔记&#xff0c;并进行了一定的知识扩充。 sql 查询语句的执行流程 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器和执行器。 连接器负责接收客…...

仓颉编程语言入门 -- Array数组详解

仓颉编程语言入门 – Array数组详解 一. 如何创建Array数组 我们可以使用 Array 类型来构造单一元素类型&#xff0c;有序序列的数据。 1.仓颉使用 Array 来表示 Array 类型。T 表示 Array 的元素类型&#xff0c;T 可以是任意类型 , 类似于泛型的概念 var arr:Array<St…...

C#初级——简单单例模式使用

单例模式 单例模式是一种常用的软件设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例&#xff0c;通过单例模式防止私有成员被多次引用&#xff0c;防止数据被随意纂改。本文使用的是线程不安全的懒汉式单例。 创建单例模式 首…...

2024.07.29 校招 实习 内推 面经

地/球&#x1f30d; &#xff1a; neituijunsir 交* 流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 美/团// 快驴、小象、优/选/事/业/部2024年校/园/招聘&#xff08;内推&#xff09; 校招 | 美团快驴、小象、优选事业部2024年校园招聘&#xff08;内推&#xff…...

速盾:爬虫攻击和cc攻击的区别是什么?

爬虫攻击和CC&#xff08;Distributed Denial of Service&#xff09;攻击是网络安全领域两种不同类型的攻击方式。尽管它们都涉及对目标网站或服务器的非法访问&#xff0c;但它们的目的、方法和影响各不相同。在接下来的文章中&#xff0c;我们将详细介绍这两种攻击方式的区别…...

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) 难度:☆ 总结:已经写好的就别动它了,多用继承

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;查漏补缺 1.开闭原则&#xff08;OC…...

微信防封指南请收好

一、新号与老号的添加限制 建议新注册的微信号主动添加好友的数量不宜过多&#xff0c;推荐每日添加不超过5个好友&#xff1b;对于老号&#xff0c;建议每日添加不超过20个好友。保持适度的添加速度&#xff0c;避免被系统判定为异常操作。 二、避免使用营销性词汇 在发送消…...

选择排序算法改进思路和算法实现

选择排序 在未排序的数组中&#xff0c;用第一个数去和后面的数比较&#xff0c;找出最小的数&#xff0c;和第一个数交换。第一个数已为已排序的数。 相当于0~7 从0~7中找到最小的数放在0 从1~7中找到最小的数放在1 从2~7中找到最小的数放在2 ...以此类推 从6~7中找到最…...

【文件解析漏洞复现】

一&#xff0e;IIS解析漏洞复现 1.IIS6.X 方式一&#xff1a;目录解析 搭建IIS环境 在网站下建立文件夹的名字为.asp/.asa 的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 访问成功被解析 方式一&#xff1a;目录解析 在IIS 6处理文件解…...

【STL】 vector的底层实现

1.vector的模拟代码完整实现&#xff08;后面会拆分开一个一个细讲&#xff09; #pragma once #include<assert.h>// 抓重点namespace bit {/*template<class T>class vector{public:typedef T* iterator;private:T* _a;size_t _size;size_t _capacity;};*/templa…...

责任链模式:解耦职责,优化请求处理

在软件设计中&#xff0c;如何有效地处理复杂的请求是一个重要的课题。 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;提供了一种解耦请求发送者和接收者的方法&#xff0c;使得多个对象都有机会处理请求&#xff0c;从而达到灵活和可扩展的设计。 什么…...

【Scene Transformer】scene transformer论文阅读笔记

文章目录 序言(Abstract)(Introduction)(Related Work)(Methods)(Scene-centric Representation for Agents and Road Graphs)(Encoding Transformer)(Predicting Probabilities for Each Futures)(Joint and Marginal Loss Formulation) (Results)(Discussion)(Questions) sce…...

ESP32在ESP-IDF环境下禁用看门狗

最近使用了一款ESP32的开发板。但在调试时发现出现许多看门狗复位事件&#xff1a; E (8296) task_wdt: Task watchdog got triggered. The following tasks/users did not reset the watchdog in time: E (8296) task_wdt: - IDLE (CPU 0) E (8296) task_wdt: Tasks curre…...

基于 uniapp html5plus API,怎么把图片保存到相册

要将图片保存到相册中&#xff0c;可以使用HTML5 API中的plus.gallery.save方法。以下是一个示例代码&#xff0c;展示如何将图片保存到手机相册&#xff1a; // 图片的URL&#xff0c;可以是本地路径或网络路径 var imageUrl path/to/your/image.jpg;// 调用plus.gallery.sa…...

3.特征工程-特征抽取、特征预处理、特征降维

文章目录 环境配置&#xff08;必看&#xff09;头文件引用1.数据集: sklearn代码运行结果 2.字典特征抽取: DictVectorizer代码运行结果稀疏矩阵 3.文本特征抽取(英文文本): CountVectorizer()代码运行结果 4.中文文本分词(中文文本特征抽取使用)代码运行结果 5.中文文本特征抽…...

RISC-V (五)上下文切换和协作式多任务

任务&#xff08;task&#xff09; 所谓的任务就是寄存器的当前值。 -smp后面的数字指的是hart的个数&#xff0c;qemu模拟器最大可以有8个核&#xff0c;此文围绕一个核来讲。 QEMU qemu-system-riscv32 QFLAG -nographic -smp 1 -machine virt -bios none 协作式多任务 …...

Cornerstone加载本地Dicom文件第二弹 - Blob篇

&#x1f340; 引言 当我们刚接触Cornerstone或拿到一组Dicom文件时&#xff0c;如果没有ImageID和后台接口&#xff0c;可能只是想简单测试Cornerstone能否加载这些Dicom文件。在这种情况下&#xff0c;可以使用本地文件加载的方法。之前我们介绍了通过node启动服务器请求文件…...

C语言中整数类型及其类型转换

1.数据的存储和排列 是的&#xff0c;在C语言中&#xff0c;整数类型通常以补码&#xff08;twos complement&#xff09;形式存储在内存中。这是因为补码表示法在处理有符号整数的加减运算上更为简便和高效。 2.有符号数和无符号数之间的转换 在C语言中&#xff0c;有符号数和…...

powerjob连接postgresql数据库(支持docker部署)

1.先去pg建一个powerjob-product库 2.首先去拉最新的包&#xff0c;然后找到server模块&#xff0c;把mysql的配置文件信息替换成pg的 spring.datasource.hikari.auto-committrue spring.datasource.remote.hibernate.properties.hibernate.dialecttech.powerjob.server.pers…...