X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_MultiTranslation.cpp;h=71eca57ca89f10927d685525d7996c18a3e12c82;hb=61cd0845b41710ad4e7eae07cc6106904be67b9f;hp=6809511af7f3850cbb4a7deca75ae42a978883aa;hpb=1bbe11ce617a6cac19ceb26a5d5c6bb48354d99e;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_MultiTranslation.cpp b/src/SketchPlugin/SketchPlugin_MultiTranslation.cpp index 6809511af..71eca57ca 100644 --- a/src/SketchPlugin/SketchPlugin_MultiTranslation.cpp +++ b/src/SketchPlugin/SketchPlugin_MultiTranslation.cpp @@ -18,6 +18,8 @@ #include #include +#include + SketchPlugin_MultiTranslation::SketchPlugin_MultiTranslation() { } @@ -26,7 +28,7 @@ void SketchPlugin_MultiTranslation::initAttributes() { data()->addAttribute(START_POINT_ID(), GeomDataAPI_Point2D::typeId()); data()->addAttribute(END_POINT_ID(), GeomDataAPI_Point2D::typeId()); - data()->addAttribute(NUMBER_OF_COPIES_ID(), ModelAPI_AttributeDouble::typeId()/*ModelAPI_AttributeInteger::typeId()*/); + data()->addAttribute(NUMBER_OF_COPIES_ID(), ModelAPI_AttributeInteger::typeId()); data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefList::typeId()); data()->addAttribute(SketchPlugin_Constraint::ENTITY_B(), ModelAPI_AttributeRefList::typeId()); AttributeSelectionListPtr aSelection = @@ -40,8 +42,7 @@ void SketchPlugin_MultiTranslation::initAttributes() void SketchPlugin_MultiTranslation::execute() { AttributeSelectionListPtr aTranslationObjectRefs = selectionList(TRANSLATION_LIST_ID()); - int aNbCopies = (int)(std::dynamic_pointer_cast( - attribute(NUMBER_OF_COPIES_ID()))->value()); + int aNbCopies = integer(NUMBER_OF_COPIES_ID())->value(); // Calculate shift vector std::shared_ptr aStart = std::dynamic_pointer_cast( @@ -50,6 +51,11 @@ void SketchPlugin_MultiTranslation::execute() attribute(END_POINT_ID())); if (!aStart || !aEnd || !aStart->isInitialized() || !aEnd->isInitialized()) return; + + // make a visible points + SketchPlugin_Sketch::createPoint2DResult(this, sketch(), START_POINT_ID(), 0); + SketchPlugin_Sketch::createPoint2DResult(this, sketch(), END_POINT_ID(), 1); + std::shared_ptr aShiftVec(new GeomAPI_XY(aEnd->x() - aStart->x(), aEnd->y() - aStart->y())); // Wait all objects being created, then send update events @@ -128,9 +134,10 @@ void SketchPlugin_MultiTranslation::execute() aTargetList.insert(aTargetIter, anObject); } else { // remove object - std::list::iterator aRemoveIt = aTargetIter; - ObjectPtr anObject = *(--aRemoveIt); + std::list::iterator aRemoveIt = aTargetIter++; + ObjectPtr anObject = *aRemoveIt; aTargetList.erase(aRemoveIt); + aRefListOfTranslated->remove(anObject); // remove the corresponding feature from the sketch ResultConstructionPtr aRC = std::dynamic_pointer_cast(anObject); @@ -173,8 +180,7 @@ AISObjectPtr SketchPlugin_MultiTranslation::getAISObject(AISObjectPtr thePreviou AISObjectPtr anAIS = thePrevious; if (!anAIS) { -// TODO: -// anAIS = SketcherPrs_Factory::mirrorConstraint(this, sketch()->coordinatePlane()); + anAIS = SketcherPrs_Factory::translateConstraint(this, sketch()->coordinatePlane()); } return anAIS; } @@ -207,3 +213,4 @@ ObjectPtr SketchPlugin_MultiTranslation::copyFeature(ObjectPtr theObject) } return ObjectPtr(); } +