From 880a200c700009870244bb2bd819096baf7687ff Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 13 Feb 2018 00:27:18 +0100 Subject: [PATCH] improve point import and export --- src/Mod/Points/App/PointsAlgos.cpp | 2 +- src/Mod/Points/Gui/CMakeLists.txt | 1 + src/Mod/Points/Gui/Command.cpp | 26 +++++++++++--------------- src/Mod/Points/Init.py | 9 ++------- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/Mod/Points/App/PointsAlgos.cpp b/src/Mod/Points/App/PointsAlgos.cpp index 8958db6196..e0eb9bd36e 100644 --- a/src/Mod/Points/App/PointsAlgos.cpp +++ b/src/Mod/Points/App/PointsAlgos.cpp @@ -55,7 +55,7 @@ void PointsAlgos::Load(PointKernel &points, const char *FileName) if (!File.isReadable()) throw Base::FileException("File to load not existing or not readable", FileName); - if (File.extension() == "asc" ||File.extension() == "ASC") + if (File.hasExtension("asc")) LoadAscii(points,FileName); else throw Base::RuntimeError("Unknown ending"); diff --git a/src/Mod/Points/Gui/CMakeLists.txt b/src/Mod/Points/Gui/CMakeLists.txt index 6c33fbfe2c..2a9a3fcee2 100644 --- a/src/Mod/Points/Gui/CMakeLists.txt +++ b/src/Mod/Points/Gui/CMakeLists.txt @@ -2,6 +2,7 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS} ${COIN3D_INCLUDE_DIRS} + ${EIGEN3_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${XercesC_INCLUDE_DIRS} diff --git a/src/Mod/Points/Gui/Command.cpp b/src/Mod/Points/Gui/Command.cpp index 9959a718ac..f1d0ca669a 100644 --- a/src/Mod/Points/Gui/Command.cpp +++ b/src/Mod/Points/Gui/Command.cpp @@ -74,8 +74,8 @@ void CmdPointsImport::activated(int iMsg) Q_UNUSED(iMsg); QString fn = Gui::FileDialog::getOpenFileName(Gui::getMainWindow(), - QString::null, QString(), QString::fromLatin1("%1 (*.asc);;%2 (*.*)") - .arg(QObject::tr("Ascii Points")).arg(QObject::tr("All Files"))); + QString::null, QString(), QString::fromLatin1("%1 (*.asc *.pcd *.ply);;%2 (*.*)") + .arg(QObject::tr("Point formats")).arg(QObject::tr("All Files"))); if (fn.isEmpty()) return; @@ -83,13 +83,11 @@ void CmdPointsImport::activated(int iMsg) QFileInfo fi; fi.setFile(fn); + Gui::Document* doc = getActiveGuiDocument(); openCommand("Import points"); - QByteArray name = fi.baseName().toLatin1(); - Points::Feature* pts = static_cast(getActiveGuiDocument()->getDocument()-> - addObject("Points::Feature", static_cast(name))); - Points::PointKernel* kernel = pts->Points.startEditing(); - kernel->load(static_cast(fn.toLatin1())); - pts->Points.finishEditing(); + addModule(Command::App, "Points"); + doCommand(Command::Doc, "Points.insert(\"%s\", \"%s\")", + fn.toUtf8().data(), doc->getDocument()->getName()); commitCommand(); updateActive(); @@ -122,20 +120,18 @@ void CmdPointsExport::activated(int iMsg) { Q_UNUSED(iMsg); + addModule(Command::App, "Points"); std::vector points = getSelection().getObjectsOfType(Points::Feature::getClassTypeId()); for (std::vector::const_iterator it = points.begin(); it != points.end(); ++it) { QString fn = Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), - QString::null, QString(), QString::fromLatin1("%1 (*.asc);;%2 (*.*)") - .arg(QObject::tr("Ascii Points")).arg(QObject::tr("All Files"))); + QString::null, QString(), QString::fromLatin1("%1 (*.asc *.pcd *.ply);;%2 (*.*)") + .arg(QObject::tr("Point formats")).arg(QObject::tr("All Files"))); if (fn.isEmpty()) break; if (!fn.isEmpty()) { - QFileInfo fi; - fi.setFile(fn); - - Points::Feature* pts = static_cast(*it); - pts->Points.getValue().save(static_cast(fn.toLatin1())); + doCommand(Command::Doc, "Points.export([App.ActiveDocument.%s], \"%s\")", + (*it)->getNameInDocument(), fn.toUtf8().data()); } } } diff --git a/src/Mod/Points/Init.py b/src/Mod/Points/Init.py index 3285ce6020..90837e9871 100644 --- a/src/Mod/Points/Init.py +++ b/src/Mod/Points/Init.py @@ -28,10 +28,5 @@ # Append the open handler -FreeCAD.addImportType("Point formats (*.asc)","Points") -FreeCAD.addImportType("PLY points (*.ply)","Points") -FreeCAD.addImportType("PCD points (*.pcd)","Points") - -FreeCAD.addExportType("Point formats (*.asc)","Points") -FreeCAD.addExportType("PLY points (*.ply)","Points") -FreeCAD.addExportType("PCD points (*.pcd)","Points") +FreeCAD.addImportType("Point formats (*.asc *.pcd *.ply)","Points") +FreeCAD.addExportType("Point formats (*.asc *.pcd *.ply)","Points")