+ GeomCurvePtr anUntrimmedCurve = theCurve->basisCurve();
+ Handle(Geom_Curve) aCurve = anUntrimmedCurve->impl<Handle(Geom_Curve)>();
+ Handle(Geom_Circle) aCirc = Handle(Geom_Circle)::DownCast(aCurve);
+ if (aCirc.IsNull())
+ throw Standard_ConstructionError("GeomAPI_Circ: Curve is not a circle");
+ setImpl(new gp_Circ(aCirc->Circ()));
+}
+
+//=================================================================================================
+const std::shared_ptr<GeomAPI_Pnt> GeomAPI_Circ::center() const
+{
+ const gp_Pnt& aCenter = MY_CIRC->Location();
+ return std::shared_ptr<GeomAPI_Pnt>(new GeomAPI_Pnt(aCenter.X(), aCenter.Y(), aCenter.Z()));
+}
+
+//=================================================================================================
+double GeomAPI_Circ::radius() const
+{
+ return MY_CIRC->Radius();
+}
+
+//=================================================================================================
+const std::shared_ptr<GeomAPI_Pnt> GeomAPI_Circ::project(
+ const std::shared_ptr<GeomAPI_Pnt>& thePoint) const
+{
+ std::shared_ptr<GeomAPI_Pnt> aResult;