五、在Qt下加载QVTKWidget控件,生成Visual Studio项目,显示点云(C++)

前言:因为项目需要通过Qt进行显示点云,参考了很多博文,但是并没有全部正确的,东拼西凑算是实现了,花费了两天时间,时间有点久,能力还有有待提升~~
为此写篇博文记录一下。感谢各位大佬!!!

实现:在Qt下安装导入QVTKWidget控件,使用QVTKWidget控件进行显示点云

相关版本:VIsual Studio 2020、Qt5.12.10、VTK8.2.0

一、下载解压VTK

我使用的是VTK8.2.0,官网下载链接
在这里插入图片描述

解压到E:\VTK,创建空文件夹VTK-build,用于存放ALL_BUILD生成的内容
创建空文件夹VTK-release,用于存放INSTALL生成的内容
文件夹VTK-8.2.0为源码文件夹
在这里插入图片描述

二、CMake对源码进行编译

1,选择源和build路径

一个是源码路径:E:/VTK/VTK-release
一个是build路径:E:/VTK/VTK-build,也就是将来项目生成的位置
在这里插入图片描述

2,根据自己的情况选择,我的直接默认,第二栏默认是x64

在这里插入图片描述

3,修改CMAKE_INSTALL_PREFIX,路径选择之前创建的文件夹E:/VTK/VTK-release

存放使用VTK时所需要的lib、dll、头文件等
在这里插入图片描述

4,勾选VTK_GROUP_Qt

在这里插入图片描述

5,勾选BUILD_SHARED_LIBS

在这里插入图片描述

6,勾选BUILD_EXAMPLES

在这里插入图片描述

7,CMAKE_DEBUG_POSTFIX后面加上后缀d,用于区分Debug版本

在这里插入图片描述

8,检测Qt路径是否正确

在这里插入图片描述

9,再次ConfigureGenerate即可

在这里插入图片描述

三、配置Visual Studio和QVTKWidget控件

管理员身份打开Visual Studio,打开项目选择生成的这个VTK项目,E:\VTK\VTK-build
在这里插入图片描述
切换SDK为Release x64,这点很重要!!!
在这里插入图片描述

1,找到ALL_BUILD进行生成,时间有点久,可以去做些其他的事情

在这里插入图片描述

2,找到INSTALL也进行生成,这个快,稍等片刻

在这里插入图片描述

3,运行完成之后,会在E:\VTK\VTK-release下出现五个文件夹

在这里插入图片描述

4,将(E:\VTK\VTK-release\plugins\designer)中的QVTKWidgetPlugin.dll复制到Qt下面(D:\Qt\Qt5.12.10\5.12.10\msvc2017_64\plugins\designer)

在这里插入图片描述
同理在(E:\VTK\VTK-build\lib\Release)下找到QVTKWidgetPlugin.expQVTKWidgetPlugin.lib也一并复制到Qt下面(D:\Qt\Qt5.12.10\5.12.10\msvc2017_64\plugins\designer)
在这里插入图片描述
最终需要在Qt下多出三个文件:
QVTKWidgetPlugin.dll
QVTKWidgetPlugin.lib
QVTKWidgetPlugin.exp
在这里插入图片描述

5,配置环境变量

在系统环境变量path中加入E:\VTK\VTK-release\bin
在这里插入图片描述

6,随便用Qt Designer打开一个ui,帮助–>关于插件–>刷新就出现了QVTKWidget控件了

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

四、测试QVTKWidget控件是否可以正常运行

1,随便创建一个Qt项目,我这里是QT_VTK

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我这里就使用QMainWindow了
在这里插入图片描述

2,打开QT_VTK.ui页面

在这里插入图片描述
拖拽一个QVTKWidget控件,起名为qvtkWidget
在这里插入图片描述
切换SDK为Release x64下
在这里插入图片描述

3,配置VTK属性表

这里新建了一个yy_vtk属性表

VC++目录下

包含目录为:E:\VTK\VTK-release\include\vtk-8.2
库目录为:E:\VTK\VTK-release\lib
在这里插入图片描述

链接器-->输入->附加依赖项

从下面来的同学,返回点我。往下走的同学不用理会~
也就是E:\VTK\VTK-release\lib下的所有.lib文件名称,需要挨个复制粘贴
在这里插入图片描述
敲黑板!!!小技巧:
打开cmd
输入命令:
E:
cd E:\VTK\VTK-release\lib
DIR *.lib*/b>YY.txt // 语句的意思是将此路径下的所后缀是.lib*的文件(*.lib**为通配符,最后一个也有一个*哈),以名称(/b)的形式写入到YY.txt
在这里插入图片描述
这样就会在E:\VTK\VTK-release\lib下生成一个YY.txt里面包含了所有.lib*的文件名称
在这里插入图片描述
在这里插入图片描述

vtkChartsCore-8.2.lib
vtkCommonColor-8.2.lib
vtkCommonComputationalGeometry-8.2.lib
vtkCommonCore-8.2.lib
vtkCommonDataModel-8.2.lib
vtkCommonExecutionModel-8.2.lib
vtkCommonMath-8.2.lib
vtkCommonMisc-8.2.lib
vtkCommonSystem-8.2.lib
vtkCommonTransforms-8.2.lib
vtkDICOMParser-8.2.lib
vtkDomainsChemistry-8.2.lib
vtkDomainsChemistryOpenGL2-8.2.lib
vtkdoubleconversion-8.2.lib
vtkexodusII-8.2.lib
vtkexpat-8.2.lib
vtkFiltersAMR-8.2.lib
vtkFiltersCore-8.2.lib
vtkFiltersExtraction-8.2.lib
vtkFiltersFlowPaths-8.2.lib
vtkFiltersGeneral-8.2.lib
vtkFiltersGeneric-8.2.lib
vtkFiltersGeometry-8.2.lib
vtkFiltersHybrid-8.2.lib
vtkFiltersHyperTree-8.2.lib
vtkFiltersImaging-8.2.lib
vtkFiltersModeling-8.2.lib
vtkFiltersParallel-8.2.lib
vtkFiltersParallelImaging-8.2.lib
vtkFiltersPoints-8.2.lib
vtkFiltersProgrammable-8.2.lib
vtkFiltersSelection-8.2.lib
vtkFiltersSMP-8.2.lib
vtkFiltersSources-8.2.lib
vtkFiltersStatistics-8.2.lib
vtkFiltersTexture-8.2.lib
vtkFiltersTopology-8.2.lib
vtkFiltersVerdict-8.2.lib
vtkfreetype-8.2.lib
vtkGeovisCore-8.2.lib
vtkgl2ps-8.2.lib
vtkglew-8.2.lib
vtkGUISupportQt-8.2.lib
vtkGUISupportQtSQL-8.2.lib
vtkhdf5-8.2.lib
vtkhdf5_hl-8.2.lib
vtkImagingColor-8.2.lib
vtkImagingCore-8.2.lib
vtkImagingFourier-8.2.lib
vtkImagingGeneral-8.2.lib
vtkImagingHybrid-8.2.lib
vtkImagingMath-8.2.lib
vtkImagingMorphological-8.2.lib
vtkImagingSources-8.2.lib
vtkImagingStatistics-8.2.lib
vtkImagingStencil-8.2.lib
vtkInfovisCore-8.2.lib
vtkInfovisLayout-8.2.lib
vtkInteractionImage-8.2.lib
vtkInteractionStyle-8.2.lib
vtkInteractionWidgets-8.2.lib
vtkIOAMR-8.2.lib
vtkIOAsynchronous-8.2.lib
vtkIOCityGML-8.2.lib
vtkIOCore-8.2.lib
vtkIOEnSight-8.2.lib
vtkIOExodus-8.2.lib
vtkIOExport-8.2.lib
vtkIOExportOpenGL2-8.2.lib
vtkIOExportPDF-8.2.lib
vtkIOGeometry-8.2.lib
vtkIOImage-8.2.lib
vtkIOImport-8.2.lib
vtkIOInfovis-8.2.lib
vtkIOLegacy-8.2.lib
vtkIOLSDyna-8.2.lib
vtkIOMINC-8.2.lib
vtkIOMovie-8.2.lib
vtkIONetCDF-8.2.lib
vtkIOParallel-8.2.lib
vtkIOParallelXML-8.2.lib
vtkIOPLY-8.2.lib
vtkIOSegY-8.2.lib
vtkIOSQL-8.2.lib
vtkIOTecplotTable-8.2.lib
vtkIOVeraOut-8.2.lib
vtkIOVideo-8.2.lib
vtkIOXML-8.2.lib
vtkIOXMLParser-8.2.lib
vtkjpeg-8.2.lib
vtkjsoncpp-8.2.lib
vtklibharu-8.2.lib
vtklibxml2-8.2.lib
vtkLocalExample-8.2.lib
vtklz4-8.2.lib
vtklzma-8.2.lib
vtkmetaio-8.2.lib
vtkNetCDF-8.2.lib
vtkogg-8.2.lib
vtkParallelCore-8.2.lib
vtkpng-8.2.lib
vtkproj-8.2.lib
vtkpugixml-8.2.lib
vtkRenderingAnnotation-8.2.lib
vtkRenderingContext2D-8.2.lib
vtkRenderingContextOpenGL2-8.2.lib
vtkRenderingCore-8.2.lib
vtkRenderingFreeType-8.2.lib
vtkRenderingGL2PSOpenGL2-8.2.lib
vtkRenderingImage-8.2.lib
vtkRenderingLabel-8.2.lib
vtkRenderingLOD-8.2.lib
vtkRenderingOpenGL2-8.2.lib
vtkRenderingQt-8.2.lib
vtkRenderingVolume-8.2.lib
vtkRenderingVolumeOpenGL2-8.2.lib
vtksqlite-8.2.lib
vtksys-8.2.lib
vtktheora-8.2.lib
vtktiff-8.2.lib
vtkverdict-8.2.lib
vtkViewsContext2D-8.2.lib
vtkViewsCore-8.2.lib
vtkViewsInfovis-8.2.lib
vtkViewsQt-8.2.lib
vtkzlib-8.2.lib

复制一下,粘贴到附加依赖项
在这里插入图片描述

4,可能会遇到的问题

①编译运行,报错:QVTKWidget被声明为已否决

在这里插入图片描述
解决方法:需要把SDL检查关掉
右击项目属性
在这里插入图片描述
在C/C++下把SDL检查设为
在这里插入图片描述

②编译运行,报错:没有为 vtkGUISupportQt-8.2.dll 加载的符号文件

解决方法:在主函数中下列代码块

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)

在这里插入图片描述

③出现vitoutput窗口,提示版本太低不兼容等警告信息,很烦人

在这里插入图片描述
解决方法:在main.cpp
Ⅰ 加入头文件#include "vtkoutputwindow.h"
Ⅱ 在main主函数里面第一行加入vtkOutputWindow::SetGlobalWarningDisplay(0);

#include <QtWidgets/QApplication>

#include "QT_VTK.h"
#include "vtkoutputwindow.h" // 加入Ⅰ

int main(int argc, char *argv[]) {
  vtkOutputWindow::SetGlobalWarningDisplay(0); // 加入Ⅱ
  QApplication a(argc, argv);
  QT_VTK w;
  w.show();
  return a.exec();
}

5,编译运行,成功

在这里插入图片描述

五、在QVTKWidget控件中显示点云

1,配置PCL属性表

这里新建了一个yy_pcl属性表
在这里插入图片描述

VC++目录下

包含目录:

E:\Program Files\PCL 1.14.0\bin
E:\Program Files\PCL 1.14.0\3rdParty\Boost\include\boost-1_84
E:\Program Files\PCL 1.14.0\3rdParty\Eigen3\include\eigen3
E:\Program Files\PCL 1.14.0\3rdParty\OpenNI2\Include
E:\Program Files\PCL 1.14.0\3rdParty\FLANN\include
E:\Program Files\PCL 1.14.0\3rdParty\Qhull\include
E:\Program Files\PCL 1.14.0\3rdParty\VTK\include\vtk-9.3
E:\Program Files\PCL 1.14.0\include\pcl-1.14

在这里插入图片描述

库目录:

E:\Program Files\PCL 1.14.0\3rdParty\OpenNI2\Lib
E:\Program Files\PCL 1.14.0\3rdParty\VTK\lib
E:\Program Files\PCL 1.14.0\3rdParty\Qhull\lib
E:\Program Files\PCL 1.14.0\3rdParty\FLANN\lib
E:\Program Files\PCL 1.14.0\3rdParty\Boost\lib
E:\Program Files\PCL 1.14.0\lib

在这里插入图片描述

链接器->输入->附加依赖项

可参考博文上述位置 链接器->输入->附加依赖项,都是类似的操作,这里就不再重复
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pcl_common.lib
pcl_commond.lib
pcl_features.lib
pcl_featuresd.lib
pcl_filters.lib
pcl_filtersd.lib
pcl_io.lib
pcl_iod.lib
pcl_io_ply.lib
pcl_io_plyd.lib
pcl_kdtree.lib
pcl_kdtreed.lib
pcl_keypoints.lib
pcl_keypointsd.lib
pcl_ml.lib
pcl_mld.lib
pcl_octree.lib
pcl_octreed.lib
pcl_outofcore.lib
pcl_outofcored.lib
pcl_people.lib
pcl_peopled.lib
pcl_recognition.lib
pcl_recognitiond.lib
pcl_registration.lib
pcl_registrationd.lib
pcl_sample_consensus.lib
pcl_sample_consensusd.lib
pcl_search.lib
pcl_searchd.lib
pcl_segmentation.lib
pcl_segmentationd.lib
pcl_stereo.lib
pcl_stereod.lib
pcl_surface.lib
pcl_surfaced.lib
pcl_tracking.lib
pcl_trackingd.lib
pcl_visualization.lib
pcl_visualizationd.lib

(回来了?咱们继续!)

2,编写QT_VTK.ui界面

在这里插入图片描述
在这里插入图片描述
实现功能:点击pushButton,会在qvtkWidget控件上显示点云(以一个八边形圆柱体为例)

3,编写QT_VTK.h头文件

在这里插入图片描述
函数initialVtkWidget负责在QVTKWidget控件上显示

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QT_VTK.h"
#include <vtkRenderWindow.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>


class QT_VTK : public QMainWindow
{
    Q_OBJECT

public:
    QT_VTK(QWidget *parent = nullptr);
    ~QT_VTK();

private:
    Ui::QT_VTKClass ui;

    void initialVtkWidget();
};

4,编写QT_VTK.cpp函数功能实现

按下pushButton,显示一个点云,这里是以圆柱体为例子

#include "QT_VTK.h"
#include "qdebug.h"
#include "skip.h"
#include <vtkAutoInit.h>
#include <vtkGenericOpenGLRenderWindow.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <array>
#include "QVTKWidget.h"

QT_VTK::QT_VTK(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    //连接信号和槽
    connect(ui.pushButton, &QPushButton::clicked, this, &QT_VTK::initialVtkWidget);
}

QT_VTK::~QT_VTK()
{}

void QT_VTK::initialVtkWidget()
{
    vtkCylinderSource* source = vtkCylinderSource::New();
    source->SetHeight(13);
    source->SetRadius(5);
    source->SetResolution(8);

    vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New();
    coneMapper->SetInputConnection(source->GetOutputPort());

    vtkActor* coneActor = vtkActor::New();
    coneActor->SetMapper(coneMapper);

    vtkRenderer* render = vtkRenderer::New();

    render->AddActor(coneActor);
    render->SetBackground(0.8, 0.4, 0.4);

    ui.qvtkWidget->GetRenderWindow()->AddRenderer(render);
    ui.qvtkWidget->GetRenderWindow()->Render();

    source->Delete();
    coneMapper->Delete();
    coneActor->Delete();
    render->Delete();
}

5,显示结果

在这里插入图片描述

太不容易了,折腾了两天,效果可算做出来了。接下来开始对QVTKWidget显示点云以及通过pcl进行处理等操作步骤进行详细学习,加油!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT基础 - 常用按钮控件和快捷键

目录 一. QtCreator常用快捷键 二. QWidget 三. QPushButton 四. QRadioButton 五. QCheckBox 六. QToolButton 七. 总结 一. QtCreator常用快捷键 说明快捷键运行ctrl R编译ctrl B帮助文档F1 &#xff0c;点击F1两次跳到帮助界面跳到符号定义F2 或者ctrl 鼠标点击注释…

youlai-boot项目的学习—本地数据库安装与配置

数据库脚本 在项目代码的路径下&#xff0c;有两个版本的mysql数据库脚本&#xff0c;使用对应的脚本就安装对应的数据库版本&#xff0c;本文件选择了5 数据库安装 这里在iterm2下使用homebrew安装mysql5 brew install mysql5.7注&#xff1a;记得配置端终下的科学上网&a…

Mysql学习笔记-进阶篇

一、存储引擎 1、MYSQL体系结构 连接层、服务层、引擎层、存储层&#xff1b; 2、存储引擎简介 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是库的&#xff0c;所以存储引擎也可被称为表类型。 1&#xff09;在创…

智能网络组网天联是什么?

智能网络组网是指利用智能技术实现网络设备之间的连接和数据交流。随着科技的不断发展&#xff0c;智能网络组网在现代社会中发挥着越来越重要的作用。其中&#xff0c;天联是一种智能网络组网技术&#xff0c;具有许多优势。 天联组网的优势 天联组网技术拥有以下优势&#…

2024数据库期末综合解析(部分题)

目录 第4关&#xff1a;数据记录修改 任务描述 补充 答案&#xff1a; 第6关&#xff1a;数据查询二 任务描述 补充 答案&#xff1a; 第4关&#xff1a;数据记录修改 任务描述 湖南人口hnpeople数据表如下所示 各字段含义如下 cs&#xff08;城市)、qx(区县)、rk(人口)、man(男…

2024 年最新 windows 操作系统部署安装 redis 数据库详细教程(更新中)

Redis 数据库概述 Redis 是一个开源的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中介。Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基…

JS 实现Date日期格式的本地化

为了更好的更新多语言日期的显示&#xff0c;所以希望实现日期的本地化格式显示要求&#xff0c;常规的特殊字符型格式化无法满足显示要求&#xff0c;这里整理了几种我思考实现的本地化实现功能。 通过多方查找&#xff0c;总结了实现的思路主要有如下三个方向&#xff1a; 官…

基于Django + Web + MySQL的智慧校园系统

基于Django Web MySQL的智慧校园系统 由于时间紧迫&#xff0c;好多功能没实现&#xff0c;只是个半吊子的后台管理系统&#xff0c;亮点是项目安全性还算完整&#xff0c;权限保护加密功能检索功能有实现&#xff0c;可参考修改 功能如下&#xff08;服务为超链接&#xff0…

SSM整合使用

文章目录 1. 项目创建2. spring(1) 导包(2) 配置类 3. mybatis(1) maven导包(2) mybatis配置文件(3) 连接配置文件(4) mapper映射文件(5) 在spring配置类中注册sqlsession的bean springMVC(1) maven导包(2) springMVC配置类(3) 初始化类 5. 测试(1) 创建3层架构(2) 编写Control…

C语言标准库

目录 引言 一、C标准库概述 常用标准库函数 字符串处理 数学运算 动态内存分配 标准库的扩展与限制 扩展功能 使用限制 使用自定义库与第三方库 创建自定义库 使用第三方库 表格总结 标准库头文件及功能 常用标准库函数 总结 引言 C标准库是C编程语言的重要组成…

dp练习题

先来一个简单dp练习 class Solution { public:int rob(vector<int>& nums) {int n nums.size();vector<int> a(n 1);int ans nums[0]; a[0] nums[0];if (n 1) return ans;a[1] max(nums[0], nums[1]);ans max(ans, a[1]);if (n 2) return ans;for (i…

机器学习中的监督学习介绍

In this post well go into the concept of supervised learning, the requirements for machines to learn, and the process of learning and enhancing prediction accuracy. 在这篇文章中&#xff0c;我们将深入探讨监督学习的概念、机器学习的要求以及学习和提高预测准确…

汽车数据应用构想(四)

车只要在路上跑&#xff0c;就可以感知到道路上的各种情况对于车辆的影响。这些数据都具有一定的特征&#xff0c;通过对数据特征的分析&#xff0c;并结合位置信息&#xff0c;即可得到有价值的POI信源。 近几年的新车&#xff0c;基本上都有智能网联功能&#xff0c;也就是说…

【学习笔记】C++每日一记[20240612]

给定两个有序的数组&#xff0c;计算两者的交集 给定两个有序整型数组&#xff0c;数组中 的元素是递增的&#xff0c;且各数组中没有重复元素。 第一时间解法&#xff1a;通过一个循环扫描array_1中的每一个元素&#xff0c;然后利用该元素去比较array_2中的每一个元素&…

计算机网络知识点(四)

目录 一、简述TCP可靠性保证 1、检验和 2、序列号/确认应答 3、超时重传 4、最大消息长度 5、滑动窗口控制 6、拥塞控制 二、简述 TCP 滑动窗口及重传机制 三、滑动窗口过小怎么办 四、如果三次握手时每次握手信息对方没收到会怎么样 五、简述 TCP 的 TIME_WAIT&…

Redis 持久化存储

一、简介 1、RDB redis默认的持久化存储方式&#xff0c;每隔一段时间将内存中的数据写入磁盘中。有手动触发和自动出发两种触发方式。 2、AOF AOF持久化将被执行的写命令记录到AOF文件的末尾&#xff0c;来记录数据发生的变化。Redis启动时&#xff0c;读取AOF文件中的命令并…

WordPress管理员后台登录地址修改教程,WordPress admin登录地址文件修改方法

我们使用WordPress时&#xff0c;管理员后台登录默认地址为“域名/wp-login.php”或“域名/wp-admin”&#xff0c;为了安全&#xff0c;一般会把此地址改掉&#xff0c;防止有人恶意来攻击咱的WordPress&#xff0c;今天出个WordPress后台登录地址修改教程&#xff0c;修改之后…

微信答题扫码答题自己能做吗?微信扫二维码答题快速制作的方法介绍!

在数字化时代&#xff0c;微信扫码答题已经成为一种流行的互动方式&#xff0c;它不仅便捷高效&#xff0c;而且能够极大地提升参与者的体验感。这种新型的答题方式&#xff0c;通过微信平台的广泛覆盖和用户友好的操作界面&#xff0c;为企业和组织提供了一个创新的知识传播和…

Java 集合框架:LinkedList 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 014 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

展会预热|邀您共赴2024华南国际工业展览会

展会预告 在数字化转型的浪潮中&#xff0c;广东盘古信息科技股份有限公司&#xff08;以下简称“盘古信息”&#xff09;作为工业软件业内的领军企业&#xff0c;为制造企业提供全面的数字化生产制造运营管理系统及系统集成解决方案。我们将于2024年6月19日至21日亮相华南工博…