]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Rollback previous incorrect integration.
authorrnv <rnv@opencascade.com>
Fri, 4 Mar 2011 12:36:14 +0000 (12:36 +0000)
committerrnv <rnv@opencascade.com>
Fri, 4 Mar 2011 12:36:14 +0000 (12:36 +0000)
src/OBJECT/GEOM_Actor.cxx
src/OBJECT/GEOM_Actor.h

index 7328f77a150e687bf3138b61573e9dce9c5c42a8..e45f39cf35e888097c3f0f7e68deea19680a7fe7 100644 (file)
@@ -39,6 +39,8 @@
 #include "GEOM_ShadingFace.h"
 #include "SVTK_Actor.h"
 
+#include <OCC2VTK_Tools.h>
+
 #include <vtkObjectFactory.h> 
 #include <vtkRenderer.h> 
 #include <vtkProperty.h> 
  
 #include <TopAbs_ShapeEnum.hxx>
 #include <TopExp_Explorer.hxx>
-#include <Poly_Triangulation.hxx>
-#include <BRepMesh_IncrementalMesh.hxx>
-#include <Bnd_Box.hxx>
 #include <TopoDS.hxx>
 #include <BRep_Tool.hxx>
-#include <BRepBndLib.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopoDS_Iterator.hxx>
 #include <TopExp.hxx>
  
 #include <vtkPolyDataWriter.h> 
@@ -106,10 +102,7 @@ GEOM_Actor::GEOM_Actor():
   myHighlightProp(vtkProperty::New()),
   myPreHighlightProp(vtkProperty::New()),
   myShadingFaceProp(vtkProperty::New()),
-  isOnlyVertex(false),
-  // Making deflection relative similarly to GEOM_AISShape
-  myDeflection( .001 ), 
-  myIsRelative( true ) 
+  isOnlyVertex(false)
 { 
 #ifdef MYDEBUG
   MESSAGE (this<< " GEOM_Actor::GEOM_Actor");
@@ -181,6 +174,7 @@ GEOM_Actor::GEOM_Actor():
 
   // Toggle display mode 
   setDisplayMode(0); // WIRE FRAME
+  SetVectorMode(0);  //
 
 } 
  
@@ -357,39 +351,6 @@ GEOM_Actor
   return myVectorMode;
 }
 
-static 
-void 
-MeshShape(const TopoDS_Shape& theShape,
-          float& theDeflection, 
-          bool theIsRelative)
-{ 
-  static Standard_Real RELATIVE_DEFLECTION = 0.0001; 
-  Standard_Real aDeflection = theDeflection <= 0 ? RELATIVE_DEFLECTION : theDeflection;
-  
-  // theDeflection <= 0 -> Compute default theDeflection
-  // Otherwise compute the absolute deflection on the basis of relative
-  if(theDeflection <= 0 || theIsRelative ){ 
-    Bnd_Box B;
-    BRepBndLib::Add(theShape, B);
-       if(!B.IsVoid()){
-         Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;\r
-         B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);\r
-\r
-         // This magic line comes from Prs3d_ShadedShape.gxx in OCCT\r
-         aDeflection = std::max( aXmax-aXmin , std::max(aYmax-aYmin , aZmax-aZmin)) \r
-       *aDeflection*4;
-    }
-       else
-         // Just to assign some value, because a void bnd box is not a good case
-         aDeflection = RELATIVE_DEFLECTION; 
-    if(theDeflection <= 0) 
-      theDeflection = theIsRelative ? RELATIVE_DEFLECTION : aDeflection; 
-  }
-
-  BRepMesh_IncrementalMesh aMesh(theShape,aDeflection);
-}
-
 void  
 GEOM_Actor:: 
 SetDeflection(float theDeflection, bool theIsRelative) 
@@ -397,7 +358,7 @@ SetDeflection(float theDeflection, bool theIsRelative)
   myDeflection = theDeflection; 
   myIsRelative = theIsRelative; 
  
-  MeshShape(myShape,myDeflection,myIsRelative); 
+  GEOM::MeshShape2(myShape,myDeflection,myIsRelative); 
  
   SetModified(); 
 } 
@@ -428,7 +389,12 @@ void GEOM_Actor::SetShape (const TopoDS_Shape& theShape,
   TopTools_IndexedDataMapOfShapeListOfShape anEdgeMap;
   TopExp::MapShapesAndAncestors(theShape,TopAbs_EDGE,TopAbs_FACE,anEdgeMap);
   
-  SetShape(theShape,anEdgeMap,theIsVector);
+  GEOM::SetShape(theShape,anEdgeMap,theIsVector,
+                 myIsolatedEdgeSource.Get(),
+                 myOneFaceEdgeSource.Get(),
+                 mySharedEdgeSource.Get(),
+                 myWireframeFaceSource.Get(),
+                 myShadingFaceSource.Get());
   isOnlyVertex =  
     myIsolatedEdgeSource->IsEmpty() &&
     myOneFaceEdgeSource->IsEmpty() &&
@@ -443,65 +409,6 @@ void GEOM_Actor::SetShape (const TopoDS_Shape& theShape,
   }
 }
 
-void GEOM_Actor::SetShape (const TopoDS_Shape& theShape,
-                           const TopTools_IndexedDataMapOfShapeListOfShape& theEdgeMap,
-                           bool theIsVector)
-{
-  if (theShape.ShapeType() == TopAbs_COMPOUND) {
-    TopoDS_Iterator anItr(theShape);
-    for (; anItr.More(); anItr.Next()) {
-      SetShape(anItr.Value(),theEdgeMap,theIsVector);
-    }
-  }
-
-  switch (theShape.ShapeType()) {
-    case TopAbs_WIRE: {
-      TopExp_Explorer anEdgeExp(theShape,TopAbs_EDGE);
-      for (; anEdgeExp.More(); anEdgeExp.Next()){
-        const TopoDS_Edge& anEdge = TopoDS::Edge(anEdgeExp.Current());
-        if (!BRep_Tool::Degenerated(anEdge))
-          myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
-      }
-      break;
-    }
-    case TopAbs_EDGE: {
-      const TopoDS_Edge& anEdge = TopoDS::Edge(theShape);
-      if (!BRep_Tool::Degenerated(anEdge))
-        myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
-      break;
-    }
-    case TopAbs_VERTEX: {
-      break;
-    }
-    default: {
-      TopExp_Explorer aFaceExp (theShape,TopAbs_FACE);
-      for(; aFaceExp.More(); aFaceExp.Next()) {
-        const TopoDS_Face& aFace = TopoDS::Face(aFaceExp.Current());
-        myWireframeFaceSource->AddFace(aFace);
-        myShadingFaceSource->AddFace(aFace);
-        TopExp_Explorer anEdgeExp(aFaceExp.Current(), TopAbs_EDGE);
-        for(; anEdgeExp.More(); anEdgeExp.Next()) {
-          const TopoDS_Edge& anEdge = TopoDS::Edge(anEdgeExp.Current());
-          if(!BRep_Tool::Degenerated(anEdge)){
-            // compute the number of faces
-            int aNbOfFaces = theEdgeMap.FindFromKey(anEdge).Extent();
-            switch(aNbOfFaces){
-            case 0:  // isolated edge
-              myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
-              break;
-            case 1:  // edge in only one face
-              myOneFaceEdgeSource->AddEdge(anEdge,theIsVector);
-              break;
-            default: // edge shared by at least two faces
-              mySharedEdgeSource->AddEdge(anEdge,theIsVector);
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
 // OLD METHODS
 void GEOM_Actor::setDeflection(double adef) {
 #ifdef MYDEBUG
@@ -906,3 +813,5 @@ void GEOM_Actor::GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result)
   matrix->Delete();
   this->Transform->Pop();  
 }  
+
+
index 4910ea6a8512abd07b8b03263c2fcfe014514e53..0b708e80b5699fcdde2c89eb76b3bf89f2cbe697 100644 (file)
@@ -56,8 +56,6 @@ class vtkRenderer;
 class vtkAppendPolyData;
 typedef GEOM_SmartPtr<vtkAppendPolyData> PAppendFilter;
 
-class TopTools_IndexedDataMapOfShapeListOfShape;
-
 class GEOM_OBJECT_EXPORT GEOM_Actor: public SALOME_Actor
 {
 public:
@@ -69,10 +67,6 @@ public:
                 bool theIsRelative,
                 bool theIsVector = false);
 
-  void SetShape (const TopoDS_Shape& theShape,
-                const TopTools_IndexedDataMapOfShapeListOfShape& theEdgeMap,
-                bool theIsVector);
-
   void SetDeflection(float theDeflection, bool theIsRelative);
   float GetDeflection() const{ return myDeflection;}
   bool GetIsRelative() const{ return myIsRelative;}
@@ -232,3 +226,5 @@ private:
 };
 
 #endif //GEOM_ACTOR_H
+
+