void pcl::modeler::SceneTree::slotImportPointCloud() { MainWindow* main_window = &MainWindow::getInstance(); if (selectedRenderWindowItems().empty()) { QMessageBox::warning(main_window, tr("Failed to Import Point Cloud"), tr("Please specify in which render window(s) you want to import the point cloud(s)")); return; } QStringList filenames = QFileDialog::getOpenFileNames(main_window, tr("Import Point Cloud"), main_window->getRecentFolder(), tr("Point Cloud(*.pcd)\n") ); if (filenames.isEmpty()) return; for (QStringList::const_iterator filenames_it = filenames.begin(); filenames_it != filenames.end(); ++ filenames_it) { if (!openPointCloud(*filenames_it)) QMessageBox::warning(main_window, tr("Failed to Import Point Cloud"), tr("Can not import point cloud file %1, please check if it's in valid .pcd format!").arg(*filenames_it)); } return; }
void pcl::modeler::SceneTree::slotOpenPointCloud() { MainWindow* main_window = &MainWindow::getInstance(); QList<RenderWindowItem*> selected_render_window_items = selectedRenderWindowItems(); if (selected_render_window_items.empty()) { QMessageBox::warning(main_window, tr("Failed to Open Point Cloud"), tr("Please specify in which render window(s) you want to open the point cloud(s)")); return; } QStringList filenames = QFileDialog::getOpenFileNames(main_window, tr("Open Point Cloud"), main_window->getRecentFolder(), tr("Point Cloud(*.pcd)\n") ); if (filenames.isEmpty()) return; for (QList<RenderWindowItem*>::iterator selected_render_window_items_it = selected_render_window_items.begin(); selected_render_window_items_it != selected_render_window_items.end(); ++ selected_render_window_items_it) { RenderWindowItem* render_window_item = *selected_render_window_items_it; QList<CloudMeshItem*> cloud_mesh_items; for (int i = 0, i_end = render_window_item->childCount(); i < i_end; ++ i) cloud_mesh_items.push_back(dynamic_cast<CloudMeshItem*>(render_window_item->child(i))); closePointCloud(cloud_mesh_items); } for (QStringList::const_iterator filenames_it = filenames.begin(); filenames_it != filenames.end(); ++ filenames_it) { if (!openPointCloud(*filenames_it)) QMessageBox::warning(main_window, tr("Failed to Open Point Cloud"), tr("Can not open point cloud file %1, please check if it's in valid .pcd format!").arg(*filenames_it)); } return; }
bool pcl::modeler::SceneTree::openPointCloud(const QString& filename) { QList<RenderWindowItem*> selected_render_window_items = selectedRenderWindowItems(); for (auto &selected_render_window_item : selected_render_window_items) { if(!selected_render_window_item->openPointCloud(filename)) return (false); expandItem(selected_render_window_item); } emit fileOpened(filename); return (true); }
bool pcl::modeler::SceneTree::openPointCloud(const QString& filename) { QList<RenderWindowItem*> selected_render_window_items = selectedRenderWindowItems(); for (QList<RenderWindowItem*>::iterator selected_render_window_items_it = selected_render_window_items.begin(); selected_render_window_items_it != selected_render_window_items.end(); ++ selected_render_window_items_it) { if(!(*selected_render_window_items_it)->openPointCloud(filename)) return (false); expandItem(*selected_render_window_items_it); } emit fileOpened(filename); return (true); }
void pcl::modeler::SceneTree::slotICPRegistration() { QList<CloudMeshItem*> selected_cloud_mesh_items = selectedTypeItems<CloudMeshItem>(); CloudMesh::PointCloudPtr result(new CloudMesh::PointCloud()); AbstractWorker* worker = new ICPRegistrationWorker(result, selected_cloud_mesh_items,&MainWindow::getInstance()); ThreadController* thread_controller = new ThreadController(); QList<RenderWindowItem*> selected_render_window_items = selectedRenderWindowItems(); for (auto &selected_render_window_item : selected_render_window_items) { CloudMeshItem* cloud_mesh_item = selected_render_window_item->addPointCloud(result); expandItem(selected_render_window_item); connect(worker, SIGNAL(finished()), new CloudMeshItemUpdater(cloud_mesh_item), SLOT(updateCloudMeshItem())); } thread_controller->runWorker(worker); return; }