- DataPtr aData = myConstraint->data();
-
- // Flyout point
- std::shared_ptr<GeomDataAPI_Point2D> aFlyoutAttr =
- std::dynamic_pointer_cast<GeomDataAPI_Point2D>
- (aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-
- // Get circle
- std::shared_ptr<ModelAPI_AttributeRefAttr> anAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>
- (aData->attribute(SketchPlugin_Constraint::ENTITY_A()));
-
- std::shared_ptr<ModelAPI_Feature> aCyrcFeature = ModelAPI_Feature::feature(anAttr->object());
- double aRadius = 1;
- std::shared_ptr<GeomDataAPI_Point2D> aCenterAttr;
- if (aCyrcFeature->getKind() == SketchPlugin_Circle::ID()) { // circle
- aCenterAttr = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
- aCyrcFeature->data()->attribute(SketchPlugin_Circle::CENTER_ID()));
- AttributeDoublePtr aCircRadius =
- std::dynamic_pointer_cast<ModelAPI_AttributeDouble>(
- aCyrcFeature->data()->attribute(SketchPlugin_Circle::RADIUS_ID()));
- aRadius = aCircRadius->value();
- } else { // arc
- aCenterAttr = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
- aCyrcFeature->data()->attribute(SketchPlugin_Arc::CENTER_ID()));
- std::shared_ptr<GeomDataAPI_Point2D> aStartAttr =
- std::dynamic_pointer_cast<GeomDataAPI_Point2D>
- (aCyrcFeature->data()->attribute(SketchPlugin_Arc::START_ID()));
- aRadius = aCenterAttr->pnt()->distance(aStartAttr->pnt());
- }
- std::shared_ptr<GeomAPI_Pnt> aCenter = myPlane->to3D(aCenterAttr->x(), aCenterAttr->y());
- std::shared_ptr<GeomAPI_Dir> aNormal = myPlane->normal();
-
- GeomAPI_Circ aCircle(aCenter, aNormal, aRadius);
-
- std::shared_ptr<GeomAPI_Pnt> anAnchor = SketcherPrs_Tools::getAnchorPoint(myConstraint, myPlane);
-
- gp_Circ aCirc = aCircle.impl<gp_Circ>();
- gp_Pnt anAncorPnt = anAnchor->impl<gp_Pnt>();
-
- SetMeasuredGeometry(aCirc, anAncorPnt);
- SetCustomValue(aRadius);