X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSketchSolver_ConstraintMultiRotation.cpp;h=ce40fdcafb786ff78ee5302a7e265fa4b437f144;hb=1e63ae393cf1ce1923329c90aa66fa33f957f268;hp=25d1507a68323ee7b903520027a252be5e8b5bf2;hpb=a94fc319f2aa64b43c9a73b5ff7063923648faec;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SketchSolver_ConstraintMultiRotation.cpp b/src/SketchSolver/SketchSolver_ConstraintMultiRotation.cpp index 25d1507a6..ce40fdcaf 100644 --- a/src/SketchSolver/SketchSolver_ConstraintMultiRotation.cpp +++ b/src/SketchSolver/SketchSolver_ConstraintMultiRotation.cpp @@ -125,12 +125,24 @@ void SketchSolver_ConstraintMultiRotation::adjustConstraint() } // Obtain coordinates of rotation center + AttributeRefAttrPtr aCenterAttr = + myBaseConstraint->refattr(SketchPlugin_MultiRotation::CENTER_ID()); std::shared_ptr aRotCenter = - std::dynamic_pointer_cast(myStorage->entity( - myBaseConstraint->attribute(SketchPlugin_MultiRotation::CENTER_ID()))); - GCSPointPtr aCenterPoint = aRotCenter->point(); - myCenterCoord[0] = *(aCenterPoint->x); - myCenterCoord[1] = *(aCenterPoint->y); + std::dynamic_pointer_cast( + myStorage->entity(AttributePtr(aCenterAttr))); + if (aRotCenter) + { + GCSPointPtr aCenterPoint = aRotCenter->point(); + myCenterCoord[0] = *(aCenterPoint->x); + myCenterCoord[1] = *(aCenterPoint->y); + } + else + { + AttributePoint2DPtr aCenterPnt = + std::dynamic_pointer_cast(aCenterAttr->attr()); + myCenterCoord[0] = aCenterPnt->x(); + myCenterCoord[1] = aCenterPnt->y(); + } if (myIsFullValue && myNumberOfCopies > 0) anAngleValue /= myNumberOfCopies;