]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
GeomAlgoAPI_Transform now derived from GeomAlgoAPI_MakeShape
authordbv <dbv@opencascade.com>
Thu, 24 Dec 2015 07:50:08 +0000 (10:50 +0300)
committerdbv <dbv@opencascade.com>
Thu, 24 Dec 2015 07:57:27 +0000 (10:57 +0300)
src/FeaturesPlugin/FeaturesPlugin_Placement.cpp
src/GeomAlgoAPI/GeomAlgoAPI_Transform.cpp
src/GeomAlgoAPI/GeomAlgoAPI_Transform.h

index a8e4b4138432ec11bf105c68f40cee609bba59ca..d38f20c199adcb499e626d865ff4ea37647563d2 100644 (file)
@@ -194,11 +194,11 @@ void FeaturesPlugin_Placement::LoadNamingDS(GeomAlgoAPI_Transform& theTransformA
   //load result
   theResultBody->storeModified(theSlaveObject, theTransformAlgo.shape()); // the initial Slave, the resulting Slave
 
-  std::shared_ptr<GeomAPI_DataMapOfShapeShape> aSubShapes = theTransformAlgo.mapOfShapes();
+  std::shared_ptr<GeomAPI_DataMapOfShapeShape> aSubShapes = theTransformAlgo.mapOfSubShapes();
 
     // put modifed faces in DF
   std::string aModName = "Modified";
-  theResultBody->loadAndOrientModifiedShapes(theTransformAlgo.makeShape().get(),
-                                              theSlaveObject, _FACE,
-                                              _MODIFIEDF_TAG, aModName, *aSubShapes.get());
+  theResultBody->loadAndOrientModifiedShapes(&theTransformAlgo,
+                                             theSlaveObject, _FACE,
+                                             _MODIFIEDF_TAG, aModName, *aSubShapes.get());
 }
index 8c7cefb3229ddf1a2eb33a9b9d169e29f06657bd..481ae1c725300f0a7a7c2fc742f3f521f79ffe1c 100644 (file)
@@ -4,7 +4,7 @@
 // Created:     29 July 2015
 // Author:      Dmitry Bobylev
 
-#include <GeomAlgoAPI_Transform.h>
+#include "GeomAlgoAPI_Transform.h"
 
 #include <GeomAlgoAPI_ShapeTools.h>
 
@@ -16,8 +16,7 @@
 //=================================================================================================
 GeomAlgoAPI_Transform::GeomAlgoAPI_Transform(std::shared_ptr<GeomAPI_Shape> theSourceShape,
                                              std::shared_ptr<GeomAPI_Trsf>  theTrsf)
-: myDone(false),
-  myTrsf(theTrsf)
+: myTrsf(theTrsf)
 {
   build(theSourceShape, theTrsf);
 }
@@ -41,60 +40,18 @@ void GeomAlgoAPI_Transform::build(std::shared_ptr<GeomAPI_Shape> theSourceShape,
   if(!aBuilder) {
     return;
   }
-  myMkShape.reset(new GeomAlgoAPI_MakeShape(aBuilder));
+  this->setImpl(aBuilder);
+  this->setBuilderType(OCCT_BRepBuilderAPI_MakeShape);
 
-  myDone = aBuilder->IsDone() == Standard_True;
-  if(!myDone) {
+  if(aBuilder->IsDone() != Standard_True) {
     return;
   }
-
   TopoDS_Shape aResult = aBuilder->Shape();
 
-  // Fill data map to keep correct orientation of sub-shapes.
-  myMap.reset(new GeomAPI_DataMapOfShapeShape());
-  for(TopExp_Explorer anExp(aResult, TopAbs_FACE); anExp.More(); anExp.Next()) {
-    std::shared_ptr<GeomAPI_Shape> aCurrentShape(new GeomAPI_Shape());
-    aCurrentShape->setImpl(new TopoDS_Shape(anExp.Current()));
-    myMap->bind(aCurrentShape, aCurrentShape);
-  }
-
-  myShape.reset(new GeomAPI_Shape());
-  myShape->setImpl(new TopoDS_Shape(aResult));
-}
-
-//=================================================================================================
-const bool GeomAlgoAPI_Transform::isValid() const
-{
-  BRepCheck_Analyzer aChecker(myShape->impl<TopoDS_Shape>());
-  return (aChecker.IsValid() == Standard_True);
-}
-
-//=================================================================================================
-const bool GeomAlgoAPI_Transform::hasVolume() const
-{
-  bool hasVolume(false);
-  if(isValid() && (GeomAlgoAPI_ShapeTools::volume(myShape) > Precision::Confusion())) {
-    hasVolume = true;
-  }
-  return hasVolume;
-}
-
-//=================================================================================================
-const std::shared_ptr<GeomAPI_Shape>& GeomAlgoAPI_Transform::shape() const
-{
-  return myShape;
-}
-
-//=================================================================================================
-std::shared_ptr<GeomAPI_DataMapOfShapeShape> GeomAlgoAPI_Transform::mapOfShapes() const
-{
-  return myMap;
-}
-
-//=================================================================================================
-std::shared_ptr<GeomAlgoAPI_MakeShape> GeomAlgoAPI_Transform::makeShape() const
-{
-  return myMkShape;
+  std::shared_ptr<GeomAPI_Shape> aShape(new GeomAPI_Shape());
+  aShape->setImpl(new TopoDS_Shape(aResult));
+  this->setShape(aShape);
+  this->setDone(true);
 }
 
 //=================================================================================================
index aeb085ad3a9acdd00c5bb69a3840bdfe1c73cb62..584cdca90e546a493c93ec64463fa50b0fc70c0f 100644 (file)
@@ -9,43 +9,22 @@
 
 #include <GeomAlgoAPI.h>
 #include <GeomAlgoAPI_MakeShape.h>
-#include <GeomAPI_DataMapOfShapeShape.h>
+
 #include <GeomAPI_Shape.h>
 #include <GeomAPI_Trsf.h>
 
-/** \class GeomAlgoAPI_Transform
- *  \ingroup DataAlgo
- *  \brief Creates a copy of the object by transformating it.
- */
-class GeomAlgoAPI_Transform : public GeomAPI_Interface
+/// \class GeomAlgoAPI_Transform
+/// \ingroup DataAlgo
+/// \brief Creates a copy of the object by transformating it.
+class GeomAlgoAPI_Transform : public GeomAlgoAPI_MakeShape
 {
 public:
-  /** \brief Creates an object which is obtained from current object by transformating it.
-   *  \param[in] theSourceShape  a shape to be transformed.
-   *  \param[in] theTrsf         transformation.
-   */
+  /// \brief Creates an object which is obtained from current object by transformating it.
+  /// \param[in] theSourceShape  a shape to be transformed.
+  /// \param[in] theTrsf         transformation.
   GEOMALGOAPI_EXPORT GeomAlgoAPI_Transform(std::shared_ptr<GeomAPI_Shape> theSourceShape,
                                            std::shared_ptr<GeomAPI_Trsf>  theTrsf);
 
-  /// \return true if algorithm succeed.
-  GEOMALGOAPI_EXPORT const bool isDone() const
-  { return myDone; }
-
-  /// \return true if resulting shape is valid.
-  GEOMALGOAPI_EXPORT const bool isValid() const;
-
-  /// \return true if resulting shape has volume.
-  GEOMALGOAPI_EXPORT const bool hasVolume() const;
-
-  /// \return result of the transformation algorithm.
-  GEOMALGOAPI_EXPORT const std::shared_ptr<GeomAPI_Shape>& shape() const;
-
-  /// \return map of sub-shapes of the result. To be used for History keeping.
-  GEOMALGOAPI_EXPORT std::shared_ptr<GeomAPI_DataMapOfShapeShape> mapOfShapes() const;
-
-  /// \return interface for for History processing.
-  GEOMALGOAPI_EXPORT std::shared_ptr<GeomAlgoAPI_MakeShape> makeShape() const;
-
   /// \return the transformation.
   GEOMALGOAPI_EXPORT std::shared_ptr<GeomAPI_Trsf> transformation() const;
 
@@ -55,12 +34,7 @@ private:
              std::shared_ptr<GeomAPI_Trsf>  theTrsf);
 
 private:
-  /// Fields.
-  bool myDone;
   std::shared_ptr<GeomAPI_Trsf> myTrsf;
-  std::shared_ptr<GeomAPI_Shape> myShape;
-  std::shared_ptr<GeomAPI_DataMapOfShapeShape> myMap;
-  std::shared_ptr<GeomAlgoAPI_MakeShape> myMkShape;
 };
 
 #endif