QT-CAD-3D显示操作工具

QT-CAD-3D显示操作工具

  • 一、效果展示
  • 二、核心程序
  • 三、程序链接

一、效果展示

请添加图片描述

二、核心程序

TDF_LabelSequence DxfReader::transfer(DocumentPtr doc, TaskProgress* progress)
{TDF_LabelSequence seqLabel;Handle_XCAFDoc_ShapeTool shapeTool = doc->xcaf().shapeTool();Handle_XCAFDoc_ColorTool colorTool = doc->xcaf().colorTool();Handle_XCAFDoc_LayerTool layerTool = doc->xcaf().layerTool();std::unordered_map<std::string, TDF_Label> mapLayerNameLabel;std::unordered_map<ColorIndex_t, TDF_Label> mapAciColorLabel;auto fnAddRootShape = [&](const TopoDS_Shape& shape, const std::string& shapeName, TDF_Label layer) {const TDF_Label labelShape = shapeTool->NewShape();shapeTool->SetShape(labelShape, shape);TDataStd_Name::Set(labelShape, to_OccExtString(shapeName));seqLabel.Append(labelShape);if (!layer.IsNull())layerTool->SetLayer(labelShape, layer, true/*onlyInOneLayer*/);return labelShape;};auto fnAddAci = [&](ColorIndex_t aci) -> TDF_Label {auto it = mapAciColorLabel.find(aci);if (it != mapAciColorLabel.cend())return it->second;if (0 <= aci && CppUtils::cmpLess(aci, std::size(aciTable))) {const RGB_Color& c = aciTable[aci].second;const TDF_Label colorLabel = colorTool->AddColor(Quantity_Color(c.r / 255., c.g / 255., c.b / 255., Quantity_TOC_RGB));mapAciColorLabel.insert({ aci, colorLabel });return colorLabel;}return TDF_Label();};int iShape = 0;int shapeCount = 0;for (const auto& [layerName, vecEntity] : m_layers) {if (!startsWith(layerName, "BLOCKS")) {shapeCount = CppUtils::safeStaticCast<int>(shapeCount + vecEntity.size());const TDF_Label layerLabel = layerTool->AddLayer(to_OccExtString(layerName));mapLayerNameLabel.insert({ layerName, layerLabel });}}auto fnUpdateProgressValue = [&]{progress->setValue(MathUtils::toPercent(iShape, 0, shapeCount));};auto fnSetShapeColor = [=](const TDF_Label& labelShape, int aci) {const TDF_Label labelColor = fnAddAci(aci);if (!labelColor.IsNull())colorTool->SetColor(labelShape, labelColor, XCAFDoc_ColorGen);};if (!m_params.groupLayers) {for (const auto& [layerName, vecEntity] : m_layers) {if (startsWith(layerName, "BLOCKS"))continue; // Skipconst TDF_Label layerLabel = CppUtils::findValue(layerName, mapLayerNameLabel);for (const DxfReader::Entity& entity : vecEntity) {const std::string shapeName = std::string("Shape_") + std::to_string(++iShape);const TDF_Label shapeLabel = fnAddRootShape(entity.shape, shapeName, layerLabel);colorTool->SetColor(shapeLabel, fnAddAci(entity.aci), XCAFDoc_ColorGen);fnUpdateProgressValue();}}}else {for (const auto& [layerName, vecEntity] : m_layers) {if (startsWith(layerName, "BLOCKS"))continue; // SkipTopoDS_Compound comp = BRepUtils::makeEmptyCompound();for (const Entity& entity : vecEntity) {if (!entity.shape.IsNull())BRepUtils::addShape(&comp, entity.shape);}if (!comp.IsNull()) {const TDF_Label layerLabel = CppUtils::findValue(layerName, mapLayerNameLabel);const TDF_Label compLabel = fnAddRootShape(comp, layerName, layerLabel);// Check if all entities have the same colorbool uniqueColor = true;const ColorIndex_t aci = !vecEntity.empty() ? vecEntity.front().aci : -1;for (const Entity& entity : vecEntity) {uniqueColor = entity.aci == aci;if (!uniqueColor)break;}if (uniqueColor) {fnSetShapeColor(compLabel, aci);}else {for (const Entity& entity : vecEntity) {if (!entity.shape.IsNull()) {const TDF_Label entityLabel = shapeTool->AddSubShape(compLabel, entity.shape);fnSetShapeColor(entityLabel, entity.aci);}}}}iShape = CppUtils::safeStaticCast<int>(iShape + vecEntity.size());fnUpdateProgressValue();}}return seqLabel;
}std::unique_ptr<PropertyGroup> DxfReader::createProperties(PropertyGroup* parentGroup)
{return std::make_unique<Properties>(parentGroup);
}void DxfReader::applyProperties(const PropertyGroup* group)
{auto ptr = dynamic_cast<const Properties*>(group);if (ptr) {m_params.scaling = ptr->scaling;m_params.importAnnotations = ptr->importAnnotations;m_params.groupLayers = ptr->groupLayers;m_params.fontNameForTextObjects = ptr->fontNameForTextObjects.name();}
}void DxfReader::Internal::get_line()
{CDxfRead::get_line();m_fileReadSize += this->gcount();if (m_progress)m_progress->setValue(MathUtils::toPercent(m_fileReadSize, 0, m_fileSize));
}
![请添加图片描述](https://img-blog.csdnimg.cn/direct/4eb7d0d0da0f41cda08ee6bffe15a6ac.gif)

三、程序链接

https://download.csdn.net/download/u013083044/88628290

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

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

相关文章

大数据技术13:HBase分布式列式数据库

前言&#xff1a;2007年Powerset的工作人员&#xff0c;通过google的论文开发出了BigTable的java版本&#xff0c;即HBASE。2008年HBASE贡献给了Apache。HBase 需要依赖 JDK 环境。 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想…

微服务学习:Gateway服务网关

一&#xff0c;Gateway服务网关的作用&#xff1a; 路由请求&#xff1a;Gateway服务网关可以根据请求的URL或其他标识符将请求路由到特定的微服务。 负载均衡&#xff1a;Gateway服务网关可以通过负载均衡算法分配请求到多个实例中&#xff0c;从而平衡各个微服务的负载压力。…

爬虫的基本介绍 , 什么是爬虫 , 爬虫的主要功能

走进爬虫 1. 什么是爬虫&#xff1f; 本节课程的内容是介绍什么是爬虫&#xff1f;爬虫有什么用&#xff1f;以及爬虫是如何实现的&#xff1f;从这三点一起来寻找答案&#xff01; 1.1 初识网络爬虫 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff…

PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了

本款软件只有十几兆&#xff0c;功能算是强大的&#xff0c;国人写的&#xff0c;很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接&#xff0c;或者从官网直接下载。 目前产品免费&#xff0c;以后估计会有收费版本。主页链接&#xff1a;PythonStudio-硅量实验室 作…

阿里云Centos8安装Dockers详细过程

一、卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序&#xff0c;请卸载它们以及相关的依赖项。 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \do…

服务器数据恢复-raid5多块磁盘掉线导致上层卷无法挂载的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器中有一组由24块FC硬盘组建的raid5磁盘阵列&#xff0c;linux操作系统ext3文件系统&#xff0c;服务器上层部署有oracle数据库。 服务器故障&检测&#xff1a; raid5阵列中有两块硬盘出现故障掉线&#xff0c;导致服务器上层卷无法…

大文件加密传输助力企业数据交互安全

在当前信息时代&#xff0c;数据成为企业的关键资产和竞争优势。企业为提高效率和创新能力&#xff0c;需要与内外部合作伙伴进行数据交换与协作。然而&#xff0c;在大量数据在网络上传输时&#xff0c;数据安全成为企业不可忽视的挑战。如何确保数据的机密性、完整性和可用性…

【Linux】信号--信号初识/信号的产生方式/信号的保存

文章目录 一、信号初步理解1.生活角度的信号2.技术应用角度的信号 二、信号的产生方式1.通过终端按键产生信号2.调用系统函数向进程发信号3.硬件异常产生信号4.由软件条件产生信号5.进程退出时的核心转储问题 三、信号的保存1.信号其他相关常见概念2.信号在内核中的表示3.sigse…

ubuntu debian mini安装系统 有线选项消失或ens33 ethernet 未托管解决方法

nmcli device status#修改NetworkManager.conf如下 sed s/false/true/ /etc/NetworkManager/NetworkManager.confsed -i s/false/true/ /etc/NetworkManager/NetworkManager.conf#重启生效systemctl restart NetworkManager

智能优化算法应用:基于蝠鲼觅食算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝠鲼觅食算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝠鲼觅食算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝠鲼觅食算法4.实验参数设定5.算法结果6.…

phpMyAdmin的常见安装位置

nginx的日志显示有人一直在尝试访问phpMyAdmin的setup.php&#xff0c;用了各种位置。 其实我只有一个nginx&#xff0c;别的什么也没有。 47.99.136.156 - - [01:44:37 0800] "GET http://abc.com:80/phpMyAdmin/scripts/setup.php HTTP/1.0" 404 162 "-"…

生成树基本实验

背景 某公司的二层交换网络中&#xff0c;为了提高网络可靠性&#xff0c;故在二层交换网络中增加冗余链路。为了阻 止冗余链路可能带来的广播风暴&#xff0c;MAC地址漂移等负面影响&#xff0c;需要在交换机之间部署生成树 协议。 实验 一.配置stp en 开启 stp en stp …

PPINN Parareal physics-informed neural network for time-dependent PDEs

论文阅读&#xff1a;PPINN Parareal physics-informed neural network for time-dependent PDEs PPINN Parareal physics-informed neural network for time-dependent PDEs简介方法PPINN加速分析 实验确定性常微分方程随机常微分方程Burgers 方程扩散反应方程 总结 PPINN Par…

R语言【rgbif】——什么是多值传参?如何在rgbif中一次性传递多个值?多值传参时的要求有哪些?

rgbif版本&#xff1a;3.7.8.1 什么是多值传参&#xff1f; 您是否在使用rgbif时设想过&#xff0c;给某个参数一次性传递许多个值&#xff0c;它将根据这些值独立地进行请求&#xff0c;各自返回独立的结果。 rgbif支持这种工作模式&#xff0c;但是具体的细节需要进一步地…

新版Spring Security6.2 - Digest Authentication

前言&#xff1a; 书接上文&#xff0c;上次翻译basic的这页&#xff0c;这次翻译Digest Authentication这页。 摘要认证-Digest Authentication 官网的警告提示&#xff1a;不应在应用程序中使用摘要式身份验证&#xff0c;因为它不被认为是安全的。最明显的问题是您必须以…

IDEA中Terminal配置为bash

简介 我们日常命令行都是使用Linux的bash指令&#xff0c;但是我们的开发基本都是基于Windows上的IDEA进行开发的&#xff0c;对此我们可以通过将IDEA将终端Terminal改为git bash自带的bash.exe解决问题。 配置步骤 安装GIT 这步无需多说了&#xff0c;读者可自行到官网下载…

大模型时代-从0开始搭建大模型

开发一个简单模型的步骤&#xff1b; 搭建一个大模型的过程可以分为以下几个步骤&#xff1a; 数据收集和处理模型设计模型训练模型评估模型优化 下面是一个简单的例子&#xff0c;展示如何使用Python和TensorFlow搭建一个简单的大模型。 数据收集和处理 首先&#xff0c;我…

Python接口自动化 —— Json 数据处理实战(详解)

简介   上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下。首先捋一下思路&#xff0c;然后根据思路一步一步的去实现和实战&#xff0c;不要一开始就盲目的动手和无头苍蝇一样到处乱撞&#xff0c;撞得头破血流后而放弃了。不仅…

作业12.11

1 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&…

数据结构(超详细讲解!!)第二十七节 查找

1.查找的基本概念 1、查找表——由同一类型的数据元素&#xff08;或记录&#xff09;构成的集合称为查找表。 2、对查找表进行的操作&#xff1a; 查找某个特定的数据元素是否存在&#xff1b; 检索某个特定数据元素的属性&#xff1b; 在查找表中插入一个数据元素&#x…