diff --git a/applications/utilities/surface/surfaceCoordinateSystemTransform/surfaceCoordinateSystemTransform.C b/applications/utilities/surface/surfaceCoordinateSystemTransform/surfaceCoordinateSystemTransform.C index cabebafc56803bdb070c005f5c010ecc548410e3..f0578f4ab2d3f7a362f1ec82d6649fa5448fd311 100644 --- a/applications/utilities/surface/surfaceCoordinateSystemTransform/surfaceCoordinateSystemTransform.C +++ b/applications/utilities/surface/surfaceCoordinateSystemTransform/surfaceCoordinateSystemTransform.C @@ -34,17 +34,23 @@ Usage - surfaceMeshCoordinateSystemTransform inputFile outputFile [OPTION] @param -clean \n - Perform some surface checking/cleanup on the input surface + Perform some surface checking/cleanup on the input surface. - @param -scale \<scale\> \n - Specify a scaling factor for writing the files + @param -scaleIn \<scale\> \n + Specify a scaling factor when reading files. - @param -triSurface \n - Use triSurface library for input/output + @param -scaleOut \<scale\> \n + Specify a scaling factor when writing files. @param -dict \<dictionary\> \n Specify an alternative dictionary for coordinateSystems. + @param -from \<coordinateSystem\> \n + Specify a coordinate System when reading files. + + @param -to \<coordinateSystem\> \n + Specify a coordinate System when writing files. + Note The filename extensions are used to determine the file format type. @@ -55,7 +61,6 @@ Note #include "Time.H" #include "MeshedSurfaces.H" -#include "UnsortedMeshedSurfaces.H" #include "coordinateSystems.H" using namespace Foam; @@ -68,18 +73,40 @@ int main(int argc, char *argv[]) argList::noParallel(); argList::validArgs.append("inputFile"); argList::validArgs.append("outputFile"); - argList::validOptions.insert("scale", "scale"); - argList::validOptions.insert("unsorted", ""); + argList::validOptions.insert("clean", "scale"); + argList::validOptions.insert("scaleIn", "scale"); + argList::validOptions.insert("scaleOut", "scale"); + argList::validOptions.insert("dict", "coordinateSystemsDict"); argList::validOptions.insert("from", "sourceCoordinateSystem"); - argList::validOptions.insert("to", "targetCoordinateSystem"); - argList::validOptions.insert("dict", "dictionary"); + argList::validOptions.insert("to", "targetCoordinateSystem"); argList args(argc, argv); Time runTime(args.rootPath(), args.caseName()); const stringList& params = args.additionalArgs(); - const word dictName("coordinateSystems"); + fileName importName(params[0]); + fileName exportName(params[1]); + + // disable inplace editing + if (importName == exportName) + { + FatalErrorIn(args.executable()) + << "Output file " << exportName << " would overwrite input file." + << exit(FatalError); + } + + // check that reading/writing is supported + if + ( + !MeshedSurface<face>::canRead(importName, true) + || !MeshedSurface<face>::canWriteType(exportName.ext(), true) + ) + { + return 1; + } + + // get the coordinate transformations autoPtr<coordinateSystem> fromCsys; autoPtr<coordinateSystem> toCsys; @@ -95,7 +122,7 @@ int main(int argc, char *argv[]) ( new IOobject ( - ( dictPath.isDir() ? dictPath/dictName : dictPath ), + ( dictPath.isDir() ? dictPath/coordinateSystems::typeName : dictPath ), runTime, IOobject::MUST_READ, IOobject::NO_WRITE, @@ -109,7 +136,7 @@ int main(int argc, char *argv[]) ( new IOobject ( - dictName, + coordinateSystems::typeName, runTime.constant(), runTime, IOobject::MUST_READ, @@ -167,34 +194,20 @@ int main(int argc, char *argv[]) if (fromCsys.valid() && toCsys.valid()) { FatalErrorIn(args.executable()) - << "Only allowed -from or -to option at the moment." + << "Only allowed '-from' or '-to' option at the moment." << exit(FatalError); } } - scalar scaleFactor = 0; - if (args.options().found("scale")) + scalar scaleIn = 0; + scalar scaleOut = 0; + if (args.options().found("scaleIn")) { - IStringStream(args.options()["scale"])() >> scaleFactor; + IStringStream(args.options()["scaleIn"])() >> scaleIn; } - - fileName importName(params[0]); - fileName exportName(params[1]); - - if (importName == exportName) + if (args.options().found("scaleOut")) { - FatalErrorIn(args.executable()) - << "Output file " << exportName << " would overwrite input file." - << exit(FatalError); - } - - if - ( - !meshedSurface::canRead(importName, true) - || !meshedSurface::canWriteType(exportName.ext(), true) - ) - { - return 1; + IStringStream(args.options()["scaleOut"])() >> scaleOut; } @@ -206,28 +219,33 @@ int main(int argc, char *argv[]) surf.cleanup(true); } + if (scaleIn > 0) + { + Info<< " -scaleIn " << scaleIn << endl; + surf.scalePoints(scaleIn); + } + if (fromCsys.valid()) { + Info<< " -from " << fromCsys().name() << endl; tmp<pointField> tpf = fromCsys().localPosition(surf.points()); surf.movePoints(tpf()); } if (toCsys.valid()) { + Info<< " -to " << toCsys().name() << endl; tmp<pointField> tpf = toCsys().globalPosition(surf.points()); surf.movePoints(tpf()); } - Info<< "writing " << exportName; - if (scaleFactor <= 0) + if (scaleOut > 0) { - Info<< " without scaling" << endl; - } - else - { - Info<< " with scaling " << scaleFactor << endl; - surf.scalePoints(scaleFactor); + Info<< " -scaleOut " << scaleOut << endl; + surf.scalePoints(scaleOut); } + + Info<< "writing " << exportName; surf.write(exportName); }