mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 22:50:25 -05:00
#14226 intersection along ijk axis
* #14226 Add intersection along i/j/k axis Add a new persistent intersection type that follows the grid pillars at a fixed i, j or k index. Unlike the axis-aligned intersection box, the surface is built from the grid cell faces and therefore steps along faults and curved pillars, which is useful for structural restoration analysis. The user selects the axis, the fixed index, the two perpendicular index ranges and which cell face (front/back pillar) to use. The geometry generator emits the chosen cell face of every cell in the index plane directly from the native pillar corners, so cell result colors map exactly. The feature is available from the Intersections context menu for Eclipse views and supports 3D-view picking and cell result readout.
This commit is contained in:
1 parent
2ebefe73b6
commit
5dc3374733
26 files changed
+1841
-24
No files matched your search
+2
@@ -29,6 +29,7 @@
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimGridCrossPlotCurve.h"
|
||||
#include "RimGridCrossPlotDataSet.h"
|
||||
#include "RimIjkIntersection.h"
|
||||
#include "RimMimeData.h"
|
||||
#include "RimModeledWellPath.h"
|
||||
#include "RimSummaryMultiPlot.h"
|
||||
@@ -125,6 +126,7 @@ bool RicCopyReferencesToClipboardFeature::isCopyOfObjectSupported( caf::PdmObjec
|
||||
if ( dynamic_cast<RimEclipseCase*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimExtrudedCurveIntersection*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimBoxIntersection*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimIjkIntersection*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimSummaryPlot*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimFractureTemplate*>( pdmObject ) ) return true;
|
||||
if ( dynamic_cast<RimEnsembleCurveSet*>( pdmObject ) ) return true;
|
||||
|
||||
+30
-1
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "RimBoxIntersection.h"
|
||||
#include "RimExtrudedCurveIntersection.h"
|
||||
#include "RimIjkIntersection.h"
|
||||
#include "RimIntersectionCollection.h"
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
@@ -47,7 +48,10 @@ bool RicPasteIntersectionsFeature::isCommandEnabled() const
|
||||
std::vector<caf::PdmPointer<RimBoxIntersection>> intersectionBoxObjects;
|
||||
objectGroup.objectsByType( &intersectionBoxObjects );
|
||||
|
||||
if ( intersectionObjects.empty() && intersectionBoxObjects.empty() )
|
||||
std::vector<caf::PdmPointer<RimIjkIntersection>> ijkIntersectionObjects;
|
||||
objectGroup.objectsByType( &ijkIntersectionObjects );
|
||||
|
||||
if ( intersectionObjects.empty() && intersectionBoxObjects.empty() && ijkIntersectionObjects.empty() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -110,6 +114,25 @@ void RicPasteIntersectionsFeature::onActionTriggered( bool isChecked )
|
||||
intersectionCollection->appendIntersectionBoxNoUpdate( intersectionBox );
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<caf::PdmPointer<RimIjkIntersection>> ijkIntersectionObjects;
|
||||
objectGroup.objectsByType( &ijkIntersectionObjects );
|
||||
|
||||
for ( size_t i = 0; i < ijkIntersectionObjects.size(); i++ )
|
||||
{
|
||||
RimIjkIntersection* ijkIntersection = ijkIntersectionObjects[i]->copyObject<RimIjkIntersection>();
|
||||
QString nameOfCopy = QString( "Copy of " ) + ijkIntersection->name();
|
||||
ijkIntersection->setName( nameOfCopy );
|
||||
|
||||
if ( i == ijkIntersectionObjects.size() - 1 )
|
||||
{
|
||||
intersectionCollection->appendIjkIntersectionAndUpdate( ijkIntersection );
|
||||
}
|
||||
else
|
||||
{
|
||||
intersectionCollection->appendIjkIntersectionNoUpdate( ijkIntersection );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -145,5 +168,11 @@ RimIntersectionCollection* RicPasteIntersectionsFeature::findIntersectionCollect
|
||||
return intersectionBox->firstAncestorOrThisOfType<RimIntersectionCollection>();
|
||||
}
|
||||
|
||||
RimIjkIntersection* ijkIntersection = dynamic_cast<RimIjkIntersection*>( objectHandle );
|
||||
if ( ijkIntersection )
|
||||
{
|
||||
return ijkIntersection->firstAncestorOrThisOfType<RimIntersectionCollection>();
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
Reference in new issue
Block a user