-
- // 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());
- myRadius = 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()));
- myRadius = 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()));
- myRadius = aCenterAttr->pnt()->distance(aStartAttr->pnt());
- }
- std::shared_ptr<GeomAPI_Pnt> aCenter = mySketcherPlane->to3D(aCenterAttr->x(), aCenterAttr->y());
- std::shared_ptr<GeomAPI_Dir> aNormal = mySketcherPlane->normal();
-
- GeomAPI_Circ aCircle(aCenter, aNormal, myRadius);
- std::shared_ptr<GeomAPI_Pnt> anAnchor = SketcherPrs_Tools::getAnchorPoint(myConstraint, mySketcherPlane);
-
- myCircle = aCircle.impl<gp_Circ>();
- myAncorPnt = anAnchor->impl<gp_Pnt>();
-
- AttributeDoublePtr anAttributeValue = myConstraint->data()->real(SketchPlugin_Constraint::VALUE());
- myHasParameters = anAttributeValue->usedParameters().size() > 0;
- myValue = anAttributeValue->text();