/// Returns the 2D point
virtual boost::shared_ptr<GeomAPI_Pnt2d> pnt() = 0;
+ /// Appends the delta values to point
+ void move(const double theDeltaX, const double theDeltaY)
+ {
+ setValue(x() + theDeltaX, y() + theDeltaY);
+ }
+
+
/// Returns the type of this class of attributes
static inline std::string type()
{
ModuleBase_Operation* anOperation = createOperation(theCmdId.toStdString());
ModuleBase_ISelection* aSelection = myWorkshop->selection();
// Initialise operation with preliminary selection
- anOperation->initSelection(aSelection);
+ anOperation->initSelection(aSelection, myWorkshop->viewer());
sendOperation(anOperation);
}
return false;
}
-void ModuleBase_Operation::initSelection(ModuleBase_ISelection* theSelection)
+void ModuleBase_Operation::initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* /*theViewer*/)
{
myPreSelection.clear();
class ModuleBase_OperationDescription;
class ModuleBase_IPropertyPanel;
class ModuleBase_ISelection;
+class ModuleBase_IViewer;
class QKeyEvent;
/// Initialisation of operation with preliminary selection
/// \param theSelected the list of selected presentations
/// \param theHighlighted the list of highlighted presentations
- virtual void initSelection(ModuleBase_ISelection* theSelection);
+ /// \param theViewer a viewer to have the viewer the eye position
+ virtual void initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* /* theViewer*/);
virtual void setPropertyPanel(ModuleBase_IPropertyPanel* theProp);
}
ModuleBase_ISelection* aSelection = workshop()->selection();
// Initialise operation with preliminary selection
- aSketchOp->initSelection(aSelection);
+ aSketchOp->initSelection(aSelection, myWorkshop->viewer());
} //else if (aFeature) {
//anOperation->setFeature(aFeature);
////Deactivate result of current feature in order to avoid its selection
#include <SketchPlugin_Line.h>
#include <V3d_View.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS.hxx>
+#include <BRep_Tool.hxx>
#include <AIS_DimensionOwner.hxx>
#include <AIS_DimensionSelectionMode.hxx>
{
}
+void PartSet_OperationFeatureEdit::initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* theViewer)
+{
+ PartSet_OperationFeatureBase::initSelection(theSelection, theViewer);
+ // 1. unite selected and hightlighted objects in order to have an opportunity to drag
+ // by the highlighted object
+ QList<ModuleBase_ViewerPrs> aFeatures = theSelection->getSelected();
+ QList<ModuleBase_ViewerPrs> aHighlighted = theSelection->getHighlighted();
+ // add highlighted elements if they are not selected
+ foreach (ModuleBase_ViewerPrs aPrs, aHighlighted) {
+ if (!PartSet_Tools::isContainPresentation(aFeatures, aPrs))
+ aFeatures.append(aPrs);
+ }
+
+ // 1. find all features with skipping features with selected vertex shapes
+ myFeature2Attribute.clear();
+ // firstly, collect the features without local selection
+ /*foreach (ModuleBase_ViewerPrs aPrs, aFeatures) {
+ const TopoDS_Shape& aShape = aPrs.shape();
+ if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX) { // a point is selected
+ const TopoDS_Vertex& aVertex = TopoDS::Vertex(aShape);
+ if (!aVertex.IsNull()) {
+ continue;
+ }
+ }
+ else {
+ ObjectPtr aObject = aPrs.object();
+ if (!aObject)
+ continue;
+ FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
+ if (aFeature && myFeature2Attribute.find(aFeature) == myFeature2Attribute.end()) {
+ std::list<std::string> aList;
+ // using an empty list as a sign, that this feature should be moved itself
+ myFeature2Attribute[aFeature] = aList;
+ }
+ }
+ }*/
+ // 2. collect the features with a local selection on them.
+ // if the list already has this feature, the local selection is skipped
+ // that means that if the selection contains a feature and a feature with local selected point,
+ // the edit is performed for a full feature
+ Handle(V3d_View) aView = theViewer->activeView();
+ foreach (ModuleBase_ViewerPrs aPrs, aFeatures) {
+ const TopoDS_Shape& aShape = aPrs.shape();
+ if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX) { // a point is selected
+ const TopoDS_Vertex& aVertex = TopoDS::Vertex(aShape);
+ if (aVertex.IsNull())
+ continue;
+ ObjectPtr aObject = aPrs.object();
+ if (!aObject)
+ continue;
+ FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
+ if (!aFeature)
+ continue;
+ // if the feature is already moved, do nothing for this feature local selection
+ if (myFeature2Attribute.find(aFeature) != myFeature2Attribute.end())
+ continue;
+
+ // append the attribute of the vertex if it is found on the current feature
+ gp_Pnt aPoint = BRep_Tool::Pnt(aVertex);
+ double aVX, aVY;
+ PartSet_Tools::convertTo2D(aPoint, sketch(), aView, aVX, aVY);
+ boost::shared_ptr<GeomDataAPI_Point2D> aPoint2D = PartSet_Tools::getFeaturePoint(
+ aFeature, aVX, aVY);
+ std::string anAttribute = aFeature->data()->id(aPoint2D);
+ std::list<std::string> aList;
+ if (myFeature2Attribute.find(aFeature) != myFeature2Attribute.end())
+ aList = myFeature2Attribute[aFeature];
+
+ aList.push_back(anAttribute);
+ myFeature2Attribute[aFeature] = aList;
+ }
+ }
+}
void PartSet_OperationFeatureEdit::mousePressed(QMouseEvent* theEvent, ModuleBase_IViewer* theViewer, ModuleBase_ISelection* theSelection)
{
boost::shared_ptr<SketchPlugin_Feature> aSketchFeature = boost::dynamic_pointer_cast<
SketchPlugin_Feature>(feature());
- // MPV: added condition because it could be external edge of some object, not sketch
- if (aSketchFeature && aSketchFeature->sketch() == sketch().get()) {
- aSketchFeature->move(aDeltaX, aDeltaY);
- static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
- ModelAPI_EventCreator::get()->sendUpdated(feature(), anEvent);
+
+ bool isMoved = false;
+ // the functionality to move the feature attribute if it exists in the internal map
+ std::map<FeaturePtr, std::list<std::string>>::iterator aFeatIter = myFeature2Attribute.begin();
+ while (aFeatIter != myFeature2Attribute.end()) {
+ FeaturePtr aFeature = aFeatIter->first;
+ std::list<std::string> anAttributes = aFeatIter->second;
+ // perform edit for the feature
+ /*if (anAttributes.empty()) {
+ boost::shared_ptr<SketchPlugin_Feature> aSketchFeature =
+ boost::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
+ if (aSketchFeature) {
+ aSketchFeature->move(aDeltaX, aDeltaY);
+ }
+ }*/
+ // perform edit for the feature's attribute
+ //else {
+ if (!anAttributes.empty()) {
+ std::list<std::string>::const_iterator anAttrIter = anAttributes.begin(),
+ anAttrEnd = anAttributes.end();
+ for (; anAttrIter != anAttrEnd; anAttrIter++) {
+ boost::shared_ptr<GeomDataAPI_Point2D> aPointAttr = boost::dynamic_pointer_cast<
+ GeomDataAPI_Point2D>(aFeature->data()->attribute(*anAttrIter));
+ if (aPointAttr) {
+ aPointAttr->move(aDeltaX, aDeltaY);
+ isMoved = true;
+ }
+ }
+ }
+ aFeatIter++;
+ }
+
+ // the feature is moved only if there is no a local selection on this feature
+ if (!isMoved) {
+ // MPV: added condition because it could be external edge of some object, not sketch
+ if (aSketchFeature && aSketchFeature->sketch() == sketch().get()) {
+ aSketchFeature->move(aDeltaX, aDeltaY);
+ static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
+ ModelAPI_EventCreator::get()->sendUpdated(feature(), anEvent);
+ }
}
}
sendFeatures();
/// Destructor
virtual ~PartSet_OperationFeatureEdit();
+
+ /// Initialisation of operation with preliminary selection
+ /// \param theSelected the list of selected presentations
+ /// \param theHighlighted the list of highlighted presentations
+ /// \param theViewer a viewer to have the viewer the eye position
+ virtual void initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* theViewer);
+
/// Processes the mouse pressed in the point
/// \param theEvent the mouse event
/// \param theView a viewer to have the viewer the eye position
void sendFeatures();
private:
+ // the next map should be removed when selection is processed in the move function
+ std::map<FeaturePtr, std::list<std::string> > myFeature2Attribute; /// a map of a feature to attributes
+
Point myCurPoint; ///< the current 3D point clicked or moved
bool myIsBlockedSelection; ///< the state of the last state of selection blocked signal
};
#include <SketchPlugin_Line.h>
#include <V3d_View.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS.hxx>
+#include <BRep_Tool.hxx>
#include <QMouseEvent>
#ifdef _DEBUG
{
}
-
-bool isContains(const QList<ModuleBase_ViewerPrs>& theSelected, const ModuleBase_ViewerPrs& thePrs)
+void PartSet_OperationFeatureEditMulti::initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* theViewer)
{
- foreach (ModuleBase_ViewerPrs aPrs, theSelected) {
- if (aPrs.object() == thePrs.object())
- return true;
- }
- return false;
-}
-
-
-void PartSet_OperationFeatureEditMulti::initSelection(ModuleBase_ISelection* theSelection)
-{
- //if (!theHighlighted.empty()) {
- // // if there is highlighted object, we check whether it is in the list of selected objects
- // // in that case this object is a handle of the moved lines. If there no such object in the selection,
- // // the hightlighted object should moved and the selection is skipped. The skipped selection will be
- // // deselected in the viewer by blockSelection signal in the startOperation method.
- // bool isSelected = false;
- // std::list<ModuleBase_ViewerPrs>::const_iterator anIt = theSelected.begin(),
- // aLast = theSelected.end();
- // for (; anIt != aLast && !isSelected; anIt++) {
- // isSelected = ModelAPI_Feature::feature((*anIt).object()) == feature();
- // }
- // if (!isSelected)
- // myFeatures = theHighlighted;
- // else
- // myFeatures = theSelected;
- //} else
- myFeatures = theSelection->getSelected();
+ // 1. unite selected and hightlighted objects in order to have an opportunity to drag
+ // by the highlighted object
+ QList<ModuleBase_ViewerPrs> aFeatures;
+ aFeatures = theSelection->getSelected();
QList<ModuleBase_ViewerPrs> aHighlighted = theSelection->getHighlighted();
// add highlighted elements if they are not selected
foreach (ModuleBase_ViewerPrs aPrs, aHighlighted) {
- if (!isContains(myFeatures, aPrs))
- myFeatures.append(aPrs);
+ if (!PartSet_Tools::isContainPresentation(aFeatures, aPrs))
+ aFeatures.append(aPrs);
}
- // Remove current feature if it is in the list (it will be moved as main feature)
- foreach (ModuleBase_ViewerPrs aPrs, myFeatures) {
- FeaturePtr aF = ModelAPI_Feature::feature(aPrs.object());
- if (ModelAPI_Feature::feature(aPrs.object()) == feature()) {
- myFeatures.removeOne(aPrs);
- break;
+
+ // 1. find all features with skipping features with selected vertex shapes
+ myFeature2Attribute.clear();
+ // firstly, collect the features without local selection
+ foreach (ModuleBase_ViewerPrs aPrs, aFeatures) {
+ const TopoDS_Shape& aShape = aPrs.shape();
+ if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX) { // a point is selected
+ const TopoDS_Vertex& aVertex = TopoDS::Vertex(aShape);
+ if (!aVertex.IsNull()) {
+ continue;
+ }
+ }
+ else {
+ ObjectPtr aObject = aPrs.object();
+ if (!aObject)
+ continue;
+ FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
+ if (aFeature && myFeature2Attribute.find(aFeature) == myFeature2Attribute.end()) {
+ std::list<std::string> aList;
+ // using an empty list as a sign, that this feature should be moved itself
+ myFeature2Attribute[aFeature] = aList;
+ }
+ }
+ }
+ // 2. collect the features with a local selection on them.
+ // if the list already has this feature, the local selection is skipped
+ // that means that if the selection contains a feature and a feature with local selected point,
+ // the edit is performed for a full feature
+ Handle(V3d_View) aView = theViewer->activeView();
+ foreach (ModuleBase_ViewerPrs aPrs, aFeatures) {
+ const TopoDS_Shape& aShape = aPrs.shape();
+ if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX) { // a point is selected
+ const TopoDS_Vertex& aVertex = TopoDS::Vertex(aShape);
+ if (aVertex.IsNull())
+ continue;
+ ObjectPtr aObject = aPrs.object();
+ if (!aObject)
+ continue;
+ FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
+ if (!aFeature)
+ continue;
+ // if the feature is already moved, do nothing for this feature local selection
+ if (myFeature2Attribute.find(aFeature) != myFeature2Attribute.end())
+ continue;
+
+ // append the attribute of the vertex if it is found on the current feature
+ gp_Pnt aPoint = BRep_Tool::Pnt(aVertex);
+ double aVX, aVY;
+ PartSet_Tools::convertTo2D(aPoint, sketch(), aView, aVX, aVY);
+ boost::shared_ptr<GeomDataAPI_Point2D> aPoint2D = PartSet_Tools::getFeaturePoint(
+ aFeature, aVX, aVY);
+ std::string anAttribute = aFeature->data()->id(aPoint2D);
+ std::list<std::string> aList;
+ if (myFeature2Attribute.find(aFeature) != myFeature2Attribute.end())
+ aList = myFeature2Attribute[aFeature];
+
+ aList.push_back(anAttribute);
+ myFeature2Attribute[aFeature] = aList;
}
}
}
double aDeltaX = aX - aCurX;
double aDeltaY = anY - aCurY;
- boost::shared_ptr<SketchPlugin_Feature> aSketchFeature = boost::dynamic_pointer_cast<
- SketchPlugin_Feature>(feature());
- aSketchFeature->move(aDeltaX, aDeltaY);
-
- foreach (ModuleBase_ViewerPrs aPrs, myFeatures) {
- ObjectPtr aObject = aPrs.object();
- if (!aObject || aObject == feature())
- continue;
- FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
- if (aFeature) {
- aSketchFeature = boost::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
- if (aSketchFeature)
+ std::map<FeaturePtr, std::list<std::string>>::iterator aFeatIter = myFeature2Attribute.begin();
+ while (aFeatIter != myFeature2Attribute.end()) {
+ FeaturePtr aFeature = aFeatIter->first;
+ std::list<std::string> anAttributes = aFeatIter->second;
+ // perform edit for the feature
+ if (anAttributes.empty()) {
+ boost::shared_ptr<SketchPlugin_Feature> aSketchFeature =
+ boost::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
+ if (aSketchFeature) {
aSketchFeature->move(aDeltaX, aDeltaY);
+ }
}
+ // perform edit for the feature's attribute
+ else {
+ std::list<std::string>::const_iterator anAttrIter = anAttributes.begin(),
+ anAttrEnd = anAttributes.end();
+ for (; anAttrIter != anAttrEnd; anAttrIter++) {
+ boost::shared_ptr<GeomDataAPI_Point2D> aPointAttr = boost::dynamic_pointer_cast<
+ GeomDataAPI_Point2D>(aFeature->data()->attribute(*anAttrIter));
+ if (aPointAttr) {
+ aPointAttr->move(aDeltaX, aDeltaY);
+ }
+ }
+ }
+ aFeatIter++;
}
}
sendFeatures();
{
theViewer->enableSelection(true);
if (commit()) {
- foreach (ModuleBase_ViewerPrs aPrs, myFeatures) {
- ObjectPtr aFeature = aPrs.object();
+ std::map<FeaturePtr, std::list<std::string>>::iterator aFeatIter = myFeature2Attribute.begin();
+ while (aFeatIter != myFeature2Attribute.end()) {
+ FeaturePtr aFeature = aFeatIter->first;
if (aFeature) {
emit featureConstructed(aFeature, FM_Deactivation);
}
+ aFeatIter++;
}
}
}
//blockSelection(false, true);
- myFeatures.clear();
+ myFeature2Attribute.clear();
}
//void PartSet_OperationFeatureEditMulti::blockSelection(bool isBlocked,
{
static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_MOVED);
- foreach (ModuleBase_ViewerPrs aPrs, myFeatures) {
- ObjectPtr aFeature = aPrs.object();
- if (!aFeature)
- continue;
-
- ModelAPI_EventCreator::get()->sendUpdated(aFeature, anEvent);
+ std::map<FeaturePtr, std::list<std::string>>::iterator aFeatIter = myFeature2Attribute.begin();
+ while (aFeatIter != myFeature2Attribute.end()) {
+ FeaturePtr aFeature = aFeatIter->first;
+ if (aFeature) {
+ ModelAPI_EventCreator::get()->sendUpdated(aFeature, anEvent);
+ }
+ aFeatIter++;
}
+
Events_Loop::loop()->flush(anEvent);
flushUpdated();
}
#include <QList>
#include <list>
+#include <map>
class QMouseEvent;
/// Initialisation of operation with preliminary selection
/// \param theSelected the list of selected presentations
/// \param theHighlighted the list of highlighted presentations
- virtual void initSelection(ModuleBase_ISelection* theSelection);
+ /// \param theViewer a viewer to have the viewer the eye position
+ virtual void initSelection(ModuleBase_ISelection* theSelection,
+ ModuleBase_IViewer* theViewer);
/// Returns the operation sketch feature
/// \returns the sketch instance
/// Sends the features
void sendFeatures();
- private:
+private:
+ // the next map should be removed when selection is processed in the move function
+ std::map<FeaturePtr, std::list<std::string> > myFeature2Attribute; /// a map of a feature to attributes
+
CompositeFeaturePtr mySketch; ///< the sketch feature
- QList<ModuleBase_ViewerPrs> myFeatures; ///< the features to apply the edit operation
Point myCurPoint; ///< the current 3D point clicked or moved
bool myIsBlockedSelection; ///< the state of the last state of selection blocked signal
};
return ModelAPI_Session::get()->moduleDocument();
}
-void PartSet_Tools::setFeaturePoint(FeaturePtr theFeature, double theX, double theY,
- const std::string& theAttribute)
+boost::shared_ptr<GeomDataAPI_Point2D> PartSet_Tools::getFeaturePoint(FeaturePtr theFeature,
+ double theX, double theY)
{
- if (!theFeature)
- return;
- boost::shared_ptr<ModelAPI_Data> aData = theFeature->data();
- boost::shared_ptr<GeomDataAPI_Point2D> aPoint =
- boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(aData->attribute(theAttribute));
- if (aPoint)
- aPoint->setValue(theX, theY);
+ boost::shared_ptr<GeomAPI_Pnt2d> aClickedPoint = boost::shared_ptr<GeomAPI_Pnt2d>(
+ new GeomAPI_Pnt2d(theX, theY));
+ std::list<boost::shared_ptr<ModelAPI_Attribute> > anAttiributes =
+ theFeature->data()->attributes(GeomDataAPI_Point2D::type());
+ std::list<boost::shared_ptr<ModelAPI_Attribute> >::const_iterator anIt = anAttiributes.begin(),
+ aLast = anAttiributes.end();
+ boost::shared_ptr<GeomDataAPI_Point2D> aFPoint;
+ for (; anIt != aLast && !aFPoint; anIt++) {
+ boost::shared_ptr<GeomDataAPI_Point2D> aCurPoint = boost::dynamic_pointer_cast<
+ GeomDataAPI_Point2D>(*anIt);
+ if (aCurPoint && aCurPoint->pnt()->distance(aClickedPoint) < Precision::Confusion())
+ aFPoint = aCurPoint;
+ }
+
+ return aFPoint;
}
void PartSet_Tools::setFeatureValue(FeaturePtr theFeature, double theValue,
}
}
return ResultPtr();
-}
\ No newline at end of file
+}
+
+bool PartSet_Tools::isContainPresentation(const QList<ModuleBase_ViewerPrs>& theSelected,
+ const ModuleBase_ViewerPrs& thePrs)
+{
+ foreach (ModuleBase_ViewerPrs aPrs, theSelected) {
+ if (aPrs.object() == thePrs.object())
+ return true;
+ }
+ return false;
+}
/// Returns pointer to the root document.
static boost::shared_ptr<ModelAPI_Document> document();
- /// \brief Save the point to the feature. If the attribute is 2D geometry point, it is filled.
+
+ /// Returns a point attribute of the feature by the coordinates if it is
/// \param theFeature the feature
/// \param theX the horizontal coordinate
/// \param theY the vertical coordinate
- /// \param theAttribute the feature attribute
- static void setFeaturePoint(FeaturePtr theFeature, double theX, double theY,
- const std::string& theAttribute);
+ static boost::shared_ptr<GeomDataAPI_Point2D> getFeaturePoint(FeaturePtr theFeature,
+ double theX, double theY);
/// \brief Save the double to the feature. If the attribute is double, it is filled.
/// \param theFeature the feature
/// \param theEdge - an edge
/// \return - result of created feature
static ResultPtr createFixedObjectByEdge(const ModuleBase_ViewerPrs& thePrs, CompositeFeaturePtr theSketch);
+
+ /// Checks whether the list of selected presentations contains the given one
+ /// \param theSelected a list of presentations
+ /// \param thePrs a presentation to be found
+ /// \return - result of check, true if the list contains the prs
+ static bool isContainPresentation(const QList<ModuleBase_ViewerPrs>& theSelected,
+ const ModuleBase_ViewerPrs& thePrs);
+
};
#endif
boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Arc::CENTER_ID()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint1->move(theDeltaX, theDeltaY);
boost::shared_ptr<GeomDataAPI_Point2D> aPoint2 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Arc::START_ID()));
- aPoint2->setValue(aPoint2->x() + theDeltaX, aPoint2->y() + theDeltaY);
+ aPoint2->move(theDeltaX, theDeltaY);
boost::shared_ptr<GeomDataAPI_Point2D> aPoint3 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Arc::END_ID()));
- aPoint3->setValue(aPoint3->x() + theDeltaX, aPoint3->y() + theDeltaY);
+ aPoint3->move(theDeltaX, theDeltaY);
}
double SketchPlugin_Arc::distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint)
boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Circle::CENTER_ID()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint1->move(theDeltaX, theDeltaY);
}
double SketchPlugin_Circle::distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint)
if (!aData->isValid())
return;
- boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
+ boost::shared_ptr<GeomDataAPI_Point2D> aPoint = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint->setValue(theDeltaX, theDeltaY);
}
//*************************************************************************************
if (!aData->isValid())
return;
- boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
+ boost::shared_ptr<GeomDataAPI_Point2D> aPoint = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint->move(theDeltaX, theDeltaY);
}
boost::shared_ptr<GeomDataAPI_Point2D> aPoint = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
- aPoint->setValue(aPoint->x() + theDeltaX, aPoint->y() + theDeltaY);
+ aPoint->move(theDeltaX, theDeltaY);
}
boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Line::START_ID()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint1->move(theDeltaX, theDeltaY);
boost::shared_ptr<GeomDataAPI_Point2D> aPoint2 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Line::END_ID()));
- aPoint2->setValue(aPoint2->x() + theDeltaX, aPoint2->y() + theDeltaY);
+ aPoint2->move(theDeltaX, theDeltaY);
}
double SketchPlugin_Line::distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint)
boost::shared_ptr<GeomDataAPI_Point2D> aPoint1 = boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(SketchPlugin_Point::COORD_ID()));
- aPoint1->setValue(aPoint1->x() + theDeltaX, aPoint1->y() + theDeltaY);
+ aPoint1->move(theDeltaX, theDeltaY);
}
double SketchPlugin_Point::distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint)