#2999 Add support for specifying a list of single cells as range filter

This commit is contained in:
Magne Sjaastad
2018-05-31 11:41:48 +02:00
parent d8cc40b8bc
commit 8afc036ea3
3 changed files with 89 additions and 20 deletions

View File

@@ -70,25 +70,47 @@ void RimCellRangeFilterCollection::compoundCellRangeFilter(cvf::CellRangeFilter*
{
if (rangeFilter->filterMode == RimCellFilter::INCLUDE)
{
cellRangeFilter->addCellIncludeRange(
rangeFilter->startIndexI - 1,
rangeFilter->startIndexJ - 1,
rangeFilter->startIndexK - 1,
rangeFilter->startIndexI - 1 + rangeFilter->cellCountI,
rangeFilter->startIndexJ - 1 + rangeFilter->cellCountJ,
rangeFilter->startIndexK - 1 + rangeFilter->cellCountK,
rangeFilter->propagateToSubGrids());
if (rangeFilter->useIndividualCellIndices())
{
for (const auto& cellIndex : rangeFilter->individualCellIndices())
{
cellRangeFilter->addCellInclude(
cellIndex.x() - 1 , cellIndex.y() - 1, cellIndex.z() - 1, rangeFilter->propagateToSubGrids());
}
}
else
{
cellRangeFilter->addCellIncludeRange(
rangeFilter->startIndexI - 1,
rangeFilter->startIndexJ - 1,
rangeFilter->startIndexK - 1,
rangeFilter->startIndexI - 1 + rangeFilter->cellCountI,
rangeFilter->startIndexJ - 1 + rangeFilter->cellCountJ,
rangeFilter->startIndexK - 1 + rangeFilter->cellCountK,
rangeFilter->propagateToSubGrids());
}
}
else
{
cellRangeFilter->addCellExcludeRange(
rangeFilter->startIndexI - 1,
rangeFilter->startIndexJ - 1,
rangeFilter->startIndexK - 1,
rangeFilter->startIndexI - 1 + rangeFilter->cellCountI,
rangeFilter->startIndexJ - 1 + rangeFilter->cellCountJ,
rangeFilter->startIndexK - 1 + rangeFilter->cellCountK,
rangeFilter->propagateToSubGrids());
if (rangeFilter->useIndividualCellIndices())
{
for (const auto& cellIndex : rangeFilter->individualCellIndices())
{
cellRangeFilter->addCellExclude(
cellIndex.x() - 1, cellIndex.y() - 1, cellIndex.z() - 1, rangeFilter->propagateToSubGrids());
}
}
else
{
cellRangeFilter->addCellExcludeRange(
rangeFilter->startIndexI - 1,
rangeFilter->startIndexJ - 1,
rangeFilter->startIndexK - 1,
rangeFilter->startIndexI - 1 + rangeFilter->cellCountI,
rangeFilter->startIndexJ - 1 + rangeFilter->cellCountJ,
rangeFilter->startIndexK - 1 + rangeFilter->cellCountK,
rangeFilter->propagateToSubGrids());
}
}
}
}