Salome HOME
MAJ vers paraview 5.4
[modules/paravis.git] / src / PV_SWIG / presentations.py
index 9db106a153967951e72bcf15040c8973daf9bcec..000216512bb723eaf357579d2288d3654713f2ee 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2015  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
@@ -955,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
 
@@ -967,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('/')
@@ -1109,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
@@ -1192,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
@@ -1333,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
@@ -1406,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
@@ -1522,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 = (EntityType.get_pvtype(entity), 'GlyphVector')
+        pvs.ColorBy(vectors, (EntityType.get_pvtype(entity), 'GlyphVector'))
     else:
-        vectors.ColorArrayName = (None, '')
+        pvs.ColorBy(vectors, (EntityType.get_pvtype(entity), None))
     vectors.LookupTable = lookup_table
 
     vectors.LineWidth = 1.0
@@ -1620,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 = (None, '')
+        pvs.ColorBy(defshape, (EntityType.get_pvtype(entity), None))
     defshape.LookupTable = lookup_table
 
     # Set wireframe represenatation mode
@@ -1738,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
@@ -1907,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
@@ -2008,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 = (None, '')
+        pvs.ColorBy(isosurfaces, (EntityType.get_pvtype(entity), None))
         if color:
             isosurfaces.DiffuseColor = color
     isosurfaces.LookupTable = lookup_table
@@ -2131,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 = (None, '')
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), None))
         if color:
             gausspnt.DiffuseColor = color
 
@@ -2251,7 +2316,7 @@ 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
@@ -2263,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 = (None, '')
+        pvs.ColorBy(gausspnt, (EntityType.get_pvtype(entity), None))
         if color:
             gausspnt.DiffuseColor = color
 
@@ -2403,6 +2474,7 @@ def StreamLinesOnField(proxy, entity, field_name, timestamp_nb,
     stream.Vectors = ['POINTS', vector_array]
     stream.IntegrationDirection = direction
     stream.IntegratorType = 'Runge-Kutta 2'
+    stream.SeedType = 'High Resolution Line Source'
     stream.UpdatePipeline()
 
     # Get Stream Lines representation object
@@ -2416,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 = (None, '')
+        pvs.ColorBy(streamlines, (EntityType.get_pvtype(entity), None))
         if color:
             streamlines.DiffuseColor = color
 
@@ -2505,7 +2583,7 @@ 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
@@ -2669,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()