Salome HOME
0021308: Remove hard-coded dependency of the external mesh plugins from the SMESH...
authoreap <eap@opencascade.com>
Wed, 7 Mar 2012 15:06:37 +0000 (15:06 +0000)
committereap <eap@opencascade.com>
Wed, 7 Mar 2012 15:06:37 +0000 (15:06 +0000)
  Bind methods creating algorithms (defined by plugins) to the class Mesh

src/SMESH_SWIG/smesh.py

index 8179247d6fa80ed1207b9fd14bde3a1a154e6690..2a9dcfa3d8fbd13263abfd2d39820fda439228d3 100644 (file)
@@ -36,12 +36,30 @@ import geompy
 import smeshDC
 from smeshDC import *
 
+# get instance of class smeshDC
 smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
 smesh.init_smesh(salome.myStudy,geompy.geom)
 
-# Export the methods of smeshD
+# load plugins
+from smeshDC import Mesh, algoCreator
+for pluginName in os.environ["SMESH_MeshersList"].split(":"):
+
+  pluginName += "DC"
+  exec("from %s import *" % pluginName )
+  exec("import %s" % pluginName )
+  plugin = eval(pluginName)
+
+  # add methods creating algorithms to Mesh
+  for k in dir(plugin):
+    if k[0] == '_':continue
+    algo = getattr(plugin,k)
+    if type( algo ).__name__ == 'classobj' and hasattr( algo, "meshMethod"):
+      if not hasattr( Mesh, algo.meshMethod ):
+        setattr( Mesh, algo.meshMethod, algoCreator())
+      getattr( Mesh, algo.meshMethod ).add( algo )
+
+# Export the methods of smeshDC
 for k in dir(smesh):
   if k[0] == '_':continue
   globals()[k]=getattr(smesh,k)
 del k
-