opencascade AIS_RubberBand AIS_RotationMode源码学习

//!相机旋转类型 Camera rotation mode.
enum AIS_RotationMode
{
AIS_RotationMode_BndBoxActive, //!< default OCCT rotation
AIS_RotationMode_PickLast, //!< rotate around last picked point
AIS_RotationMode_PickCenter, //!< rotate around point at the center of window
AIS_RotationMode_CameraAt, //!< rotate around camera center
AIS_RotationMode_BndBoxScene, //!< rotate around scene center
};

enum
{
AIS_RotationMode_LOWER = 0,
AIS_RotationMode_UPPER = AIS_RotationMode_BndBoxScene,
};

AIS_RubberBand

前言

在这里插入图片描述
//! 用于绘制橡皮筋选择区域的演示。
//! 它支持矩形和多边形选择。
//! 它是在二维覆盖层上构建的。
//! 默认配置是不填充的。
//! 对于矩形选择,使用 SetRectangle() 方法。
//! 对于多边形选择,使用 AddPoint() 和 GetPoints() 方法。

方法

1

构造具有默认配置的橡皮筋:空填充和白色实线。
该对象绑定到 Graphic3d_ZLayerId_TopOSD 图层。
AIS_RubberBand();

2

构造具有空填充和定义的线条样式的橡皮筋。
theLineColor [输入] 橡皮筋线条的颜色
theType [输入] 橡皮筋线条的类型
theLineWidth [输入] 橡皮筋线条的宽度。默认值为1。
该对象绑定到 Graphic3d_ZLayerId_TopOSD 图层。
AIS_RubberBand (const Quantity_Color& theLineColor,
const Aspect_TypeOfLine theType,
const Standard_Real theLineWidth = 1.0,
const Standard_Boolean theIsPolygonClosed = Standard_True);

3

构造具有定义的填充和线条参数的橡皮筋。
theLineColor [输入] 橡皮筋线条的颜色
theType [输入] 橡皮筋线条的类型
theFillColor [输入] 橡皮筋填充的颜色
theTransparency [输入] 填充的透明度。0表示不透明填充。默认值为透明。
theLineWidth [输入] 橡皮筋线条的宽度。默认值为1。
该对象绑定到 Graphic3d_ZLayerId_TopOSD 图层。
AIS_RubberBand (const Quantity_Color& theLineColor,
const Aspect_TypeOfLine theType,
const Quantity_Color theFillColor,
const Standard_Real theTransparency = 1.0,
const Standard_Real theLineWidth = 1.0,
const Standard_Boolean theIsPolygonClosed = Standard_True);

4

AIS_RubberBand();

5

设置矩形边界。
void SetRectangle (const Standard_Integer theMinX, const Standard_Integer theMinY,
const Standard_Integer theMaxX, const Standard_Integer theMaxY);

6

将最后一个点添加到点列表中。它们用于构建橡皮筋的多边形。
void AddPoint (const Graphic3d_Vec2i& thePoint);

7

从橡皮筋多边形的点列表中删除最后一个点。
sa AddPoint(), GetPoints()
void RemoveLastPoint();

8

将最后一个点添加到点列表中。它们用于构建橡皮筋的多边形。
AddPoint (const Graphic3d_Vec2i& thePoint);

9

从橡皮筋多边形的点列表中删除最后一个点。
RemoveLastPoint();

10

返回橡皮筋多边形的点。
Points() const;

11

//! 移除橡皮筋多边形的所有点。
void ClearPoints() { myPoints.Clear(); }

12

返回颜色属性。
Standard_EXPORT Quantity_Color LineColor() const;

13

//! 设置橡皮筋显示的线条颜色。
Standard_EXPORT void SetLineColor (const Quantity_Color& theColor);

14

//! 返回橡皮筋填充的颜色。
Standard_EXPORT Quantity_Color FillColor() const;

15

//! 设置橡皮筋填充的颜色。
Standard_EXPORT void SetFillColor (const Quantity_Color& theColor);

16

//! 设置橡皮筋显示的线条宽度。
Standard_EXPORT void SetLineWidth (const Standard_Real theWidth) const;

17

//! 返回线条宽度。
Standard_EXPORT Standard_Real LineWidth() const;

18

//! 设置橡皮筋显示的线条类型。
Standard_EXPORT void SetLineType (const Aspect_TypeOfLine theType);

19

//! 返回线条类型。
Standard_EXPORT Aspect_TypeOfLine LineType() const;

20

//! 设置填充的透明度。
//! @param theValue [输入] 透明度值。1.0 表示透明背景
Standard_EXPORT void SetFillTransparency (const Standard_Real theValue) const;

21

//! 返回填充的透明度。
Standard_EXPORT Standard_Real FillTransparency() const;

22

//! 启用或禁用橡皮筋的填充。
Standard_EXPORT void SetFilling (const Standard_Boolean theIsFilling);

23

//! 启用带有定义参数的橡皮筋填充。
//! @param theColor [输入] 填充颜色
//! @param theTransparency [输入] 填充的透明度。0 表示不透明填充。
Standard_EXPORT void SetFilling (const Quantity_Color theColor, const Standard_Real theTransparency);

24

//! 返回是否启用了橡皮筋的填充。
Standard_EXPORT Standard_Boolean IsFilling() const;

25

//! 返回是否启用了橡皮筋的自动闭合。
Standard_EXPORT Standard_Boolean IsPolygonClosed() const;

26

//! 自动创建一条额外的线连接第一个和最后一个屏幕点以闭合边界折线。
Standard_EXPORT void SetPolygonClosed(Standard_Boolean theIsPolygonClosed);

protected:

27

//! 返回如果交互对象接受显示模式。
Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) const Standard_OVERRIDE
{
return theMode == 0;
}

28

//! 计算橡皮筋的显示。
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager)& thePrsMgr,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode) Standard_OVERRIDE;

29

//! 不为橡皮筋填充选择原语。
virtual void ComputeSelection (const Handle(SelectMgr_Selection)& /aSelection/,
const Standard_Integer /aMode/) Standard_OVERRIDE { };

30

//! 为橡皮筋填充填充三角形原语数组。
//! 它使用 Delaunay 三角剖分。
//! @return 如果成功填充三角形数组,则返回 true。
Standard_EXPORT Standard_Boolean fillTriangles();

示例

AIS_RubberBand 是 Open CASCADE 中用于绘制橡皮筋选择框的类。橡皮筋选择框是一种常见的图形用户界面元素,允许用户通过拖动鼠标来选择矩形或多边形区域。下面是一个使用 AIS_RubberBand 的示例代码,展示如何在 Open CASCADE 中创建和使用橡皮筋选择框。

首先,确保你的 Open CASCADE 环境已正确配置,并导入必要的头文件。

#include <AIS_RubberBand.hxx>
#include <AIS_InteractiveContext.hxx>
#include <V3d_View.hxx>
#include <Aspect_TypeOfLine.hxx>
#include <Quantity_Color.hxx>
#include <Graphic3d_Vec2i.hxx>
#include <NCollection_Sequence.hxx>// 示例代码:使用 AIS_RubberBand 创建橡皮筋选择框void CreateRubberBandSelection(const Handle(AIS_InteractiveContext)& theContext, const Handle(V3d_View)& theView)
{// 创建一个默认配置的橡皮筋选择框Handle(AIS_RubberBand) aRubberBand = new AIS_RubberBand();// 设置橡皮筋选择框的线条颜色、类型和宽度aRubberBand->SetLineColor(Quantity_Color(Quantity_NOC_WHITE));aRubberBand->SetLineType(Aspect_TOL_SOLID);aRubberBand->SetLineWidth(1.0);// 在选择框内设置一个矩形aRubberBand->SetRectangle(100, 100, 400, 300);// 添加一些点来构建多边形选择框aRubberBand->AddPoint(Graphic3d_Vec2i(200, 200));aRubberBand->AddPoint(Graphic3d_Vec2i(300, 300));aRubberBand->AddPoint(Graphic3d_Vec2i(400, 200));// 启用填充,并设置填充颜色和透明度aRubberBand->SetFilling(Standard_True);aRubberBand->SetFillColor(Quantity_Color(Quantity_NOC_RED));aRubberBand->SetFillTransparency(0.5);// 将橡皮筋选择框添加到交互上下文中theContext->Display(aRubberBand, Standard_True);theView->Redraw();
}// 示例代码:清除橡皮筋选择框
void ClearRubberBandSelection(const Handle(AIS_InteractiveContext)& theContext)
{// 获取所有显示的橡皮筋选择框对象,并将其移除Handle(AIS_RubberBand) aRubberBand;for (theContext->InitCurrent(); theContext->MoreCurrent(); theContext->NextCurrent()){Handle(AIS_InteractiveObject) anObject = theContext->Current();aRubberBand = Handle(AIS_RubberBand)::DownCast(anObject);if (!aRubberBand.IsNull()){theContext->Remove(aRubberBand, Standard_True);}}
}

在上述代码中,我们展示了如何创建一个 AIS_RubberBand 对象并对其进行配置,包括设置线条颜色、类型、宽度,以及填充颜色和透明度。我们还展示了如何在 2D 界面上添加矩形和多边形选择框的点。最后,我们将橡皮筋选择框添加到交互上下文中并进行显示。

请根据实际需要,将该代码集成到你的 Open CASCADE 应用程序中,并在合适的位置调用 CreateRubberBandSelectionClearRubberBandSelection 函数。
参考

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

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

相关文章

python之代码简化式(列表、字典生成式,递归函数,迭代器(iter)和生成器(yield)、匿名函数(lambda)的使用)(12)

文章目录 前言1、列表、字典生成式2、递归函数2.1 python中代码的递归深度&#xff08;扩展&#xff09; 3、拓展&#xff1a;迭代器和生成器3.1 迭代器&#xff08;iter&#xff09;3.2 生成器&#xff08;yield&#xff09; 4、匿名函数&#xff08;lambda&#xff09;4.1 ma…

宠物猫用空气净化器真的有用吗?值得买的猫用空气净化器牌子排名

作为一名6年资深铲屎官&#xff0c;每天铲猫砂盆的工作无疑是一项挑战。家中不仅弥漫着难以忍受的气味&#xff0c;而且家里的小孩和老人偶尔会因为过敏性鼻炎或结膜炎等问题感到不适。换毛季节尤其头疼&#xff0c;浮毛无处不在&#xff1a;沙发、外套、坐垫&#xff0c;甚至连…

Spring Boot 3 + Resilience4j 简单入门 + Redis Cache 整合

1. 项目结构 2. Maven依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</version><relativePath/> <!-- lookup parent from repository --&…

如何学习ClickHouse:糙快猛的大数据之路(技术要点概览)

这个系列文章用"粗快猛大模型问答讲故事"的创新学习方法&#xff0c;让你轻松理解复杂知识&#xff01;涵盖Hadoop、Spark、MySQL、Flink、Clickhouse、Hive、Presto等大数据所有热门技术栈&#xff0c;每篇万字长文。时间紧&#xff1f;只看开头20%就能有收获&#…

如何智能便捷、自动化地进行文件数据采集?

文件数据采集是指从各种源头和渠道收集、整理、清洗、分析和挖掘数据的过程。它是大数据应用的基础&#xff0c;为企业提供全面的决策支持和业务价值。文件数据采集对于不同行业都至关重要&#xff0c;通过有效的文件数据采集&#xff0c;企业可以更好地了解市场动态、优化服务…

数据驱动未来:构建下一代湖仓一体电商数据分析平台,引领实时商业智能革命

1.1 项目背景 本项目是一个创新的湖仓一体实时电商数据分析平台&#xff0c;旨在为电商平台提供深度的数据洞察和业务分析。技术层面&#xff0c;项目涵盖了从基础架构搭建到大数据技术组件的集成&#xff0c;采用了湖仓一体的设计理念&#xff0c;实现了数据仓库与数据湖的有…

pytorch3d的安装

在这个网址中&#xff0c;下载对应的pytorch3d安装包 https://anaconda.org/pytorch3d/pytorch3d/files下载完成后使用下面命令进行安装 conda install ./pytorch3d-0.7.7-py39_cu118_pyt201.tar.bz2

web基础及http协议、

⼀、web基本概念和常识 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服 务是动态的、可交 互的、跨平台的和图形化的。Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览 服务&#xff0c;以及各种交互式服务&#xff0c;包括聊…

芋道微服务全栈开发日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据&#xff0c;从数据库里查出来后&#xff0c;该怎么归类为对应的规格和属性值&#xff1f;如下图&#xff1a; 在商城模块&#xff0c;商品的单规格、多规格、单属性、多属性功能可以说是非常完整&#xff0c;如下图&#x…

web、http协议、apache服务、nginx服务

web基本概念和常识 概念 web&#xff1a;为用户提供的一种在互联网上浏览信息的服务&#xff0c;是动态的、可交互的、跨平台的和图形化的&#xff1b; 为用户提供各种互联网服务&#xff0c;这些服务包括浏览服务以及各种交互式服务&#xff0c;包括聊天、购物等&#xff1…

shp格式数据详解

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

MATLAB中“varargin”的作用

varargin是什么&#xff1f; 在MATLAB中&#xff0c;varargin是一个特殊的变量&#xff0c;用于接收函数输入参数中的可变数量的参数。它允许用户在调用函数时传递不确定数量的参数。 varargin的本质是一个包含了所有可变参数的cell数组。在函数内部&#xff0c;可以使用cell…

鸿蒙HarmonyOS开发:@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

文章目录 一、装饰器二、概述三、限制条件四、装饰器说明五、Toggle组件1、子组件2、接口3、ToggleType枚举4、事件 六、示例演示1、代码2、效果 一、装饰器 State装饰器&#xff1a;组件内状态Prop装饰器&#xff1a;父子单向同步Link装饰器&#xff1a;父子双向同步Provide装…

.NET周刊【7月第4期 2024-07-28】

国内文章 .NET 高性能缓冲队列实现 BufferQueue https://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDyg BufferQueue 是一个用 .NET 编写的高性能的缓冲队列实现&#xff0c;支持多线程并发操作。 项目地址&#xff1a;https://github.com/eventhorizon-cli/BufferQueue 项目…

【Python】基础学习技能提升代码样例6:日志logging

logging 模块实现了python的日志能力。本文通过几个示例展示一些重点概念与用法。 一、线程安全介绍 logging 模块的目标是使客户端不必执行任何特殊操作即可确保线程安全。 它通过使用线程锁来达成这个目标&#xff1b;用一个锁来序列化对模块共享数据的访问&#xff0c;并且…

upload-labs靶场练习

文件上传函数的常见函数&#xff1a; 在PHP中&#xff0c;‌文件上传涉及的主要函数包括move_uploaded_file(), is_uploaded_file(), get_file_extension(), 和 mkdir()。‌这些函数共同协作&#xff0c;‌使得用户可以通过HTTP POST方法上传文件&#xff0c;‌并在服务器上保存…

实战:安装ElasticSearch 和常用操作命令

概叙 科普文&#xff1a;深入理解ElasticSearch体系结构-CSDN博客 Elasticsearch各版本比较 ElasticSearch 单点安装 1 创建普通用户 #1 创建普通用户名&#xff0c;密码 [roothlink1 lyz]# useradd lyz [roothlink1 lyz]# passwd lyz#2 然后 关闭xshell 重新登录 ip 地址…

kaggle使用api下载数据集

背景 kaggle通过api并配置代理下载数据集datasets 步骤 获取api key 登录kaggle&#xff0c;点个人资料&#xff0c;获取到自己的api key 创建好的key会自动下载 将key放至家目录下的kaggle.json文件中 我这里是windows的administrator用户。 装包 我用了虚拟环境 pip …

Vite + Vue3 + TS项目配置前置路由守卫

在现代前端开发中&#xff0c;使用 Vue 3 和 TypeScript 的组合是一种流行且高效的开发方式。Vite 是一个极速的构建工具&#xff0c;可以显著提升开发体验。本文博主将指导你如何在 Vite Vue 3 TypeScript 项目中配置前置路由守卫&#xff08;Navigation Guards&#xff09;…

【YashanDB知识库】如何远程连接、使用YashanDB?

问题现象 在各个项目实施中&#xff0c;我们经常遇到客户、开发人员需要连接和使用YashanDB但不知如何操作的问题&#xff0c;本文旨在介绍远程连接、使用YashanDB的几种方式。 问题的风险及影响 无风险 问题影响的版本 历史版本~23.2 问题发生原因 无 解决方法及规避方…