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,一经查实,立即删除!

相关文章

广东省道路工程检测练习试题(单选406题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。 A.不低于75% B.不低于80% C.不低于85% D.不低于90% 答案:B 2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( ) A.1 B.2 C.3 D.4 答案:A 3.根据《城镇道路工程施工…

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;甚至连…

C++中绝对值的用法

在C中&#xff0c;std::fabs函数可以用于四则运算中&#xff0c;特别是当你需要确保参与运算的浮点数是正值时。std::fabs函数返回其参数的绝对值&#xff0c;这对于处理可能包含负数的表达式很有用。 下面是一些示例&#xff0c;展示了如何在四则运算中使用std::fabs函数&…

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 --&…

Kubernetes CRI工具集:crictl深度实践与应用

Kubernetes CRI工具集&#xff1a;crictl深度实践与应用 一、引言 在Kubernetes&#xff08;k8s&#xff09;环境中&#xff0c;crictl是一个重要的命令行工具&#xff0c;用于与容器运行时接口&#xff08;Container Runtime Interface, CRI&#xff09;兼容的容器运行时&am…

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

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

英文润色工具 Quillbot

QuillBot 是一种基于人工智能&#xff08;AI&#xff09;的写作辅助工具&#xff0c;旨在帮助用户改进他们的写作质量和效率。它提供了多种功能&#xff0c;包括但不限于改写、总结、语法检查和词汇增强。以下是对 QuillBot 软件的一些详细介绍&#xff1a; ### 主要功能 1. …

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

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

Elasticsearch(ES)版本升级

ES版本升级&#xff0c;索引不兼容&#xff0c;必须删除或重新索引它们才能升级到更高版本 1ES6升级到ES7&#xff0c;必须先升级到6.8 Elasticsearch 6.8.x ✔ 2ES7升级到ES8&#xff0c;必须先升级到7.17 Elasticsearch 7.17.x ✔ 3ES8升级到ES8无差异化升级 Elasticsearc…

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

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

【Golang 面试 - 进阶题】每日 3 题(三)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

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…

Arpg 游戏 对象实体 entity(二)

设计一个 entity class&#xff0c;用于创建和管理游戏世界中的实体对象。这个类包含了大量的函数&#xff0c;用于处理实体的各种行为和属性&#xff0c;例如创建、移动、播放动画、同步状态等。 CreateTitle 函数的作用是创建和初始化一个实体的标题显示。在游戏或模拟程序中…

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…

javascript 判断是否为数字

javascript 判断是否为数字 function isNumberTest(str) {const method1 (v) > {let exp /^[-]?\d*(\.\d*)?(e[-]?\d)?$/;// exp.test("1.9"); // true// exp.test("-.1e11"); // truereturn exp.test(v) && str ! "";};con…