首页 > 编程语言 >opencascade AIS_RubberBand AIS_RotationMode源码学习

opencascade AIS_RubberBand AIS_RotationMode源码学习

时间:2024-07-30 09:27:03浏览次数:14  
标签:const 填充 RubberBand AIS 橡皮筋 源码 EXPORT Standard

//!相机旋转类型 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 函数。
参考

标签:const,填充,RubberBand,AIS,橡皮筋,源码,EXPORT,Standard
From: https://blog.csdn.net/weixin_45751713/article/details/140782478

相关文章

  • springboot校园失物招领系统-计算机毕业设计源码17082
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 相关技术介绍2.1B/S结构2.2SpringBoot框架2.3MySQL数据库3系统分析3.1可行性分析3.2系统流程分析3.2.1数据新增流程3.2.2 数据删除流程3.3 系统功能分析3.3.1......
  • 基于SpringBoot+Vue的宠物医院管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue的高校实验室教学管理系统的设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示论文参考具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的竞赛报名系统的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Javaweb项目|停车场微信小程序的设计与实现+ssm【源码+论文+PPT+部署视频】
    我们提供多元化的技术项目服务,涵盖Java、PHP、Python等编程语言,以及前端开发、人工智能、大数据、单片机开发、ASP.NET、物联网等领域。我们还提供简历模板、面试题库和学习资料,帮助用户提升技术能力和就业竞争力。我们的服务内容包括:免费功能设计、任务书和开题报告撰写、......
  • Android 8.0 源码分析 (四) Activity 启动
    链接:https://juejin.cn/post/6844903983442558989前言我们熟知一般Android工程师都是在应用层上���发,不会涉及系统源码,但是如果你想往底层发展,或者深入插件化、Framework系统层等开发工作,如果不了解Android源码可是不行的,那么接下来我基于自己的理解跟学习来记录跟Android......
  • Android 8.0 源码分析 (二) Launcher 启动
    链接https://juejin.cn/post/6844903981504790541前言我们熟知一般Android工程师都是在应用层上开发,不会涉及系统源码,但是如果你想往底层发展,或者深入插件化、Framework系统层等开发工作,如果不了解Android源码可是不行的,那么接下来我基于自己的理解跟学习来记录跟Androi......
  • unity游戏源码和配套教程:三维的美好场景,完全免费和开源,教程完整详细,适合初学者入门
    源码(含配套教程)在夸克网盘(完全免费,完全开源,完整详细):夸克网盘分享夸克网盘是夸克推出的一款云服务产品,功能包括云存储、高清看剧、文件在线解压、PDF一键转换等。通过夸克网盘可随时随地管理和使用照片、文档、手机资料,目前支持Android、iOS、PC、iPad。https://pan.quark.cn/s/......
  • Java计算机毕业设计旅游购票系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,游客对于旅游体验的需求日益多样化与便捷化。传统的购票方式,如现场排队购票,不仅耗时耗力,还常常因票源紧张而影响游客的行程安排......
  • Java计算机毕业设计旅游网站设计(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化与数字化浪潮的推动下,旅游业迎来了前所未有的发展机遇。随着人们生活水平的提高和休闲方式的多样化,旅游需求日益增长,对旅游信息的获取与预订......