mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Returning feature edge enumeration from trimFeatures and writing out.
This commit is contained in:
@ -316,6 +316,8 @@ int main(int argc, char *argv[])
|
||||
Info<< "Feature line extraction is only valid on closed manifold surfaces."
|
||||
<< endl;
|
||||
|
||||
bool writeVTK = args.optionFound("writeVTK");
|
||||
bool writeObj = args.optionFound("writeObj");
|
||||
|
||||
const fileName surfFileName = args[1];
|
||||
const fileName outFileName = args[2];
|
||||
@ -324,6 +326,8 @@ int main(int argc, char *argv[])
|
||||
<< "Output feature set : " << outFileName << nl
|
||||
<< endl;
|
||||
|
||||
fileName sFeatFileName = surfFileName.lessExt().name();
|
||||
|
||||
|
||||
// Read
|
||||
// ~~~~
|
||||
@ -334,6 +338,13 @@ int main(int argc, char *argv[])
|
||||
surf.writeStats(Info);
|
||||
Info<< endl;
|
||||
|
||||
faceList faces(surf.size());
|
||||
|
||||
forAll(surf, fI)
|
||||
{
|
||||
faces[fI] = surf[fI].triFaceFace();
|
||||
}
|
||||
|
||||
|
||||
// Either construct features from surface&featureangle or read set.
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -467,13 +478,42 @@ int main(int argc, char *argv[])
|
||||
<< " internal edges : " << newSet.nInternalEdges() << nl
|
||||
<< endl;
|
||||
|
||||
// Dummy trim operation to mark features
|
||||
labelList featureEdgeIndexing = newSet.trimFeatures(-GREAT, 0);
|
||||
|
||||
scalarField surfacePtFeatureIndex(surf.points().size(), -1);
|
||||
|
||||
forAll(newSet.featureEdges(), eI)
|
||||
{
|
||||
const edge& e = surf.edges()[newSet.featureEdges()[eI]];
|
||||
|
||||
surfacePtFeatureIndex[surf.meshPoints()[e.start()]] =
|
||||
featureEdgeIndexing[newSet.featureEdges()[eI]];
|
||||
|
||||
surfacePtFeatureIndex[surf.meshPoints()[e.end()]] =
|
||||
featureEdgeIndexing[newSet.featureEdges()[eI]];
|
||||
}
|
||||
|
||||
if (writeVTK)
|
||||
{
|
||||
vtkSurfaceWriter<scalar>().write
|
||||
(
|
||||
runTime.constant()/"triSurface", // outputDir
|
||||
sFeatFileName, // surfaceName
|
||||
surf.points(),
|
||||
faces,
|
||||
"surfacePtFeatureIndex", // fieldName
|
||||
surfacePtFeatureIndex,
|
||||
true, // isNodeValues
|
||||
true // verbose
|
||||
);
|
||||
}
|
||||
|
||||
// Extracting and writing a featureEdgeMesh
|
||||
|
||||
Pout<< nl << "Writing featureEdgeMesh to constant/featureEdgeMesh."
|
||||
<< endl;
|
||||
|
||||
fileName sFeatFileName = surfFileName.lessExt().name();
|
||||
|
||||
featureEdgeMesh feMesh
|
||||
(
|
||||
IOobject
|
||||
@ -490,7 +530,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
feMesh.write();
|
||||
|
||||
if (args.optionFound("writeObj"))
|
||||
if (writeObj)
|
||||
{
|
||||
feMesh.writeObj(runTime.constant()/"featureEdgeMesh"/sFeatFileName);
|
||||
};
|
||||
@ -517,13 +557,6 @@ int main(int argc, char *argv[])
|
||||
|
||||
const vectorField& normals = searchSurf.faceNormals();
|
||||
|
||||
faceList faces(surf.size());
|
||||
|
||||
forAll(surf, fI)
|
||||
{
|
||||
faces[fI] = surf[fI].triFaceFace();
|
||||
}
|
||||
|
||||
scalar span = searchSurf.bounds().mag();
|
||||
|
||||
args.optionReadIfPresent("closeness", span);
|
||||
@ -794,7 +827,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
kField.write();
|
||||
|
||||
if (args.optionFound("writeVTK"))
|
||||
if (writeVTK)
|
||||
{
|
||||
vtkSurfaceWriter<scalar>().write
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user