Salome HOME
Revert one change: set empty color array name and 'None' entity.
[modules/paravis.git] / src / PV_SWIG / presentations.py
index 979d338061c566a023fb324d0de642fd21549bd6..881593b52594c04f0fdb5b22df00aade88b2caec 100644 (file)
@@ -222,6 +222,7 @@ def process_prs_for_test(prs, view, picture_name, show_bar=True):
     display_only(prs, view)
 
     # Show scalar bar
+    global _current_bar
     if show_bar and _current_bar:
         _current_bar.Visibility = 1
 
@@ -235,6 +236,7 @@ def process_prs_for_test(prs, view, picture_name, show_bar=True):
         os.makedirs(pic_dir)
 
     # Save picture
+    print "Write image:", file_name
     pvs.WriteImage(file_name, view=view, Magnification=1)
 
 
@@ -292,7 +294,7 @@ def display_only(prs, view=None):
 
 def set_visible_lines(xy_prs, lines):
     """Set visible only the given lines for XYChartRepresentation."""
-    sv = xy_prs.GetProperty("SeriesVisibilityInfo").GetData()
+    sv = xy_prs.GetProperty("SeriesVisibility").GetData()
     visible = '0'
 
     for i in xrange(0, len(sv)):
@@ -805,9 +807,6 @@ def select_cells_with_data(proxy, on_points=[], on_cells=[], on_gauss=[]):
         fields_info = proxy.GetProperty("FieldsTreeInfo")[::2]
         arr_name_with_dis=[elt.split("/")[-1] for elt in fields_info]
 
-        proxy.AllArrays = []
-        proxy.UpdatePipeline()
-        
         fields = []
         for name in on_gauss:
             fields.append(name+_med_field_sep+'GAUSS')
@@ -821,13 +820,14 @@ def select_cells_with_data(proxy, on_points=[], on_cells=[], on_gauss=[]):
             if arr_name_with_dis.count(name) > 0:
                 index = arr_name_with_dis.index(name)
                 field_list.append(fields_info[index])
-                
-        proxy.AllArrays = field_list
-        proxy.UpdatePipeline()
+
+        if field_list:
+            proxy.AllArrays = field_list
+            proxy.UpdatePipeline()
         return len(field_list) != 0
 
     # TODO: VTN. Looks like this code is out of date.
-    
+
     #all_cell_types = proxy.CellTypes.Available
     all_cell_types = proxy.Entity.Available
     all_arrays = list(proxy.CellArrays.GetData())
@@ -927,13 +927,11 @@ def add_scalar_bar(field_name, nb_components,
     # Reassign the current bar
     _current_bar = scalar_bar
 
-    return scalar_bar
+    return _current_bar
 
 
 def get_bar():
     """Get current scalar bar."""
-    global _current_bar
-
     return _current_bar
 
 
@@ -957,7 +955,12 @@ def get_lookup_table(field_name, nb_components, vector_mode='Magnitude'):
 
     lookup_table.Discretize = 0
     lookup_table.ColorSpace = 'HSV'
-    lookup_table.LockScalarRange = 0
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 0
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 0
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
 
     return lookup_table
 
@@ -969,7 +972,6 @@ def get_group_mesh_name(full_group_name):
         group_name = full_group_name.split('/')[1]
         return group_name
 
-
 def get_group_entity(full_group_name):
     """Return entity type of the group by its full name."""
     aList = full_group_name.split('/')
@@ -1002,10 +1004,10 @@ def get_group_names(extrGrps):
 
 def get_time(proxy, timestamp_nb):
     """Get time value by timestamp number."""
-    proxy.UpdatePipeline()
+    #proxy.UpdatePipeline()
     # Check timestamp number
     timestamps = []
-    
+
     if (hasattr(proxy, 'TimestepValues')):
         timestamps = proxy.TimestepValues.GetData()
     elif (hasattr(proxy.Input, 'TimestepValues')):
@@ -1015,6 +1017,9 @@ def get_time(proxy, timestamp_nb):
     if (timestamp_nb > 0 and (timestamp_nb - 1) not in xrange(length) ) or (timestamp_nb < 0 and -timestamp_nb > length):
         raise ValueError("Timestamp number is out of range: " + str(timestamp_nb))
 
+    if not timestamps:
+        return 0.0
+
     # Return time value
     if timestamp_nb > 0:
         return timestamps[timestamp_nb - 1]
@@ -1108,10 +1113,16 @@ def ScalarMapOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
     # Set properties
-    scalarmap.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+    pvs.ColorBy(scalarmap, (EntityType.get_pvtype(entity), field_name))
     scalarmap.LookupTable = lookup_table
 
     # Add scalar bar
@@ -1191,11 +1202,18 @@ def CutPlanesOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
-    cut_planes.ColorArrayName = (EntityType.get_pvtype(entity), field_name) 
+    pvs.ColorBy(cut_planes, (EntityType.get_pvtype(entity), field_name))
     cut_planes.LookupTable = lookup_table
 
     # Add scalar bar
@@ -1332,11 +1350,17 @@ def CutLinesOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
-    cut_lines.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+    pvs.ColorBy(cut_lines, (EntityType.get_pvtype(entity), field_name))
     cut_lines.LookupTable = lookup_table
 
     # Set wireframe represenatation mode
@@ -1405,11 +1429,17 @@ def CutSegmentOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
-    cut_segment.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+    pvs.ColorBy(cut_segment, (EntityType.get_pvtype(entity), field_name))
     cut_segment.LookupTable = lookup_table
 
     # Set wireframe represenatation mode
@@ -1521,14 +1551,20 @@ def VectorsOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+    
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
     if (is_colored):
-        vectors.ColorArrayName = 'GlyphVector'
+        pvs.ColorBy(vectors, (EntityType.get_pvtype(entity), 'GlyphVector'))
     else:
-        vectors.ColorArrayName = ''
+        pvs.ColorBy(vectors, (EntityType.get_pvtype(entity), None))
     vectors.LookupTable = lookup_table
 
     vectors.LineWidth = 1.0
@@ -1585,6 +1621,7 @@ def DeformedShapeOnField(proxy, entity, field_name,
 
     # Do merge
     source = pvs.MergeBlocks(proxy)
+    pvs.UpdatePipeline()
 
     # Cell data to point data
     if is_data_on_cells(proxy, field_name):
@@ -1618,14 +1655,20 @@ def DeformedShapeOnField(proxy, entity, field_name,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
     if is_colored:
-        defshape.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+        pvs.ColorBy(defshape, (EntityType.get_pvtype(entity), field_name))
     else:
-        defshape.ColorArrayName = ''
+        pvs.ColorBy(defshape, (EntityType.get_pvtype(entity), None))
     defshape.LookupTable = lookup_table
 
     # Set wireframe represenatation mode
@@ -1702,6 +1745,7 @@ def DeformedShapeAndScalarMapOnField(proxy, entity, field_name,
 
     # Do merge
     source = pvs.MergeBlocks(proxy)
+    pvs.UpdatePipeline()
 
     # Cell data to point data
     if is_data_on_cells(proxy, field_name):
@@ -1735,11 +1779,17 @@ def DeformedShapeAndScalarMapOnField(proxy, entity, field_name,
     # Set field range if necessary
     data_range = get_data_range(proxy, scalar_field_entity,
                                 scalar_field, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
-    defshapemap.ColorArrayName = (EntityType.get_pvtype(scalar_field_entity), scalar_field)
+    pvs.ColorBy(defshapemap, (EntityType.get_pvtype(scalar_field_entity), scalar_field))
     defshapemap.LookupTable = lookup_table
 
     # Add scalar bar
@@ -1904,11 +1954,17 @@ def Plot3DOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
-    plot3d.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+    pvs.ColorBy(plot3d, (EntityType.get_pvtype(entity), field_name))
     plot3d.LookupTable = lookup_table
 
     # Add scalar bar
@@ -1963,6 +2019,7 @@ def IsoSurfacesOnField(proxy, entity, field_name, timestamp_nb,
 
     # Do merge
     source = pvs.MergeBlocks(proxy)
+    pvs.UpdatePipeline()
 
     # Transform cell data into point data if necessary
     if is_data_on_cells(proxy, field_name):
@@ -1988,7 +2045,7 @@ def IsoSurfacesOnField(proxy, entity, field_name, timestamp_nb,
     if (scalar_range is None):
         scalar_range = get_data_range(proxy, entity,
                                       field_name, cut_off=True)
-
+        
     # Get contour values for the range
     surfaces = get_contours(scalar_range, nb_surfaces)
 
@@ -2004,14 +2061,20 @@ def IsoSurfacesOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set display properties
     if (is_colored):
-        isosurfaces.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+        pvs.ColorBy(isosurfaces, (EntityType.get_pvtype(entity), field_name))
     else:
-        isosurfaces.ColorArrayName = ''
+        pvs.ColorBy(isosurfaces, (EntityType.get_pvtype(entity), None))
         if color:
             isosurfaces.DiffuseColor = color
     isosurfaces.LookupTable = lookup_table
@@ -2080,7 +2143,7 @@ def GaussPointsOnField(proxy, entity, field_name,
 
     # Set timestamp
     pvs.GetRenderView().ViewTime = time_value
-    proxy.UpdatePipeline(time=time_value)
+    pvs.UpdatePipeline(time_value, proxy)
 
     source = proxy
 
@@ -2102,8 +2165,7 @@ def GaussPointsOnField(proxy, entity, field_name,
         vector_array = field_name
         # If the given vector array has only 2 components, add the third one
         if nb_components == 2:
-            calc = get_add_component_calc(source,
-                                          EntityType.NODE, field_name)
+            calc = get_add_component_calc(source, EntityType.NODE, field_name)
             vector_array = calc.ResultArrayName
             source = calc
 
@@ -2128,14 +2190,20 @@ def GaussPointsOnField(proxy, entity, field_name,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set display properties
     if is_colored:
-        gausspnt.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), field_name))
     else:
-        gausspnt.ColorArrayName = ''
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), None))
         if color:
             gausspnt.DiffuseColor = color
 
@@ -2178,7 +2246,7 @@ def GaussPointsOnField(proxy, entity, field_name,
 
     if is_proportional:
         mult = multiplier
-        if mult is None:
+        if mult is None and data_range[1] != 0:
             mult = abs(0.1 / data_range[1])
 
         gausspnt.RadiusScalarRange = data_range
@@ -2191,8 +2259,9 @@ def GaussPointsOnField(proxy, entity, field_name,
         gausspnt.RadiusTransferFunctionMode = 'Table'
         gausspnt.RadiusScalarRange = data_range
         gausspnt.RadiusUseScalarRange = 1
-        gausspnt.RadiusIsProportional = 1
-        gausspnt.RadiusProportionalFactor = mult
+        if mult is not None:
+            gausspnt.RadiusIsProportional = 1
+            gausspnt.RadiusProportionalFactor = mult
     else:
         gausspnt.RadiusTransferFunctionEnabled = 0
         gausspnt.RadiusMode = 'Constant'
@@ -2249,7 +2318,7 @@ def GaussPointsOnField1(proxy, entity, field_name,
     # Create Gauss Points object
     source = pvs.GaussPoints(proxy)
     source.UpdatePipeline()
-  
+
     # Get Gauss Points representation object
     gausspnt = pvs.GetRepresentation(source)
 
@@ -2259,14 +2328,20 @@ def GaussPointsOnField1(proxy, entity, field_name,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set display properties
     if is_colored:
-        gausspnt.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), field_name))
     else:
-        gausspnt.ColorArrayName = ''
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), None))
         if color:
             gausspnt.DiffuseColor = color
 
@@ -2309,7 +2384,7 @@ def GaussPointsOnField1(proxy, entity, field_name,
 
     if is_proportional:
         mult = multiplier
-        if mult is None:
+        if mult is None and data_range[1] != 0:
             mult = abs(0.1 / data_range[1])
 
         gausspnt.RadiusScalarRange = data_range
@@ -2322,8 +2397,9 @@ def GaussPointsOnField1(proxy, entity, field_name,
         gausspnt.RadiusTransferFunctionMode = 'Table'
         gausspnt.RadiusScalarRange = data_range
         gausspnt.RadiusUseScalarRange = 1
-        gausspnt.RadiusIsProportional = 1
-        gausspnt.RadiusProportionalFactor = mult
+        if mult is not None:
+            gausspnt.RadiusIsProportional = 1
+            gausspnt.RadiusProportionalFactor = mult
     else:
         gausspnt.RadiusTransferFunctionEnabled = 0
         gausspnt.RadiusMode = 'Constant'
@@ -2375,12 +2451,13 @@ def StreamLinesOnField(proxy, entity, field_name, timestamp_nb,
 
     # Do merge
     source = pvs.MergeBlocks(proxy)
+    pvs.UpdatePipeline()
 
     # Cell data to point data
     if is_data_on_cells(proxy, field_name):
         cell_to_point = pvs.CellDatatoPointData(source)
         cell_to_point.PassCellData = 1
-        cell_to_point.UpdatePipeline()
+        pvs.UpdatePipeline()
         source = cell_to_point
 
     vector_array = field_name
@@ -2388,16 +2465,16 @@ def StreamLinesOnField(proxy, entity, field_name, timestamp_nb,
     if nb_components == 2:
         calc = get_add_component_calc(source, EntityType.NODE, field_name)
         vector_array = calc.ResultArrayName
-        calc.UpdatePipeline()
+        pvs.UpdatePipeline()
         source = calc
 
     # Stream Tracer
     stream = pvs.StreamTracer(source)
     stream.SeedType = "Point Source"
     stream.Vectors = ['POINTS', vector_array]
-    stream.SeedType = "Point Source"
     stream.IntegrationDirection = direction
     stream.IntegratorType = 'Runge-Kutta 2'
+    stream.SeedType = 'High Resolution Line Source'
     stream.UpdatePipeline()
 
     # Get Stream Lines representation object
@@ -2411,14 +2488,20 @@ def StreamLinesOnField(proxy, entity, field_name, timestamp_nb,
     # Set field range if necessary
     data_range = get_data_range(proxy, entity,
                                 field_name, vector_mode)
-    lookup_table.LockScalarRange = 1
+    if hasattr(lookup_table,"LockDataRange"):
+        lookup_table.LockDataRange = 1
+    elif hasattr(lookup_table,"LockScalarRange"):
+        lookup_table.LockScalarRange = 1
+    else:
+        raise RuntimeError("Object %s has no 'LockDataRange' or 'LockScalarRange' attribute!"%(lookup_table))
+
     lookup_table.RGBPoints = [data_range[0], 0, 0, 1, data_range[1], 1, 0, 0]
 
     # Set properties
     if is_colored:
-        streamlines.ColorArrayName = (EntityType.get_pvtype(entity), field_name)
+        pvs.ColorBy(streamlines, (EntityType.get_pvtype(entity), field_name))
     else:
-        streamlines.ColorArrayName = ''
+        pvs.ColorBy(streamlines, (EntityType.get_pvtype(entity), None))
         if color:
             streamlines.DiffuseColor = color
 
@@ -2452,8 +2535,6 @@ def MeshOnEntity(proxy, mesh_name, entity):
     if not mesh_full_name:
         raise RuntimeError, "The given mesh name was not found"
     # Select only the given mesh
-    proxy.AllArrays = []
-    proxy.UpdatePipeline()
     proxy.AllArrays = [mesh_full_name]
     proxy.UpdatePipeline()
 
@@ -2461,8 +2542,9 @@ def MeshOnEntity(proxy, mesh_name, entity):
     prs = None
     if (proxy.GetDataInformation().GetNumberOfPoints() or
         proxy.GetDataInformation().GetNumberOfCells()):
-        prs = pvs.GetRepresentation(proxy)
-        prs.ColorArrayName = ''
+        my_view = pvs.GetRenderView()
+        prs = pvs.GetRepresentation(proxy, view=my_view)
+        prs.ColorArrayName = (None, '')
 
     return prs
 
@@ -2501,20 +2583,19 @@ def MeshOnGroup(proxy, extrGroups, group_name):
         if nb_points or nb_cells:
 #            prs = pvs.GetRepresentation(proxy)
             prs = pvs.Show()
-            prs.ColorArrayName = ''
+            prs.ColorArrayName = (None, '')
             display_only(prs)
 
     return prs
 
 
-def CreatePrsForFile(paravis_instance, file_name, prs_types,
+def CreatePrsForFile(file_name, prs_types,
                      picture_dir, picture_ext):
     """Build presentations of the given types for the file.
 
     Build presentations for all fields on all timestamps.
 
     Arguments:
-      paravis_instance: ParaVis module instance object
       file_name: full path to the MED file
       prs_types: the list of presentation types to build
       picture_dir: the directory path for saving snapshots
@@ -2529,13 +2610,16 @@ def CreatePrsForFile(paravis_instance, file_name, prs_types,
         if proxy is None:
             print "FAILED"
         else:
-            proxy.UpdatePipeline()
+            #proxy.UpdatePipeline()
             print "OK"
     except:
         print "FAILED"
     else:
         # Get view
         view = pvs.GetRenderView()
+        time_value = get_time(proxy, 0)
+        view.ViewTime = time_value
+        pvs.UpdatePipeline(time=time_value, proxy=proxy)
 
         # Create required presentations for the proxy
         CreatePrsForProxy(proxy, view, prs_types,
@@ -2578,7 +2662,7 @@ def CreatePrsForProxy(proxy, view, prs_types, picture_dir, picture_ext):
                 print "OK"
             # Construct image file name
             pic_name = picture_dir + get_field_short_name(mesh_name) + "." + picture_ext
-            
+
             # Show and dump the presentation into a graphics file
             process_prs_for_test(prs, view, pic_name, False)
 
@@ -2596,7 +2680,7 @@ def CreatePrsForProxy(proxy, view, prs_types, picture_dir, picture_ext):
                         print "OK"
                     # Construct image file name
                     pic_name = picture_dir + get_group_short_name(group) + "." + picture_ext
-                    
+
                     # Show and dump the presentation into a graphics file
                     process_prs_for_test(prs, view, pic_name, False)
 
@@ -2607,16 +2691,12 @@ def CreatePrsForProxy(proxy, view, prs_types, picture_dir, picture_ext):
         if field_name == get_field_mesh_name(field):
             continue
         field_entity = get_field_entity(field)
-        # Clear fields selection state
-        proxy.AllArrays = []
-        proxy.UpdatePipeline()
         # Select only the current field:
         # necessary for getting the right timestamps
-        proxy.AllArrays = field
+        proxy.AllArrays = [field]
         proxy.UpdatePipeline()
 
         # Get timestamps
-        entity_data_info = proxy.GetCellDataInformation()
         timestamps = proxy.TimestepValues.GetData()
 
         for prs_type in prs_types:
@@ -2643,8 +2723,18 @@ def CreatePrsForProxy(proxy, view, prs_types, picture_dir, picture_ext):
                         if (scalar_range[0] == scalar_range[1]):
                             continue
                     print "Creating " + prs_name + " on " + field_name + ", time = " + str(time) + "... "
-                    prs = create_prs(prs_type, proxy,
-                                     field_entity, field_name, timestamp_nb)
+                    try:
+                        prs = create_prs(prs_type, proxy,
+                                         field_entity, field_name, timestamp_nb)
+                    except ValueError:
+                        """ This exception comes from get_nb_components(...) function.
+                            The reason of exception is an implementation of MEDReader
+                            activating the first leaf when reading MED file (refer to
+                            MEDFileFieldRepresentationTree::activateTheFirst() and
+                            MEDFileFieldRepresentationTree::getTheSingleActivated(...) methods).
+                        """
+                        print "ValueError exception is catched"
+                        continue
                     if prs is None:
                         print "FAILED"
                         continue