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.hqwc.cn/news/283654.html

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

相关文章

20V升26V 600mA升压型LED驱动芯片,PWM调光芯片-AH1160

AH1160是一个功能强大的升压型LED驱动芯片&#xff0c;专为需要精确控制LED亮度的PWM调光应用而设计。它可将20V输入电压升压至26V&#xff0c;同时提供稳定的600mA电流输出&#xff0c;适用于各种LED照明设备。 芯片特点&#xff1a; 1. 输入电压范围&#xff1a;AH1160可在…

SLAM算法与工程实践——相机篇:RealSense T265相机使用(1)

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

数据安全问题困扰您吗?Zoho CRM帮您解决

很多企业在想到在线CRM管理系统时&#xff0c;第一个想到的就是数据安全问题。确实&#xff0c;企业数据十分宝贵&#xff0c;数据都储存在CRM供应商的服务器上很难不会担心。但如果您选择Zoho CRM&#xff0c;就无需这些顾虑啦。下面说说&#xff0c;使用Zoho CRM为什么不用担…

快速处理EDI数据映射:知行EDI Profiler 操作指南

一个完整的EDI项目通常由建立传输通道&#xff0c;处理数据映射以及集成内部业务系统三部分组成。对用户而言&#xff0c;基于知行之桥EDI系统进行自主实施最大的挑战便是处理数据映射。EDI报文读不懂&#xff0c;映射关系太复杂……这些问题给企业造成困扰的同时也阻挡了自主实…

echarts仪表效果

option {series: [{type: gauge,radius:90%,center: [50%, 57%],splitNumber: 5, //仪表盘刻度的分割段数itemStyle: {color: #6EBEFF, //颜色},progress: {show: true,roundCap: true, //是否在两端显示成圆形width: 3 //表盘原型环阴影宽度},axisLine: {roundCap: true, //…

猫头虎分享已解决Bug || Vue3报错: Failed to fetch dynamically imported module

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

HarmonyOS给应用添加弹窗

给您的应用添加弹窗 概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户…

【数据结构和算法】盛最多水的容器

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;暴力枚举 2.2 方法二&#xff1a;双指针 三、代码 3.1 方法一&#xff1a;暴力…

【VScode】设置语言为中文

1、下载安装好vscode 2、此时可看到页面为英文&#xff0c;为方便使用可切换为中文 3、键盘按下 ctrlshiftP 4、在输入框内输入configure display language 5、选择中文&#xff0c;restart即可&#xff08;首次会有install安装过程&#xff0c;等待安装成功后重启即可&am…

ISCTF(a)

where_is_the_flag 答案应该被分成了三份了 蚁剑连接看看 第一个 第二个 第三个&#xff0c;在www下 Yunxi{0797d78c-0cb2-4cfb-87e6-f9c102f716f3} 命令执行 POST : 1 system ( tac flag.php ); 1 system ( tac /flag2 ); 1 system ( env ); 1z_Ssql 使用万能密码 后…

初识Dubbo学习,一文掌握Dubbo基础知识文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Android Stuido报错处理

仅用作报错记录。防止以后出项问题不知如何解决。 报错1 Dependency‘androidx.annotation:xx requires libraries and applications … 需要修改CompileSDKVersion更改为报错中提示的版本 打开项目build.gradle文件&#xff0c;将compileSdk和targetSdk修改为报错中提示的版…