X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPV_SWIG%2Fpresentations.py;h=000216512bb723eaf357579d2288d3654713f2ee;hb=808c8afc6ffb56c3c5803aa792bc336c8b89fbe7;hp=bf1fac34296b5082eb407d7262fdb17b7153067b;hpb=fff7db94f5362314f29b8b570566187e957620ee;p=modules%2Fparavis.git diff --git a/src/PV_SWIG/presentations.py b/src/PV_SWIG/presentations.py index bf1fac34..00021651 100644 --- a/src/PV_SWIG/presentations.py +++ b/src/PV_SWIG/presentations.py @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2014 CEA/DEN, EDF R&D +# Copyright (C) 2010-2016 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -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,11 +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.ColorAttributeType = EntityType.get_pvtype(entity) - scalarmap.ColorArrayName = field_name + pvs.ColorBy(scalarmap, (EntityType.get_pvtype(entity), field_name)) scalarmap.LookupTable = lookup_table # Add scalar bar @@ -1192,12 +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.ColorAttributeType = EntityType.get_pvtype(entity) - cut_planes.ColorArrayName = field_name + pvs.ColorBy(cut_planes, (EntityType.get_pvtype(entity), field_name)) cut_planes.LookupTable = lookup_table # Add scalar bar @@ -1334,12 +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.ColorAttributeType = EntityType.get_pvtype(entity) - cut_lines.ColorArrayName = field_name + pvs.ColorBy(cut_lines, (EntityType.get_pvtype(entity), field_name)) cut_lines.LookupTable = lookup_table # Set wireframe represenatation mode @@ -1408,12 +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.ColorAttributeType = EntityType.get_pvtype(entity) - cut_segment.ColorArrayName = field_name + pvs.ColorBy(cut_segment, (EntityType.get_pvtype(entity), field_name)) cut_segment.LookupTable = lookup_table # Set wireframe represenatation mode @@ -1487,7 +1513,7 @@ def VectorsOnField(proxy, entity, field_name, timestamp_nb, glyph = pvs.Glyph(source) glyph.Vectors = vector_array glyph.ScaleMode = 'vector' - glyph.MaskPoints = 0 + #glyph.MaskPoints = 0 # Set glyph type glyph.GlyphType = glyph_type @@ -1508,11 +1534,11 @@ def VectorsOnField(proxy, entity, field_name, timestamp_nb, glyph.GlyphType.Center = [0.0, 0.0, 0.0] if scale_factor is not None: - glyph.SetScaleFactor = scale_factor + glyph.ScaleFactor = scale_factor else: def_scale = get_default_scale(PrsTypeEnum.DEFORMEDSHAPE, proxy, entity, field_name) - glyph.SetScaleFactor = def_scale + glyph.ScaleFactor = def_scale glyph.UpdatePipeline() @@ -1525,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 @@ -1589,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): @@ -1622,15 +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.ColorAttributeType = EntityType.get_pvtype(entity) - defshape.ColorArrayName = 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 @@ -1707,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): @@ -1740,13 +1779,18 @@ 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 = scalar_field + pvs.ColorBy(defshapemap, (EntityType.get_pvtype(scalar_field_entity), scalar_field)) defshapemap.LookupTable = lookup_table - defshapemap.ColorAttributeType = EntityType.get_pvtype(scalar_field_entity) # Add scalar bar add_scalar_bar(field_name, nb_components, @@ -1910,12 +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.ColorAttributeType = EntityType.get_pvtype(entity) - plot3d.ColorArrayName = field_name + pvs.ColorBy(plot3d, (EntityType.get_pvtype(entity), field_name)) plot3d.LookupTable = lookup_table # Add scalar bar @@ -1970,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): @@ -2011,15 +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.ColorAttributeType = EntityType.get_pvtype(entity) - isosurfaces.ColorArrayName = 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 @@ -2088,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 @@ -2110,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 @@ -2136,15 +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.ColorAttributeType = EntityType.get_pvtype(entity) - gausspnt.ColorArrayName = 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 @@ -2187,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 @@ -2200,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' @@ -2256,9 +2316,9 @@ def GaussPointsOnField1(proxy, entity, field_name, proxy.UpdatePipeline(time=time_value) # Create Gauss Points object - source = pvs.GaussPoints(proxy) + source = pvs.ELGAfieldToPointSprite(proxy) source.UpdatePipeline() - + # Get Gauss Points representation object gausspnt = pvs.GetRepresentation(source) @@ -2268,15 +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.ColorAttributeType = EntityType.get_pvtype(entity) - gausspnt.ColorArrayName = 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 @@ -2319,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 @@ -2332,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' @@ -2385,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 @@ -2398,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 @@ -2421,15 +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.ColorAttributeType = EntityType.get_pvtype(entity) - streamlines.ColorArrayName = 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 @@ -2463,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() @@ -2472,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 @@ -2512,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 @@ -2540,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, @@ -2589,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) @@ -2607,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) @@ -2618,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: @@ -2654,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 @@ -2668,3 +2747,11 @@ def CreatePrsForProxy(proxy, view, prs_types, picture_dir, picture_ext): # Show and dump the presentation into a graphics file process_prs_for_test(prs, view, pic_name) return + + +def delete_pv_object(obj): + # There is a bug when repeating CreateRenderView/Delete calls + # Here is a workaround proposed by KW (#10744) + import gc + del obj + gc.collect()