OpenScadRenderer.cpp 874 B

123456789101112131415161718192021222324
  1. #include "OpenScadRenderer.hpp"
  2. #include <iostream>
  3. #include <fstream>
  4. const char* openScadBase =
  5. "$fn = 100;\n"
  6. "module optiTrackPointBase(translation, rotation) {\n"
  7. "translate(translation) rotate(rotation) cylinder(10, 1, 1, false);\n"
  8. "}\n";
  9. void OpenScadRenderer::render(std::vector<TrackPoint*> points) {
  10. std::ofstream scadFile;
  11. scadFile.open("/tmp/output.scad");
  12. scadFile << openScadBase;
  13. scadFile << "import(\"testbutton.stl\");\n";
  14. for (TrackPoint* point: points) {
  15. osg::Vec3 translation = point->getTranslation();
  16. osg::Vec3 rotation = point->getRotation();
  17. scadFile << "optiTrackPointBase([" << translation.x() << "," << translation.y() << "," << translation.z() << "], [" << rotation.x() << "," << rotation.y() << "," << rotation.z() << "]);\n";
  18. }
  19. scadFile.close();
  20. system("openscad -o /tmp/output.3mf /tmp/output.scad");
  21. }