opencascade 快速显示AIS_ConnectedInteractive源码学习
AIS_ConcentricRelation
typedef PrsDim_ConcentricRelation AIS_ConcentricRelation
AIS_ConnectedInteractive

简介
创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象,而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对象推导而来的。连接的交互对象与其源对象之间的关系通常是几何变换关系。AIS_ConnectedInteractive 类支持任何交互对象的选择模式 0,并且如果其参考对象基于 AIS_Shape,则支持所有标准模式。子类可以重新定义 ComputeSelection()。此外,如果其参考对象基于 AIS_Shape,则连接的交互对象还将处理 HLR(隐藏线去除)。
方法介绍
AIS_ConnectedInteractive()
AIS_ConnectedInteractive::AIS_ConnectedInteractive(const PrsMgr_TypeOfPresentation3d aTypeOfPresentation3d = PrsMgr_TOP_AllView)
断开先前的视图连接并将高亮模式设置为0。这会高亮显示线框表示aTypeOfPresentation3d。Top_AllView禁用隐藏线去除。
AcceptDisplayMode()
virtual Standard_Boolean AIS_ConnectedInteractive::AcceptDisplayMode(const Standard_Integer theMode) const inline override virtual
如果参考表示接受指定的显示模式,则返回true。
重实现自PrsMgr_PresentableObject。
AcceptShapeDecomposition()
virtual Standard_Boolean AIS_ConnectedInteractive::AcceptShapeDecomposition() const inline override virtual
通知图形上下文交互对象可以分解为子形状以进行动态选择。
重实现自SelectMgr_SelectableObject。
Compute()
virtual void AIS_ConnectedInteractive::Compute(const Handle<PrsMgr_PresentationManager>& thePrsMgr, const Handle<Prs3d_Presentation>& theprs, const Standard_Integer theMode) override protected virtual
计算视图aPresentation及其更新。后者由aPresentationManager管理。显示模式aMode默认为0。当实例连接到另一个InteractiveObject时,该方法是重新定义的虚方法;此时,该方法不会计算任何内容,只是使用最后一个对象的表示,并进行存储的变换(如果有)。
实现自PrsMgr_PresentableObject。
computeHLR()
virtual void AIS_ConnectedInteractive::computeHLR(const Handle<Graphic3d_Camera>& theProjector, const Handle<TopLoc_Datum3D>& theTrsf, const Handle<Prs3d_Presentation>& thePrs) override protected virtual
根据视点计算表示。
重实现自PrsMgr_PresentableObject。
ComputeSelection()
virtual void AIS_ConnectedInteractive::ComputeSelection(const Handle<SelectMgr_Selection>& theSelection, const Standard_Integer theMode) override protected virtual
通过从myReference选择中复制生成敏感实体,为这些实体创建并设置一个实体拥有者,并将它们添加到theSelection中。
实现自SelectMgr_SelectableObject。
computeSubShapeSelection()
void AIS_ConnectedInteractive::computeSubShapeSelection(const Handle<SelectMgr_Selection>& theSelection, const Standard_Integer theMode) protected
通过从myReference子形状选择中复制生成敏感实体,为这些实体创建并设置一个实体拥有者,并将它们添加到theSelection中。
Connect() [1/3]
void AIS_ConnectedInteractive::Connect(const Handle<AIS_InteractiveObject>& theAnotherObj) inline
建立连接交互对象、anotherIobj及其参考之间的连接。
Connect() [2/3]
void AIS_ConnectedInteractive::Connect(const Handle<AIS_InteractiveObject>& theAnotherObj, const gp_Trsf& theLocation) inline
建立连接交互对象、anotherIobj及其参考之间的连接。将实例定位在aLocation中。
Connect() [3/3]
void AIS_ConnectedInteractive::Connect(const Handle<AIS_InteractiveObject>& theAnotherObj, const Handle<TopLoc_Datum3D>& theLocation) inline
建立连接交互对象、anotherIobj及其参考之间的连接。将实例定位在aLocation中。
connect()
void AIS_ConnectedInteractive::connect(const Handle<AIS_InteractiveObject>& theAnotherObj, const Handle<TopLoc_Datum3D>& theLocation) protected
ConnectedTo()
const Handle<AIS_InteractiveObject>& AIS_ConnectedInteractive::ConnectedTo() const inline
返回与参考交互对象的连接。
Disconnect()
void AIS_ConnectedInteractive::Disconnect()
清除与源参考的连接。表示将不再显示。警告:必须在删除表示之前完成。
HasConnection()
Standard_Boolean AIS_ConnectedInteractive::HasConnection() const inline
如果表示与其源参考之间建立了连接,则返回true。
Signature()
virtual Standard_Integer AIS_ConnectedInteractive::Signature() const inline override virtual
返回0。
重实现自AIS_InteractiveObject。
Type()
virtual AIS_KindOfInteractive AIS_ConnectedInteractive::Type() const inline override virtual
返回KOI_Object。
重实现自AIS_InteractiveObject。
updateShape()
void AIS_ConnectedInteractive::updateShape(const Standard_Boolean WithLocation = Standard_True)
用法示例
#include <AIS_ConnectedInteractive.hxx>
#include <AIS_InteractiveContext.hxx>
#include <AIS_Shape.hxx>
#include <TopoDS_Shape.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <V3d_View.hxx>
#include <Graphic3d_GraphicDriver.hxx>
#include <OpenGl_GraphicDriver.hxx>
#include <Aspect_DisplayConnection.hxx>int main()
{// 创建 OpenGl_GraphicDriverHandle(Graphic3d_GraphicDriver) aGraphicDriver = new OpenGl_GraphicDriver();// 创建视窗Handle(Aspect_DisplayConnection) aDispConnection = new Aspect_DisplayConnection();Handle(V3d_View) aView = new V3d_View(aGraphicDriver, "My View", aDispConnection);// 创建一个AIS_InteractiveContextHandle(AIS_InteractiveContext) context = new AIS_InteractiveContext(aGraphicDriver);// 创建一个盒子TopoDS_Shape boxShape = BRepPrimAPI_MakeBox(10, 20, 30).Shape();Handle(AIS_Shape) box = new AIS_Shape(boxShape);// 将盒子添加到AIS_InteractiveContext中context->Display(box);// 创建一个AIS_ConnectedInteractive对象Handle(AIS_ConnectedInteractive) connectedInteractive = new AIS_ConnectedInteractive();// 连接AIS_ConnectedInteractive对象与盒子connectedInteractive->Connect(box);// 将AIS_ConnectedInteractive对象添加到AIS_InteractiveContext中context->Display(connectedInteractive);// 显示视图aView->SetWindow(100, 100, 800, 600);aView->SetBackgroundColor(Quantity_NOC_BLACK);aView->MustBeResized();aView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_GOLD, 0.08, V3d_ZBUFFER);// 主事件循环aView->Redraw();aView->Redraw();return 0;
}
在这个示例中,我们首先创建了一个 OpenGl_GraphicDriver 并设置了视窗。然后创建了一个 AIS_InteractiveContext,并在其中创建了一个盒子对象 box,并将其添加到 AIS_InteractiveContext 中进行显示。接着,创建了一个 AIS_ConnectedInteractive 对象 connectedInteractive,并通过 Connect() 方法将其连接到盒子对象 box 上,最后将 connectedInteractive 对象添加到 AIS_InteractiveContext 中进行显示。
相关文章:
opencascade 快速显示AIS_ConnectedInteractive源码学习
AIS_ConcentricRelation typedef PrsDim_ConcentricRelation AIS_ConcentricRelation AIS_ConnectedInteractive 简介 创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象,而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对…...
CentOS系统上安装单机版Redis教程
一、前言 1.1 为什么选择Redis? Redis不仅支持丰富的数据类型(如字符串、哈希、列表、集合、有序集合等),还具有高性能、持久化、发布订阅、事务和Lua脚本等特点。这些优势使其成为分布式系统和高并发应用中的首选。 1.2 为什么…...
纯Java实现Google地图的KMZ和KML文件的解析
目录 前言 一、关于KMZ和KML 1、KMZ是什么 2、KML是什么 二、Java解析实例 1、POM.xml引用 2、KML 基类定义 3、空间对象的定义 4、Kml解析工具类 三、KML文件的解析 1、KML解析测试 2、KMZ解析测试 四、总结 前言 今天是六.一儿童节,在这里祝各位大朋友…...
k8s自定义资源你会创建吗
创建自定义资源定义 CustomResourceDefinition 当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的,也可以是集群作用域的…...
CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例
目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例:创建一堆圆柱曲面第一步:录制宏第二步:代码精简第三步:for循环…...
c++字符串相关接口
c字符串相关接口 1.str2wstr(str转换wstr)2.wstr2str(str转换wstr)3.Utf8ToAsi(Utf8转换ANSI)4.AsiToUtf8(ANSI转换Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(获取cStart cEnd之间的字符串)7.Char2Int(char转int)8.Str2Bin(字符串转换…...
Maven打包错误:无效的源发行版:17
1. 报错问题 在用maven进行打包时(clean & install),报如下错误: 一开始让我很摸不着头脑,我确定我的pom.xml,还有IDEA中的Project Settings是正确的。 2. 排查 尽管确定,但还是一个个排…...
【环境栏Composer】Composer常见问题(持续更新)
1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…...
塑造更智慧的AI:策略与路径探索
提升数据质量: 数据清洗:去除数据中的异常值、缺失值、噪声等干扰因素,确保数据的准确性和一致性。数据标注:为数据集提供准确的标签,以便进行有监督学习。标注的质量直接影响模型的性能。数据增强:通过图像…...
软设之快速排序
快速排序是冒泡排序的改进算法 它采用的是分治法,基本思想是把原问题分解为若干规模更小但结构与原问题相似的子问题,通过递归解决这些子问题,然后将这些子问题的解组合成原问题的解。 它的步骤是 1.在待排序的n个记录中任取一个记录&…...
从零学算法2965
2965. 找出缺失和重复的数字 给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个…...
【Mac版】Java生成二维码
软件版本 IntelliJ IDEA:2023.2 JDK:17 Tomcat:10.1.11 Maven:3.9.3 技术栈 servlet谷歌的:zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目:qrcode qrcode开源项目的内部是基于z…...
ROS2自定义服务接口
ROS2自定义服务接口 在src/village_interface 下构建srv文件夹 src/village_interface/srv 下新建一个BorrowMoney.srv 遵循大小写编程规范 # 客户端请求 string name uint32 money # 中间这三个横杠很重要 不能删掉 --- # 服务端响应 bool success uint32 money接口编译 修改…...
linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除
linux服务器长期使用宝塔自带计划任务,计划任务执行记录占用服务器空间过大,导致服务器根目录爆满,需要长期排查并删除 /www/server/cron 占用空间过大问题处理 /www/server/cron是什么内容?/www/server/cron是否可以删除…...
C++青少年简明教程:break语句、continue语句
C青少年简明教程:break语句、continue语句 break语句 只能用在switch语句和循环语句(for循环、while循环和do-while循环)中。作用:跳出switch语句或提前终止循环。 break语句的基本语法如下: break; break语句的示例…...
MySQL实战行转列(或称为PIVOT)实战sales的表记录了不同产品在不同月份的销售情况,进行输出
有一个sales的表,它记录了不同产品在不同月份的销售情况: productJanuaryFebruaryMarchProduct AJanuary10Product AFebruary20Product BJanuary5Product BFebruary15Product CJanuary8Product CFebruary12 客户需求展示为如下的样子: pro…...
牛客NC164 最长上升子序列(二)【困难 贪心+二分 Java/Go/PHP/C++】
题目 题目链接: https://www.nowcoder.com/practice/4af96fa010c44638a7e112abf65f7237 思路 贪心二分 所谓贪心,就是往死里贪,所以对于最大上升子序列,结尾元素越小,越有利于后面接上其他的数,也就可能变…...
电子烟开发【恒压、恒有效算法】
恒压算法 pwm是通过软件模拟的 pwm满值运行是250全占空比 #define D_TARGET_AVERAGE_VOLTAGE 3500 //R_ADC1_Vout :发热丝两端AD值 //R_ADC_FVR :电池电压AD值 //FVR_VOLTAGE :电池AD参考电压 满电值AD //R_Smk1Duty :最后…...
基于Open3D的点云处理22-非阻塞可视化/动态可视化
官网测试用例:examples/python/visualization/non_blocking_visualization.py 非阻塞可视化,即实时更新点云数据; 如下,动态可视化ICP的匹配过程: import open3d as o3d import numpy as npif __name__ == "__main__":o3d.utility.set_verbosity_level(o3d.ut…...
C++面试题其一
C和C的区别 C和C都是广泛使用的编程语言,但它们有显著的区别: 语言范式: C:是一种过程化编程语言,强调过程和函数的使用。C:是一种多范式编程语言,支持面向对象编程、泛型编程和过程化编程。 …...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
