#include "surface_import.h" #include "schnapps.h" #include "mapHandler.h" #include "Algo/Import/import.h" #include #include namespace CGoGN { namespace SCHNApps { bool Surface_Import_Plugin::enable() { // magic line that init static variables of GenericMap in the plugins GenericMap::copyAllStatics(m_schnapps->getStaticPointers()); importAction = new QAction("import", this); m_schnapps->addMenuAction(this, "Surface;Import", importAction); connect(importAction, SIGNAL(triggered()), this, SLOT(importFromFileDialog())); return true; } MapHandlerGen* Surface_Import_Plugin::importFromFile(const QString& fileName) { QFileInfo fi(fileName); if(fi.exists()) { MapHandlerGen* mhg = m_schnapps->addMap(fi.baseName(), 2); if(mhg) { MapHandler* mh = static_cast*>(mhg); PFP2::MAP* map = mh->getMap(); std::vector attrNames; Algo::Surface::Import::importMesh(*map, fileName.toStdString(), attrNames); // get vertex position attribute VertexAttribute position = map->getAttribute(attrNames[0]); mh->registerAttribute(position); // update corresponding VBO & emit attribute update signal mh->notifyAttributeModification(position); // compute map bounding box mh->updateBB(position); } return mhg; } else return NULL; } void Surface_Import_Plugin::importFromFileDialog() { QStringList fileNames = QFileDialog::getOpenFileNames(m_schnapps, "Import surfaces", m_schnapps->getAppPath(), "Surface mesh Files (*.ply *.off *.trian)"); QStringList::Iterator it = fileNames.begin(); while(it != fileNames.end()) { importFromFile(*it); ++it; } } Q_EXPORT_PLUGIN2(Surface_Import_Plugin, Surface_Import_Plugin) } // namespace SCHNApps } // namespace CGoGN