(#266) Create parts from selection in derived classes of RimView

This commit is contained in:
Magne Sjaastad
2015-11-17 13:18:45 +01:00
parent d72861f929
commit 3bc7b88ca7
7 changed files with 118 additions and 91 deletions
@@ -43,6 +43,7 @@
#include "RivGeoMechPartMgr.h"
#include "RivGeoMechPartMgrCache.h"
#include "RivGeoMechVizLogic.h"
#include "RivGridBoxGenerator.h"
#include "RivSingleCellPartGenerator.h"
#include "cafCadNavigation.h"
@@ -284,36 +285,6 @@ void RimGeoMechView::updateCurrentTimeStep()
femBBox,
scaleTransform());
frameScene->addModel(wellPathModel.p());
{
cvf::String highlightModelName = "HighLightModel";
cvf::ref<cvf::ModelBasicList> highlightModelBasicList = new cvf::ModelBasicList;
highlightModelBasicList->setName(highlightModelName);
RiuSelectionManager* riuSelManager = RiuSelectionManager::instance();
std::vector<RiuSelectionItem*> items;
riuSelManager->selectedItems(items);
for (size_t i = 0; i < items.size(); i++)
{
if (items[i]->type() == RiuSelectionItem::GEOMECH_SELECTION_OBJECT)
{
RiuGeoMechSelectionItem* geomSelItem = static_cast<RiuGeoMechSelectionItem*>(items[i]);
if (geomSelItem &&
geomSelItem->m_view &&
geomSelItem->m_view->geoMechCase())
{
RivSingleCellPartGenerator partGen(geomSelItem->m_view->geoMechCase(), geomSelItem->m_gridIndex, geomSelItem->m_cellIndex);
cvf::ref<cvf::Part> part = partGen.createPart(geomSelItem->m_color);
part->setTransform(this->scaleTransform());
highlightModelBasicList->addPart(part.p());
}
}
}
highlightModelBasicList->updateBoundingBoxesRecursive();
frameScene->addModel(highlightModelBasicList.p());
}
}
}
@@ -615,6 +586,33 @@ void RimGeoMechView::calculateCurrentTotalCellVisibility(cvf::UByteArray* totalV
m_vizLogic->calculateCurrentTotalCellVisibility(totalVisibility, m_currentTimeStep);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechView::createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts)
{
RiuSelectionManager* riuSelManager = RiuSelectionManager::instance();
std::vector<RiuSelectionItem*> items;
riuSelManager->selectedItems(items);
for (size_t i = 0; i < items.size(); i++)
{
if (items[i]->type() == RiuSelectionItem::GEOMECH_SELECTION_OBJECT)
{
RiuGeoMechSelectionItem* geomSelItem = static_cast<RiuGeoMechSelectionItem*>(items[i]);
if (geomSelItem &&
geomSelItem->m_view == this &&
geomSelItem->m_view->geoMechCase())
{
RivSingleCellPartGenerator partGen(geomSelItem->m_view->geoMechCase(), geomSelItem->m_gridIndex, geomSelItem->m_cellIndex);
cvf::ref<cvf::Part> part = partGen.createPart(geomSelItem->m_color);
part->setTransform(this->scaleTransform());
parts->push_back(part.p());
}
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------