2d intersection view filter support (#11711)

Enable filters in 2d intersection view. Controlled by "Use Cell Filters for Intersections" setting in Intersection Collection properties
This commit is contained in:
jonjenssen
2024-09-19 08:41:57 +02:00
committed by GitHub
parent f95b085419
commit e006fe52c9
5 changed files with 195 additions and 42 deletions

View File

@@ -842,52 +842,58 @@ void RivExtrudedCurveIntersectionPartMgr::appendMeshLinePartsToModel( cvf::Model
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RivExtrudedCurveIntersectionPartMgr::appendPolylinePartsToModel( Rim3dView& view, cvf::ModelBasicList* model, cvf::Transform* scaleTransform )
void RivExtrudedCurveIntersectionPartMgr::appendPolylinePartsToModel( Rim3dView& view,
cvf::ModelBasicList* model,
cvf::Transform* scaleTransform,
bool annotationOnly )
{
auto* curr2dView = dynamic_cast<Rim2dIntersectionView*>( &view );
if ( m_rimIntersection->inputPolyLineFromViewerEnabled() || ( curr2dView && curr2dView->showDefiningPoints() ) )
if ( !annotationOnly )
{
if ( m_highlightLineAlongPolyline.notNull() )
if ( m_rimIntersection->inputPolyLineFromViewerEnabled() || ( curr2dView && curr2dView->showDefiningPoints() ) )
{
m_highlightLineAlongPolyline->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongPolyline.p() );
if ( m_highlightLineAlongPolyline.notNull() )
{
m_highlightLineAlongPolyline->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongPolyline.p() );
}
if ( m_highlightPointsForPolyline.notNull() )
{
m_highlightPointsForPolyline->setTransform( scaleTransform );
model->addPart( m_highlightPointsForPolyline.p() );
}
}
if ( m_highlightPointsForPolyline.notNull() )
if ( m_rimIntersection->inputExtrusionPointsFromViewerEnabled() )
{
m_highlightPointsForPolyline->setTransform( scaleTransform );
model->addPart( m_highlightPointsForPolyline.p() );
}
}
if ( m_highlightLineAlongExtrusionDir.notNull() )
{
m_highlightLineAlongExtrusionDir->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongExtrusionDir.p() );
}
if ( m_rimIntersection->inputExtrusionPointsFromViewerEnabled() )
{
if ( m_highlightLineAlongExtrusionDir.notNull() )
{
m_highlightLineAlongExtrusionDir->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongExtrusionDir.p() );
if ( m_highlightPointsForExtrusionDir.notNull() )
{
m_highlightPointsForExtrusionDir->setTransform( scaleTransform );
model->addPart( m_highlightPointsForExtrusionDir.p() );
}
}
if ( m_highlightPointsForExtrusionDir.notNull() )
if ( m_rimIntersection->inputTwoAzimuthPointsFromViewerEnabled() || ( curr2dView && curr2dView->showDefiningPoints() ) )
{
m_highlightPointsForExtrusionDir->setTransform( scaleTransform );
model->addPart( m_highlightPointsForExtrusionDir.p() );
}
}
if ( m_highlightLineAlongPolyline.notNull() )
{
m_highlightLineAlongPolyline->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongPolyline.p() );
}
if ( m_rimIntersection->inputTwoAzimuthPointsFromViewerEnabled() || ( curr2dView && curr2dView->showDefiningPoints() ) )
{
if ( m_highlightLineAlongPolyline.notNull() )
{
m_highlightLineAlongPolyline->setTransform( scaleTransform );
model->addPart( m_highlightLineAlongPolyline.p() );
}
if ( m_highlightPointsForPolyline.notNull() )
{
m_highlightPointsForPolyline->setTransform( scaleTransform );
model->addPart( m_highlightPointsForPolyline.p() );
if ( m_highlightPointsForPolyline.notNull() )
{
m_highlightPointsForPolyline->setTransform( scaleTransform );
model->addPart( m_highlightPointsForPolyline.p() );
}
}
}

View File

@@ -75,7 +75,7 @@ public:
void appendIntersectionFacesToModel( cvf::ModelBasicList* model, cvf::Transform* scaleTransform );
void appendMeshLinePartsToModel( cvf::ModelBasicList* model, cvf::Transform* scaleTransform );
void appendPolylinePartsToModel( Rim3dView& view, cvf::ModelBasicList* model, cvf::Transform* scaleTransform );
void appendPolylinePartsToModel( Rim3dView& view, cvf::ModelBasicList* model, cvf::Transform* scaleTransform, bool annotationOnly = false );
cvf::Mat4d unflattenTransformMatrix( const cvf::Vec3d& intersectionPointFlat ) const;