From: nds Date: Tue, 24 Jun 2014 12:59:36 +0000 (+0400) Subject: Merge branch 'master' of newgeom:newgeom X-Git-Tag: V_0.4.4~256 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c0c6b9c0100f7785a446217276c328e6c7338fb6;p=modules%2Fshaper.git Merge branch 'master' of newgeom:newgeom --- c0c6b9c0100f7785a446217276c328e6c7338fb6 diff --cc src/SketchPlugin/SketchPlugin_ConstraintLength.cpp index 76563c003,4ec9e30ce..6e48926c6 --- a/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp @@@ -3,9 -3,8 +3,10 @@@ // Author: Artem ZHIDKOV #include "SketchPlugin_ConstraintLength.h" + #include +#include + #include #include @@@ -25,20 -29,81 +32,92 @@@ void SketchPlugin_ConstraintLength::exe { } - const boost::shared_ptr& SketchPlugin_ConstraintLength::preview() + Handle(AIS_InteractiveObject) SketchPlugin_ConstraintLength::getAISShape( + Handle_AIS_InteractiveObject thePrevious) { - /// \todo Preview for distance constraint - return getPreview(); + if (!sketch()) + return thePrevious; + + boost::shared_ptr aPlane = sketch()->plane(); + + boost::shared_ptr anAttr = + boost::dynamic_pointer_cast(data()->attribute(CONSTRAINT_ATTR_ENTITY_A)); + if (!anAttr) + return thePrevious; + FeaturePtr aFeature = anAttr->feature(); + if (!aFeature || aFeature->getKind() != SKETCH_LINE_KIND) + return thePrevious; + + boost::shared_ptr aFlyoutAttr = + boost::dynamic_pointer_cast(data()->attribute(CONSTRAINT_ATTR_FLYOUT_VALUE)); + double aFlyout = aFlyoutAttr->value(); + + boost::shared_ptr aValueAttr = + boost::dynamic_pointer_cast(data()->attribute(CONSTRAINT_ATTR_VALUE)); + double aValue = aValueAttr->value(); + + boost::shared_ptr aData = aFeature->data(); + if (!aData->isValid()) + return thePrevious; + + boost::shared_ptr aPointStart = + boost::dynamic_pointer_cast(aData->attribute(LINE_ATTR_START)); + boost::shared_ptr aPointEnd = + boost::dynamic_pointer_cast(aData->attribute(LINE_ATTR_END)); + + //Build dimension here + boost::shared_ptr aPoint1 = sketch()->to3D(aPointStart->x(), aPointStart->y()); + boost::shared_ptr aPoint2 = sketch()->to3D(aPointEnd->x(), aPointEnd->y()); + if (aFlyout < 0) + aPoint1.swap(aPoint2); + + Handle(AIS_InteractiveObject) anAIS = thePrevious; + if (anAIS.IsNull()) + { + Handle(AIS_LengthDimension) aDimAIS = + new AIS_LengthDimension(aPoint1->impl(), aPoint2->impl(), aPlane->impl()); + aDimAIS->SetCustomValue(aValue); + + Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect(); + anAspect->MakeArrows3d (Standard_False); + anAspect->MakeText3d(false/*is text 3d*/); + anAspect->TextAspect()->SetHeight(CONSTRAINT_TEXT_HEIGHT); + anAspect->MakeTextShaded(false/*is test shaded*/); + aDimAIS->DimensionAspect()->MakeUnitsDisplayed(false/*is units displayed*/); + /*if (isUnitsDisplayed) + { + aDimAIS->SetDisplayUnits (aDimDlg->GetUnits ()); + }*/ + aDimAIS->SetDimensionAspect (anAspect); + aDimAIS->SetFlyout(aFlyout); + aDimAIS->SetSelToleranceForText2d(CONSTRAINT_TEXT_SELECTION_TOLERANCE); + + anAIS = aDimAIS; + } + else + { + // update presentation + Handle(AIS_LengthDimension) aDimAIS = Handle(AIS_LengthDimension)::DownCast(anAIS); + if (!aDimAIS.IsNull()) + { + aDimAIS->SetMeasuredGeometry(aPoint1->impl(), aPoint2->impl(), aPlane->impl()); + aDimAIS->SetCustomValue(aValue); + aDimAIS->SetFlyout(aFlyout); + + aDimAIS->Redisplay(Standard_True); + } + } + return anAIS; } +void SketchPlugin_ConstraintLength::move(double theDeltaX, double theDeltaY) +{ + boost::shared_ptr aData = data(); + if (!aData->isValid()) + return; + + boost::shared_ptr aPoint1 = + boost::dynamic_pointer_cast(aData->attribute(CONSTRAINT_ATTR_FLYOUT_VALUE_PNT)); + aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY); +} + diff --cc src/SketchPlugin/SketchPlugin_ConstraintLength.h index 52719e765,28e3627c3..52012c419 --- a/src/SketchPlugin/SketchPlugin_ConstraintLength.h +++ b/src/SketchPlugin/SketchPlugin_ConstraintLength.h @@@ -38,14 -38,9 +38,14 @@@ public /// \brief Request for initialization of data model of the feature: adding all attributes SKETCHPLUGIN_EXPORT virtual void initAttributes(); - /// \brief Returns the sketch preview - SKETCHPLUGIN_EXPORT virtual const boost::shared_ptr& preview(); + /// Returns the AIS preview + SKETCHPLUGIN_EXPORT virtual Handle_AIS_InteractiveObject getAISShape(Handle_AIS_InteractiveObject thePrevious); + /// Moves the feature + /// \param theDeltaX the delta for X coordinate is moved + /// \param theDeltaY the delta for Y coordinate is moved + SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY); + /// \brief Use plugin manager for features creation SketchPlugin_ConstraintLength(); };