Salome HOME
23514: EDF 16031 - SMESH freezes
[modules/smesh.git] / src / SMESH_SWIG / StdMeshersBuilder.py
index 35e43e551ba6d5b8ce79acfb63de41e21cfb4fec..4fef40fab884171b624d58acd2f477d1db1fa34e 100644 (file)
@@ -21,6 +21,8 @@
 # @package StdMeshersBuilder
 # Python API for the standard meshing plug-in module.
 
+LIBRARY = "libStdMeshersEngine.so"
+
 from salome.smesh.smesh_algorithm import Mesh_Algorithm
 import StdMeshers
 
@@ -261,7 +263,7 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
     # on curve from 0 to 1 (additionally it is neecessary to check
     # orientation of edges and create list of reversed edges if it is
     # needed) and sets numbers of segments between given points (default
-    # values are equals 1
+    # values are 1)
     #  @param points defines the list of parameters on curve
     #  @param nbSegs defines the list of numbers of segments
     #  @param reversedEdges is a list of edges to mesh using reversed orientation.
@@ -379,7 +381,8 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
             pass
         # 0D algorithm
         if self.geom is None:
-            raise RuntimeError, "Attemp to create SegmentAroundVertex_0D algoritm on None shape"
+            self.geom = store_geom
+            raise RuntimeError, "Attempt to create SegmentAroundVertex_0D algorithm on None shape"
         from salome.smesh.smeshBuilder import AssureGeomPublished, GetName, TreatHypoStatus
         AssureGeomPublished( self.mesh, self.geom )
         name = GetName(self.geom)
@@ -961,10 +964,8 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm):
         shape = geom
         if not shape:
             shape = mesh.geom
-        from salome.geom import geomBuilder
-        nbSolids = len( geomBuilder.geom.SubShapeAll( shape, geomBuilder.geomBuilder.ShapeType["SOLID"] ))
-        nbShells = len( geomBuilder.geom.SubShapeAll( shape, geomBuilder.geomBuilder.ShapeType["SHELL"] ))
-        if nbSolids == 0 or nbSolids == nbShells:
+        isRadial = mesh.smeshpyD.IsApplicable("RadialPrism_3D", LIBRARY, shape, False )
+        if not isRadial:
             self.Create(mesh, geom, "Prism_3D")
             pass
         else:
@@ -1469,7 +1470,7 @@ class StdMeshersBuilder_Cartesian_3D(Mesh_Algorithm):
     #    several functions, they must be accompanied by relative coordinates of
     #    points dividing the whole shape into ranges where the functions apply; points
     #    coodrinates should vary within (0.0, 1.0) range. Parameter \a t of the spacing
-    #    function f(t) varies from 0.0 to 1.0 witin a shape range. 
+    #    function f(t) varies from 0.0 to 1.0 within a shape range. 
     #    Examples:
     #    - "10.5" - defines a grid with a constant spacing
     #    - [["1", "1+10*t", "11"] [0.1, 0.6]] - defines different spacing in 3 ranges.
@@ -1565,7 +1566,7 @@ class StdMeshersBuilder_Cartesian_3D(Mesh_Algorithm):
     pass # end of StdMeshersBuilder_Cartesian_3D class
 
 ## Defines a stub 1D algorithm, which enables "manual" creation of nodes and
-#  segments usable by 2D algoritms
+#  segments usable by 2D algorithms
 #
 #  It is created by calling smeshBuilder.Mesh.UseExistingSegments(geom=0)
 #
@@ -1593,7 +1594,7 @@ class StdMeshersBuilder_UseExisting_1D(Mesh_Algorithm):
     pass # end of StdMeshersBuilder_UseExisting_1D class
 
 ## Defines a stub 2D algorithm, which enables "manual" creation of nodes and
-#  faces usable by 3D algoritms
+#  faces usable by 3D algorithms
 #
 #  It is created by calling smeshBuilder.Mesh.UseExistingFaces(geom=0)
 #