#include <SketchPlugin_Constraint.h>
-#include <ModelAPI_AttributeRefList.h>
-
#include <Graphic3d_AspectLine3d.hxx>
#include <Prs3d_Root.hxx>
gp_Pnt aP1;
for (i = 0; i < aNb; i++) {
aObj = anAttrB->object(i);
+ if (!aObj.get()) // TODO:empty_result
+ // this check should be removed here after the result flush is corrected
+ // the problem is, that feature::execute() flushes redisplay by each result creation
+ // but it is possible(e.g. in the sketch circle, that there should be more than one result.
+ // Here, crash happens, because the second result is not created yet
+ continue;
aP1 = aMgr->getPosition(aObj, this, theStep);
myPntArray->SetVertice(i + 1, aP1);
}
for (i = 0; i < aNb; i++) {
aObj = anAttrC->object(i);
+ if (!aObj.get()) // TODO:empty_result
+ // this check should be removed here after the result flush is corrected
+ // the problem is, that feature::execute() flushes redisplay by each result creation
+ // but it is possible(e.g. in the sketch circle, that there should be more than one result.
+ // Here, crash happens, because the second result is not created yet
+ continue;
aP1 = aMgr->getPosition(aObj, this, theStep);
myPntArray->SetVertice(aNb + i + 1, aP1);
}
if (anAttrC.get() == NULL)
return;
- SketcherPrs_PositionMgr* aMgr = SketcherPrs_PositionMgr::get();
int aNb = anAttrB->size();
if (aNb != anAttrC->size())
return;
addLine(aGroup, SketchPlugin_Constraint::ENTITY_A());
// Draw source objects
- int i;
- ObjectPtr aObj;
- for (i = 0; i < aNb; i++) {
- aObj = anAttrB->object(i);
- std::shared_ptr<GeomAPI_Shape> aShape = SketcherPrs_Tools::getShape(aObj);
- if (aShape.get() != NULL)
- drawShape(aShape, thePrs);
- }
+ drawListOfShapes(anAttrB, thePrs);
+
// draw mirrored objects
- for (i = 0; i < aNb; i++) {
- aObj = anAttrC->object(i);
- std::shared_ptr<GeomAPI_Shape> aShape = SketcherPrs_Tools::getShape(aObj);
- if (aShape.get() != NULL)
- drawShape(aShape, thePrs);
- }
+ drawListOfShapes(anAttrC, thePrs);
}