文章目录
- 0.引言
- 1.界面设计
- 2.功能实现
- 3.结果展示
0.引言
CloudCompare源代码编译成功后,即可进行二次开发,可以通过修改源码或者制作插件(插件开发详见:CloudCompare如何进行二次开发之插件开发?)实现二次开发。本文二次开发采用修改CloudCompare的源代码的方式,分别修改mainwindow.ui、mainwindow.h、mainwindow.cpp,实现扩展功能,克隆选中的点云。
1.界面设计
(1)打开mainwindow.ui,扩展功能
(2)编译ui
2.功能实现
(1)修改mainwindow.h
//定义自己的槽函数
void doclone();
(2)修改mainwindow.cpp
void MainWindow::doclone()
{
//选中对象检查,若选中为空返回
if (m_selectedEntities.size() == 0)
{
return;
}
//获取选中对象转为点云
ccPointCloud* m_cloud = ccHObjectCaster::ToPointCloud(m_selectedEntities[0]);
//创建一个新的点云
ccPointCloud* pc = new ccPointCloud(m_cloud->getName() + QString("-Clone"));
//为克隆对象分配内存
pc->reserve(m_selectedEntities.size());
size_t pointSize = m_cloud->size();
for (size_t i = 0; i < pointSize; ++i)
{
pc->addPoint(*m_cloud->getPoint(i));
}
//创建一个文件夹来放点云
ccHObject* CloudGroup = new ccHObject(QString("CloudGroup"));
CloudGroup->addChild(pc);
m_ccRoot->addElement(CloudGroup);
}
(3)生成exe
①设置输出路径
②生成
3.结果展示
直接点击工程输出的CloudCompare.exe,得到以下结果。
参考资料:
[1] cacrle. Visual Studio如何使用Qt开发桌面软件?; 2023-04-18 [accessed 2023-04-19].
[2] 问也去. CloudCompare实现点选点云功能; 2021-09-23 [accessed 2023-04-17].
[3] 进击の小黑. CloudCompare简单二次开发教程 上(界面设计与ui文件编译); 2020-12-17 [accessed 2023-04-17].
[4] 进击の小黑. CloudCompare简单二次开发 下(功能实现); 2020-12-18 [accessed 2023-04-17].
[5] 大锅菜~. error MSB6006: “cmd.exe”已退出,代码为3; 2019-07-02 [accessed 2023-04-19].