-// Copyright (C) 2017-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2017-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <GeomAlgoAPI_PointBuilder.h>
+const double TOLERANCE = 1.e-7;
const double paramTolerance = 1.e-4;
const double PI = 3.141592653589793238463;
Events_Loop::loop()->send(aMessage);
}
-void SketchPlugin_MacroEllipticArc::attributeChanged(const std::string& theID)
+void SketchPlugin_MacroEllipticArc::attributeChanged(const std::string& /*theID*/)
{
static const int NB_POINTS = 4;
std::string aPointAttrName[NB_POINTS] = { CENTER_ID(),
myStartPnt = anEllipsePoints[2];
myEndPnt = anEllipsePoints[3];
+ if (myCenter->distance(myMajorAxis) < TOLERANCE)
+ return; // ellipse is not valid
+
std::shared_ptr<GeomAPI_Ellipse2d> anEllipse;
if (aNbInitialized == 2) {
GeomDir2dPtr aXDir(new GeomAPI_Dir2d(anEllipsePoints[1]->x() - anEllipsePoints[0]->x(),
if (!anAIS)
anAIS.reset(new GeomAPI_AISObject());
anAIS->createShape(aCompound);
+ SketchPlugin_Tools::customizeFeaturePrs(anAIS, boolean(AUXILIARY_ID())->value());
return anAIS;
}
return GeomShapePtr();
SketchPlugin_Sketch* aSketch = sketch();
- if (!aSketch)
+ if (!aSketch || myCenter->distance(myMajorAxis) < 1.e-7)
return GeomShapePtr();
GeomPointPtr aCenter(aSketch->to3D(myCenter->x(), myCenter->y()));