Merge pull request #4947 from OPM/feature-co-visualization-into-linked-views

Improve Linked Views and include Co visualization #4892
This commit is contained in:
Jacob Støren
2019-10-30 08:39:07 +01:00
committed by GitHub
33 changed files with 690 additions and 208 deletions

View File

@@ -40,11 +40,13 @@
#include "RigMainGrid.h"
#include "RigVirtualPerforationTransmissibilities.h"
#include "RiaOptionItemFactory.h"
#include "Rim2dIntersectionView.h"
#include "RimCellEdgeColors.h"
#include "RimContextCommandBuilder.h"
#include "RimEclipseCase.h"
#include "RimEclipseCellColors.h"
#include "RimEclipseContourMapView.h"
#include "RimEclipseFaultColors.h"
#include "RimEclipseView.h"
#include "RimEllipseFractureTemplate.h"
@@ -53,11 +55,13 @@
#include "RimFracture.h"
#include "RimGeoMechCase.h"
#include "RimGeoMechCellColors.h"
#include "RimGeoMechContourMapView.h"
#include "RimGeoMechView.h"
#include "RimIntersection.h"
#include "RimIntersectionBox.h"
#include "RimLegendConfig.h"
#include "RimPerforationInterval.h"
#include "RimProject.h"
#include "RimSimWellInView.h"
#include "RimStimPlanFractureTemplate.h"
#include "RimTextAnnotation.h"
@@ -148,6 +152,41 @@ void RiuViewerCommands::setOwnerView( Rim3dView* owner )
m_reservoirView = owner;
}
void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder )
{
RimGridView* mainGridView = dynamic_cast<RimGridView*>( m_reservoirView.p() );
if ( mainGridView && !mainGridView->activeComparisonView() )
{
std::vector<Rim3dView*> validComparisonViews;
std::vector<Rim3dView*> views;
RiaApplication::instance()->project()->allViews( views );
for ( auto view : views )
{
if ( !dynamic_cast<RimGridView*>( view ) ) continue;
if ( dynamic_cast<RimEclipseContourMapView*>( view ) ) continue;
if ( dynamic_cast<RimGeoMechContourMapView*>( view ) ) continue;
if ( view != mainGridView )
{
validComparisonViews.push_back( view );
}
}
if ( validComparisonViews.size() )
{
menuBuilder->subMenuStart( "Compare To ...", QIcon( ":/ComparisonView16x16.png" ) );
for ( auto view : validComparisonViews )
{
menuBuilder->addCmdFeatureWithUserData( "RicCompareTo3dViewFeature",
view->autoName(),
QVariant::fromValue( static_cast<void*>( view ) ) );
}
menuBuilder->subMenuEnd();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -518,7 +557,10 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
menuBuilder << "RicLinkViewFeature";
menuBuilder << "RicShowLinkOptionsFeature";
menuBuilder << "RicSetMasterViewFeature";
addCompareToViewMenu( &menuBuilder );
menuBuilder.addSeparator();
menuBuilder << "RicUnLinkViewFeature";
menuBuilder << "RicRemoveComparison3dViewFeature";
}
else if ( int2dView )
{
@@ -1312,17 +1354,20 @@ void RiuViewerCommands::handleTextPicking( int winPosX, int winPosY, cvf::HitIte
ref<Ray> ray = m_viewer->mainCamera()->rayFromWindowCoordinates( translatedMousePosX, translatedMousePosY );
for ( size_t pIdx = 0; pIdx < partCollection.size(); ++pIdx )
if ( ray.notNull() )
{
DrawableText* textDrawable = dynamic_cast<DrawableText*>( partCollection[pIdx]->drawable() );
if ( textDrawable )
for ( size_t pIdx = 0; pIdx < partCollection.size(); ++pIdx )
{
cvf::Vec3d ppoint;
if ( textDrawable->rayIntersect( *ray, *( m_viewer->mainCamera() ), &ppoint ) )
DrawableText* textDrawable = dynamic_cast<DrawableText*>(partCollection[pIdx]->drawable());
if ( textDrawable )
{
cvf::ref<HitItem> hitItem = new HitItem( 0, ppoint );
hitItem->setPart( partCollection[pIdx].p() );
hitItems->add( hitItem.p() );
cvf::Vec3d ppoint;
if ( textDrawable->rayIntersect(*ray, *(m_viewer->mainCamera()), &ppoint) )
{
cvf::ref<HitItem> hitItem = new HitItem(0, ppoint);
hitItem->setPart(partCollection[pIdx].p());
hitItems->add(hitItem.p());
}
}
}
}

View File

@@ -41,7 +41,8 @@ class QMouseEvent;
namespace caf
{
class PdmObject;
}
class CmdFeatureMenuBuilder;
} // namespace caf
namespace cvf
{
@@ -89,6 +90,8 @@ private:
bool handleOverlayItemPicking( int winPosX, int winPosY );
void addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBuilder );
static void addDefaultPickEventHandler( RicDefaultPickEventHandler* pickEventHandler );
static void removeDefaultPickEventHandler( RicDefaultPickEventHandler* pickEventHandler );