OCCT 之 TDF_Attribute 以及子类

一.概述

TDF_LabelOCAF中核心数据结构TDF_Attribute结合使用,实现对模型的各种操作。

以下摘自OCCT7.7.0官方文档

A class each application has to implement. It is used to contain the application data. This abstract class, alongwith Label, is one of the cornerstones of Model Editor. The groundwork is to define the root of information. This information is to be attached to a Label, and could be of any of the following types:

  • a feature
  • a constraint
  • a comment

通过TDF_Attribute派生类,我们可以实现对TDF_Label附加OCCT支持的且自己需要的任何模型信息,也可以从TDF_Label 获取对应的信息做其它处理。具体使用可以参考FreeCad,下图可以作为字典查询使用,也对TDF_Label 整体有一个认识

二.TDF_Attribute类图

三.简单的测试案例代码

//创建Doc数据TopoDS_Shape BoxOne = BRepPrimAPI_MakeBox(gp_Pnt(0.0, 0.0, 0.0), 30.0, 40.0, 50.0).Shape();TopoDS_Shape BoxTwo = BRepPrimAPI_MakeBox(gp_Pnt(100.0, 150.0, 150.0), 30.0, 40.0, 50.0).Shape();TopoDS_Shape BoxThree = BRepPrimAPI_MakeBox(gp_Pnt(300.0, 350.0, 350.0), 30.0, 40.0, 50.0).Shape();//顶层topo添加TDF_Label labelTempOne = m_shapeTool->AddShape(BoxOne);TDF_Label labelTempTwo = m_shapeTool->AddShape(BoxTwo);TDF_Label labelTempThree = m_shapeTool->NewShape();m_shapeTool->SetShape(labelTempThree, BoxThree);TDataStd_Name::Set(labelTempOne, TCollection_ExtendedString("BoxOne", true));TDataStd_Real::Set(labelTempOne, 0.01);TDataStd_Name::Set(labelTempTwo, TCollection_ExtendedString("BoxTwo", true));TDataStd_Real::Set(labelTempTwo, 0.02);TDataStd_Name::Set(labelTempThree, TCollection_ExtendedString("BoxThree", true));TDataStd_Real::Set(labelTempThree, 0.03);SetTextureToModel(labelTempOne, "D:\\11111.png");m_colorTool->SetColor(labelTempOne, Quantity_NOC_WHITE, XCAFDoc_ColorSurf);m_colorTool->SetColor(labelTempTwo, Quantity_NOC_BLUE3, XCAFDoc_ColorSurf);m_colorTool->SetColor(labelTempThree, Quantity_NOC_GREEN3, XCAFDoc_ColorSurf);TDF_LabelSequence FreeLabels;TDF_LabelSequence Labels;m_shapeTool->GetFreeShapes(FreeLabels);for (TDF_LabelSequence::Iterator aRootIter(FreeLabels); aRootIter.More(); aRootIter.Next()){const TDF_Label& aRootLabel = aRootIter.Value();// 读取标签属性TCollection_AsciiString strT;if (aRootLabel.IsAttribute(TDataStd_Name::GetID())){Handle(TDataStd_Name) nameAttr;aRootLabel.FindAttribute(TDataStd_Name::GetID(), nameAttr);if (!nameAttr.IsNull()){strT = nameAttr->Get();}}double realAttrValue = 0.0;if (aRootLabel.IsAttribute(TDataStd_Real::GetID())){Handle(TDataStd_Real) realAttr;aRootLabel.FindAttribute(TDataStd_Real::GetID(), realAttr);if (!realAttr.IsNull()){realAttrValue = realAttr->Get();}}if (m_visMaterialTool->IsSetShapeMaterial(aRootLabel)){Handle(XCAFDoc_VisMaterial) VMAttr = m_visMaterialTool->GetShapeMaterial(aRootLabel);if (!VMAttr.IsNull()){XCAFDoc_VisMaterialCommon XVMC = VMAttr->CommonMaterial();Handle(Image_Texture) DiffuseTexture = XVMC.DiffuseTexture;DiffuseTexture->WriteImage("D:\\tetureOut.png");}}}

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

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

相关文章

数字化时代,传统代理模式的变革之路

在数字化飞速发展的今天,线上线下融合(O2O)成了商业领域的大趋势。这股潮流,正猛烈冲击着传统代理模式,给它带来了新的改变。 咱们先看看线上线下融合现在啥情况。线上渠道那是越来越多,企业纷纷在电商平台…

Spring Boot 整合 Redis:提升应用性能的利器

Redis (Remote Dictionary Server) 是一款高性能的键值对存储数据库,它以内存存储为主,具有速度快、支持丰富的数据类型等特点,被广泛应用于缓存、会话管理、排行榜等场景。 Spring Boot 提供了对 Redis 的良好支持,使得我们可以轻…

Vue2+OpenLayers添加缩放、滑块缩放、拾取坐标、鹰眼、全屏控件(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 废话不多说&#xff0c;直接给完整代码&#xff0c;替换成自己的KEY即可运行&#xff1a; <template><div><div i…

Vulnhub-Tr0ll靶机笔记

Tr0ll靶机笔记 概述 靶机地址&#xff1a;https://www.vulnhub.com/entry/tr0ll-1,100/ 这台靶机比较简单&#xff0c;包含ftp的渗透&#xff0c;pcap流量包的分析&#xff0c;常规的web渗透和系统内核提权。让我们开始吧 Hack it&#xff01; 一、nmap扫描 1、端口扫描 …

高效建站指南:通过Portainer快速搭建自己的在线网站

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

直驱式风电储能制氢仿真模型matlab/simulink

接着还是以直驱式风电为DG中的研究对象&#xff0c;上篇博客考虑的风电并网惯性的问题&#xff0c;这边博客主要讨论功率消纳的问题。 考虑到风速是随机变化的&#xff0c;导致风电输出功率的波动性和间歇性问题突出&#xff1b;随着其应用规模的不断扩大以及风电在电网中渗透率…

C#中字符串方法

字符串属性&#xff1a;Lenght 长度比最大索引大1 string str "frerfgd"; 1.可以通过索引&#xff0c;获取字符串中的某一个字符&#xff0c;下标“0&#xff0c;1.......” Console.WriteLine(str[0]);//f Console.WriteLine(str[1]);//r //Console.WriteLine(s…

Spring Boot--@PathVariable、@RequestParam、@RequestBody

目录 声明&#xff01;&#xff01; 什么是RESTful&#xff1f; RESTful 的基本原则 无状态性&#xff08;Stateless&#xff09; 统一接口&#xff08;Uniform Interface&#xff09; 分层系统&#xff08;Layered System&#xff09; 缓存&#xff08;Cacheable&#…

React的响应式

在 React 中&#xff0c;useState 是一个 Hook&#xff0c;用于在函数组件中定义和管理状态。 setCount 是由 useState 返回的第二个值&#xff0c;用于更新状态并触发组件重新渲染。它的本质是一个状态更新函数&#xff0c;背后是 React 的状态管理和调度机制。下面是对 setCo…

Docker Compose的使用

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/docker-compose.html 目录 Docker Compose是什么Docker Compose安装Docker Compose文件Docker Compose常用命令案例&#xff1a;部署WordPress博客系统 Docker Compose是什么 Docker Compose是Docker官方的开源…

ovs实现lb负载均衡

负载均衡定义 负载均衡器的实现原理是通过硬件或软件设备将客户端访问流量根据转发策略分发到多个服务器或设备上&#xff0c;以确保系统的负载均衡。常见的实现方式包括&#xff1a; 二层负载均衡‌&#xff1a;使用虚拟MAC地址方式&#xff0c;根据OSI模型的二层进行负载均…

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本&#xff08;LTS&#xff09;&#xff1a;JDK 8、11、17、21&#xff1a;

AI 在人形机器人发展中的作用

摘要&#xff1a;本文主要探讨了 AI 在人形机器人发展中的关键作用。通过对相关技术和应用案例的分析&#xff0c;阐述了 AI 如何赋予人形机器人智能感知、学习决策、自然语言处理及运动控制等能力&#xff0c;推动人形机器人在多领域的应用和产业发展&#xff0c;同时也对其面…

python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)

公式样例 渲染前 \[\sqrt{1904.615384} \approx 43.64\] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https://mirro…

SSM宠物医院信息管理系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 宠…

Swift 专题二 语法速查

一 、变量 let, var 变量是可变的&#xff0c;使用 var 修饰&#xff0c;常量是不可变的&#xff0c;使用 let 修饰。类、结构体和枚举里的变量是属性。 var v1:String "hi" // 标注类型 var v2 "类型推导" let l1 "标题" // 常量class a {…

mysql查看binlog日志

mysql 配置、查看binlog日志&#xff1a; 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启&#xff0c;修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin&#xff08;开启日志并指定日志前缀&#xff…

某国际大型超市电商销售数据分析和可视化

完整源码项目包获取→点击文章末尾名片&#xff01; 本作品将从人、货、场三个维度&#xff0c;即客户维度、产品维度、区域维度&#xff08;补充时间维度与其他维度&#xff09;对某国际大型超市的销售情况进行数据分析和可视化报告展示&#xff0c;从而为该超市在弄清用户消费…

Linux 存储设备和 Ventoy 启动盘制作指南

一、Linux 存储设备基础知识 1. 设备路径&#xff08;/dev&#xff09; 设备路径是 Linux 系统中物理存储设备的唯一标识&#xff0c;类似设备的"身份证号"。 命名规则解析 /dev/sda&#xff1a; /dev&#xff1a;device&#xff08;设备&#xff09;的缩写&…

PostgreSQL-01-入门篇-简介

文章目录 1. PostgreSQL是什么?2. PostgreSQL 历史 2.1. 伯克利 POSTGRES 项目2.2. Postgres952.3. PostgreSQL来了 3. PostgreSQL vs MySQL4. 安装 4.1 Windows 安装4.2 linux 安装4.3 docker安装 1. PostgreSQL是什么 PostgreSQL 是一个基于加州大学伯克利分校计算机系开…