int main(int argc, char* argv[]) { plbInit(&argc, &argv); global::directories().setOutputDir("./"); global::IOpolicy().activateParallelIO(false); string stlFileName, outFileName; T shiftX, shiftY, shiftZ; try { global::argv(1).read(stlFileName); global::argv(2).read(shiftX); global::argv(3).read(shiftY); global::argv(4).read(shiftZ); global::argv(5).read(outFileName); } catch (PlbIOException& exception) { pcout << "Wrong parameters; the syntax is: " << (std::string)global::argv(0) << " inputSTL.stl shiftX shiftY shiftZ outputSTL.stl" << std::endl; pcout << "If for example, you want your STL to be shifted by (0.1,0.1,0.1) you should write" << std::endl; pcout << (std::string)global::argv(0) << " inputSTL.stl 0.1 0.1 0.1 outputSTL.stl" << std::endl; exit(-1); } TriangleSet<T>* triangleSet = 0; try { triangleSet = new TriangleSet<T>(stlFileName, DBL); } catch (PlbIOException& exception) { pcout << "Error, could not read STL file " << stlFileName << ": " << exception.what() << std::endl; return -1; } triangleSet->translate(Array<T,3>(shiftX,shiftY,shiftZ)); triangleSet->writeBinarySTL(outFileName); return 0; }
int main(int argc, char* argv[]) { plbInit(&argc, &argv); global::directories().setOutputDir("./"); global::IOpolicy().activateParallelIO(false); if (argc != 9) { pcout << "Wrong parameters; the syntax is:" << std::endl << (std::string)global::argv(0) << "[FLT | DBL | LDBL | INF] inputSTL.stl cut-plane-point-x cut-plane-point-y cut-plane-point-z" << std::endl << "cut-plane-normal-x cut-plane-normal-y cut-plane-normal-z" << std::endl; exit(-1); } std::string precisionStr; std::string inStlFileName; Plane<T> cutPlane; try { global::argv(1).read(precisionStr); global::argv(2).read(inStlFileName); global::argv(3).read(cutPlane.point[0]); global::argv(4).read(cutPlane.point[1]); global::argv(5).read(cutPlane.point[2]); global::argv(6).read(cutPlane.normal[0]); global::argv(7).read(cutPlane.normal[1]); global::argv(8).read(cutPlane.normal[2]); } catch (PlbIOException& exception) { pcout << "Wrong parameters." << std::endl; exit(-1); } Precision precision; if (precisionStr == "FLT") { precision = FLT; } else if (precisionStr == "DBL") { precision = DBL; } else if (precisionStr == "LDBL") { precision = LDBL; } else if (precisionStr == "INF") { precision = INF; } else { pcout << "Wrong precision command-line argument." << std::endl; exit(-1); } TriangleSet<T>* set = 0; try { set = new TriangleSet<T>(inStlFileName, precision); } catch (PlbIOException& exception) { pcout << "ERROR, could not read STL file " << inStlFileName << ": " << exception.what() << std::endl; exit(-1); } // Cut the geometry in two parts. TriangleSet<T> normalNegativePart; int rv = 0; rv = set->cutWithPlane(cutPlane, normalNegativePart); if (rv != 1) { pcout << "Problem with the surface cutting." << std::endl; exit(1); } normalNegativePart.writeBinarySTL("normalNegativePart.stl"); TriangleSet<T> normalPositivePart; cutPlane.normal = -cutPlane.normal; rv = 0; rv = set->cutWithPlane(cutPlane, normalPositivePart); if (rv != 1) { pcout << "Problem with the surface cutting." << std::endl; exit(1); } normalPositivePart.writeBinarySTL("normalPositivePart.stl"); delete set; return 0; }