From cd199d599e890cff13e3cc1ec9024846809d79d9 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Sat, 25 Oct 2008 16:54:10 +0200 Subject: [PATCH] added triSurface scaling option to surfaceConvert/surfaceMeshConvert --- .../surface/surfaceConvert/surfaceConvert.C | 74 +++++++++++++------ .../surfaceMeshConvert/surfaceMeshConvert.C | 21 +++--- 2 files changed, 64 insertions(+), 31 deletions(-) diff --git a/applications/utilities/surface/surfaceConvert/surfaceConvert.C b/applications/utilities/surface/surfaceConvert/surfaceConvert.C index a2a62378db..3d3c9cbde5 100644 --- a/applications/utilities/surface/surfaceConvert/surfaceConvert.C +++ b/applications/utilities/surface/surfaceConvert/surfaceConvert.C @@ -22,9 +22,26 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Application + surfaceConvert + Description - Converts to and from Foam surface format. Optionally orders triangles - by region. + Converts from one surface mesh format to another + +Usage + - surfaceConvert inputFile outputFile [OPTION] + + @param -clean \n + Perform some surface checking/cleanup on the input surface + + @param -scale \ \n + Specify a scaling factor for writing the files + + @param -group \n + Orders faces by region + +Note + The filename extensions are used to determine the file format type. \*---------------------------------------------------------------------------*/ @@ -44,34 +61,41 @@ int main(int argc, char *argv[]) { argList::noParallel(); argList::validArgs.clear(); - argList::validOptions.insert("cleanup", ""); + argList::validArgs.append("inputFile"); + argList::validArgs.append("outputFile"); + argList::validOptions.insert("clean", ""); + argList::validOptions.insert("scale", "scale"); argList::validOptions.insert("group", ""); - argList::validArgs.append("input surface file"); - argList::validArgs.append("output surface file"); + argList args(argc, argv); + const stringList& params = args.additionalArgs(); - fileName inFileName(args.additionalArgs()[0]); - fileName outFileName(args.additionalArgs()[1]); + scalar scaleFactor = 0; + if (args.options().found("scale")) + { + IStringStream(args.options()["scale"])() >> scaleFactor; + } - if (outFileName == inFileName) + fileName importName(params[0]); + fileName exportName(params[1]); + + if (importName == exportName) { FatalErrorIn(args.executable()) - << "Output file " << outFileName - << " would overwrite input file." + << "Output file " << exportName << " would overwrite input file." << exit(FatalError); } - Info << "Reading : " << inFileName << endl; - triSurface surf(inFileName); + Info<< "Reading : " << importName << endl; + triSurface surf(importName); Info<< "Read surface:" << endl; surf.writeStats(Info); Info<< endl; - - if (args.options().found("cleanup")) + if (args.options().found("clean")) { - Info << "Cleaning up surface" << endl; + Info<< "Cleaning up surface" << endl; surf.cleanup(true); Info<< "After cleaning up surface:" << endl; @@ -83,20 +107,28 @@ int main(int argc, char *argv[]) if (sortByRegion) { - Info << "Reordering faces into groups; one per region." << endl; + Info<< "Reordering faces into groups; one per region." << endl; } else { - Info << "Maintaining face ordering" << endl; + Info<< "Maintaining face ordering" << endl; } - Info << "Writing : " << outFileName << endl; - surf.write(outFileName, sortByRegion); + Info<< "writing " << exportName; + if (scaleFactor > 0) + { + Info<< " without scaling" << endl; + } + else + { + Info<< " with scaling " << scaleFactor << endl; + surf.scalePoints(scaleFactor); + } + surf.write(exportName, sortByRegion); - Info << "End\n" << endl; + Info<< "\nEnd\n" << endl; return 0; } - // ************************************************************************* // diff --git a/applications/utilities/surface/surfaceMeshConvert/surfaceMeshConvert.C b/applications/utilities/surface/surfaceMeshConvert/surfaceMeshConvert.C index ad09dc328c..0d70c77958 100644 --- a/applications/utilities/surface/surfaceMeshConvert/surfaceMeshConvert.C +++ b/applications/utilities/surface/surfaceMeshConvert/surfaceMeshConvert.C @@ -62,8 +62,8 @@ int main(int argc, char *argv[]) argList::noParallel(); argList::validArgs.append("inputFile"); argList::validArgs.append("outputFile"); - argList::validOptions.insert("scale", "scale"); argList::validOptions.insert("clean", ""); + argList::validOptions.insert("scale", "scale"); argList::validOptions.insert("triSurface", ""); # include "setRootCase.H" const stringList& params = args.additionalArgs(); @@ -77,6 +77,13 @@ int main(int argc, char *argv[]) fileName importName(params[0]); fileName exportName(params[1]); + if (importName == exportName) + { + FatalErrorIn(args.executable()) + << "Output file " << exportName << " would overwrite input file." + << exit(FatalError); + } + if ( !meshedSurface::canRead(importName.ext(), true) @@ -88,10 +95,6 @@ int main(int argc, char *argv[]) if (args.options().found("triSurface")) { -// # include "createTime.H" -// instantList timeDirs = timeSelector::select0(runTime, args); -// # include "createPolyMesh.H" - triSurface surf(importName); if (args.options().found("clean")) @@ -107,9 +110,8 @@ int main(int argc, char *argv[]) } else { - Info<< " triSurface does not yet support scaling " - << scaleFactor << endl; - // surf.scalePoints(scaleFactor); + Info<< " with scaling " << scaleFactor << endl; + surf.scalePoints(scaleFactor); } surf.write(exportName); } @@ -123,8 +125,6 @@ int main(int argc, char *argv[]) surf.checkOrientation(true); } - surf.scalePoints(scaleFactor); - Info<< "writing " << exportName; if (scaleFactor <= 0) { @@ -133,6 +133,7 @@ int main(int argc, char *argv[]) else { Info<< " with scaling " << scaleFactor << endl; + surf.scalePoints(scaleFactor); } surf.write(exportName); }