当前位置: 首页 > news >正文

opencascade AIS_Trihedron源码学习 绘制三轴坐标系

opencascade AIS_Trihedron

前言

在这里插入图片描述
在这里插入图片描述
//! 创建一个可选择的三轴坐标系
//! 该三轴坐标系包括一个原点,三个轴线和三个标签。
//! 标签的默认文本为 “X”, “Y”, “Z”。
//! 可以更改原点和任意轴线的颜色,箭头和标签的颜色也可以改变。
//! 可视化呈现可能显示为两种模式:着色模式和线框模式(默认为线框模式)。
//! 有四种选择模式:
//! - AIS_TrihedronSelectionMode_EntireObject 完整选择三轴坐标系,优先级 = 1
//! - AIS_TrihedronSelectionMode_Origin 选择其原点,优先级 = 5
//! - AIS_TrihedronSelectionMode_Axes 选择其轴线,优先级 = 3
//! - AIS_TrihedronSelectionMode_MainPlanes 选择其主平面,优先级 = 2
//!
//! 警告!
//! 用于显示三轴坐标系的默认长度单位是毫米,
//! 而轴线的默认表示值为100。
//! 如果您修改了这些尺寸,必须暂时恢复 Drawer。
//! 在其中,您可以取得存储长度值的 Aspect。
//! 对于三轴坐标系,这是 Prs3d_Drawer_LineAspect。
//! 您可以在此 Aspect 内部更改数值,然后重新计算显示。

方法

1

初始化三轴坐标系实体。
Standard_EXPORT AIS_Trihedron (const Handle(Geom_Axis2Placement)& theComponent);

2

返回数据显示模式。
Prs3d_DatumMode DatumDisplayMode() const { return myTrihDispMode; }

3

设置着色或线框显示模式,相对使用三角形或线段图形组。
void SetDatumDisplayMode (Prs3d_DatumMode theMode) { myTrihDispMode = theMode; }

4

返回在 SetComponent 中设置的右手坐标系。
const Handle(Geom_Axis2Placement)& Component() const { return myComponent; }

5

构造右手坐标系 aComponent。
Standard_EXPORT void SetComponent (const Handle(Geom_Axis2Placement)& theComponent);

6

如果三轴坐标系对象具有非默认大小(每个轴线默认大小为100毫米),则返回 true。
Standard_Boolean HasOwnSize() const { return myHasOwnSize; }

7

返回三轴坐标系对象的大小;默认为100.0。
Standard_EXPORT Standard_Real Size() const;

8

设置三轴坐标系对象的大小。
Standard_EXPORT void SetSize (const Standard_Real theValue);

9

如果对象具有单一颜色,则复制绘制器的默认大小;否则,DatumAspect 变为空。
Standard_EXPORT void UnsetSize();

10

如果三轴坐标系具有自定义文本颜色,则返回 true。
Standard_Boolean HasTextColor() const { return myHasOwnTextColor; }

11

返回三轴坐标系文本颜色。
Standard_EXPORT Quantity_Color TextColor() const;

12

设置三轴坐标系轴线标签的颜色。
Standard_EXPORT void SetTextColor (const Quantity_Color& theColor);

13

设置三轴坐标系轴线标签的颜色。
Standard_EXPORT void SetTextColor (const Prs3d_DatumParts thePart,
const Quantity_Color& theColor);

14

如果三轴坐标系具有自定义箭头颜色,则返回 true。
Standard_Boolean HasArrowColor() const { return myHasOwnArrowColor; }

15

返回三轴坐标系箭头颜色。
Standard_EXPORT Quantity_Color ArrowColor() const;

16

设置三轴坐标系箭头颜色。
Standard_EXPORT void SetArrowColor (const Quantity_Color& theColor);

17

设置三轴坐标系箭头颜色。
Standard_EXPORT void SetArrowColor (const Prs3d_DatumParts thePart,
const Quantity_Color& theColor);

18

返回数据部分的颜色:原点或三轴坐标系的某些部分。
Standard_EXPORT Quantity_Color DatumPartColor (Prs3d_DatumParts thePart);

19

设置数据部分的颜色:原点或三轴坐标系的某些部分。

20

如果显示模式为着色模式,则此颜色设置为正反面的颜色。
Standard_EXPORT void SetDatumPartColor (const Prs3d_DatumParts thePart,
const Quantity_Color& theColor);

21

设置原点的颜色。
void SetOriginColor (const Quantity_Color& theColor);

22

//! 设置x轴的颜色。
void SetXAxisColor (const Quantity_Color& theColor);

23

设置y轴的颜色。
void SetYAxisColor (const Quantity_Color& theColor);

24

设置z轴的颜色。

void SetAxisColor (const Quantity_Color& theColor);

25

//! 如果要绘制箭头,则返回 true。
Standard_Boolean ToDrawArrows() const;

26

//! 设置是否在可视化中绘制箭头。
void SetDrawArrows (const Standard_Boolean theToDraw);

27

//! 返回给定类型所有者的选择优先级。
Standard_Integer SelectionPriority (Prs3d_DatumParts thePart) { return mySelectionPriority[thePart]; }

28

//! 设置给定类型所有者的选择优先级。
void SetSelectionPriority (Prs3d_DatumParts thePart,
Standard_Integer thePriority);

29

//! 返回轴线的文本。参数 thePart 应为 XAxis、YAxis 或 ZAxis。
const TCollection_ExtendedString& Label (Prs3d_DatumParts thePart) { return myLabels[thePart]; }

30

设置三轴坐标系轴线的文本标签。参数 thePart 应为 XAxis、YAxis 或 ZAxis。
void SetLabel (const Prs3d_DatumParts thePart,
const TCollection_ExtendedString& theName);

31

//! 设置此三轴坐标系对象的颜色 theColor,它改变轴线的颜色。
Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor) Standard_OVERRIDE;

32

//! 返回是否选定的显示模式 aMode 对于三轴坐标系数据有效。
virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) ;
####33
返回索引 3,选择平面 XOY、YOZ、XOZ。
Standard_Integer Signature() const { return 3; }

33

表示交互对象类型为数据。
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE { return AIS_KindOfInteractive_Datum; }

34

//! 移除颜色设置。
Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE;

35

清除属于此可选择对象的所有选定所有者(用于快速显示绘制)。
Standard_EXPORT virtual void ClearSelected() Standard_OVERRIDE;

36

绘制选定的所有者(用于快速显示绘制)。
Standard_EXPORT virtual void HilightSelected (const Handle(PrsMgr_PresentationManager)& thePM,
const SelectMgr_SequenceOfOwner& theOwners) Standard_OVERRIDE;

37

高亮显示属于此可选择对象的所有者(用于快速显示绘制)。
Standard_EXPORT virtual void HilightOwnerWithColor (const Handle(PrsMgr_PresentationManager)& thePM,
const Handle(Prs3d_Drawer)& theStyle,

使用实例

OpenCascade 中的 AIS_Trihedron 是用于绘制三轴坐标系的类,通常用于可视化工程模型中的参考坐标系。以下是一个简单的示例,展示如何创建和使用 AIS_Trihedron

  1. 包含必要的头文件

    首先,需要包含相关的 OpenCascade 头文件:

    #include <AIS_Trihedron.hxx>
    #include <Geom_Axis2Placement.hxx>
    #include <gp_Ax2.hxx>
    #include <Quantity_Color.hxx>
    #include <Prs3d_DatumMode.hxx>
    #include <Prs3d_Drawer.hxx>
    #include <AIS_Drawer.hxx>
    #include <V3d_Viewer.hxx>
    #include <AIS_InteractiveContext.hxx>
    
  2. 创建三轴坐标系

    使用 AIS_Trihedron 类创建一个三轴坐标系对象,并设置其位置和显示选项:

    // 创建一个轴线的位置
    gp_Ax2 anAxis(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)); // 以原点为中心,方向为Z轴// 创建三轴坐标系对象
    Handle(Geom_Axis2Placement) anAxisPlacement = new Geom_Axis2Placement(anAxis);
    Handle(AIS_Trihedron) aTrihedron = new AIS_Trihedron(anAxisPlacement);// 设置三轴坐标系的大小
    aTrihedron->SetSize(200.0); // 设置大小为200mm// 设置三轴坐标系的显示模式为着色模式
    aTrihedron->SetDatumDisplayMode(Prs3d_DM_Shaded);// 设置轴线颜色
    Quantity_Color aColor(Quantity_NOC_RED); // 设置为红色
    aTrihedron->SetColor(aColor);
    
  3. 将三轴坐标系添加到视图中

    将创建的三轴坐标系添加到 OpenCascade 的视图中,例如 V3d_ViewerAIS_InteractiveContext

    // 创建一个视图 viewer
    Handle(V3d_Viewer) aViewer = new V3d_Viewer();// 创建交互上下文 context
    Handle(AIS_InteractiveContext) aContext = new AIS_InteractiveContext(aViewer);// 将三轴坐标系添加到交互上下文中
    aContext->Display(aTrihedron, Standard_True);
    
  4. 处理交互操作

    可以通过 AIS_InteractiveContext 处理用户交互操作,例如选择、高亮等:

    // 选择对象
    aContext->SetSelected(aTrihedron);// 高亮显示选定的对象
    aTrihedron->HilightSelected(aContext->MainPrsMgr()->PresentationManager(), aContext->SelectedOwners());
    
  5. 清除资源

    在程序结束时,记得清理资源:

    // 清除所有的显示对象
    aContext->EraseAll();
    

在这里插入图片描述
在这里插入图片描述

这些步骤展示了如何使用 AIS_Trihedron 类在 OpenCascade 中创建、显示和操作三轴坐标系对象。

参考

相关文章:

opencascade AIS_Trihedron源码学习 绘制三轴坐标系

opencascade AIS_Trihedron 前言 //! 创建一个可选择的三轴坐标系 //! 该三轴坐标系包括一个原点&#xff0c;三个轴线和三个标签。 //! 标签的默认文本为 “X”, “Y”, “Z”。 //! 可以更改原点和任意轴线的颜色&#xff0c;箭头和标签的颜色也可以改变。 //! 可视化呈现可…...

【C++】C++应用案例-通讯录管理系统

目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四…...

使用Python自动批量提取增值税发票信息并导出为Excel文件

要批量提取增值税发票的关键信息并将其导出为 Excel 文件&#xff0c;可以使用 Python 脚本结合 pdfplumber&#xff08;用于解析 PDF 内容&#xff09;、pandas&#xff08;用于处理数据并导出 Excel&#xff09;等库来实现。以下是实现这一目标的详细步骤。 1. 环境设置 首…...

vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法

在使用vitis(2021.1) 过程中&#xff0c;有一个非常方便实用的功能&#xff0c;就是在函数或变量等源代码上通过右键菜单或快捷键F3、F4、CtrlAltH&#xff0c;也可以按住Ctrl键然后鼠标停留在函数名或变量名上&#xff0c;点击出现的链接&#xff0c;可以跳转到函数或变量的定…...

最佳HR软件指南:11款高效管理工具

文章介绍了11款人力资源管理工具&#xff1a;Moka、友人才、北森HRSaaS、同鑫eHR、i人事、红海eHR、BambooHR、Skuad、Hibob、OrangeHRM、Verint。 在选择人力资源管理软件时&#xff0c;选错不仅浪费时间和金钱&#xff0c;还会影响团队的工作效率和员工满意度。本文总结了11款…...

家长为孩子出国留学择校的四个步骤

如何为孩子选择最好的学校&#xff1f;无论您是选择公立或私立学校还是在家上学&#xff0c;无论您是否支付学费&#xff0c;都必须仔细规划。在为孩子选择学校的过程中&#xff0c;以下部分有供您考虑的问题。 写下对你来说最重要的五件事 在考虑选择学校时&#xff0c;您可…...

数据挖掘可以挖掘什么类型的模式?

一、挖掘频繁模式、关联和相关性 频繁模式&#xff08;frequent pettern&#xff09;是在数据中频繁出现的模式。 频繁项集一般是指频繁的在事务数据集中一起出现的商品的集合。 频繁出现的子序列&#xff0c;如顾客倾向于先买相机&#xff0c;再买内存卡这样的模式就是一个…...

JAVA中的隐式参数this

在Java中&#xff0c;this 关键字是一个非常重要的隐式参数&#xff0c;它代表当前对象的引用。通过 this&#xff0c;你可以访问类中的字段&#xff08;属性&#xff09;、方法以及构造函数中的参数&#xff08;当参数名与字段名相同时&#xff0c;用于区分&#xff09;。虽然…...

ThreadLocal 使用和详解避坑

在多线程编程中&#xff0c;每个线程都有自己的线程栈和线程本地存储。线程栈用于存储方法调用的信息&#xff0c;而线程本地存储则是每个线程私有的存储空间&#xff0c;用于存储线程的局部变量。ThreadLocal类提供了一种简单的方式来实现线程本地存储&#xff0c;它允许将线程…...

Python中使用类方法的返回值在其他方法中继续调用,return self进行链式调用

文章目录 return self进行链式调用继续思考&#xff0c;以下内容可以不看如果self中没有初始化valueself中定义其他变量&#xff0c;调用类方法外的函数 return self进行链式调用 在Python中&#xff0c;可以使用类方法的返回值在其他方法中继续调用。这通常通过返回类实例&am…...

基于IOT架构的数据采集监控平台!

LP-SCADA数据采集监控平台是蓝鹏测控推出的一款聚焦于工业领域的自动化数据采集监控系统&#xff0c; 助力数字工厂建设的统一监控平台。 为企业提供从下到上的完整的生产信息采集与集成服务&#xff0c;从而为企业综合自动化、工厂数字化及完整的"管控一体化”的解决方案…...

初见scikit-learn之基础教程

初见scikit-learn之基础教程 scikit-learn 基础教程 1. scikit-learn 简介1.1 什么是 scikit-learn&#xff1f;1.2 scikit-learn 的主要功能 2. 安装 scikit-learn2.1 安装方法2.2 验证安装 3. scikit-learn 基本使用3.1 数据加载与预处理3.1.1 加载数据集3.1.2 数据拆分3.1.3…...

基于STM32的嵌入式深度学习系统教程

目录 引言环境准备嵌入式深度学习系统基础代码实现&#xff1a;实现嵌入式深度学习系统 数据采集与预处理深度学习模型训练与优化模型部署与推理实时数据处理与反馈应用场景&#xff1a;智能物联网设备常见问题与解决方案收尾与总结 引言 随着深度学习在各种应用中的广泛采用…...

hive udf去掉map中的一个或者多个key

实现一个hive udf,可以将Map中的某一个或者多个key去掉,这里要继承GenericUDF 这个抽象类,然后Override evaluate这个函数即可,可以把执行这个udf前初始化的一些内容放在initialize方法内,比如参数的判断,函数的返回值类型等等。 代码写好之后,可以用如下方法创建这个函…...

模型量化技术综述:揭示大型语言模型压缩的前沿技术

大型语言模型&#xff08;LLMs&#xff09;通常因为体积过大而无法在消费级硬件上运行。这些模型可能包含数十亿个参数&#xff0c;通常需要配备大量显存的GPU来加速推理过程。 因此越来越多的研究致力于通过改进训练、使用适配器等方法来缩小这些模型的体积。在这一领域中&am…...

一文掌握Prompt:万能框架+优化技巧+常用指标

&#x1f449;目录 1 写在前面 2 Prompt 万能框架 3 框架的细化 4 在框架上增加更多信息&#xff08;RAG&#xff09; 5 让大模型更好的思考&#xff08;CoT&#xff09; 6 附加技巧 7 优化方式及常用指标 8 写在最后 随着大模型在2023年横空出世&#xff0c;“Prompt 工程” 应…...

Vue 常用组件间通信方式

Vue 常用组件间通信方式 1. 父子组件通信 1.1 Props 父组件通过 props 向子组件传递数据&#xff0c;子组件通过 props 接收数据。 <!-- ParentComponent.vue --> <template><ChildComponent :message"parentMessage"></ChildComponent>…...

NineData云原生智能数据管理平台新功能发布|2024年7月版

本月发布 12 项更新&#xff0c;其中性能优化 3 项、功能优化 8 项、安全性发布 1 项。 1. 性能优化 数据复制 - SQL Server 增量性能优化 调整读取和写入方式&#xff0c;让 SQL Server 增量复制的性能轻松达到 5000 RPS 以上。 数据复制 - Doris|SelectDB|StarRocks 性能优…...

验收测试:确保软件符合业务需求和合同要求

目录 前言1. 验收测试的概念1.1 用户验收测试&#xff08;UAT&#xff09;1.2 操作验收测试&#xff08;OAT&#xff09; 2. 验收测试的主要作用2.1 确认业务需求的满足2.2 验证合同要求的实现2.3 提升用户信心 3. 验收测试在整个测试中的地位3.1 测试的最后一道关卡3.2 用户与…...

Qt | QChartView+QDateTimeAxis(日期和时间数据图表)+QPieSeries(饼图)

点击上方"蓝字"关注我们 01、QDateTimeAxis QDateTimeAxis 是 Qt 中用于图表的轴类,它专门用于处理日期和时间数据。这个类允许你在图表上显示和解释与日期和时间相关的数据点。例如,在 Qt 的图表库中,你可以使用 QDateTimeAxis 来创建一个时间序列图表,展示股票…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...