mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#266) Create parts from selection in derived classes of RimView
This commit is contained in:
@@ -483,53 +483,6 @@ void RimEclipseView::createDisplayModel()
|
|||||||
m_overlayInfoConfig()->update3DInfo();
|
m_overlayInfoConfig()->update3DInfo();
|
||||||
updateLegends();
|
updateLegends();
|
||||||
}
|
}
|
||||||
|
|
||||||
createOverlayDisplayModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimEclipseView::createOverlayDisplayModel()
|
|
||||||
{
|
|
||||||
cvf::ref<cvf::Scene> overlayScene = new cvf::Scene;
|
|
||||||
|
|
||||||
{
|
|
||||||
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::ECLIPSE_SELECTION_OBJECT)
|
|
||||||
{
|
|
||||||
RiuEclipseSelectionItem* eclipseSelItem = static_cast<RiuEclipseSelectionItem*>(items[i]);
|
|
||||||
if (eclipseSelItem &&
|
|
||||||
eclipseSelItem->m_view)
|
|
||||||
{
|
|
||||||
CVF_ASSERT(eclipseSelItem->m_view->eclipseCase());
|
|
||||||
CVF_ASSERT(eclipseSelItem->m_view->eclipseCase()->reservoirData());
|
|
||||||
|
|
||||||
RivSingleCellPartGenerator partGen(eclipseSelItem->m_view->eclipseCase()->reservoirData(), eclipseSelItem->m_gridIndex, eclipseSelItem->m_cellIndex);
|
|
||||||
|
|
||||||
cvf::ref<cvf::Part> part = partGen.createPart(eclipseSelItem->m_color);
|
|
||||||
part->setTransform(this->scaleTransform());
|
|
||||||
|
|
||||||
highlightModelBasicList->addPart(part.p());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
highlightModelBasicList->updateBoundingBoxesRecursive();
|
|
||||||
overlayScene->addModel(highlightModelBasicList.p());
|
|
||||||
}
|
|
||||||
|
|
||||||
m_viewer->setOverlayScene(overlayScene.p());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -1693,6 +1646,36 @@ void RimEclipseView::calculateCurrentTotalCellVisibility(cvf::UByteArray* totalV
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimEclipseView::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::ECLIPSE_SELECTION_OBJECT)
|
||||||
|
{
|
||||||
|
RiuEclipseSelectionItem* eclipseSelItem = static_cast<RiuEclipseSelectionItem*>(items[i]);
|
||||||
|
if (eclipseSelItem && eclipseSelItem->m_view == this)
|
||||||
|
{
|
||||||
|
CVF_ASSERT(eclipseSelItem->m_view->eclipseCase());
|
||||||
|
CVF_ASSERT(eclipseSelItem->m_view->eclipseCase()->reservoirData());
|
||||||
|
|
||||||
|
RivSingleCellPartGenerator partGen(eclipseSelItem->m_view->eclipseCase()->reservoirData(), eclipseSelItem->m_gridIndex, eclipseSelItem->m_cellIndex);
|
||||||
|
|
||||||
|
cvf::ref<cvf::Part> part = partGen.createPart(eclipseSelItem->m_color);
|
||||||
|
part->setTransform(this->scaleTransform());
|
||||||
|
|
||||||
|
parts->push_back(part.p());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -140,9 +140,10 @@ protected:
|
|||||||
virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
|
virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
|
||||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||||
|
|
||||||
|
virtual void createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void createDisplayModel();
|
void createDisplayModel();
|
||||||
void createOverlayDisplayModel();
|
|
||||||
void updateDisplayModelVisibility();
|
void updateDisplayModelVisibility();
|
||||||
virtual void updateCurrentTimeStep();
|
virtual void updateCurrentTimeStep();
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
#include "RivGeoMechPartMgr.h"
|
#include "RivGeoMechPartMgr.h"
|
||||||
#include "RivGeoMechPartMgrCache.h"
|
#include "RivGeoMechPartMgrCache.h"
|
||||||
#include "RivGeoMechVizLogic.h"
|
#include "RivGeoMechVizLogic.h"
|
||||||
|
#include "RivGridBoxGenerator.h"
|
||||||
#include "RivSingleCellPartGenerator.h"
|
#include "RivSingleCellPartGenerator.h"
|
||||||
|
|
||||||
#include "cafCadNavigation.h"
|
#include "cafCadNavigation.h"
|
||||||
@@ -284,36 +285,6 @@ void RimGeoMechView::updateCurrentTimeStep()
|
|||||||
femBBox,
|
femBBox,
|
||||||
scaleTransform());
|
scaleTransform());
|
||||||
frameScene->addModel(wellPathModel.p());
|
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);
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||||
|
|
||||||
|
virtual void createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void createDisplayModel();
|
virtual void createDisplayModel();
|
||||||
@@ -103,6 +104,7 @@ private:
|
|||||||
|
|
||||||
virtual void calculateCurrentTotalCellVisibility(cvf::UByteArray* totalVisibility);
|
virtual void calculateCurrentTotalCellVisibility(cvf::UByteArray* totalVisibility);
|
||||||
|
|
||||||
|
|
||||||
caf::PdmChildField<RimGeoMechPropertyFilterCollection*> m_propertyFilterCollection;
|
caf::PdmChildField<RimGeoMechPropertyFilterCollection*> m_propertyFilterCollection;
|
||||||
caf::PdmPointer<RimGeoMechPropertyFilterCollection> m_overridePropertyFilterCollection;
|
caf::PdmPointer<RimGeoMechPropertyFilterCollection> m_overridePropertyFilterCollection;
|
||||||
|
|
||||||
|
|||||||
@@ -248,17 +248,6 @@ void RimView::setCurrentTimeStep(int frameIndex)
|
|||||||
m_currentReservoirCellVisibility = NULL;
|
m_currentReservoirCellVisibility = NULL;
|
||||||
}
|
}
|
||||||
this->updateCurrentTimeStep();
|
this->updateCurrentTimeStep();
|
||||||
|
|
||||||
cvf::Scene* frameScene = m_viewer->frame(m_currentTimeStep);
|
|
||||||
if (frameScene)
|
|
||||||
{
|
|
||||||
frameScene->removeModel(m_viewer->gridBoxGenerator()->model());
|
|
||||||
|
|
||||||
if (true)
|
|
||||||
{
|
|
||||||
frameScene->addModel(m_viewer->gridBoxGenerator()->model());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@@ -281,6 +270,7 @@ void RimView::createDisplayModelAndRedraw()
|
|||||||
|
|
||||||
createDisplayModel();
|
createDisplayModel();
|
||||||
updateDisplayModelVisibility();
|
updateDisplayModelVisibility();
|
||||||
|
createOverlayDisplayModel();
|
||||||
|
|
||||||
if (cameraPosition().isIdentity())
|
if (cameraPosition().isIdentity())
|
||||||
{
|
{
|
||||||
@@ -803,3 +793,49 @@ void RimView::updateGridBoxData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimView::createOverlayDisplayModelAndRedraw()
|
||||||
|
{
|
||||||
|
createOverlayDisplayModel();
|
||||||
|
|
||||||
|
if (m_viewer)
|
||||||
|
{
|
||||||
|
m_viewer->update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimView::createOverlayDisplayModel()
|
||||||
|
{
|
||||||
|
cvf::ref<cvf::Scene> overlayScene = new cvf::Scene;
|
||||||
|
|
||||||
|
cvf::Collection<cvf::Part> parts;
|
||||||
|
createPartCollectionFromSelection(&parts);
|
||||||
|
if (parts.size() > 0)
|
||||||
|
{
|
||||||
|
cvf::String highlightModelName = "HighLightModel";
|
||||||
|
|
||||||
|
cvf::ref<cvf::ModelBasicList> highlightModelBasicList = new cvf::ModelBasicList;
|
||||||
|
highlightModelBasicList->setName(highlightModelName);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < parts.size(); i++)
|
||||||
|
{
|
||||||
|
highlightModelBasicList->addPart(parts[i].p());
|
||||||
|
}
|
||||||
|
|
||||||
|
highlightModelBasicList->updateBoundingBoxesRecursive();
|
||||||
|
overlayScene->addModel(highlightModelBasicList.p());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true)
|
||||||
|
{
|
||||||
|
overlayScene->addModel(m_viewer->gridBoxGenerator()->model());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_viewer->setOverlayScene(overlayScene.p());
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include "cvfArray.h"
|
#include "cvfArray.h"
|
||||||
#include "cvfBase.h"
|
#include "cvfBase.h"
|
||||||
|
#include "cvfCollection.h"
|
||||||
#include "cvfObject.h"
|
#include "cvfObject.h"
|
||||||
|
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
@@ -51,6 +52,7 @@ namespace cvf
|
|||||||
class Scene;
|
class Scene;
|
||||||
class String;
|
class String;
|
||||||
class Transform;
|
class Transform;
|
||||||
|
class Part;
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
@@ -130,6 +132,7 @@ public:
|
|||||||
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) = 0;
|
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) = 0;
|
||||||
void scheduleCreateDisplayModelAndRedraw();
|
void scheduleCreateDisplayModelAndRedraw();
|
||||||
void createDisplayModelAndRedraw();
|
void createDisplayModelAndRedraw();
|
||||||
|
void createOverlayDisplayModelAndRedraw();
|
||||||
|
|
||||||
RimViewController* viewController() const;
|
RimViewController* viewController() const;
|
||||||
bool isMasterView() const;
|
bool isMasterView() const;
|
||||||
@@ -158,6 +161,10 @@ protected:
|
|||||||
static void removeModelByName(cvf::Scene* scene, const cvf::String& modelName);
|
static void removeModelByName(cvf::Scene* scene, const cvf::String& modelName);
|
||||||
|
|
||||||
virtual void createDisplayModel() = 0;
|
virtual void createDisplayModel() = 0;
|
||||||
|
|
||||||
|
void createOverlayDisplayModel();
|
||||||
|
virtual void createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts) = 0;
|
||||||
|
|
||||||
virtual void updateDisplayModelVisibility() = 0;
|
virtual void updateDisplayModelVisibility() = 0;
|
||||||
virtual void clampCurrentTimestep() = 0;
|
virtual void clampCurrentTimestep() = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ void RiuSelectionChangedHandler::scheduleUpdateForAllVisibleViews() const
|
|||||||
|
|
||||||
for (size_t i = 0; i < visibleViews.size(); i++)
|
for (size_t i = 0; i < visibleViews.size(); i++)
|
||||||
{
|
{
|
||||||
visibleViews[i]->scheduleCreateDisplayModelAndRedraw();
|
visibleViews[i]->createOverlayDisplayModelAndRedraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user