#4857 Fix measurement picking in comparison view.

This commit is contained in:
Kristian Bendiksen 2019-10-28 14:08:15 +01:00
parent 6e43fee396
commit 2c3b51ad3f
7 changed files with 22 additions and 14 deletions

View File

@ -269,7 +269,7 @@ RimGridView* RiaApplication::activeMainOrComparisonGridView()
RimGridView* activeView = RiaApplication::instance()->activeGridView(); RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* viewOrComparisonView = activeView; RimGridView* viewOrComparisonView = activeView;
if ( activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() ) if ( activeView != nullptr && activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() )
{ {
if ( RimGridView* compView = dynamic_cast<RimGridView*>( activeView->activeComparisonView() ) ) if ( RimGridView* compView = dynamic_cast<RimGridView*>( activeView->activeComparisonView() ) )
{ {

View File

@ -23,6 +23,7 @@
#include "RiuViewerCommands.h" #include "RiuViewerCommands.h"
#include "Rim3dView.h" #include "Rim3dView.h"
#include "RimGridView.h"
#include "RimIntersection.h" #include "RimIntersection.h"
#include "RimMeasurement.h" #include "RimMeasurement.h"
#include "RimProject.h" #include "RimProject.h"
@ -84,7 +85,7 @@ void RicMeasurementPickEventHandler::enablePolyLineMode( bool polyLineModeEnable
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& eventObject ) bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& eventObject )
{ {
auto measurement = RiaApplication::instance()->project()->measurement(); RimMeasurement* measurement = RiaApplication::instance()->project()->measurement();
if ( measurement && measurement->measurementMode() ) if ( measurement && measurement->measurementMode() )
{ {
@ -98,8 +99,7 @@ bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& ev
} }
} }
Rim3dView* rimView = RiaApplication::instance()->activeReservoirView(); Rim3dView* rimView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( firstGeometryPickInfo && rimView ) if ( firstGeometryPickInfo && rimView )
{ {
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform(); cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();

View File

@ -23,6 +23,7 @@
#include "Rim3dView.h" #include "Rim3dView.h"
#include "RimMeasurement.h" #include "RimMeasurement.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimGridView.h"
#include "cafCmdFeatureManager.h" #include "cafCmdFeatureManager.h"
#include "cafPdmUiPropertyViewDialog.h" #include "cafPdmUiPropertyViewDialog.h"
@ -123,7 +124,7 @@ Rim3dView* RicToggleMeasurementModeFeature::activeView() const
{ {
RiaApplication* app = RiaApplication::instance(); RiaApplication* app = RiaApplication::instance();
CAF_ASSERT( app ); CAF_ASSERT( app );
auto view = app->activeReservoirView(); auto view = dynamic_cast<Rim3dView*>(app->activeMainOrComparisonGridView());
return view; return view;
} }

View File

@ -21,6 +21,7 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "Rim3dView.h" #include "Rim3dView.h"
#include "RimGridView.h"
#include "MeasurementCommands/RicMeasurementPickEventHandler.h" #include "MeasurementCommands/RicMeasurementPickEventHandler.h"
@ -89,7 +90,7 @@ RimMeasurement::MeasurementMode RimMeasurement::measurementMode() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimMeasurement::addPointInDomainCoords( const Vec3d& domainCoord ) void RimMeasurement::addPointInDomainCoords( const Vec3d& domainCoord )
{ {
auto activeView = RiaApplication::instance()->activeReservoirView(); auto activeView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( m_sourceView.p() != activeView ) if ( m_sourceView.p() != activeView )
{ {
@ -194,8 +195,6 @@ RimMeasurement::Lengths RimMeasurement::calculateLenghts() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimMeasurement::updateView() const void RimMeasurement::updateView() const
{ {
if ( m_sourceView ) Rim3dView* rimView = RiaApplication::instance()->activeReservoirView();
{ rimView->createMeasurementDisplayModelAndRedraw();
m_sourceView->updateMeasurement();
}
} }

View File

@ -1027,11 +1027,18 @@ void Rim3dView::updateZScaleLabel()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void Rim3dView::updateMeasurement() void Rim3dView::createMeasurementDisplayModelAndRedraw()
{ {
if ( m_viewer ) appendMeasurementToModel();
if ( Rim3dView* depView = prepareComparisonView() )
{
depView->appendMeasurementToModel();
restoreComparisonView();
}
if ( nativeOrOverrideViewer() )
{ {
appendMeasurementToModel();
nativeOrOverrideViewer()->update(); nativeOrOverrideViewer()->update();
} }
} }

View File

@ -161,7 +161,7 @@ public:
void updateAnnotationItems(); void updateAnnotationItems();
void updateScaling(); void updateScaling();
void updateZScaleLabel(); void updateZScaleLabel();
void updateMeasurement(); void createMeasurementDisplayModelAndRedraw();
bool isMasterView() const; bool isMasterView() const;
Rim3dView* activeComparisonView() const; Rim3dView* activeComparisonView() const;

View File

@ -324,6 +324,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]->createHighlightAndGridBoxDisplayModelWithRedraw(); visibleViews[i]->createHighlightAndGridBoxDisplayModelWithRedraw();
visibleViews[i]->createMeasurementDisplayModelAndRedraw();
} }
} }
} }