X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketcherPrs%2FSketcherPrs_Coincident.cpp;h=5c011bf5c9bd3b1b9d20e3baf5015e9188198796;hb=8476d5e088f7b1b5a414fa5e33ce99d6131929eb;hp=f9e2e2959123b8d00fd9ce62356ada24721d7892;hpb=1b93f1881c5fec599aa79707f93c84dd9c287bc0;p=modules%2Fshaper.git diff --git a/src/SketcherPrs/SketcherPrs_Coincident.cpp b/src/SketcherPrs/SketcherPrs_Coincident.cpp index f9e2e2959..5c011bf5c 100644 --- a/src/SketcherPrs/SketcherPrs_Coincident.cpp +++ b/src/SketcherPrs/SketcherPrs_Coincident.cpp @@ -16,6 +16,8 @@ #include #include +#include + #include #include @@ -37,20 +39,36 @@ SketcherPrs_Coincident::SketcherPrs_Coincident(ModelAPI_Feature* theConstraint, } +bool SketcherPrs_Coincident::IsReadyToDisplay(ModelAPI_Feature* theConstraint, + const std::shared_ptr&/* thePlane*/) +{ + bool aReadyToDisplay = false; + + // Get point of the presentation + std::shared_ptr aPnt = SketcherPrs_Tools::getPoint(theConstraint, + SketchPlugin_Constraint::ENTITY_A()); + if (aPnt.get() == NULL) + aPnt = SketcherPrs_Tools::getPoint(theConstraint, SketchPlugin_Constraint::ENTITY_B()); + + aReadyToDisplay = aPnt.get() != NULL; + return aReadyToDisplay; +} void SketcherPrs_Coincident::Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager, const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode) { + if (!IsReadyToDisplay(myConstraint, myPlane)) { + Events_Error::throwException("An empty AIS presentation: SketcherPrs_Coincident"); + return; + } + // Get point of the presentation std::shared_ptr aPnt = SketcherPrs_Tools::getPoint(myConstraint, SketchPlugin_Constraint::ENTITY_A()); if (aPnt.get() == NULL) aPnt = SketcherPrs_Tools::getPoint(myConstraint, SketchPlugin_Constraint::ENTITY_B()); - if (aPnt.get() == NULL) - return; - std::shared_ptr aPoint = myPlane->to3D(aPnt->x(), aPnt->y()); myPoint = aPoint->impl();