ENH: surfaceFeatureExtract: new syntax for non-manifold edges

This commit is contained in:
mattijs
2012-10-11 11:04:24 +01:00
parent f2f752a033
commit 674990765a
3 changed files with 79 additions and 7 deletions

View File

@ -721,16 +721,34 @@ int main(int argc, char *argv[])
deleteBox(surf, bb, true, edgeStat); deleteBox(surf, bb, true, edgeStat);
} }
const Switch manifoldEdges = const Switch nonManifoldEdges =
subsetDict.lookupOrDefault<Switch>("manifoldEdges", "no"); subsetDict.lookupOrDefault<Switch>("nonManifoldEdges", "yes");
if (manifoldEdges) if (!nonManifoldEdges)
{ {
Info<< "Removing all non-manifold edges" << endl; Info<< "Removing all non-manifold edges"
<< " (edges with > 2 connected faces)" << endl;
forAll(edgeStat, edgeI) forAll(edgeStat, edgeI)
{ {
if (surf.edgeFaces()[edgeI].size() != 2) if (surf.edgeFaces()[edgeI].size() > 2)
{
edgeStat[edgeI] = surfaceFeatures::NONE;
}
}
}
const Switch openEdges =
subsetDict.lookupOrDefault<Switch>("openEdges", "yes");
if (!openEdges)
{
Info<< "Removing all open edges"
<< " (edges with 1 connected face)" << endl;
forAll(edgeStat, edgeI)
{
if (surf.edgeFaces()[edgeI].size() == 1)
{ {
edgeStat[edgeI] = surfaceFeatures::NONE; edgeStat[edgeI] = surfaceFeatures::NONE;
} }

View File

@ -59,15 +59,21 @@ surface2.nas
{ {
// Use a plane to select feature edges // Use a plane to select feature edges
// (normal)(basePoint) // (normal)(basePoint)
// Keep only edges that intersect the plane will be included
plane (1 0 0)(0 0 0); plane (1 0 0)(0 0 0);
// Select feature edges using a box // Select feature edges using a box
// (minPt)(maxPt) // (minPt)(maxPt)
// Keep edges inside the box:
insideBox (0 0 0)(1 1 1); insideBox (0 0 0)(1 1 1);
// Keep edges outside the box:
outsideBox (0 0 0)(1 1 1); outsideBox (0 0 0)(1 1 1);
// Remove any non-manifold (open or > 2 connected faces) edges // Keep nonManifold edges (edges with >2 connected faces)
manifoldEdges no; nonManifoldEdges yes;
// Keep open edges (edges with 1 connected face)
openEdges yes;
} }
addFeatures addFeatures

View File

@ -0,0 +1,48 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object surfaceFeatureExtractDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
motorBike.obj
{
// How to obtain raw features (extractFromFile || extractFromSurface)
extractionMethod extractFromSurface;
extractFromSurfaceCoeffs
{
// Mark edges whose adjacent surface normals are at an angle less
// than includedAngle as features
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 150;
}
subsetFeatures
{
// Keep nonManifold edges (edges with >2 connected faces)
nonManifoldEdges no;
// Keep open edges (edges with 1 connected face)
openEdges yes;
}
// Write options
// Write features to obj format for postprocessing
writeObj yes;
}
// ************************************************************************* //