]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix on Bug PAL5834
authorsmh <smh@opencascade.com>
Tue, 11 May 2004 06:41:16 +0000 (06:41 +0000)
committersmh <smh@opencascade.com>
Tue, 11 May 2004 06:41:16 +0000 (06:41 +0000)
- v1_4_1 and current: VTK error messages appear on execution of "Sweep" command

src/PIPELINE/VISU_IsoSurfacesPL.cxx

index b6bbb6433a3d70ece89a5f7db1ef39a60b7808bd..e47acd33c7759ad8a243af2aa088e2d812eca509 100644 (file)
@@ -107,13 +107,33 @@ void VISU_IsoSurfacesPL::Update(){
   VISU_ScalarMapPL::Update();
 }
 
+
+static void SearchRange(vtkContourFilter* theContourFilter, 
+                       int theNbParts, 
+                       float theDelta,
+                       float theRange[2])
+{
+  float aRange = theRange[0] - theDelta;
+  do{
+    theContourFilter->GenerateValues(theNbParts,theRange);
+    theContourFilter->Update();
+    static float EPS = 1.0E-3, INCREMENT = 3.0;
+    theRange[0] -= EPS*theDelta;
+    theDelta *= INCREMENT;
+    if(aRange > theRange[0]) break;
+  }while(!theContourFilter->GetOutput()->GetNumberOfPoints());
+}
+
+
 void VISU_IsoSurfacesPL::SetMapScale(float theMapScale){
   VISU_ScalarMapPL::SetMapScale(theMapScale);
 
-  float aRange[2] = {GetMax() - theMapScale*(GetMax()-GetMin()), GetMax()};
+  float aDelta = GetMax()-GetMin();
+  float aRange[2] = {GetMax() - theMapScale*aDelta, GetMax()};
   float aNewRange[2] = {aRange[0], aRange[1]};
+  ::SearchRange(myContourFilter,GetNbParts(),aDelta,aNewRange);
+  //myContourFilter->GenerateValues(GetNbParts(),aNewRange);
   if(GetScaling() == VTK_SCALE_LOG10)
     VISU_LookupTable::ComputeLogRange(aRange,aNewRange);
-  myContourFilter->GenerateValues(GetNbParts(),aNewRange);
   Modified();
 }