#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

@@ -62,7 +62,7 @@ RicPolylineTarget3dEditor::~RicPolylineTarget3dEditor()
RimPolylineTarget* oldTarget = dynamic_cast<RimPolylineTarget*>(this->pdmObject());
if (oldTarget)
{
oldTarget->m_targetPoint.uiCapability()->removeFieldEditor(this);
oldTarget->targetPointUiCapability()->removeFieldEditor(this);
}
delete m_manipulator;
@@ -85,7 +85,7 @@ void RicPolylineTarget3dEditor::configureAndUpdateUi(const QString& uiConfigName
RimUserDefinedPolylinesAnnotation* polylineDef;
target->firstAncestorOrThisOfTypeAsserted(polylineDef);
target->m_targetPoint.uiCapability()->addFieldEditor(this);
target->targetPointUiCapability()->addFieldEditor(this);
if (m_manipulator.isNull())
{
@@ -131,7 +131,7 @@ void RicPolylineTarget3dEditor::cleanupBeforeSettingPdmObject()
RimPolylineTarget* oldTarget = dynamic_cast<RimPolylineTarget*>(this->pdmObject());
if (oldTarget)
{
oldTarget->m_targetPoint.uiCapability()->removeFieldEditor(this);
oldTarget->targetPointUiCapability()->removeFieldEditor(this);
}
}
@@ -161,7 +161,7 @@ void RicPolylineTarget3dEditor::slotUpdated(const cvf::Vec3d& origin, const cvf:
QVariant originVariant = caf::PdmValueFieldSpecialization < cvf::Vec3d >::convert(domainOrigin);
target->enableFullUpdate(false);
caf::PdmUiCommandSystemProxy::instance()->setUiValueToField(target->m_targetPoint.uiCapability(), originVariant);
caf::PdmUiCommandSystemProxy::instance()->setUiValueToField(target->targetPointUiCapability(), originVariant);
target->enableFullUpdate(true);
}

View File

@@ -19,11 +19,18 @@
CAF_CMD_SOURCE_INIT(RicNewPolylineTargetFeature, "RicNewPolylineTargetFeature");
#include "RiaApplication.h"
#include "RimProject.h"
#include "RimGridView.h"
#include "RimCase.h"
#include "RimUserDefinedPolylinesAnnotation.h"
#include "RimPolylineTarget.h"
#include "cafSelectionManager.h"
#include <QAction>
#include "cvfBoundingBox.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -71,7 +78,10 @@ void RicNewPolylineTargetFeature::onActionTriggered(bool isChecked)
if (!afterBeforePair.first && afterBeforePair.second)
{
newPos = afterBeforePair.second->targetPointXYZ();
newPos.z() = -newPos.z();
// Small displacement to separate the targets
newPos.x() -= 50;
newPos.y() -= 50;
}
else if (afterBeforePair.first && afterBeforePair.second)
{
@@ -114,7 +124,18 @@ void RicNewPolylineTargetFeature::onActionTriggered(bool isChecked)
if ( targetCount == 0 )
{
polylineDef->appendTarget();
auto defaultPos = cvf::Vec3d::ZERO;
// Set decent position
std::vector<RimGridView*> gridViews;
RiaApplication::instance()->project()->allVisibleGridViews(gridViews);
if (!gridViews.empty())
{
auto minPos = gridViews.front()->ownerCase()->allCellsBoundingBox().min();
defaultPos = minPos;
}
polylineDef->appendTarget(defaultPos);
}
else
{