From 4865e3f0a46e1a4d955f4dd2dd1a5a7f9e3520a0 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Wed, 10 Jun 2026 20:09:46 +0200 Subject: [PATCH] #4041 Annotations: make cvf::Vec3d::UNDEFINED the default "not set" vector instead of ZERO Fixes #4041. --- .../AnnotationCommands/RicTextAnnotation3dEditor.cpp | 3 ++- .../ModelVisualization/RivReachCircleAnnotationPartMgr.cpp | 2 +- .../ModelVisualization/RivTextAnnotationPartMgr.cpp | 2 +- .../Annotations/RimReachCircleAnnotation.cpp | 4 ++-- .../ProjectDataModel/Annotations/RimTextAnnotation.cpp | 6 +++--- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ApplicationLibCode/Commands/AnnotationCommands/RicTextAnnotation3dEditor.cpp b/ApplicationLibCode/Commands/AnnotationCommands/RicTextAnnotation3dEditor.cpp index d76e466f2d0..13c4422e60c 100644 --- a/ApplicationLibCode/Commands/AnnotationCommands/RicTextAnnotation3dEditor.cpp +++ b/ApplicationLibCode/Commands/AnnotationCommands/RicTextAnnotation3dEditor.cpp @@ -74,7 +74,8 @@ void RicTextAnnotation3dEditor::configureAndUpdateUi( const QString& uiConfigNam RiuViewer* ownerRiuViewer = dynamic_cast( ownerViewer() ); Rim3dView* view = mainOrComparisonView(); - if ( !textAnnot || !textAnnot->isActive() || !view ) + if ( !textAnnot || !textAnnot->isActive() || !view || textAnnot->m_anchorPointXyd().isUndefined() || + textAnnot->m_labelPointXyd().isUndefined() ) { if ( m_cvfModel.notNull() ) m_cvfModel->removeAllParts(); diff --git a/ApplicationLibCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp b/ApplicationLibCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp index fd2971821be..94a6fbcc419 100644 --- a/ApplicationLibCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp +++ b/ApplicationLibCode/ModelVisualization/RivReachCircleAnnotationPartMgr.cpp @@ -161,7 +161,7 @@ void RivReachCircleAnnotationPartMgr::appendDynamicGeometryPartsToModel( cvf::Mo bool RivReachCircleAnnotationPartMgr::validateAnnotation( const RimReachCircleAnnotation* annotation ) const { auto a = m_rimAnnotationInView->sourceAnnotation(); - return a->centerPoint() != cvf::Vec3d::ZERO && a->radius() > 0.0; + return !a->centerPoint().isUndefined() && a->radius() > 0.0; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ModelVisualization/RivTextAnnotationPartMgr.cpp b/ApplicationLibCode/ModelVisualization/RivTextAnnotationPartMgr.cpp index 60e6016d455..4f1736a4bcd 100644 --- a/ApplicationLibCode/ModelVisualization/RivTextAnnotationPartMgr.cpp +++ b/ApplicationLibCode/ModelVisualization/RivTextAnnotationPartMgr.cpp @@ -194,7 +194,7 @@ void RivTextAnnotationPartMgr::appendDynamicGeometryPartsToModel( cvf::ModelBasi //-------------------------------------------------------------------------------------------------- bool RivTextAnnotationPartMgr::validateAnnotation( const RimTextAnnotation* annotation ) const { - return rimAnnotation()->anchorPoint() != cvf::Vec3d::ZERO && !rimAnnotation()->text().isEmpty(); + return !rimAnnotation()->anchorPoint().isUndefined() && !rimAnnotation()->text().isEmpty(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp index 2d237fe3722..4e91c5a39c9 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp @@ -46,7 +46,7 @@ RimReachCircleAnnotation::RimReachCircleAnnotation() nameField()->registerKeywordAlias( "Name" ); setName( "Circle Annotation" ); - CAF_PDM_InitField( &m_centerPointXyd, "CenterPointXyd", Vec3d::ZERO, "Center Point" ); + CAF_PDM_InitField( &m_centerPointXyd, "CenterPointXyd", Vec3d::UNDEFINED, "Center Point" ); m_centerPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_centerPointPickEnabled, "AnchorPointPick", false, "" ); caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_centerPointPickEnabled ); @@ -162,7 +162,7 @@ void RimReachCircleAnnotation::defineEditorAttribute( const caf::PdmFieldHandle* { attr->pickEventHandler = m_centerPointEventHandler; attr->enablePicking = m_centerPointPickEnabled; - if ( m_centerPointXyd().isZero() ) + if ( m_centerPointXyd().isUndefined() ) { attr->enablePicking = true; } diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp index 602980ebf44..23f4bb5b8f6 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp @@ -49,12 +49,12 @@ RimTextAnnotation::RimTextAnnotation() CAF_PDM_InitScriptableObject( "TextAnnotation", ":/TextAnnotation16x16.png" ); setUi3dEditorTypeName( RicTextAnnotation3dEditor::uiEditorTypeName() ); - CAF_PDM_InitField( &m_anchorPointXyd, "AnchorPointXyd", Vec3d::ZERO, "Anchor Point" ); + CAF_PDM_InitField( &m_anchorPointXyd, "AnchorPointXyd", Vec3d::UNDEFINED, "Anchor Point" ); m_anchorPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_anchorPointPickEnabledButtonField, "AnchorPointPick", false, "" ); caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_anchorPointPickEnabledButtonField ); - CAF_PDM_InitField( &m_labelPointXyd, "LabelPointXyd", Vec3d::ZERO, "Label Point" ); + CAF_PDM_InitField( &m_labelPointXyd, "LabelPointXyd", Vec3d::UNDEFINED, "Label Point" ); m_labelPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_labelPointPickEnabledButtonField, "LabelPointPick", false, "" ); caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_labelPointPickEnabledButtonField ); @@ -166,7 +166,7 @@ void RimTextAnnotation::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel if ( changedField == &m_anchorPointXyd ) { m_anchorPointPickEnabledButtonField = false; - if ( m_labelPointXyd().isZero() ) + if ( m_labelPointXyd().isUndefined() ) { m_labelPointXyd = m_anchorPointXyd; }