一、概述

CloudCompare如何进行二次开发?_cloudcompare 二次开发-CSDN博客

开发一个功能,在原始CC的基础上添加一个拓展功能,如下:

CloudCompare简单开发-LMLPHP

二、功能开发

1、修改MainWindow.UI

CloudCompare简单开发-LMLPHP

重点是:要编译,不然在mainwindow.cpp 哪里是看不到myactionclone 的

2、修改mainwindow.h  

CloudCompare简单开发-LMLPHP

3、修改mainwindow.cpp

添加信号槽

CloudCompare简单开发-LMLPHP

实现槽函数

/// <summary>
///  自定义个一个程序 插件
/// </summary>
void MainWindow::doclone()
{
	if (m_selectedEntities.size()==0)
	{
		return;
	}

	//获取选中对象转为点云  
	ccPointCloud* m_cloud = ccHObjectCaster::ToPointCloud(m_selectedEntities[0]);
	//创建一个新的点云  
	ccPointCloud*  clonecloud = new ccPointCloud(m_cloud->getName() + QString("-Clone"));
	//为克隆对象分配内存  
	clonecloud->reserve(m_selectedEntities.size());
	size_t pointSize = m_cloud->size();
	for (size_t i = 0; i < pointSize; ++i)
	{
		clonecloud->addPoint(*m_cloud->getPoint(i));
	}
	//创建一个文件夹来放点云  
	ccHObject* CloudGroup = new ccHObject(QString("CloudGroup"));
	CloudGroup->addChild(clonecloud);
	m_ccRoot->addElement(CloudGroup);
	 

}

重新生成:

CloudCompare简单开发-LMLPHP

 三、结果对比

CloudCompare简单开发-LMLPHP

但是发现了一个问题,原本的cc 是价值不了pcd 文件的,这个功能要加!@!! 

12-01 23:59