#2872 Fix creating range filter slices on LGR

This commit is contained in:
Jacob Støren 2018-05-09 13:47:58 +02:00
parent d6d894f631
commit 83d3a033d8
5 changed files with 18 additions and 6 deletions

View File

@ -63,11 +63,13 @@ void RicNewSliceRangeFilterFeature::onActionTriggered(bool isChecked)
RicRangeFilterNewExec* filterExec = new RicRangeFilterNewExec(rangeFilterCollection); RicRangeFilterNewExec* filterExec = new RicRangeFilterNewExec(rangeFilterCollection);
QVariantList list = userData.toList(); QVariantList list = userData.toList();
CAF_ASSERT(list.size() == 2); CAF_ASSERT(list.size() == 3);
int direction = list[0].toInt(); int direction = list[0].toInt();
int sliceStart = list[1].toInt(); int sliceStart = list[1].toInt();
int gridIndex = list[2].toInt();
filterExec->m_gridIndex = gridIndex;
if (direction == 0) if (direction == 0)
{ {
filterExec->m_iSlice = true; filterExec->m_iSlice = true;

View File

@ -27,18 +27,20 @@
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RicRangeFilterExecImpl::RicRangeFilterExecImpl(RimCellRangeFilterCollection* rangeFilterCollection, RimCellRangeFilter* rangeFilter) RicRangeFilterExecImpl::RicRangeFilterExecImpl(RimCellRangeFilterCollection* rangeFilterCollection,
RimCellRangeFilter* insertBeforeCellRangeFilter)
: CmdExecuteCommand(nullptr) : CmdExecuteCommand(nullptr)
{ {
CVF_ASSERT(rangeFilterCollection); CVF_ASSERT(rangeFilterCollection);
m_cellRangeFilterCollection = rangeFilterCollection; m_cellRangeFilterCollection = rangeFilterCollection;
m_cellRangeFilter = rangeFilter; m_insertBeforeCellRangeFilter = insertBeforeCellRangeFilter;
m_iSlice = false; m_iSlice = false;
m_jSlice = false; m_jSlice = false;
m_kSlice = false; m_kSlice = false;
m_gridIndex = 0;
m_iSliceStart = -1; m_iSliceStart = -1;
m_jSliceStart = -1; m_jSliceStart = -1;
m_kSliceStart = -1; m_kSliceStart = -1;
@ -61,6 +63,8 @@ RimCellRangeFilter* RicRangeFilterExecImpl::createRangeFilter()
RimCellRangeFilter* rangeFilter = new RimCellRangeFilter(); RimCellRangeFilter* rangeFilter = new RimCellRangeFilter();
size_t flterIndex = m_cellRangeFilterCollection->rangeFilters().size() + 1; size_t flterIndex = m_cellRangeFilterCollection->rangeFilters().size() + 1;
rangeFilter->gridIndex = m_gridIndex;
rangeFilter->name = QString("New Filter (%1)").arg(flterIndex); rangeFilter->name = QString("New Filter (%1)").arg(flterIndex);
@ -87,6 +91,7 @@ RimCellRangeFilter* RicRangeFilterExecImpl::createRangeFilter()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicRangeFilterExecImpl::applyCommandDataOnFilter(RimCellRangeFilter* rangeFilter) void RicRangeFilterExecImpl::applyCommandDataOnFilter(RimCellRangeFilter* rangeFilter)
{ {
rangeFilter->gridIndex = m_gridIndex;
if (m_iSlice) if (m_iSlice)
{ {
rangeFilter->cellCountI = 1; rangeFilter->cellCountI = 1;

View File

@ -31,7 +31,8 @@ class RimCellRangeFilterCollection;
class RicRangeFilterExecImpl : public caf::CmdExecuteCommand class RicRangeFilterExecImpl : public caf::CmdExecuteCommand
{ {
public: public:
RicRangeFilterExecImpl(RimCellRangeFilterCollection* rangeFilterCollection, RimCellRangeFilter* rangeFilter = nullptr); RicRangeFilterExecImpl(RimCellRangeFilterCollection* rangeFilterCollection,
RimCellRangeFilter* insertBeforeCellRangeFilter = nullptr);
virtual ~RicRangeFilterExecImpl(); virtual ~RicRangeFilterExecImpl();
virtual QString name() = 0; virtual QString name() = 0;
@ -43,6 +44,7 @@ public:
bool m_jSlice; bool m_jSlice;
bool m_kSlice; bool m_kSlice;
int m_gridIndex;
int m_iSliceStart; int m_iSliceStart;
int m_jSliceStart; int m_jSliceStart;
int m_kSliceStart; int m_kSliceStart;
@ -53,7 +55,7 @@ protected:
protected: protected:
caf::PdmPointer<RimCellRangeFilterCollection> m_cellRangeFilterCollection; caf::PdmPointer<RimCellRangeFilterCollection> m_cellRangeFilterCollection;
caf::PdmPointer<RimCellRangeFilter> m_cellRangeFilter; caf::PdmPointer<RimCellRangeFilter> m_insertBeforeCellRangeFilter;
}; };

View File

@ -57,7 +57,7 @@ void RicRangeFilterInsertExec::redo()
RimCellRangeFilter* rangeFilter = createRangeFilter(); RimCellRangeFilter* rangeFilter = createRangeFilter();
if (rangeFilter) if (rangeFilter)
{ {
size_t index = m_cellRangeFilterCollection->rangeFilters.index(m_cellRangeFilter); size_t index = m_cellRangeFilterCollection->rangeFilters.index(m_insertBeforeCellRangeFilter);
CVF_ASSERT(index < m_cellRangeFilterCollection->rangeFilters.size()); CVF_ASSERT(index < m_cellRangeFilterCollection->rangeFilters.size());
m_cellRangeFilterCollection->rangeFilters.insertAt(static_cast<int>(index), rangeFilter); m_cellRangeFilterCollection->rangeFilters.insertAt(static_cast<int>(index), rangeFilter);

View File

@ -278,14 +278,17 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
QVariantList iSliceList; QVariantList iSliceList;
iSliceList.push_back(0); iSliceList.push_back(0);
iSliceList.push_back(CVF_MAX(static_cast<int>(i + 1), 1)); iSliceList.push_back(CVF_MAX(static_cast<int>(i + 1), 1));
iSliceList.push_back(m_currentGridIdx);
QVariantList jSliceList; QVariantList jSliceList;
jSliceList.push_back(1); jSliceList.push_back(1);
jSliceList.push_back(CVF_MAX(static_cast<int>(j + 1), 1)); jSliceList.push_back(CVF_MAX(static_cast<int>(j + 1), 1));
jSliceList.push_back(m_currentGridIdx);
QVariantList kSliceList; QVariantList kSliceList;
kSliceList.push_back(2); kSliceList.push_back(2);
kSliceList.push_back(CVF_MAX(static_cast<int>(k + 1), 1)); kSliceList.push_back(CVF_MAX(static_cast<int>(k + 1), 1));
kSliceList.push_back(m_currentGridIdx);
menuBuilder.subMenuStart("Range Filter Slice", QIcon(":/CellFilter_Range.png")); menuBuilder.subMenuStart("Range Filter Slice", QIcon(":/CellFilter_Range.png"));