mirror of
https://github.com/OPM/ResInsight.git
synced 2026-11-02 20:30:46 -06:00
#12106 Polygon: Show coordinates with positive depth in property panel
Bind a PdmProxyValueField that inverts the Z sign to the Points group in RimPolygon's property panel, mirroring the pattern already used by RimExtrudedCurveIntersection. The raw m_pointsInDomainCoords field keeps its XYZ semantics, scriptable keyword, and serialization unchanged. Fixes #12106.
This commit is contained in:
1 parent
8e6c6e88ba
commit
8f4008db0f
2 files changed
+34
-6
No files matched your search
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
#include "RiaColorTools.h"
|
#include "RiaColorTools.h"
|
||||||
|
#include "RiaVec3Tools.h"
|
||||||
|
|
||||||
#include "RigPolyLinesData.h"
|
#include "RigPolyLinesData.h"
|
||||||
|
|
||||||
@@ -50,6 +51,12 @@ RimPolygon::RimPolygon()
|
|||||||
|
|
||||||
CAF_PDM_InitField( &m_isReadOnly, "IsReadOnly", false, "Read Only" );
|
CAF_PDM_InitField( &m_isReadOnly, "IsReadOnly", false, "Read Only" );
|
||||||
CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_pointsInDomainCoords, "PointsInDomainCoords", "Coordinates", "Points" );
|
CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_pointsInDomainCoords, "PointsInDomainCoords", "Coordinates", "Points" );
|
||||||
|
m_pointsInDomainCoords.uiCapability()->setUiHidden( true );
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_pointsInDomainCoordsForUi, "PointsInDomainCoordsUi", "Coordinates" );
|
||||||
|
m_pointsInDomainCoordsForUi.registerSetMethod( this, &RimPolygon::setPointsInDomainCoordsFromXyd );
|
||||||
|
m_pointsInDomainCoordsForUi.registerGetMethod( this, &RimPolygon::pointsInDomainCoordsXyd );
|
||||||
|
m_pointsInDomainCoordsForUi.xmlCapability()->disableIO();
|
||||||
|
|
||||||
CAF_PDM_InitScriptableFieldNoDefault( &m_appearance, "Appearance", "Appearance" );
|
CAF_PDM_InitScriptableFieldNoDefault( &m_appearance, "Appearance", "Appearance" );
|
||||||
m_appearance = new RimPolygonAppearance;
|
m_appearance = new RimPolygonAppearance;
|
||||||
@@ -103,6 +110,22 @@ std::vector<cvf::Vec3d> RimPolygon::pointsInDomainCoords() const
|
|||||||
return m_pointsInDomainCoords();
|
return m_pointsInDomainCoords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<cvf::Vec3d> RimPolygon::pointsInDomainCoordsXyd() const
|
||||||
|
{
|
||||||
|
return RiaVec3Tools::invertZSign( m_pointsInDomainCoords() );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimPolygon::setPointsInDomainCoordsFromXyd( const std::vector<cvf::Vec3d>& pointsXyd )
|
||||||
|
{
|
||||||
|
m_pointsInDomainCoords = RiaVec3Tools::invertZSign( pointsXyd );
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -183,9 +206,9 @@ void RimPolygon::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiO
|
|||||||
|
|
||||||
auto groupPoints = uiOrdering.addNewGroup( "Points" );
|
auto groupPoints = uiOrdering.addNewGroup( "Points" );
|
||||||
groupPoints->setCollapsedByDefault();
|
groupPoints->setCollapsedByDefault();
|
||||||
groupPoints->add( &m_pointsInDomainCoords );
|
groupPoints->add( &m_pointsInDomainCoordsForUi );
|
||||||
|
|
||||||
m_pointsInDomainCoords.uiCapability()->setUiReadOnly( m_isReadOnly() );
|
m_pointsInDomainCoordsForUi.uiCapability()->setUiReadOnly( m_isReadOnly() );
|
||||||
|
|
||||||
auto group = uiOrdering.addNewGroup( "Appearance" );
|
auto group = uiOrdering.addNewGroup( "Appearance" );
|
||||||
m_appearance->uiOrdering( uiConfigName, *group );
|
m_appearance->uiOrdering( uiConfigName, *group );
|
||||||
@@ -196,7 +219,7 @@ void RimPolygon::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiO
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimPolygon::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
|
void RimPolygon::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
|
||||||
{
|
{
|
||||||
if ( changedField == &m_pointsInDomainCoords )
|
if ( changedField == &m_pointsInDomainCoords || changedField == &m_pointsInDomainCoordsForUi )
|
||||||
{
|
{
|
||||||
coordinatesChanged.send();
|
coordinatesChanged.send();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "cafPdmChildField.h"
|
#include "cafPdmChildField.h"
|
||||||
#include "cafPdmFieldCvfVec3d.h"
|
#include "cafPdmFieldCvfVec3d.h"
|
||||||
|
#include "cafPdmProxyValueField.h"
|
||||||
|
|
||||||
#include "cvfColor3.h"
|
#include "cvfColor3.h"
|
||||||
#include "cvfVector3.h"
|
#include "cvfVector3.h"
|
||||||
@@ -74,8 +75,12 @@ private:
|
|||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override;
|
void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override;
|
||||||
|
|
||||||
|
std::vector<cvf::Vec3d> pointsInDomainCoordsXyd() const;
|
||||||
|
void setPointsInDomainCoordsFromXyd( const std::vector<cvf::Vec3d>& pointsXyd );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<bool> m_isReadOnly;
|
caf::PdmField<bool> m_isReadOnly;
|
||||||
caf::PdmField<std::vector<cvf::Vec3d>> m_pointsInDomainCoords;
|
caf::PdmField<std::vector<cvf::Vec3d>> m_pointsInDomainCoords;
|
||||||
caf::PdmChildField<RimPolygonAppearance*> m_appearance;
|
caf::PdmProxyValueField<std::vector<cvf::Vec3d>> m_pointsInDomainCoordsForUi;
|
||||||
|
caf::PdmChildField<RimPolygonAppearance*> m_appearance;
|
||||||
};
|
};
|
||||||
Reference in new issue
Block a user