ThreeMFWriter.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Include own headers
  2. #include "ThreeMFWriter.hpp"
  3. ThreeMFWriter::ThreeMFWriter() {
  4. _wrapper = Lib3MF::CWrapper::loadLibrary();
  5. }
  6. void ThreeMFWriter::writeTrackPoints(std::vector<TrackPoint*> points, std::string path) {
  7. // Load the file created by OpenSCAD
  8. Lib3MF::PModel model = _wrapper->CreateModel();
  9. Lib3MF::PReader reader = model->QueryReader("3mf");
  10. reader->ReadFromFile("/tmp/output.3mf");
  11. Lib3MF::PMetaDataGroup metaData = model->GetMetaDataGroup();
  12. json trackpointData;
  13. std::vector<std::vector<float>> pointsList;
  14. for (TrackPoint* point: points) {
  15. std::vector<float> pointData;
  16. osg::Vec3 trackPoint = point->getTrackPoint();
  17. pointData.push_back(trackPoint.x());
  18. pointData.push_back(trackPoint.y());
  19. pointData.push_back(trackPoint.z());
  20. pointsList.push_back(pointData);
  21. }
  22. trackpointData["trackpoints"] = {
  23. {"tracking-system", "optitrack"},
  24. {"trackpoints", pointsList}
  25. };
  26. metaData->AddMetaData("tk-ar-tracking", "trackpoints", trackpointData.dump(), "string", true);
  27. Lib3MF::PWriter writer = model->QueryWriter("3mf");
  28. writer->WriteToFile(path);
  29. }