Salome HOME
Fixed Test/TestSketcherAddCircle.py
authordbv <dbv@opencascade.com>
Tue, 14 Jun 2016 08:53:11 +0000 (11:53 +0300)
committerspo <sergey.pokhodenko@opencascade.com>
Fri, 17 Jun 2016 11:41:06 +0000 (14:41 +0300)
src/PythonAPI/Test/TestSketcherAddCircle.py
src/SketchAPI/SketchAPI_Sketch.cpp
src/SketchAPI/SketchAPI_Sketch.h

index 9bc6e4c9d4080a0e444419756e69c5ff98c9d09f..6b1c3399e44ab42bb503286bf3ebb7dad519b958 100644 (file)
@@ -2,24 +2,24 @@ import unittest
 import model
 from TestSketcher import SketcherTestCase
 
-class SketcherAddCircle(SketcherTestCase):    
+class SketcherAddCircle(SketcherTestCase):
     def test_add_cricle(self):
         circle = self.sketch.addCircle(0, 10, 20)
         model.do()
-        self.assertEqual(circle.center().x(), 0.0)        
+        self.assertEqual(circle.center().x(), 0.0)
         self.assertEqual(circle.center().y(), 10.0)
-        self.assertEqual(circle.radius(), 20.0)
-        
+        self.assertEqual(circle.radius().value(), 20.0)
+
     def test_modify_circle(self):
         circle = self.sketch.addCircle(0, 10, 20)
         model.do()
         circle.setCenter(10, 10)
         circle.setRadius(30)
         model.do()
-        self.assertEqual(circle.center().x(), 10.0)        
+        self.assertEqual(circle.center().x(), 10.0)
         self.assertEqual(circle.center().y(), 10.0)
-        self.assertEqual(circle.radius(), 30.0)
-        
-    
+        self.assertEqual(circle.radius().value(), 30.0)
+
+
 if __name__ == "__main__":
-    unittest.main(verbosity=2)
\ No newline at end of file
+    unittest.main(verbosity=2)
index 57c01c05d5e7a6feceabfaac6fd410f222900539..ea8047d6c17fa670350da5fecebb8204e051e233 100644 (file)
@@ -28,6 +28,7 @@
 //--------------------------------------------------------------------------------------
 #include <ModelAPI_CompositeFeature.h>
 #include <ModelHighAPI_Tools.h>
+#include "SketchAPI_Circle.h"
 #include "SketchAPI_Line.h"
 //--------------------------------------------------------------------------------------
 SketchAPI_Sketch::SketchAPI_Sketch(
@@ -127,6 +128,51 @@ std::shared_ptr<SketchAPI_Line> SketchAPI_Sketch::addLine(const std::string & th
   return LinePtr(new SketchAPI_Line(aFeature, theExternalName));
 }
 
+//--------------------------------------------------------------------------------------
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(double theCenterX,
+                                                              double theCenterY,
+                                                              double theRadius)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Circle::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, theCenterX, theCenterY, theRadius));
+}
+
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
+                                                              double theRadius)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Circle::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, theCenter, theRadius));
+}
+
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(double theX1, double theY1,
+                                                              double theX2, double theY2,
+                                                              double theX3, double theY3)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Circle::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, theX1, theY1, theX2, theY2, theX3, theY3));
+}
+
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(const std::shared_ptr<GeomAPI_Pnt2d>& thePoint1,
+                                                              const std::shared_ptr<GeomAPI_Pnt2d>& thePoint2,
+                                                              const std::shared_ptr<GeomAPI_Pnt2d>& thePoint3)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Circle::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, thePoint1, thePoint2, thePoint3));
+}
+
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(const ModelHighAPI_Selection & theExternal)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Line::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, theExternal));
+}
+
+std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(const std::string & theExternalName)
+{
+  // TODO(spo): Add constraint SketchConstraintRigid like in PythonAPI. Is it necessary?
+  std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchPlugin_Line::ID());
+  return CirclePtr(new SketchAPI_Circle(aFeature, theExternalName));
+}
+
 //--------------------------------------------------------------------------------------
 std::shared_ptr<ModelAPI_Feature> SketchAPI_Sketch::setCoincident(
     const ModelHighAPI_RefAttr & thePoint1,
index ecde2ce28b3278d108efd33508c2a0c69902826d..524c013c435a31ec4f56998ce0bfc07eef6f1529 100644 (file)
@@ -20,6 +20,7 @@ class ModelAPI_CompositeFeature;
 class ModelHighAPI_Double;
 class ModelHighAPI_RefAttr;
 class ModelHighAPI_Selection;
+class SketchAPI_Circle;
 class SketchAPI_Line;
 //--------------------------------------------------------------------------------------
 /**\class SketchAPI_Sketch
@@ -80,7 +81,37 @@ public:
   SKETCHAPI_EXPORT
   std::shared_ptr<SketchAPI_Line> addLine(const std::string & theExternalName);
 
-  // TODO(spo): addCircle
+  // Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(double theCenterX,
+                                              double theCenterY,
+                                              double theRadius);
+
+  // Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
+                                              double theRadius);
+
+  // Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(double theX1, double theY1,
+                                              double theX2, double theY2,
+                                              double theX3, double theY3);
+
+  // Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(const std::shared_ptr<GeomAPI_Pnt2d>& thePoint1,
+                                              const std::shared_ptr<GeomAPI_Pnt2d>& thePoint2,
+                                              const std::shared_ptr<GeomAPI_Pnt2d>& thePoint3);
+
+  /// Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(const ModelHighAPI_Selection & theExternal);
+
+  /// Add circle.
+  SKETCHAPI_EXPORT
+  std::shared_ptr<SketchAPI_Circle> addCircle(const std::string & theExternalName);
+
   // TODO(spo): addArc
 
   /// Set coincident