当前位置: 首页 > 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 来创建一个时间序列图表,展示股票…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...