#3836 Annotations. Polyline edit fixes. Default pos

This commit is contained in:
Bjørn Erik Jensen
2018-12-11 11:50:52 +01:00
parent 17e12a92a0
commit 65390ac6e9
6 changed files with 56 additions and 27 deletions

View File

@@ -15,8 +15,7 @@ RimPolylineTarget::RimPolylineTarget()
{
CAF_PDM_InitField(&m_isEnabled, "IsEnabled", true, "", "", "", "");
//m_targetType.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_targetPoint, "TargetPoint", "Point", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_targetPointXyd, "TargetPointXyd", "Point", "", "", "");
}
//--------------------------------------------------------------------------------------------------
@@ -40,17 +39,15 @@ bool RimPolylineTarget::isEnabled() const
//--------------------------------------------------------------------------------------------------
void RimPolylineTarget::setAsPointTargetXYD(const cvf::Vec3d& point)
{
m_targetPoint = point;
m_targetPointXyd = point;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPolylineTarget::setAsPointXYZAndTangentTarget(const cvf::Vec3d& point,
double azimuth,
double inclination)
void RimPolylineTarget::setAsPointXYZ(const cvf::Vec3d& point)
{
m_targetPoint = cvf::Vec3d(point.x(), point.y(), -point.z());
m_targetPointXyd = cvf::Vec3d(point.x(), point.y(), -point.z());
}
//--------------------------------------------------------------------------------------------------
@@ -58,11 +55,19 @@ void RimPolylineTarget::setAsPointXYZAndTangentTarget(const cvf::Vec3d& point,
//--------------------------------------------------------------------------------------------------
cvf::Vec3d RimPolylineTarget::targetPointXYZ() const
{
cvf::Vec3d xyzPoint(m_targetPoint());
cvf::Vec3d xyzPoint(m_targetPointXyd());
xyzPoint.z() = -xyzPoint.z();
return xyzPoint;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiFieldHandle* RimPolylineTarget::targetPointUiCapability()
{
return m_targetPointXyd.uiCapability();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -95,5 +100,5 @@ void RimPolylineTarget::fieldChangedByUi(const caf::PdmFieldHandle* changedField
//--------------------------------------------------------------------------------------------------
void RimPolylineTarget::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
m_targetPoint.uiCapability()->setUiReadOnly(m_isEnabled());
m_targetPointXyd.uiCapability()->setUiReadOnly(m_isEnabled());
}

View File

@@ -36,9 +36,11 @@ public:
bool isEnabled() const;
void setAsPointTargetXYD(const cvf::Vec3d& point);
void setAsPointXYZAndTangentTarget(const cvf::Vec3d& point, double azimuth, double inclination);
void setAsPointXYZ(const cvf::Vec3d& point);
cvf::Vec3d targetPointXYZ() const;
caf::PdmUiFieldHandle* targetPointUiCapability();
void enableFullUpdate(bool enable);
private:
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
@@ -46,11 +48,9 @@ private:
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
private:
friend class RicPolylineTarget3dEditor;
void enableFullUpdate(bool enable);
bool m_isFullUpdateEnabled;
caf::PdmField<bool> m_isEnabled;
caf::PdmField<cvf::Vec3d> m_targetPoint;
caf::PdmField<cvf::Vec3d> m_targetPointXyd;
};

View File

@@ -29,6 +29,8 @@
#include "RiuViewerCommands.h"
#include "cvfBoundingBox.h"
#include "cafPdmUiTableViewEditor.h"
#include "cafCmdFeatureMenuBuilder.h"
#include "cafPdmUiPushButtonEditor.h"
@@ -58,7 +60,7 @@ CAF_PDM_SOURCE_INIT(RimUserDefinedPolylinesAnnotation, "UserDefinedPolylinesAnno
RimUserDefinedPolylinesAnnotation::RimUserDefinedPolylinesAnnotation()
: m_pickTargetsEventHandler(new RicPolylineTargetsPickEventHandler(this))
{
CAF_PDM_InitObject("PolyLines Annotation", ":/WellCollection.png", "", "");
CAF_PDM_InitObject("PolyLines Annotation", ":/PolylinesFromFile16x16.png", "", "");
CAF_PDM_InitField(&m_enablePicking, "EnablePicking", false, "", "", "", "");
caf::PdmUiPushButtonEditor::configureEditorForField(&m_enablePicking);
@@ -119,24 +121,25 @@ bool RimUserDefinedPolylinesAnnotation::isEmpty()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimUserDefinedPolylinesAnnotation::appendTarget()
void RimUserDefinedPolylinesAnnotation::appendTarget(const cvf::Vec3d& defaultPos)
{
RimPolylineTarget* wellPathTarget = nullptr;
RimPolylineTarget* target = nullptr;
auto targets = m_targets.childObjects();
if (targets.empty())
{
wellPathTarget = new RimPolylineTarget();
target = new RimPolylineTarget();
target->setAsPointXYZ(defaultPos);
}
else
{
wellPathTarget = dynamic_cast<RimPolylineTarget*>(
target = dynamic_cast<RimPolylineTarget*>(
targets.back()->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
}
if (wellPathTarget)
if (target)
{
m_targets.push_back(wellPathTarget);
m_targets.push_back(target);
}
}

View File

@@ -45,7 +45,7 @@ public:
std::vector<RimPolylineTarget*> activeTargets() const;
virtual bool isEmpty() override;
void appendTarget();
void appendTarget(const cvf::Vec3d& defaultPos = cvf::Vec3d::ZERO);
void insertTarget(const RimPolylineTarget* targetToInsertBefore, RimPolylineTarget* targetToInsert);
void deleteTarget(RimPolylineTarget* targetTodelete);