opencascade 快速显示AIS_ConnectedInteractive源码学习

news2024/10/5 0:47:39

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_GraphicDriver
    Handle(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_InteractiveContext
    Handle(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 中进行显示。

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

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

相关文章

CUDA_VISIBLE_DEVICES‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

问题&#xff1a; 命令行出现CUDA_VISIBLE_DEVICES0 python trainer.py这种命令 这是Linux可以的&#xff0c;但是Windows不行。 解决方案&#xff1a; 这条命令的含义是指定某个GPU来运行程序&#xff0c;我们可以在程序开头添加指定GPU的代码&#xff0c;效果是一样的&…

SQL高级知识:开窗函数

点击关注公众号&#xff0c;SQL干货及时获取 后台回复&#xff1a;1024&#xff0c;获取海量学习资源 SQL刷题专栏 SQL145题系列 开窗函数的定义 开窗函数用于为行定义一个窗口&#xff0c;它对一组值进行操作&#xff0c;不需要使用GROUP BY子句对数据进行分组&#xff0c;能够…

重学java 49 List接口

但逢良辰&#xff0c;顺颂时宜 —— 24.5.28 一、List接口 1.概述: 是collection接口的子接口 2.常见的实现类: ArrayList LinkedList Vector 二、List集合下的实现类 1.ArrayList集合的使用及源码分析 1.概述 ArrayList是List接口的实现类 2.特点 a.元素有序 —> 按照什么顺…

【Flutter】显式动画

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月29日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

ORA-12514&#xff1a;TNS&#xff1a;监听程序当前无法识别连接描述符中请求的服务 问题描述&#xff1a; 解决方案&#xff1a; 1、检查oracle的监听服务是否运行正常 1)点击键盘的winr&#xff0c;输入services.msc&#xff0c;点击确认/回车键&#xff1b; 2&#xff09;查…

2023年信息素养大赛小学组C++智能算法复赛真题

今天给大家分享2023年全国青少年信息素养大赛小学组C智能算法挑战赛复赛里面的一套真题&#xff0c;希望有助于大家了解复赛的难度及备考。 其他真题下载&#xff1a;网盘-真题-信息素养大赛

PyTorch安装与配置

前言 参考文档&#xff1a;https://github.com/TingsongYu/PyTorch-Tutorial-2nd 环境配置之Anaconda 解释器——python.exe&#xff0c;是人类与CPU之间的桥梁&#xff0c;需要配置系统环境变量 Anaconda&#xff1a;集成环境&#xff0c;包管理器 Conda 安装 Anaconda&am…

12.2 通道-阻塞与流程控制、通道型函数、退出通道

阻塞与流程控制 通常在并发程序中要尽力避免阻塞式操作&#xff0c;但有时又需要让代码暂时处于阻塞状态&#xff0c;以等待某种条件、信号或数据&#xff0c;然后再继续运行。 对于无缓冲通道&#xff0c;试图从无人写入的通道中读取&#xff0c;或者向无人读取的通道中写入…

学习笔记——数据通信基础——数据通信网络(拓扑结构)

网络拓扑 网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。 1、网络拓扑形态 星型网络∶所有节点通过一个中心节点连接在一起。 优点∶容易在网络中增加新的节点。通信数据必须经过中心节点…

学习Uni-app开发小程序Day21

学习了评分组件、自定义导航栏 评分组件uni-rate 这是需要达到的效果图&#xff0c;这里先分析下效果图&#xff0c; 1、图片是从布局中间弹出的&#xff0c;那这里就要用到uni-popup &#xff0c;设置type从中间弹出 2、这个弹出的顶部和上一张的顶部布局是一样的&#xff0c…

C# 反射GetProperties和GetFields的坑

有时候使用反射&#xff0c;获取类的所有字段和所有属性&#xff0c;一般情况下是按照我们写的先后顺序返回的。 但是我今天碰到了一次不是按照顺序返回的&#xff01;&#xff01;&#xff01; 翻看文档&#xff1a; GetProperties&#xff1a; https://learn.microsoft.com/…

【C++】从零开始构建红黑树 —— 节点设计,插入函数的处理 ,旋转的设计

送给大家一句话&#xff1a; 日子没劲&#xff0c;就过得特别慢&#xff0c;但凡有那么一点劲&#xff0c;就哗哗的跟瀑布似的拦不住。 – 巫哲 《撒野》 &#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b; ⛰️⛰️…

WordPress建网站公司 建易WordPress建站

建易WordPress建网站公司是一家专业从事WordPress网站建设、网站维护、网站托管、运营推广和搜索引擎优化(SEO)等服务的公司。建易WordPress建网站公司提供多种服务&#xff0c;包括模板建站和定制网站&#xff0c;并且明码标价&#xff0c;价格透明&#xff0c;竭诚为全国各地…

常见5大开发进度盲点问题及解决方案

在软件开发项目中&#xff0c;识别并解决常见的进度管理盲点问题&#xff0c;对于确保项目按时、按预算、高质量完成至关重要。它直接关系到项目能否顺利进行&#xff0c;忽视任何一个问题&#xff0c;都可能导致项目延期、成本超支、质量下降&#xff0c;甚至项目失败。 因此&…

G60-M60F-ZQ手动抓取快速接头,专用于吊装设备的重物快速抓取

客户需求概述&#xff1a; 客户需要将重达将近400公斤的产品从一个工作台移动至另一个工作台&#xff0c;目前的方法是通过人工将吊环的螺纹与产品的螺纹相互拧紧&#xff0c;然后利用装备吊起移动&#xff0c;但这种方式效率低下&#xff0c;且因为工人的操作有时难以达到理想…

CHIMA专访美创高级总监丁斐:为医疗数据安全构筑体系化防御新机制

5月17-19日&#xff0c;中国医院信息网络大会&#xff08;CHIMA 2024&#xff09;在南京隆重召开。作为结识多年的老友&#xff0c;美创科技再携以数据为中心的全系列安全业务、新一代数字化安全平台、医疗行业解决方案精彩亮相。 会议期间&#xff0c;CHIMA专访美创科技&…

Linux之sshpass命令

介绍 sshpass是一个工具&#xff0c;用于通过SSH连接到远程服务器时自动输入密码。它允许您在命令行中指定密码&#xff0c;以便在建立SSH连接时自动进行身份验证。 安装 # 以centos为例 yum install sshpass -y 使用方法 sshpass [-f filename | -d num | -p password | …

精酿啤酒:品质与口感在啤酒品牌形象建设中的作用

啤酒品牌形象建设是提升市场竞争力的关键&#xff0c;而品质与口感在其中扮演着重要的角色。对于Fendi club啤酒而言&#xff0c;其卓着的品质和与众不同的口感在品牌形象建设中发挥了积极的作用。 品质是啤酒品牌形象的核心要素。消费者对啤酒品质的要求越来越高&#xff0c;品…

新书推荐:7.5 goto、break、continue语句

本节必须掌握的知识点&#xff1a; 示例二十六 代码分析 汇编解析 示例二十七 代码分析 汇编解析 7.5.1 示例二十六 ■goto语句&#xff1a;无条件转移语句。 语法格式&#xff1a; goto label; label : 代码; ●语法解析&#xff1a; 执行到goto语句时&#xff0c;则无…

【PB案例学习笔记】-10 进度条使用

写在前面 这是PB案例学习笔记系列文章的第10篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…