Salome HOME
Avoid instability of test cases.
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_Sketch.h
index d94893db0e90a12c930b3d26dc2412098254b35d..7f63c5bb2ca4643eee898b0878d9ba81f3528389 100644 (file)
@@ -177,6 +177,10 @@ class SketchPlugin_Sketch : public ModelAPI_CompositeFeature, public GeomAPI_ICu
     std::shared_ptr<GeomDataAPI_Dir> aNorm = std::dynamic_pointer_cast<GeomDataAPI_Dir>(
       aData->attribute(NORM_ID()));
 
+    if (!aNorm->isInitialized() || !aX->isInitialized() ||
+        aNorm->dir()->cross(aX->dir())->squareModulus() < 1.e-14)
+      return std::shared_ptr<GeomAPI_Ax3>();
+
     return std::shared_ptr<GeomAPI_Ax3>(new GeomAPI_Ax3(aC->pnt(), aX->dir(), aNorm->dir()));
   }
 
@@ -226,6 +230,18 @@ class SketchPlugin_Sketch : public ModelAPI_CompositeFeature, public GeomAPI_ICu
                                   SketchPlugin_Sketch* theSketch,
                                   const std::string& theAttributeID, const int theIndex);
 
+  /// \brief Create a result for the segment given by a pair of attributes
+  /// \param theFeature a source feature
+  /// \param theSketch a sketch intance
+  /// \param theStartAttrID an attribute string
+  /// \param theEndAttrID an attribute string
+  /// \param theIndex an index of the result
+  static void createLine2DResult(ModelAPI_Feature* theFeature,
+                                 SketchPlugin_Sketch* theSketch,
+                                 const std::string& theStartAttrID,
+                                 const std::string& theEndAttrID,
+                                 const int theIndex = 0);
+
   /// Add new feature and fill the data of the feature by the data of the parameter feature.
   /// The name of the created feature stays unique.
   /// \param theFeature a source feature
@@ -258,6 +274,12 @@ private:
   /// Substitute all links to external objects by newly created features.
   /// \return \c true, if all links updated.
   bool removeLinksToExternal();
+
+  /// Update projected coordinate axes
+  void updateCoordinateAxis(ObjectPtr theSub, std::shared_ptr<GeomAPI_Ax3> thePlane);
+
+private:
+  std::shared_ptr<GeomAPI_Ax3> myPlane;
 };
 
 #endif